Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorQuentin Le Menez2016-07-05 13:52:36 +0000
committerQuentin Le Menez2016-07-05 13:52:36 +0000
commit0973169f12e43fcb4430e9b31a9f2457ad7fc287 (patch)
treeb56fc94bad77ba538904adc7a7853f2024d9df5e /extraplugins/propertylifecycle
parentc2a95d4fb294a1b6f94674bd56b366ab2600d356 (diff)
downloadorg.eclipse.papyrus-0973169f12e43fcb4430e9b31a9f2457ad7fc287.tar.gz
org.eclipse.papyrus-0973169f12e43fcb4430e9b31a9f2457ad7fc287.tar.xz
org.eclipse.papyrus-0973169f12e43fcb4430e9b31a9f2457ad7fc287.zip
Bug 497306: [PropertyLifecycle] There is no tool that handles customization based on contextual modifications of an elementbugs/497306-PropertyLifecycle
https://bugs.eclipse.org/bugs/show_bug.cgi?id=497306 - First draft of the tool Signed-off-by: Quentin Le Menez <quentin.lemenez@cea.fr>
Diffstat (limited to 'extraplugins/propertylifecycle')
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/.classpath7
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/.gitignore1
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/.project28
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/.settings/org.eclipse.jdt.core.prefs7
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/META-INF/MANIFEST.MF15
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/about.html28
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/build.properties20
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/icons/full/ctool16/CreateElementContainer_containersContainer_ElementContainer.gifbin0 -> 223 bytes
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/icons/full/ctool16/CreateElementProperty_triggers_BasicTrigger.gifbin0 -> 223 bytes
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/icons/full/ctool16/CreateElementProperty_valueProcessor_JavaProcessor.gifbin0 -> 223 bytes
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/icons/full/ctool16/CreateStrategyElement_elementContainers_ElementContainer.gifbin0 -> 223 bytes
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/icons/full/ctool16/CreateStrategyElement_elementProperties_ElementProperty.gifbin0 -> 223 bytes
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/icons/full/ctool16/CreateStrategySet_strategies_StrategyElement.gifbin0 -> 223 bytes
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/icons/full/obj16/BasicTrigger.gifbin0 -> 129 bytes
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/icons/full/obj16/ElementContainer.gifbin0 -> 129 bytes
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/icons/full/obj16/ElementProperty.gifbin0 -> 129 bytes
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/icons/full/obj16/JavaProcessor.gifbin0 -> 129 bytes
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/icons/full/obj16/StrategyElement.gifbin0 -> 129 bytes
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/icons/full/obj16/StrategySet.gifbin0 -> 129 bytes
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/plugin.properties58
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/plugin.xml32
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/pom.xml16
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/src-gen/org/eclipse/papyrus/propertylifecycle/provider/AbstractTriggerItemProvider.java127
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/src-gen/org/eclipse/papyrus/propertylifecycle/provider/AbstractValueProcessorItemProvider.java127
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/src-gen/org/eclipse/papyrus/propertylifecycle/provider/BasicTriggerItemProvider.java214
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/src-gen/org/eclipse/papyrus/propertylifecycle/provider/ElementContainerItemProvider.java161
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/src-gen/org/eclipse/papyrus/propertylifecycle/provider/ElementPropertyItemProvider.java244
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/src-gen/org/eclipse/papyrus/propertylifecycle/provider/ElementTemplateItemProvider.java186
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/src-gen/org/eclipse/papyrus/propertylifecycle/provider/JavaProcessorItemProvider.java147
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/src-gen/org/eclipse/papyrus/propertylifecycle/provider/PropertylifecycleEditPlugin.java106
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/src-gen/org/eclipse/papyrus/propertylifecycle/provider/PropertylifecycleItemProviderAdapterFactory.java421
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/src-gen/org/eclipse/papyrus/propertylifecycle/provider/StrategyElementItemProvider.java239
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/src-gen/org/eclipse/papyrus/propertylifecycle/provider/StrategySetItemProvider.java161
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/src-gen/org/eclipse/papyrus/propertylifecycle/provider/StrategyTemplateItemProvider.java209
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.editor/.classpath7
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.editor/.gitignore1
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.editor/.project28
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.editor/.settings/org.eclipse.jdt.core.prefs7
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.editor/META-INF/MANIFEST.MF18
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.editor/about.html28
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.editor/build.properties20
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.editor/icons/full/obj16/PropertylifecycleModelFile.gifbin0 -> 346 bytes
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.editor/icons/full/wizban/NewPropertylifecycle.gifbin0 -> 2462 bytes
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.editor/plugin.properties62
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.editor/plugin.xml47
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.editor/pom.xml16
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.editor/src-gen/org/eclipse/papyrus/propertylifecycle/presentation/PropertylifecycleActionBarContributor.java450
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.editor/src-gen/org/eclipse/papyrus/propertylifecycle/presentation/PropertylifecycleEditor.java1880
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.editor/src-gen/org/eclipse/papyrus/propertylifecycle/presentation/PropertylifecycleEditorPlugin.java108
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.editor/src-gen/org/eclipse/papyrus/propertylifecycle/presentation/PropertylifecycleModelWizard.java662
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/.classpath8
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/.gitignore1
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/.project28
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/.settings/org.eclipse.jdt.core.prefs7
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/META-INF/MANIFEST.MF19
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/about.html28
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/build.properties21
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/model/papyrus/propertylifecycle.css57
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/model/papyrus/propertylifecycle.di2
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/model/papyrus/propertylifecycle.notation3765
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/model/papyrus/propertylifecycle.uml449
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/model/propertylifecycle.ecore89
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/model/propertylifecycle.genmodel56
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/plugin.properties16
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/plugin.xml49
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/pom.xml16
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/schema/propertylifecyclestrategyset.exsd106
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/AbstractTrigger.java32
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/AbstractValueProcessor.java32
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/BasicTrigger.java156
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/ElementContainer.java66
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/ElementProperty.java148
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/ElementTemplate.java97
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/JavaProcessor.java66
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/PropertylifecycleFactory.java106
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/PropertylifecyclePackage.java1299
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/StrategyElement.java73
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/StrategySet.java55
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/StrategyTemplate.java127
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/impl/AbstractTriggerImpl.java50
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/impl/AbstractValueProcessorImpl.java50
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/impl/BasicTriggerImpl.java370
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/impl/ElementContainerImpl.java204
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/impl/ElementPropertyImpl.java393
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/impl/ElementTemplateImpl.java249
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/impl/JavaProcessorImpl.java187
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/impl/PropertylifecycleFactoryImpl.java183
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/impl/PropertylifecyclePackageImpl.java659
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/impl/StrategyElementImpl.java459
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/impl/StrategySetImpl.java169
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/impl/StrategyTemplateImpl.java310
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/util/PropertylifecycleAdapterFactory.java318
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/util/PropertylifecycleResourceFactoryImpl.java54
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/util/PropertylifecycleResourceImpl.java41
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/util/PropertylifecycleSwitch.java375
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src/org/eclipse/papyrus/propertylifecycle/model/Activator.java73
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src/org/eclipse/papyrus/propertylifecycle/model/extensionpoints/IStrategySetExtensionPoint.java30
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src/org/eclipse/papyrus/propertylifecycle/model/registries/StrategySetRegistry.java172
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/.classpath7
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/.gitignore1
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/.options3
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/.project28
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/.settings/org.eclipse.jdt.core.prefs7
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/META-INF/MANIFEST.MF14
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/about.html28
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/build.properties4
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/icons/menu/removeStrategyModel_16x16.gifbin0 -> 382 bytes
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/icons/menu/removeStrategy_16x16.gifbin0 -> 248 bytes
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/icons/navigation/arrow_left_16x16.gifbin0 -> 327 bytes
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/icons/navigation/arrow_left_double_16x16.gifbin0 -> 597 bytes
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/icons/navigation/arrow_right_16x16.gifbin0 -> 541 bytes
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/icons/navigation/arrow_right_double_16x16.gifbin0 -> 594 bytes
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/icons/navigation/synced_16x16.gifbin0 -> 160 bytes
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/icons/tableViewer/checked_12x12.gifbin0 -> 90 bytes
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/icons/tableViewer/unchecked_12x12.gifbin0 -> 67 bytes
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/icons/treeViewer/container_16x16.gifbin0 -> 354 bytes
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/icons/treeViewer/property_16x16.gifbin0 -> 343 bytes
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/icons/treeViewer/resource_16x16.gifbin0 -> 582 bytes
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/icons/treeViewer/strategySet_16x16.gifbin0 -> 227 bytes
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/icons/treeViewer/strategy_16x16.gifbin0 -> 216 bytes
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/plugin.xml14
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/pom.xml16
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/src/org/eclipse/papyrus/propertylifecycle/preferences/Activator.java120
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/src/org/eclipse/papyrus/propertylifecycle/preferences/messages/Messages.java129
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/src/org/eclipse/papyrus/propertylifecycle/preferences/messages/messages.properties52
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/src/org/eclipse/papyrus/propertylifecycle/preferences/pages/AdvancedTab.java390
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/src/org/eclipse/papyrus/propertylifecycle/preferences/pages/AdvancedTabLeftViewerComposite.java258
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/src/org/eclipse/papyrus/propertylifecycle/preferences/pages/AdvancedTabRightViewerComposite.java568
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/src/org/eclipse/papyrus/propertylifecycle/preferences/pages/BasicTab.java413
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/src/org/eclipse/papyrus/propertylifecycle/preferences/pages/PropertyLifecyclePageComposite.java248
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/src/org/eclipse/papyrus/propertylifecycle/preferences/pages/PropertyLifecyclePreferencesPage.java113
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/src/org/eclipse/papyrus/propertylifecycle/preferences/utils/AdvancedTabLabelProvider.java109
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/src/org/eclipse/papyrus/propertylifecycle/preferences/utils/AdvancedTabViewerUtils.java43
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/src/org/eclipse/papyrus/propertylifecycle/preferences/utils/BrowseButton.java117
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/src/org/eclipse/papyrus/propertylifecycle/preferences/utils/BrowserUtils.java156
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/src/org/eclipse/papyrus/propertylifecycle/preferences/utils/ConvertEcoreToUML.java251
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/src/org/eclipse/papyrus/propertylifecycle/preferences/utils/PropertyLifecyclePreferencesManager.java359
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/src/org/eclipse/papyrus/propertylifecycle/preferences/utils/SaveButton.java140
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle/.classpath7
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle/.gitignore1
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle/.options7
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle/.project28
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle/.settings/org.eclipse.jdt.core.prefs7
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle/META-INF/MANIFEST.MF19
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle/about.html28
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle/build.properties7
-rw-r--r--extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle/model/PropertyLifecycle.elementtypesconfigurations23
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle/plugin.xml12
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle/pom.xml10
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle/src/org/eclipse/papyrus/propertylifecycle/Activator.java82
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle/src/org/eclipse/papyrus/propertylifecycle/commands/LifeCycleEditElementCommand.java155
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle/src/org/eclipse/papyrus/propertylifecycle/commands/LifecycleSetCommand.java130
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle/src/org/eclipse/papyrus/propertylifecycle/helper/advice/PropertyLifecycleHelperAdvice.java249
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle/src/org/eclipse/papyrus/propertylifecycle/messages/Messages.java35
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle/src/org/eclipse/papyrus/propertylifecycle/messages/messages.properties1
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle/src/org/eclipse/papyrus/propertylifecycle/utils/CommandValueProcessor.java26
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle/src/org/eclipse/papyrus/propertylifecycle/utils/PropertyLifecycleManager.java575
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/.classpath7
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/.gitignore1
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/.options3
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/.project28
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/.settings/org.eclipse.jdt.core.prefs7
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/META-INF/MANIFEST.MF16
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/about.html28
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/build.properties5
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/pom.xml16
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/Activator.java76
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/ActorPartPropertyProcessor.java61
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/AllocateProcessor.java62
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/BlockProcessor.java62
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/ConformProcessor.java62
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/ConstraintBlockParameterProcessor.java61
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/ConstraintBlockProcessor.java62
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/ConstraintPropertyProcessor.java62
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/CopyProcessor.java62
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/DimensionProcessor.java62
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/FlowPortProcessor.java61
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/FlowPropertyProcessor.java61
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/FlowSpecificationprocessor.java61
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/ItemFlowProcessor.java61
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/PartPropertyProcessor.java61
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/ReferencePropertyProcessor.java61
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/RequirementProcessor.java62
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/SatisfyProcessor.java63
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/UnitProcessor.java63
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/ValuePropertyProcessor.java61
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/ValueTypeProcessor.java62
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/VerifyProcessor.java62
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/ViewPointProcessor.java62
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/ViewProcessor.java61
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.uml.propertylifecycle/.classpath7
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.uml.propertylifecycle/.gitignore1
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.uml.propertylifecycle/.options3
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.uml.propertylifecycle/.project28
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.uml.propertylifecycle/.settings/org.eclipse.jdt.core.prefs7
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.uml.propertylifecycle/META-INF/MANIFEST.MF15
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.uml.propertylifecycle/about.html28
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.uml.propertylifecycle/build.properties5
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.uml.propertylifecycle/pom.xml16
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.uml.propertylifecycle/src/org/eclipse/papyrus/uml/propertylifecycle/Activator.java76
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.uml.propertylifecycle/src/org/eclipse/papyrus/uml/propertylifecycle/processors/AssociationProcessor.java150
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.uml.propertylifecycle/src/org/eclipse/papyrus/uml/propertylifecycle/processors/ExtendProcessor.java86
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.uml.propertylifecycle/src/org/eclipse/papyrus/uml/propertylifecycle/processors/PropertyProcessor.java85
-rwxr-xr-xextraplugins/propertylifecycle/org.eclipse.papyrus.uml.propertylifecycle/src/org/eclipse/papyrus/uml/propertylifecycle/processors/RoleBindingProcessor.java52
204 files changed, 24362 insertions, 0 deletions
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/.classpath b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/.classpath
new file mode 100755
index 00000000000..26e67d64ad0
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.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/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src-gen"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/.gitignore b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/.gitignore
new file mode 100755
index 00000000000..ae3c1726048
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/.gitignore
@@ -0,0 +1 @@
+/bin/
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/.project b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/.project
new file mode 100755
index 00000000000..953105cc0a1
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.papyrus.propertylifecycle.model.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/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/.settings/org.eclipse.jdt.core.prefs b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/.settings/org.eclipse.jdt.core.prefs
new file mode 100755
index 00000000000..0c68a61dca8
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/.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.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/META-INF/MANIFEST.MF b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/META-INF/MANIFEST.MF
new file mode 100755
index 00000000000..0d159382493
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/META-INF/MANIFEST.MF
@@ -0,0 +1,15 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.papyrus.propertylifecycle.model.edit;singleton:=true
+Bundle-Version: 0.0.1.qualifier
+Bundle-ClassPath: .
+Bundle-Activator: org.eclipse.papyrus.propertylifecycle.provider.PropertylifecycleEditPlugin$Implementation
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Export-Package: org.eclipse.papyrus.propertylifecycle.provider
+Require-Bundle: org.eclipse.core.runtime;bundle-version="3.12.0",
+ org.eclipse.papyrus.propertylifecycle.model;bundle-version="0.0.1";visibility:=reexport,
+ org.eclipse.emf.edit;bundle-version="2.12.0";visibility:=reexport
+Bundle-ActivationPolicy: lazy
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/about.html b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/about.html
new file mode 100755
index 00000000000..d35d5aed64c
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.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/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/build.properties b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/build.properties
new file mode 100755
index 00000000000..477e474a141
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/build.properties
@@ -0,0 +1,20 @@
+# Copyright (c) 2016 CEA LIST and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+#
+# Quentin Le Menez (CEA LIST) quentin.lemenez@cea.fr - Initial API and implementation
+
+bin.includes = .,\
+ icons/,\
+ META-INF/,\
+ plugin.xml,\
+ plugin.properties,\
+ about.html
+jars.compile.order = .
+source.. = src-gen/
+output.. = bin/
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/icons/full/ctool16/CreateElementContainer_containersContainer_ElementContainer.gif b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/icons/full/ctool16/CreateElementContainer_containersContainer_ElementContainer.gif
new file mode 100755
index 00000000000..0a9ad1c7ea8
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/icons/full/ctool16/CreateElementContainer_containersContainer_ElementContainer.gif
Binary files differ
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/icons/full/ctool16/CreateElementProperty_triggers_BasicTrigger.gif b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/icons/full/ctool16/CreateElementProperty_triggers_BasicTrigger.gif
new file mode 100755
index 00000000000..a259b8fb4f2
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/icons/full/ctool16/CreateElementProperty_triggers_BasicTrigger.gif
Binary files differ
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/icons/full/ctool16/CreateElementProperty_valueProcessor_JavaProcessor.gif b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/icons/full/ctool16/CreateElementProperty_valueProcessor_JavaProcessor.gif
new file mode 100755
index 00000000000..52be1a507e5
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/icons/full/ctool16/CreateElementProperty_valueProcessor_JavaProcessor.gif
Binary files differ
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/icons/full/ctool16/CreateStrategyElement_elementContainers_ElementContainer.gif b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/icons/full/ctool16/CreateStrategyElement_elementContainers_ElementContainer.gif
new file mode 100755
index 00000000000..59232185315
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/icons/full/ctool16/CreateStrategyElement_elementContainers_ElementContainer.gif
Binary files differ
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/icons/full/ctool16/CreateStrategyElement_elementProperties_ElementProperty.gif b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/icons/full/ctool16/CreateStrategyElement_elementProperties_ElementProperty.gif
new file mode 100755
index 00000000000..263f6e69405
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/icons/full/ctool16/CreateStrategyElement_elementProperties_ElementProperty.gif
Binary files differ
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/icons/full/ctool16/CreateStrategySet_strategies_StrategyElement.gif b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/icons/full/ctool16/CreateStrategySet_strategies_StrategyElement.gif
new file mode 100755
index 00000000000..05c17b39cf5
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/icons/full/ctool16/CreateStrategySet_strategies_StrategyElement.gif
Binary files differ
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/icons/full/obj16/BasicTrigger.gif b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/icons/full/obj16/BasicTrigger.gif
new file mode 100755
index 00000000000..badaab0664a
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/icons/full/obj16/BasicTrigger.gif
Binary files differ
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/icons/full/obj16/ElementContainer.gif b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/icons/full/obj16/ElementContainer.gif
new file mode 100755
index 00000000000..338fb8d9a72
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/icons/full/obj16/ElementContainer.gif
Binary files differ
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/icons/full/obj16/ElementProperty.gif b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/icons/full/obj16/ElementProperty.gif
new file mode 100755
index 00000000000..d3dc5a9ad81
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/icons/full/obj16/ElementProperty.gif
Binary files differ
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/icons/full/obj16/JavaProcessor.gif b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/icons/full/obj16/JavaProcessor.gif
new file mode 100755
index 00000000000..7bac4fd3808
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/icons/full/obj16/JavaProcessor.gif
Binary files differ
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/icons/full/obj16/StrategyElement.gif b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/icons/full/obj16/StrategyElement.gif
new file mode 100755
index 00000000000..cb1755a7125
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/icons/full/obj16/StrategyElement.gif
Binary files differ
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/icons/full/obj16/StrategySet.gif b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/icons/full/obj16/StrategySet.gif
new file mode 100755
index 00000000000..106881e5d9b
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/icons/full/obj16/StrategySet.gif
Binary files differ
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/plugin.properties b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/plugin.properties
new file mode 100755
index 00000000000..866671fb27e
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/plugin.properties
@@ -0,0 +1,58 @@
+# Copyright (c) 2016 CEA LIST and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+#
+# Quentin Le Menez (CEA LIST) quentin.lemenez@cea.fr - Initial API and implementation
+
+pluginName = Propertylifecycle 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_StrategyTemplate_type = Strategy Template
+_UI_StrategySet_type = Strategy Set
+_UI_StrategyElement_type = Strategy Element
+_UI_ElementTemplate_type = Element Template
+_UI_ElementContainer_type = Element Container
+_UI_ElementProperty_type = Element Property
+_UI_AbstractTrigger_type = Abstract Trigger
+_UI_AbstractValueProcessor_type = Abstract Value Processor
+_UI_JavaProcessor_type = Java Processor
+_UI_BasicTrigger_type = Basic Trigger
+_UI_Unknown_type = Object
+
+_UI_Unknown_datatype= Value
+
+_UI_StrategyTemplate_name_feature = Name
+_UI_StrategyTemplate_decription_feature = Decription
+_UI_StrategyTemplate_id_feature = Id
+_UI_StrategySet_strategies_feature = Strategies
+_UI_StrategyElement_elementContainers_feature = Element Containers
+_UI_StrategyElement_elementProperties_feature = Element Properties
+_UI_ElementTemplate_baseType_feature = Base Type
+_UI_ElementTemplate_specializedType_feature = Specialized Type
+_UI_ElementContainer_containersContainer_feature = Containers Container
+_UI_ElementProperty_featureLabel_feature = Feature Label
+_UI_ElementProperty_priority_feature = Priority
+_UI_ElementProperty_triggers_feature = Triggers
+_UI_ElementProperty_valueProcessor_feature = Value Processor
+_UI_JavaProcessor_className_feature = Class Name
+_UI_BasicTrigger_onCreate_feature = On Create
+_UI_BasicTrigger_onDelete_feature = On Delete
+_UI_BasicTrigger_onOpen_feature = On Open
+_UI_BasicTrigger_onMove_feature = On Move
+_UI_Unknown_feature = Unspecified
+
+_UI_ElementTemplate_matcher_feature = Matcher
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/plugin.xml b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/plugin.xml
new file mode 100755
index 00000000000..ac7670721de
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/plugin.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+ Copyright (c) 2016 CEA LIST and others.
+
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License v1.0
+ which accompanies this distribution, and is available at
+ http://www.eclipse.org/legal/epl-v10.html
+
+ Contributors:
+
+ Quentin Le Menez (CEA LIST) quentin.lemenez@cea.fr - Initial API and implementation
+-->
+
+<plugin>
+
+ <extension point="org.eclipse.emf.edit.itemProviderAdapterFactories">
+ <!-- @generated propertylifecycle -->
+ <factory
+ uri="http://www.eclipse.org/papyrus/infra/propertylifecycle/1.0"
+ class="org.eclipse.papyrus.propertylifecycle.provider.PropertylifecycleItemProviderAdapterFactory"
+ 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/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/pom.xml b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/pom.xml
new file mode 100755
index 00000000000..fe1a842c067
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/pom.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <artifactId>org.eclipse.papyrus.infra.propertylifecycle.model.edit</artifactId>
+ <version>0.0.1.qualifier</version>
+ <groupId>org.eclipse.papyrus</groupId>
+ <packaging>eclipse-plugin</packaging>
+ <parent>
+ <groupId>org.eclipse.papyrus</groupId>
+ <artifactId>org.eclipse.papyrus.infra.propertylifecycle</artifactId>
+ <version>0.0.1.qualifier</version>
+ <relativePath>../org.eclipse.papyrus.infra.propertylifecycle/pom.xml</relativePath>
+ </parent>
+</project>
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/src-gen/org/eclipse/papyrus/propertylifecycle/provider/AbstractTriggerItemProvider.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/src-gen/org/eclipse/papyrus/propertylifecycle/provider/AbstractTriggerItemProvider.java
new file mode 100755
index 00000000000..a32f955a49f
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/src-gen/org/eclipse/papyrus/propertylifecycle/provider/AbstractTriggerItemProvider.java
@@ -0,0 +1,127 @@
+/**
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *
+ * Quentin Le Menez (CEA LIST) quentin.lemenez@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.propertylifecycle.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.IChildCreationExtender;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.propertylifecycle.AbstractTrigger} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class AbstractTriggerItemProvider
+ 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 AbstractTriggerItemProvider(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_AbstractTrigger_type"); //$NON-NLS-1$
+ }
+
+
+ /**
+ * 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 ((IChildCreationExtender) adapterFactory).getResourceLocator();
+ }
+
+}
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/src-gen/org/eclipse/papyrus/propertylifecycle/provider/AbstractValueProcessorItemProvider.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/src-gen/org/eclipse/papyrus/propertylifecycle/provider/AbstractValueProcessorItemProvider.java
new file mode 100755
index 00000000000..c3c24bcafe7
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/src-gen/org/eclipse/papyrus/propertylifecycle/provider/AbstractValueProcessorItemProvider.java
@@ -0,0 +1,127 @@
+/**
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *
+ * Quentin Le Menez (CEA LIST) quentin.lemenez@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.propertylifecycle.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.IChildCreationExtender;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.propertylifecycle.AbstractValueProcessor} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class AbstractValueProcessorItemProvider
+ 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 AbstractValueProcessorItemProvider(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_AbstractValueProcessor_type"); //$NON-NLS-1$
+ }
+
+
+ /**
+ * 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 ((IChildCreationExtender) adapterFactory).getResourceLocator();
+ }
+
+}
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/src-gen/org/eclipse/papyrus/propertylifecycle/provider/BasicTriggerItemProvider.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/src-gen/org/eclipse/papyrus/propertylifecycle/provider/BasicTriggerItemProvider.java
new file mode 100755
index 00000000000..c20db0005b1
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/src-gen/org/eclipse/papyrus/propertylifecycle/provider/BasicTriggerItemProvider.java
@@ -0,0 +1,214 @@
+/**
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *
+ * Quentin Le Menez (CEA LIST) quentin.lemenez@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.propertylifecycle.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.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.papyrus.propertylifecycle.BasicTrigger;
+import org.eclipse.papyrus.propertylifecycle.PropertylifecyclePackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.propertylifecycle.BasicTrigger} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class BasicTriggerItemProvider extends AbstractTriggerItemProvider {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public BasicTriggerItemProvider(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);
+
+ addOnCreatePropertyDescriptor(object);
+ addOnDeletePropertyDescriptor(object);
+ addOnOpenPropertyDescriptor(object);
+ addOnMovePropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the On Create feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected void addOnCreatePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_BasicTrigger_onCreate_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_BasicTrigger_onCreate_feature", "_UI_BasicTrigger_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ PropertylifecyclePackage.Literals.BASIC_TRIGGER__ON_CREATE,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the On Delete feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected void addOnDeletePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_BasicTrigger_onDelete_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_BasicTrigger_onDelete_feature", "_UI_BasicTrigger_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ PropertylifecyclePackage.Literals.BASIC_TRIGGER__ON_DELETE,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the On Open feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected void addOnOpenPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_BasicTrigger_onOpen_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_BasicTrigger_onOpen_feature", "_UI_BasicTrigger_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ PropertylifecyclePackage.Literals.BASIC_TRIGGER__ON_OPEN,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the On Move feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected void addOnMovePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_BasicTrigger_onMove_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_BasicTrigger_onMove_feature", "_UI_BasicTrigger_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ PropertylifecyclePackage.Literals.BASIC_TRIGGER__ON_MOVE,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This returns BasicTrigger.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/BasicTrigger")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ BasicTrigger basicTrigger = (BasicTrigger) object;
+ return getString("_UI_BasicTrigger_type") + " " + basicTrigger.isOnCreate(); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(BasicTrigger.class)) {
+ case PropertylifecyclePackage.BASIC_TRIGGER__ON_CREATE:
+ case PropertylifecyclePackage.BASIC_TRIGGER__ON_DELETE:
+ case PropertylifecyclePackage.BASIC_TRIGGER__ON_OPEN:
+ case PropertylifecyclePackage.BASIC_TRIGGER__ON_MOVE:
+ 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/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/src-gen/org/eclipse/papyrus/propertylifecycle/provider/ElementContainerItemProvider.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/src-gen/org/eclipse/papyrus/propertylifecycle/provider/ElementContainerItemProvider.java
new file mode 100755
index 00000000000..0e44d6f3b8e
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/src-gen/org/eclipse/papyrus/propertylifecycle/provider/ElementContainerItemProvider.java
@@ -0,0 +1,161 @@
+/**
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *
+ * Quentin Le Menez (CEA LIST) quentin.lemenez@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.propertylifecycle.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.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.papyrus.propertylifecycle.ElementContainer;
+import org.eclipse.papyrus.propertylifecycle.PropertylifecycleFactory;
+import org.eclipse.papyrus.propertylifecycle.PropertylifecyclePackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.propertylifecycle.ElementContainer} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class ElementContainerItemProvider extends ElementTemplateItemProvider {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public ElementContainerItemProvider(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(PropertylifecyclePackage.Literals.ELEMENT_CONTAINER__CONTAINERS_CONTAINER);
+ }
+ 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 ElementContainer.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/ElementContainer")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((ElementContainer) object).getBaseType();
+ return label == null || label.length() == 0 ? getString("_UI_ElementContainer_type") //$NON-NLS-1$
+ :
+ getString("_UI_ElementContainer_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(ElementContainer.class)) {
+ case PropertylifecyclePackage.ELEMENT_CONTAINER__CONTAINERS_CONTAINER:
+ 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(PropertylifecyclePackage.Literals.ELEMENT_CONTAINER__CONTAINERS_CONTAINER,
+ PropertylifecycleFactory.eINSTANCE.createElementContainer()));
+ }
+
+}
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/src-gen/org/eclipse/papyrus/propertylifecycle/provider/ElementPropertyItemProvider.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/src-gen/org/eclipse/papyrus/propertylifecycle/provider/ElementPropertyItemProvider.java
new file mode 100755
index 00000000000..a3e7c0ead64
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/src-gen/org/eclipse/papyrus/propertylifecycle/provider/ElementPropertyItemProvider.java
@@ -0,0 +1,244 @@
+/**
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *
+ * Quentin Le Menez (CEA LIST) quentin.lemenez@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.propertylifecycle.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.IChildCreationExtender;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.papyrus.propertylifecycle.ElementProperty;
+import org.eclipse.papyrus.propertylifecycle.PropertylifecycleFactory;
+import org.eclipse.papyrus.propertylifecycle.PropertylifecyclePackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.propertylifecycle.ElementProperty} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class ElementPropertyItemProvider
+ 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 ElementPropertyItemProvider(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);
+
+ addFeatureLabelPropertyDescriptor(object);
+ addPriorityPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Feature Label feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected void addFeatureLabelPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_ElementProperty_featureLabel_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_ElementProperty_featureLabel_feature", "_UI_ElementProperty_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ PropertylifecyclePackage.Literals.ELEMENT_PROPERTY__FEATURE_LABEL,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Priority feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected void addPriorityPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_ElementProperty_priority_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_ElementProperty_priority_feature", "_UI_ElementProperty_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ PropertylifecyclePackage.Literals.ELEMENT_PROPERTY__PRIORITY,
+ 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(PropertylifecyclePackage.Literals.ELEMENT_PROPERTY__TRIGGERS);
+ childrenFeatures.add(PropertylifecyclePackage.Literals.ELEMENT_PROPERTY__VALUE_PROCESSOR);
+ }
+ 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 ElementProperty.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/ElementProperty")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((ElementProperty) object).getFeatureLabel();
+ return label == null || label.length() == 0 ? getString("_UI_ElementProperty_type") //$NON-NLS-1$
+ :
+ getString("_UI_ElementProperty_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(ElementProperty.class)) {
+ case PropertylifecyclePackage.ELEMENT_PROPERTY__FEATURE_LABEL:
+ case PropertylifecyclePackage.ELEMENT_PROPERTY__PRIORITY:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ case PropertylifecyclePackage.ELEMENT_PROPERTY__TRIGGERS:
+ case PropertylifecyclePackage.ELEMENT_PROPERTY__VALUE_PROCESSOR:
+ 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(PropertylifecyclePackage.Literals.ELEMENT_PROPERTY__TRIGGERS,
+ PropertylifecycleFactory.eINSTANCE.createBasicTrigger()));
+
+ newChildDescriptors.add(createChildParameter(PropertylifecyclePackage.Literals.ELEMENT_PROPERTY__VALUE_PROCESSOR,
+ PropertylifecycleFactory.eINSTANCE.createJavaProcessor()));
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return ((IChildCreationExtender) adapterFactory).getResourceLocator();
+ }
+
+}
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/src-gen/org/eclipse/papyrus/propertylifecycle/provider/ElementTemplateItemProvider.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/src-gen/org/eclipse/papyrus/propertylifecycle/provider/ElementTemplateItemProvider.java
new file mode 100755
index 00000000000..89902e1c88d
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/src-gen/org/eclipse/papyrus/propertylifecycle/provider/ElementTemplateItemProvider.java
@@ -0,0 +1,186 @@
+/**
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *
+ * Quentin Le Menez (CEA LIST) quentin.lemenez@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.propertylifecycle.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IChildCreationExtender;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.papyrus.propertylifecycle.ElementTemplate;
+import org.eclipse.papyrus.propertylifecycle.PropertylifecyclePackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.propertylifecycle.ElementTemplate} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class ElementTemplateItemProvider
+ 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 ElementTemplateItemProvider(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);
+
+ addBaseTypePropertyDescriptor(object);
+ addSpecializedTypePropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Base Type feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected void addBaseTypePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_ElementTemplate_baseType_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_ElementTemplate_baseType_feature", "_UI_ElementTemplate_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ PropertylifecyclePackage.Literals.ELEMENT_TEMPLATE__BASE_TYPE,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Specialized Type feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected void addSpecializedTypePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_ElementTemplate_specializedType_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_ElementTemplate_specializedType_feature", "_UI_ElementTemplate_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ PropertylifecyclePackage.Literals.ELEMENT_TEMPLATE__SPECIALIZED_TYPE,
+ 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 = ((ElementTemplate) object).getBaseType();
+ return label == null || label.length() == 0 ? getString("_UI_ElementTemplate_type") //$NON-NLS-1$
+ :
+ getString("_UI_ElementTemplate_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(ElementTemplate.class)) {
+ case PropertylifecyclePackage.ELEMENT_TEMPLATE__BASE_TYPE:
+ case PropertylifecyclePackage.ELEMENT_TEMPLATE__SPECIALIZED_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);
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return ((IChildCreationExtender) adapterFactory).getResourceLocator();
+ }
+
+}
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/src-gen/org/eclipse/papyrus/propertylifecycle/provider/JavaProcessorItemProvider.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/src-gen/org/eclipse/papyrus/propertylifecycle/provider/JavaProcessorItemProvider.java
new file mode 100755
index 00000000000..aa67cbd60fe
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/src-gen/org/eclipse/papyrus/propertylifecycle/provider/JavaProcessorItemProvider.java
@@ -0,0 +1,147 @@
+/**
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *
+ * Quentin Le Menez (CEA LIST) quentin.lemenez@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.propertylifecycle.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.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.papyrus.propertylifecycle.JavaProcessor;
+import org.eclipse.papyrus.propertylifecycle.PropertylifecyclePackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.propertylifecycle.JavaProcessor} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class JavaProcessorItemProvider extends AbstractValueProcessorItemProvider {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public JavaProcessorItemProvider(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);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Class Name feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected void addClassNamePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_JavaProcessor_className_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_JavaProcessor_className_feature", "_UI_JavaProcessor_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ PropertylifecyclePackage.Literals.JAVA_PROCESSOR__CLASS_NAME,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This returns JavaProcessor.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/JavaProcessor")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((JavaProcessor) object).getClassName();
+ return label == null || label.length() == 0 ? getString("_UI_JavaProcessor_type") //$NON-NLS-1$
+ :
+ getString("_UI_JavaProcessor_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(JavaProcessor.class)) {
+ case PropertylifecyclePackage.JAVA_PROCESSOR__CLASS_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/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/src-gen/org/eclipse/papyrus/propertylifecycle/provider/PropertylifecycleEditPlugin.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/src-gen/org/eclipse/papyrus/propertylifecycle/provider/PropertylifecycleEditPlugin.java
new file mode 100755
index 00000000000..10631195f90
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/src-gen/org/eclipse/papyrus/propertylifecycle/provider/PropertylifecycleEditPlugin.java
@@ -0,0 +1,106 @@
+/**
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *
+ * Quentin Le Menez (CEA LIST) quentin.lemenez@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.propertylifecycle.provider;
+
+import org.eclipse.emf.common.EMFPlugin;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+/**
+ * This is the central singleton for the Propertylifecycle edit plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public final class PropertylifecycleEditPlugin extends EMFPlugin {
+ /**
+ * Keep track of the singleton.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public static final PropertylifecycleEditPlugin INSTANCE = new PropertylifecycleEditPlugin();
+
+ /**
+ * 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 PropertylifecycleEditPlugin() {
+ 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/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/src-gen/org/eclipse/papyrus/propertylifecycle/provider/PropertylifecycleItemProviderAdapterFactory.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/src-gen/org/eclipse/papyrus/propertylifecycle/provider/PropertylifecycleItemProviderAdapterFactory.java
new file mode 100755
index 00000000000..e80be9158ac
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/src-gen/org/eclipse/papyrus/propertylifecycle/provider/PropertylifecycleItemProviderAdapterFactory.java
@@ -0,0 +1,421 @@
+/**
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *
+ * Quentin Le Menez (CEA LIST) quentin.lemenez@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.propertylifecycle.provider;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+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.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.domain.EditingDomain;
+
+import org.eclipse.emf.edit.provider.ChangeNotifier;
+import org.eclipse.emf.edit.provider.ChildCreationExtenderManager;
+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.IChildCreationExtender;
+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.propertylifecycle.PropertylifecyclePackage;
+import org.eclipse.papyrus.propertylifecycle.util.PropertylifecycleAdapterFactory;
+
+/**
+ * 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 PropertylifecycleItemProviderAdapterFactory extends PropertylifecycleAdapterFactory implements ComposeableAdapterFactory, IChangeNotifier, IDisposable, IChildCreationExtender {
+ /**
+ * 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 helps manage the child creation extenders.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected ChildCreationExtenderManager childCreationExtenderManager = new ChildCreationExtenderManager(PropertylifecycleEditPlugin.INSTANCE, PropertylifecyclePackage.eNS_URI);
+
+ /**
+ * 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 PropertylifecycleItemProviderAdapterFactory() {
+ 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.propertylifecycle.StrategySet} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected StrategySetItemProvider strategySetItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.papyrus.propertylifecycle.StrategySet}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public Adapter createStrategySetAdapter() {
+ if (strategySetItemProvider == null) {
+ strategySetItemProvider = new StrategySetItemProvider(this);
+ }
+
+ return strategySetItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.propertylifecycle.StrategyElement} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected StrategyElementItemProvider strategyElementItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.papyrus.propertylifecycle.StrategyElement}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public Adapter createStrategyElementAdapter() {
+ if (strategyElementItemProvider == null) {
+ strategyElementItemProvider = new StrategyElementItemProvider(this);
+ }
+
+ return strategyElementItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.propertylifecycle.ElementContainer} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected ElementContainerItemProvider elementContainerItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.papyrus.propertylifecycle.ElementContainer}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public Adapter createElementContainerAdapter() {
+ if (elementContainerItemProvider == null) {
+ elementContainerItemProvider = new ElementContainerItemProvider(this);
+ }
+
+ return elementContainerItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.propertylifecycle.ElementProperty} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected ElementPropertyItemProvider elementPropertyItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.papyrus.propertylifecycle.ElementProperty}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public Adapter createElementPropertyAdapter() {
+ if (elementPropertyItemProvider == null) {
+ elementPropertyItemProvider = new ElementPropertyItemProvider(this);
+ }
+
+ return elementPropertyItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.propertylifecycle.JavaProcessor} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected JavaProcessorItemProvider javaProcessorItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.papyrus.propertylifecycle.JavaProcessor}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public Adapter createJavaProcessorAdapter() {
+ if (javaProcessorItemProvider == null) {
+ javaProcessorItemProvider = new JavaProcessorItemProvider(this);
+ }
+
+ return javaProcessorItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.propertylifecycle.BasicTrigger} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected BasicTriggerItemProvider basicTriggerItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.papyrus.propertylifecycle.BasicTrigger}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public Adapter createBasicTriggerAdapter() {
+ if (basicTriggerItemProvider == null) {
+ basicTriggerItemProvider = new BasicTriggerItemProvider(this);
+ }
+
+ return basicTriggerItemProvider;
+ }
+
+ /**
+ * This returns the root adapter factory that contains this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ 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
+ */
+ @Override
+ 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;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public List<IChildCreationExtender> getChildCreationExtenders() {
+ return childCreationExtenderManager.getChildCreationExtenders();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public Collection<?> getNewChildDescriptors(Object object, EditingDomain editingDomain) {
+ return childCreationExtenderManager.getNewChildDescriptors(object, editingDomain);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return childCreationExtenderManager;
+ }
+
+ /**
+ * This adds a listener.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void addListener(INotifyChangedListener notifyChangedListener) {
+ changeNotifier.addListener(notifyChangedListener);
+ }
+
+ /**
+ * This removes a listener.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void removeListener(INotifyChangedListener notifyChangedListener) {
+ changeNotifier.removeListener(notifyChangedListener);
+ }
+
+ /**
+ * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ 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
+ */
+ @Override
+ public void dispose() {
+ if (strategySetItemProvider != null) {
+ strategySetItemProvider.dispose();
+ }
+ if (strategyElementItemProvider != null) {
+ strategyElementItemProvider.dispose();
+ }
+ if (elementContainerItemProvider != null) {
+ elementContainerItemProvider.dispose();
+ }
+ if (elementPropertyItemProvider != null) {
+ elementPropertyItemProvider.dispose();
+ }
+ if (javaProcessorItemProvider != null) {
+ javaProcessorItemProvider.dispose();
+ }
+ if (basicTriggerItemProvider != null) {
+ basicTriggerItemProvider.dispose();
+ }
+ }
+
+}
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/src-gen/org/eclipse/papyrus/propertylifecycle/provider/StrategyElementItemProvider.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/src-gen/org/eclipse/papyrus/propertylifecycle/provider/StrategyElementItemProvider.java
new file mode 100755
index 00000000000..ceb501ad5aa
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/src-gen/org/eclipse/papyrus/propertylifecycle/provider/StrategyElementItemProvider.java
@@ -0,0 +1,239 @@
+/**
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *
+ * Quentin Le Menez (CEA LIST) quentin.lemenez@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.propertylifecycle.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.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.papyrus.propertylifecycle.PropertylifecycleFactory;
+import org.eclipse.papyrus.propertylifecycle.PropertylifecyclePackage;
+import org.eclipse.papyrus.propertylifecycle.StrategyElement;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.propertylifecycle.StrategyElement} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class StrategyElementItemProvider extends ElementTemplateItemProvider {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public StrategyElementItemProvider(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);
+ addDecriptionPropertyDescriptor(object);
+ addIdPropertyDescriptor(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_StrategyTemplate_name_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_StrategyTemplate_name_feature", "_UI_StrategyTemplate_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ PropertylifecyclePackage.Literals.STRATEGY_TEMPLATE__NAME,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Decription feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected void addDecriptionPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_StrategyTemplate_decription_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_StrategyTemplate_decription_feature", "_UI_StrategyTemplate_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ PropertylifecyclePackage.Literals.STRATEGY_TEMPLATE__DECRIPTION,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Id feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected void addIdPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_StrategyTemplate_id_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_StrategyTemplate_id_feature", "_UI_StrategyTemplate_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ PropertylifecyclePackage.Literals.STRATEGY_TEMPLATE__ID,
+ 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(PropertylifecyclePackage.Literals.STRATEGY_ELEMENT__ELEMENT_CONTAINERS);
+ childrenFeatures.add(PropertylifecyclePackage.Literals.STRATEGY_ELEMENT__ELEMENT_PROPERTIES);
+ }
+ 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 StrategyElement.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/StrategyElement")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((StrategyElement) object).getName();
+ return label == null || label.length() == 0 ? getString("_UI_StrategyElement_type") //$NON-NLS-1$
+ :
+ getString("_UI_StrategyElement_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(StrategyElement.class)) {
+ case PropertylifecyclePackage.STRATEGY_ELEMENT__NAME:
+ case PropertylifecyclePackage.STRATEGY_ELEMENT__DECRIPTION:
+ case PropertylifecyclePackage.STRATEGY_ELEMENT__ID:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ case PropertylifecyclePackage.STRATEGY_ELEMENT__ELEMENT_CONTAINERS:
+ case PropertylifecyclePackage.STRATEGY_ELEMENT__ELEMENT_PROPERTIES:
+ 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(PropertylifecyclePackage.Literals.STRATEGY_ELEMENT__ELEMENT_CONTAINERS,
+ PropertylifecycleFactory.eINSTANCE.createElementContainer()));
+
+ newChildDescriptors.add(createChildParameter(PropertylifecyclePackage.Literals.STRATEGY_ELEMENT__ELEMENT_PROPERTIES,
+ PropertylifecycleFactory.eINSTANCE.createElementProperty()));
+ }
+
+}
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/src-gen/org/eclipse/papyrus/propertylifecycle/provider/StrategySetItemProvider.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/src-gen/org/eclipse/papyrus/propertylifecycle/provider/StrategySetItemProvider.java
new file mode 100755
index 00000000000..bbb912a3468
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/src-gen/org/eclipse/papyrus/propertylifecycle/provider/StrategySetItemProvider.java
@@ -0,0 +1,161 @@
+/**
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *
+ * Quentin Le Menez (CEA LIST) quentin.lemenez@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.propertylifecycle.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.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.papyrus.propertylifecycle.PropertylifecycleFactory;
+import org.eclipse.papyrus.propertylifecycle.PropertylifecyclePackage;
+import org.eclipse.papyrus.propertylifecycle.StrategySet;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.propertylifecycle.StrategySet} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class StrategySetItemProvider extends StrategyTemplateItemProvider {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public StrategySetItemProvider(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(PropertylifecyclePackage.Literals.STRATEGY_SET__STRATEGIES);
+ }
+ 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 StrategySet.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/StrategySet")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((StrategySet) object).getName();
+ return label == null || label.length() == 0 ? getString("_UI_StrategySet_type") //$NON-NLS-1$
+ :
+ getString("_UI_StrategySet_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(StrategySet.class)) {
+ case PropertylifecyclePackage.STRATEGY_SET__STRATEGIES:
+ 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(PropertylifecyclePackage.Literals.STRATEGY_SET__STRATEGIES,
+ PropertylifecycleFactory.eINSTANCE.createStrategyElement()));
+ }
+
+}
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/src-gen/org/eclipse/papyrus/propertylifecycle/provider/StrategyTemplateItemProvider.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/src-gen/org/eclipse/papyrus/propertylifecycle/provider/StrategyTemplateItemProvider.java
new file mode 100755
index 00000000000..b196be19d03
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.edit/src-gen/org/eclipse/papyrus/propertylifecycle/provider/StrategyTemplateItemProvider.java
@@ -0,0 +1,209 @@
+/**
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *
+ * Quentin Le Menez (CEA LIST) quentin.lemenez@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.propertylifecycle.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IChildCreationExtender;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.papyrus.propertylifecycle.PropertylifecyclePackage;
+import org.eclipse.papyrus.propertylifecycle.StrategyTemplate;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.propertylifecycle.StrategyTemplate} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class StrategyTemplateItemProvider
+ 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 StrategyTemplateItemProvider(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);
+ addDecriptionPropertyDescriptor(object);
+ addIdPropertyDescriptor(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_StrategyTemplate_name_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_StrategyTemplate_name_feature", "_UI_StrategyTemplate_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ PropertylifecyclePackage.Literals.STRATEGY_TEMPLATE__NAME,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Decription feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected void addDecriptionPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_StrategyTemplate_decription_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_StrategyTemplate_decription_feature", "_UI_StrategyTemplate_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ PropertylifecyclePackage.Literals.STRATEGY_TEMPLATE__DECRIPTION,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Id feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected void addIdPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_StrategyTemplate_id_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_StrategyTemplate_id_feature", "_UI_StrategyTemplate_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ PropertylifecyclePackage.Literals.STRATEGY_TEMPLATE__ID,
+ 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 = ((StrategyTemplate) object).getName();
+ return label == null || label.length() == 0 ? getString("_UI_StrategyTemplate_type") //$NON-NLS-1$
+ :
+ getString("_UI_StrategyTemplate_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(StrategyTemplate.class)) {
+ case PropertylifecyclePackage.STRATEGY_TEMPLATE__NAME:
+ case PropertylifecyclePackage.STRATEGY_TEMPLATE__DECRIPTION:
+ case PropertylifecyclePackage.STRATEGY_TEMPLATE__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);
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return ((IChildCreationExtender) adapterFactory).getResourceLocator();
+ }
+
+}
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.editor/.classpath b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.editor/.classpath
new file mode 100755
index 00000000000..26e67d64ad0
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.editor/.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.8"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src-gen"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.editor/.gitignore b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.editor/.gitignore
new file mode 100755
index 00000000000..ae3c1726048
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.editor/.gitignore
@@ -0,0 +1 @@
+/bin/
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.editor/.project b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.editor/.project
new file mode 100755
index 00000000000..6cc6d822e55
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.editor/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.papyrus.propertylifecycle.model.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/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.editor/.settings/org.eclipse.jdt.core.prefs b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.editor/.settings/org.eclipse.jdt.core.prefs
new file mode 100755
index 00000000000..0c68a61dca8
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.editor/.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.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.editor/META-INF/MANIFEST.MF b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.editor/META-INF/MANIFEST.MF
new file mode 100755
index 00000000000..03b374d2640
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.editor/META-INF/MANIFEST.MF
@@ -0,0 +1,18 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.papyrus.propertylifecycle.model.editor;singleton:=true
+Bundle-Version: 0.0.1.qualifier
+Bundle-ClassPath: .
+Bundle-Activator: org.eclipse.papyrus.propertylifecycle.presentation.PropertylifecycleEditorPlugin$Implementation
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Export-Package: org.eclipse.papyrus.propertylifecycle.presentation
+Require-Bundle: org.eclipse.core.runtime;bundle-version="3.12.0",
+ org.eclipse.core.resources;bundle-version="3.11.0";visibility:=reexport,
+ org.eclipse.papyrus.propertylifecycle.model.edit;bundle-version="0.0.1";visibility:=reexport,
+ org.eclipse.emf.ecore.xmi;bundle-version="2.12.0";visibility:=reexport,
+ org.eclipse.emf.edit.ui;bundle-version="2.12.0";visibility:=reexport,
+ org.eclipse.ui.ide;bundle-version="3.12.0";visibility:=reexport
+Bundle-ActivationPolicy: lazy
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.editor/about.html b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.editor/about.html
new file mode 100755
index 00000000000..d35d5aed64c
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.editor/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/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.editor/build.properties b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.editor/build.properties
new file mode 100755
index 00000000000..bf68dc02e27
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.editor/build.properties
@@ -0,0 +1,20 @@
+# Copyright (c) 2016 CEA LIST and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+#
+# Quentin Le Menez (CEA LIST) quentin.lemenez@cea.fr - Initial API and implementation
+
+bin.includes = .,\
+ icons/,\
+ META-INF/,\
+ plugin.xml,\
+ plugin.properties,\
+ about.html
+jars.compile.order = .
+source.. = src-gen/
+output.. = bin
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.editor/icons/full/obj16/PropertylifecycleModelFile.gif b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.editor/icons/full/obj16/PropertylifecycleModelFile.gif
new file mode 100755
index 00000000000..5a20b74442c
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.editor/icons/full/obj16/PropertylifecycleModelFile.gif
Binary files differ
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.editor/icons/full/wizban/NewPropertylifecycle.gif b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.editor/icons/full/wizban/NewPropertylifecycle.gif
new file mode 100755
index 00000000000..a76f326ac03
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.editor/icons/full/wizban/NewPropertylifecycle.gif
Binary files differ
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.editor/plugin.properties b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.editor/plugin.properties
new file mode 100755
index 00000000000..6e0f06957a0
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.editor/plugin.properties
@@ -0,0 +1,62 @@
+# Copyright (c) 2016 CEA LIST and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+#
+# Quentin Le Menez (CEA LIST) quentin.lemenez@cea.fr - Initial API and implementation
+
+pluginName = Propertylifecycle Editor
+providerName = www.example.org
+
+_UI_PropertylifecycleEditor_menu = &Propertylifecycle 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_PropertylifecycleModelWizard_label = Propertylifecycle Model
+_UI_PropertylifecycleModelWizard_description = Create a new Propertylifecycle model
+
+_UI_PropertylifecycleEditor_label = Propertylifecycle Model Editor
+
+_UI_PropertylifecycleEditorFilenameDefaultBase = My
+_UI_PropertylifecycleEditorFilenameExtensions = propertylifecycle
+
+_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?
+
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.editor/plugin.xml b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.editor/plugin.xml
new file mode 100755
index 00000000000..3206e9de309
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.editor/plugin.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+ Copyright (c) 2016 CEA LIST and others.
+
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License v1.0
+ which accompanies this distribution, and is available at
+ http://www.eclipse.org/legal/epl-v10.html
+
+ Contributors:
+
+ Quentin Le Menez (CEA LIST) quentin.lemenez@cea.fr - Initial API and implementation
+-->
+
+<plugin>
+
+ <extension point="org.eclipse.ui.newWizards">
+ <!-- @generated propertylifecycle -->
+ <category
+ id="org.eclipse.emf.ecore.Wizard.category.ID"
+ name="%_UI_Wizard_category"/>
+ <wizard
+ id="org.eclipse.papyrus.infra.propertylifecycle.presentation.PropertylifecycleModelWizardID"
+ name="%_UI_PropertylifecycleModelWizard_label"
+ class="org.eclipse.papyrus.propertylifecycle.presentation.PropertylifecycleModelWizard"
+ category="org.eclipse.emf.ecore.Wizard.category.ID"
+ icon="icons/full/obj16/PropertylifecycleModelFile.gif">
+ <description>%_UI_PropertylifecycleModelWizard_description</description>
+ <selection class="org.eclipse.core.resources.IResource"/>
+ </wizard>
+ </extension>
+
+ <extension point="org.eclipse.ui.editors">
+ <!-- @generated propertylifecycle -->
+ <editor
+ id="org.eclipse.papyrus.infra.propertylifecycle.presentation.PropertylifecycleEditorID"
+ name="%_UI_PropertylifecycleEditor_label"
+ icon="icons/full/obj16/PropertylifecycleModelFile.gif"
+ class="org.eclipse.papyrus.propertylifecycle.presentation.PropertylifecycleEditor"
+ contributorClass="org.eclipse.papyrus.propertylifecycle.presentation.PropertylifecycleActionBarContributor">
+ <contentTypeBinding contentTypeId="org.eclipse.papyrus.infra.propertylifecycle"/>
+ </editor>
+ </extension>
+
+</plugin>
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.editor/pom.xml b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.editor/pom.xml
new file mode 100755
index 00000000000..8086d803beb
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.editor/pom.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <artifactId>org.eclipse.papyrus.infra.propertylifecycle.model.editor</artifactId>
+ <version>0.0.1.qualifier</version>
+ <groupId>org.eclipse.papyrus</groupId>
+ <packaging>eclipse-plugin</packaging>
+ <parent>
+ <groupId>org.eclipse.papyrus</groupId>
+ <artifactId>org.eclipse.papyrus.infra.propertylifecycle</artifactId>
+ <version>0.0.1.qualifier</version>
+ <relativePath>../org.eclipse.papyrus.infra.propertylifecycle/pom.xml</relativePath>
+ </parent>
+</project>
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.editor/src-gen/org/eclipse/papyrus/propertylifecycle/presentation/PropertylifecycleActionBarContributor.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.editor/src-gen/org/eclipse/papyrus/propertylifecycle/presentation/PropertylifecycleActionBarContributor.java
new file mode 100755
index 00000000000..5fbeaf9b5e2
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.editor/src-gen/org/eclipse/papyrus/propertylifecycle/presentation/PropertylifecycleActionBarContributor.java
@@ -0,0 +1,450 @@
+/**
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *
+ * Quentin Le Menez (CEA LIST) quentin.lemenez@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.propertylifecycle.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 Propertylifecycle model editor.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class PropertylifecycleActionBarContributor
+ 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(PropertylifecycleEditorPlugin.INSTANCE.getString("_UI_ShowPropertiesView_menu_item")) {//$NON-NLS-1$
+ @Override
+ public void run() {
+ try {
+ getPage().showView("org.eclipse.ui.views.PropertySheet"); //$NON-NLS-1$
+ } catch (PartInitException exception) {
+ PropertylifecycleEditorPlugin.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(PropertylifecycleEditorPlugin.INSTANCE.getString("_UI_RefreshViewer_menu_item")) {//$NON-NLS-1$
+ @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 PropertylifecycleActionBarContributor() {
+ 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("propertylifecycle-settings")); //$NON-NLS-1$
+ toolBarManager.add(new Separator("propertylifecycle-additions")); //$NON-NLS-1$
+ }
+
+ /**
+ * 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(PropertylifecycleEditorPlugin.INSTANCE.getString("_UI_PropertylifecycleEditor_menu"), "org.eclipse.papyrus.infra.propertylifecycleMenuID"); //$NON-NLS-1$ //$NON-NLS-2$
+ menuManager.insertAfter("additions", submenuManager); //$NON-NLS-1$
+ submenuManager.add(new Separator("settings")); //$NON-NLS-1$
+ submenuManager.add(new Separator("actions")); //$NON-NLS-1$
+ submenuManager.add(new Separator("additions")); //$NON-NLS-1$
+ submenuManager.add(new Separator("additions-end")); //$NON-NLS-1$
+
+ // Prepare for CreateChild item addition or removal.
+ //
+ createChildMenuManager = new MenuManager(PropertylifecycleEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item")); //$NON-NLS-1$
+ submenuManager.insertBefore("additions", createChildMenuManager); //$NON-NLS-1$
+
+ // Prepare for CreateSibling item addition or removal.
+ //
+ createSiblingMenuManager = new MenuManager(PropertylifecycleEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item")); //$NON-NLS-1$
+ submenuManager.insertBefore("additions", createSiblingMenuManager); //$NON-NLS-1$
+
+ // Force an update because Eclipse hides empty menus now.
+ //
+ submenuManager.addMenuListener(new IMenuListener() {
+ @Override
+ 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
+ */
+ @Override
+ 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(PropertylifecycleEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item")); //$NON-NLS-1$
+ populateManager(submenuManager, createChildActions, null);
+ menuManager.insertBefore("edit", submenuManager); //$NON-NLS-1$
+
+ submenuManager = new MenuManager(PropertylifecycleEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item")); //$NON-NLS-1$
+ populateManager(submenuManager, createSiblingActions, null);
+ menuManager.insertBefore("edit", submenuManager); //$NON-NLS-1$
+ }
+
+ /**
+ * 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")); //$NON-NLS-1$ //$NON-NLS-2$
+ menuManager.insertAfter("ui-actions", showPropertiesViewAction); //$NON-NLS-1$
+
+ refreshViewerAction.setEnabled(refreshViewerAction.isEnabled());
+ menuManager.insertAfter("ui-actions", refreshViewerAction); //$NON-NLS-1$
+
+ 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/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.editor/src-gen/org/eclipse/papyrus/propertylifecycle/presentation/PropertylifecycleEditor.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.editor/src-gen/org/eclipse/papyrus/propertylifecycle/presentation/PropertylifecycleEditor.java
new file mode 100755
index 00000000000..4d574c7e7c8
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.editor/src-gen/org/eclipse/papyrus/propertylifecycle/presentation/PropertylifecycleEditor.java
@@ -0,0 +1,1880 @@
+/**
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *
+ * Quentin Le Menez (CEA LIST) quentin.lemenez@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.propertylifecycle.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.papyrus.propertylifecycle.provider.PropertylifecycleItemProviderAdapterFactory;
+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.ui.actions.WorkspaceModifyOperation;
+
+
+/**
+ * This is an example of a Propertylifecycle model editor.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class PropertylifecycleEditor
+ 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() {
+ @Override
+ public void partActivated(IWorkbenchPart p) {
+ if (p instanceof ContentOutline) {
+ if (((ContentOutline) p).getCurrentPage() == contentOutlinePage) {
+ getActionBarContributor().setActiveEditor(PropertylifecycleEditor.this);
+
+ setCurrentViewer(contentOutlineViewer);
+ }
+ } else if (p instanceof PropertySheet) {
+ if (propertySheetPages.contains(((PropertySheet) p).getCurrentPage())) {
+ getActionBarContributor().setActiveEditor(PropertylifecycleEditor.this);
+ handleActivate();
+ }
+ } else if (p == PropertylifecycleEditor.this) {
+ handleActivate();
+ }
+ }
+
+ @Override
+ public void partBroughtToTop(IWorkbenchPart p) {
+ // Ignore.
+ }
+
+ @Override
+ public void partClosed(IWorkbenchPart p) {
+ // Ignore.
+ }
+
+ @Override
+ public void partDeactivated(IWorkbenchPart p) {
+ // Ignore.
+ }
+
+ @Override
+ 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() {
+ @Override
+ 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() {
+ @Override
+ public void run() {
+ updateProblemIndication();
+ }
+ });
+ }
+ }
+ };
+
+ /**
+ * This listens for workspace changes.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected IResourceChangeListener resourceChangeListener = new IResourceChangeListener() {
+ @Override
+ 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>();
+
+ @Override
+ 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() {
+ @Override
+ public void run() {
+ removedResources.addAll(visitor.getRemovedResources());
+ if (!isDirty()) {
+ getSite().getPage().closeEditor(PropertylifecycleEditor.this, false);
+ }
+ }
+ });
+ }
+
+ if (!visitor.getChangedResources().isEmpty()) {
+ getSite().getShell().getDisplay().asyncExec(new Runnable() {
+ @Override
+ public void run() {
+ changedResources.addAll(visitor.getChangedResources());
+ if (getSite().getPage().getActiveEditor() == PropertylifecycleEditor.this) {
+ handleActivate();
+ }
+ }
+ });
+ }
+ } catch (CoreException exception) {
+ PropertylifecycleEditorPlugin.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(PropertylifecycleEditor.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.infra.propertylifecycle.model.editor", //$NON-NLS-1$
+ 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) {
+ PropertylifecycleEditorPlugin.INSTANCE.log(exception);
+ }
+ }
+
+ if (markerHelper.hasMarkers(editingDomain.getResourceSet())) {
+ markerHelper.deleteMarkers(editingDomain.getResourceSet());
+ if (diagnostic.getSeverity() != Diagnostic.OK) {
+ try {
+ markerHelper.createMarkers(diagnostic);
+ } catch (CoreException exception) {
+ PropertylifecycleEditorPlugin.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"), //$NON-NLS-1$
+ getString("_WARN_FileConflict")); //$NON-NLS-1$
+ }
+
+ /**
+ * This creates a model editor.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public PropertylifecycleEditor() {
+ 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 PropertylifecycleItemProviderAdapterFactory());
+ 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() {
+ @Override
+ public void commandStackChanged(final EventObject event) {
+ getContainer().getDisplay().asyncExec(new Runnable() {
+ @Override
+ 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() {
+ @Override
+ 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
+ */
+ @Override
+ 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.
+ //
+ @Override
+ 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
+ */
+ @Override
+ 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"); //$NON-NLS-1$
+ contextMenu.add(new Separator("additions")); //$NON-NLS-1$
+ 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(), editingDomain.getResourceSet().getURIConverter());
+ 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) {
+ boolean hasErrors = !resource.getErrors().isEmpty();
+ if (hasErrors || !resource.getWarnings().isEmpty()) {
+ BasicDiagnostic basicDiagnostic = new BasicDiagnostic(hasErrors ? Diagnostic.ERROR : Diagnostic.WARNING,
+ "org.eclipse.papyrus.infra.propertylifecycle.model.editor", //$NON-NLS-1$
+ 0,
+ getString("_UI_CreateModelError_message", resource.getURI()), //$NON-NLS-1$
+ 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.infra.propertylifecycle.model.editor", //$NON-NLS-1$
+ 0,
+ getString("_UI_CreateModelError_message", resource.getURI()), //$NON-NLS-1$
+ 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(), PropertylifecycleEditor.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")); //$NON-NLS-1$
+ }
+
+ // Create a page for the parent tree view.
+ //
+ {
+ ViewerPane viewerPane = new ViewerPane(getSite().getPage(), PropertylifecycleEditor.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")); //$NON-NLS-1$
+ }
+
+ // This is the page for the list viewer
+ //
+ {
+ ViewerPane viewerPane = new ViewerPane(getSite().getPage(), PropertylifecycleEditor.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")); //$NON-NLS-1$
+ }
+
+ // This is the page for the tree viewer
+ //
+ {
+ ViewerPane viewerPane = new ViewerPane(getSite().getPage(), PropertylifecycleEditor.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")); //$NON-NLS-1$
+ }
+
+ // This is the page for the table viewer.
+ //
+ {
+ ViewerPane viewerPane = new ViewerPane(getSite().getPage(), PropertylifecycleEditor.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")); //$NON-NLS-1$
+ objectColumn.setResizable(true);
+
+ TableColumn selfColumn = new TableColumn(table, SWT.NONE);
+ layout.addColumnData(new ColumnWeightData(2, 100, true));
+ selfColumn.setText(getString("_UI_SelfColumn_label")); //$NON-NLS-1$
+ selfColumn.setResizable(true);
+
+ tableViewer.setColumnProperties(new String[] { "a", "b" }); //$NON-NLS-1$ //$NON-NLS-2$
+ tableViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+ tableViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+ createContextMenuFor(tableViewer);
+ int pageIndex = addPage(viewerPane.getControl());
+ setPageText(pageIndex, getString("_UI_TablePage_label")); //$NON-NLS-1$
+ }
+
+ // This is the page for the table tree viewer.
+ //
+ {
+ ViewerPane viewerPane = new ViewerPane(getSite().getPage(), PropertylifecycleEditor.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")); //$NON-NLS-1$
+ objectColumn.setResizable(true);
+ objectColumn.setWidth(250);
+
+ TreeColumn selfColumn = new TreeColumn(tree, SWT.NONE);
+ selfColumn.setText(getString("_UI_SelfColumn_label")); //$NON-NLS-1$
+ selfColumn.setResizable(true);
+ selfColumn.setWidth(200);
+
+ treeViewerWithColumns.setColumnProperties(new String[] { "a", "b" }); //$NON-NLS-1$ //$NON-NLS-2$
+ treeViewerWithColumns.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+ treeViewerWithColumns.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+ createContextMenuFor(treeViewerWithColumns);
+ int pageIndex = addPage(viewerPane.getControl());
+ setPageText(pageIndex, getString("_UI_TreeWithColumnsPage_label")); //$NON-NLS-1$
+ }
+
+ getSite().getShell().getDisplay().asyncExec(new Runnable() {
+ @Override
+ 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() {
+ @Override
+ 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, ""); //$NON-NLS-1$
+ 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")); //$NON-NLS-1$
+ 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.
+ //
+ @Override
+ 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) {
+ PropertylifecycleEditor.this.setSelectionToViewer(selection);
+ PropertylifecycleEditor.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.
+ //
+ PropertylifecycleEditorPlugin.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
+ */
+ @Override
+ 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
+ */
+ @Override
+ public void addSelectionChangedListener(ISelectionChangedListener listener) {
+ selectionChangedListeners.add(listener);
+ }
+
+ /**
+ * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ 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
+ */
+ @Override
+ 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
+ */
+ @Override
+ 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")); //$NON-NLS-1$
+ break;
+ }
+ case 1: {
+ String text = new AdapterFactoryItemDelegator(adapterFactory).getText(collection.iterator().next());
+ statusLineManager.setMessage(getString("_UI_SingleObjectSelected", text)); //$NON-NLS-1$
+ break;
+ }
+ default: {
+ statusLineManager.setMessage(getString("_UI_MultiObjectSelected", Integer.toString(collection.size()))); //$NON-NLS-1$
+ break;
+ }
+ }
+ } else {
+ statusLineManager.setMessage(""); //$NON-NLS-1$
+ }
+ }
+ }
+
+ /**
+ * 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 PropertylifecycleEditorPlugin.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 PropertylifecycleEditorPlugin.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
+ */
+ @Override
+ 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/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.editor/src-gen/org/eclipse/papyrus/propertylifecycle/presentation/PropertylifecycleEditorPlugin.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.editor/src-gen/org/eclipse/papyrus/propertylifecycle/presentation/PropertylifecycleEditorPlugin.java
new file mode 100755
index 00000000000..34a189cdfa5
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.editor/src-gen/org/eclipse/papyrus/propertylifecycle/presentation/PropertylifecycleEditorPlugin.java
@@ -0,0 +1,108 @@
+/**
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *
+ * Quentin Le Menez (CEA LIST) quentin.lemenez@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.propertylifecycle.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 Propertylifecycle editor plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public final class PropertylifecycleEditorPlugin extends EMFPlugin {
+ /**
+ * Keep track of the singleton.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public static final PropertylifecycleEditorPlugin INSTANCE = new PropertylifecycleEditorPlugin();
+
+ /**
+ * 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 PropertylifecycleEditorPlugin() {
+ 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/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.editor/src-gen/org/eclipse/papyrus/propertylifecycle/presentation/PropertylifecycleModelWizard.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.editor/src-gen/org/eclipse/papyrus/propertylifecycle/presentation/PropertylifecycleModelWizard.java
new file mode 100755
index 00000000000..207d06454c9
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model.editor/src-gen/org/eclipse/papyrus/propertylifecycle/presentation/PropertylifecycleModelWizard.java
@@ -0,0 +1,662 @@
+/**
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *
+ * Quentin Le Menez (CEA LIST) quentin.lemenez@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.propertylifecycle.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.propertylifecycle.PropertylifecycleFactory;
+import org.eclipse.papyrus.propertylifecycle.PropertylifecyclePackage;
+import org.eclipse.papyrus.propertylifecycle.provider.PropertylifecycleEditPlugin;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Platform;
+
+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 PropertylifecycleModelWizard 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(PropertylifecycleEditorPlugin.INSTANCE.getString("_UI_PropertylifecycleEditorFilenameExtensions").split("\\s*,\\s*"))); //$NON-NLS-1$ //$NON-NLS-2$
+
+ /**
+ * A formatted list of supported file extensions, suitable for display.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public static final String FORMATTED_FILE_EXTENSIONS = PropertylifecycleEditorPlugin.INSTANCE.getString("_UI_PropertylifecycleEditorFilenameExtensions").replaceAll("\\s*,\\s*", ", "); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+
+ /**
+ * This caches an instance of the model package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected PropertylifecyclePackage propertylifecyclePackage = PropertylifecyclePackage.eINSTANCE;
+
+ /**
+ * This caches an instance of the model factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected PropertylifecycleFactory propertylifecycleFactory = propertylifecyclePackage.getPropertylifecycleFactory();
+
+ /**
+ * This is the file creation page.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected PropertylifecycleModelWizardNewFileCreationPage newFileCreationPage;
+
+ /**
+ * This is the initial object creation page.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected PropertylifecycleModelWizardInitialObjectCreationPage 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
+ */
+ @Override
+ public void init(IWorkbench workbench, IStructuredSelection selection) {
+ this.workbench = workbench;
+ this.selection = selection;
+ setWindowTitle(PropertylifecycleEditorPlugin.INSTANCE.getString("_UI_Wizard_label")); //$NON-NLS-1$
+ setDefaultPageImageDescriptor(ExtendedImageRegistry.INSTANCE.getImageDescriptor(PropertylifecycleEditorPlugin.INSTANCE.getImage("full/wizban/NewPropertylifecycle"))); //$NON-NLS-1$
+ }
+
+ /**
+ * 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 : propertylifecyclePackage.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) propertylifecyclePackage.getEClassifier(initialObjectCreationPage.getInitialObjectName());
+ EObject rootObject = propertylifecycleFactory.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, PropertylifecyclePackage.eCONTENT_TYPE);
+
+ // 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) {
+ PropertylifecycleEditorPlugin.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() {
+ @Override
+ 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(),
+ Platform.getContentTypeManager().getContentType(PropertylifecyclePackage.eCONTENT_TYPE)).getId());
+ } catch (PartInitException exception) {
+ MessageDialog.openError(workbenchWindow.getShell(), PropertylifecycleEditorPlugin.INSTANCE.getString("_UI_OpenEditorError_label"), exception.getMessage()); //$NON-NLS-1$
+ return false;
+ }
+
+ return true;
+ } catch (Exception exception) {
+ PropertylifecycleEditorPlugin.INSTANCE.log(exception);
+ return false;
+ }
+ }
+
+ /**
+ * This is the one page of the wizard.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public class PropertylifecycleModelWizardNewFileCreationPage extends WizardNewFileCreationPage {
+ /**
+ * Pass in the selection.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public PropertylifecycleModelWizardNewFileCreationPage(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"; //$NON-NLS-1$ //$NON-NLS-2$
+ setErrorMessage(PropertylifecycleEditorPlugin.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 PropertylifecycleModelWizardInitialObjectCreationPage 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 PropertylifecycleModelWizardInitialObjectCreationPage(String pageId) {
+ super(pageId);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ 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(PropertylifecycleEditorPlugin.INSTANCE.getString("_UI_ModelObject")); //$NON-NLS-1$
+
+ 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(PropertylifecycleEditorPlugin.INSTANCE.getString("_UI_XMLEncoding")); //$NON-NLS-1$
+
+ 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() {
+ @Override
+ 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 PropertylifecycleEditPlugin.INSTANCE.getString("_UI_" + typeName + "_type"); //$NON-NLS-1$ //$NON-NLS-2$
+ } catch (MissingResourceException mre) {
+ PropertylifecycleEditorPlugin.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(PropertylifecycleEditorPlugin.INSTANCE.getString("_UI_XMLEncodingChoices")); stringTokenizer.hasMoreTokens();) //$NON-NLS-1$
+ {
+ 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 PropertylifecycleModelWizardNewFileCreationPage("Whatever", selection); //$NON-NLS-1$
+ newFileCreationPage.setTitle(PropertylifecycleEditorPlugin.INSTANCE.getString("_UI_PropertylifecycleModelWizard_label")); //$NON-NLS-1$
+ newFileCreationPage.setDescription(PropertylifecycleEditorPlugin.INSTANCE.getString("_UI_PropertylifecycleModelWizard_description")); //$NON-NLS-1$
+ newFileCreationPage.setFileName(PropertylifecycleEditorPlugin.INSTANCE.getString("_UI_PropertylifecycleEditorFilenameDefaultBase") + "." + FILE_EXTENSIONS.get(0)); //$NON-NLS-1$ //$NON-NLS-2$
+ 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 = PropertylifecycleEditorPlugin.INSTANCE.getString("_UI_PropertylifecycleEditorFilenameDefaultBase"); //$NON-NLS-1$
+ String defaultModelFilenameExtension = FILE_EXTENSIONS.get(0);
+ String modelFilename = defaultModelBaseFilename + "." + defaultModelFilenameExtension; //$NON-NLS-1$
+ for (int i = 1; ((IContainer) selectedResource).findMember(modelFilename) != null; ++i) {
+ modelFilename = defaultModelBaseFilename + i + "." + defaultModelFilenameExtension; //$NON-NLS-1$
+ }
+ newFileCreationPage.setFileName(modelFilename);
+ }
+ }
+ }
+ initialObjectCreationPage = new PropertylifecycleModelWizardInitialObjectCreationPage("Whatever2"); //$NON-NLS-1$
+ initialObjectCreationPage.setTitle(PropertylifecycleEditorPlugin.INSTANCE.getString("_UI_PropertylifecycleModelWizard_label")); //$NON-NLS-1$
+ initialObjectCreationPage.setDescription(PropertylifecycleEditorPlugin.INSTANCE.getString("_UI_Wizard_initial_object_description")); //$NON-NLS-1$
+ 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/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/.classpath b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/.classpath
new file mode 100755
index 00000000000..50aae142c50
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/.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.8"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src-gen"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/.gitignore b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/.gitignore
new file mode 100755
index 00000000000..ae3c1726048
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/.gitignore
@@ -0,0 +1 @@
+/bin/
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/.project b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/.project
new file mode 100755
index 00000000000..0badea84f49
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.papyrus.propertylifecycle.model</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/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/.settings/org.eclipse.jdt.core.prefs b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/.settings/org.eclipse.jdt.core.prefs
new file mode 100755
index 00000000000..0c68a61dca8
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/.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.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/META-INF/MANIFEST.MF b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/META-INF/MANIFEST.MF
new file mode 100755
index 00000000000..33e1b483228
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/META-INF/MANIFEST.MF
@@ -0,0 +1,19 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.papyrus.propertylifecycle.model;singleton:=true
+Bundle-Version: 0.0.1.qualifier
+Bundle-ClassPath: .
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Export-Package: org.eclipse.papyrus.propertylifecycle,
+ org.eclipse.papyrus.propertylifecycle.impl,
+ org.eclipse.papyrus.propertylifecycle.model.registries,
+ org.eclipse.papyrus.propertylifecycle.util
+Require-Bundle: org.eclipse.core.runtime;bundle-version="3.12.0",
+ org.eclipse.emf.ecore;bundle-version="2.12.0";visibility:=reexport,
+ org.eclipse.emf.ecore.xmi;bundle-version="2.12.0";visibility:=reexport,
+ org.eclipse.papyrus.infra.core.log;bundle-version="1.2.0",
+ org.eclipse.ui;bundle-version="3.107.0"
+Bundle-ActivationPolicy: lazy
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/about.html b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/about.html
new file mode 100755
index 00000000000..d35d5aed64c
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/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/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/build.properties b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/build.properties
new file mode 100755
index 00000000000..e47d31cf85e
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/build.properties
@@ -0,0 +1,21 @@
+# Copyright (c) 2016 CEA LIST and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+#
+# Quentin Le Menez (CEA LIST) quentin.lemenez@cea.fr - Initial API and implementation
+
+bin.includes = .,\
+ model/,\
+ META-INF/,\
+ plugin.xml,\
+ plugin.properties,\
+ about.html,\
+ schema/
+jars.compile.order = .
+source.. = src-gen/
+output.. = bin/
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/model/papyrus/propertylifecycle.css b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/model/papyrus/propertylifecycle.css
new file mode 100755
index 00000000000..f93ba3e825c
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/model/papyrus/propertylifecycle.css
@@ -0,0 +1,57 @@
+/*--- ClassDiagram > Class ---*/
+ClassDiagram Class {
+ fillcolor: #FFFFFF;
+ elementIcon: false;
+}
+
+ClassDiagram Class > Compartment[kind="operations"],
+ClassDiagram Class > Compartment[kind="nestedclassifiers"],
+ClassDiagram Class > Compartment[kind="symbol"] {
+ visible:false;
+}
+
+/*--- ClassDiagram > Enumeration ---*/
+ClassDiagram Enumeration {
+ fillcolor: white;
+ elementIcon: false;
+}
+
+ClassDiagram Enumeration > Compartment[kind="symbol"] {
+ visible:false;
+}
+
+/*--- ClassDiagram > Model ---*/
+ClassDiagram Model {
+ fillcolor: rgb(255, 255, 255);
+ elementIcon: false;
+}
+
+/*--- ClassDiagram > Association ---*/
+ClassDiagram Association > Label:targetRole,
+ClassDiagram Association > Label:sourceRole {
+ visible: false;
+}
+
+ClassDiagram > Association {
+ targetDecoration: false;
+ sourceDecoration: false;
+}
+
+
+/*--- ClassDiagram > Property/EnumerationLiteral ---*/
+ClassDiagram Class > Compartment > Property,
+ClassDiagram Enumeration > Compartment > EnumerationLiteral {
+ elementIcon: false;
+ maskLabel: name multiplicity;
+}
+
+
+
+/*--- Tests ---*/
+
+
+/*--- Notes ---*/
+/*
+ * 1- maskLabel does not mask the attached label(s) but displays it and masks all others
+ *
+ * */ \ No newline at end of file
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/model/papyrus/propertylifecycle.di b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/model/papyrus/propertylifecycle.di
new file mode 100755
index 00000000000..bf9abab340f
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/model/papyrus/propertylifecycle.di
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"/>
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/model/papyrus/propertylifecycle.notation b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/model/papyrus/propertylifecycle.notation
new file mode 100755
index 00000000000..f790d31af0a
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/model/papyrus/propertylifecycle.notation
@@ -0,0 +1,3765 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:configuration="http://www.eclipse.org/papyrus/infra/viewpoints/configuration" xmlns:css="http://www.eclipse.org/papyrus/infra/gmfdiag/css" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:nattable="http://www.eclipse.org/papyrus/nattable/model" xmlns:nattableaxis="http://www.eclipse.org/papyrus/nattable/model/table/nattableaxis" xmlns:nattableaxisconfiguration="http://www.eclipse.org/papyrus/nattable/model/table/nattableaxisconfiguration" xmlns:nattableaxisprovider="http://www.eclipse.org/papyrus/nattable/model/table/nattableaxisprovider" xmlns:nattableconfiguration="http://www.eclipse.org/papyrus/nattable/model/nattableconfiguration" xmlns:nattablestyle="http://www.eclipse.org/papyrus/nattable/model/table/nattablestyle" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:style="http://www.eclipse.org/papyrus/infra/viewpoints/policy/style" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xsi:schemaLocation="http://www.eclipse.org/papyrus/nattable/model/table/nattableaxis http://www.eclipse.org/papyrus/nattable/model#//nattableaxis http://www.eclipse.org/papyrus/nattable/model/table/nattableaxisconfiguration http://www.eclipse.org/papyrus/nattable/model#//nattableaxisconfiguration http://www.eclipse.org/papyrus/nattable/model/table/nattableaxisprovider http://www.eclipse.org/papyrus/nattable/model#//nattableaxisprovider http://www.eclipse.org/papyrus/nattable/model/nattableconfiguration http://www.eclipse.org/papyrus/nattable/model#//nattableconfiguration http://www.eclipse.org/papyrus/nattable/model/table/nattablestyle http://www.eclipse.org/papyrus/nattable/model#//nattablestyle">
+ <notation:Diagram xmi:id="_9CnikHb8EeW7365dAmHglw" type="UseCase" name="UseCaseDiagram" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_RGf1sHb_EeW7365dAmHglw" type="2011">
+ <children xmi:type="notation:DecorationNode" xmi:id="_RGhD0Hb_EeW7365dAmHglw" type="5014">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_RGhq4Hb_EeW7365dAmHglw" y="60"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_RGhq4Xb_EeW7365dAmHglw" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_RGhq4nb_EeW7365dAmHglw" x="20" y="100"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_RGiR8Hb_EeW7365dAmHglw" type="6037">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_RGiR8Xb_EeW7365dAmHglw" x="20" y="80"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_RGiR8nb_EeW7365dAmHglw" type="6048">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_RGiR83b_EeW7365dAmHglw" y="5"/>
+ </children>
+ <element xmi:type="uml:Actor" href="propertylifecycle.uml#_RGOI4Hb_EeW7365dAmHglw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_RGf1sXb_EeW7365dAmHglw" x="100" y="220"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_gjSo8HcBEeW7365dAmHglw" type="2015">
+ <children xmi:type="notation:DecorationNode" xmi:id="_gjTQAHcBEeW7365dAmHglw" type="5019"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_gjTQAXcBEeW7365dAmHglw" type="6047">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_gjTQAncBEeW7365dAmHglw" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_gjT3EHcBEeW7365dAmHglw" type="7011">
+ <children xmi:type="notation:Shape" xmi:id="_Vld0AHcCEeW7365dAmHglw" type="3009">
+ <children xmi:type="notation:DecorationNode" xmi:id="_Vld0AncCEeW7365dAmHglw" type="5018"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Vld0A3cCEeW7365dAmHglw" type="6045">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Vld0BHcCEeW7365dAmHglw" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_VlebEHcCEeW7365dAmHglw" type="7012">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_VlebEXcCEeW7365dAmHglw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_VlebEncCEeW7365dAmHglw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VlebE3cCEeW7365dAmHglw"/>
+ </children>
+ <element xmi:type="uml:UseCase" href="propertylifecycle.uml#_Vk8PkHcCEeW7365dAmHglw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Vld0AXcCEeW7365dAmHglw" x="35" y="338" width="148" height="36"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_ilU8sHcCEeW7365dAmHglw" type="3009">
+ <children xmi:type="notation:DecorationNode" xmi:id="_ilU8sncCEeW7365dAmHglw" type="5018"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ilU8s3cCEeW7365dAmHglw" type="6045">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ilU8tHcCEeW7365dAmHglw" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_ilU8tXcCEeW7365dAmHglw" type="7012">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ilU8tncCEeW7365dAmHglw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ilU8t3cCEeW7365dAmHglw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ilU8uHcCEeW7365dAmHglw"/>
+ </children>
+ <element xmi:type="uml:UseCase" href="propertylifecycle.uml#_ilG6QHcCEeW7365dAmHglw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ilU8sXcCEeW7365dAmHglw" x="29" y="32" width="182" height="36"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_qYeTcHcDEeW7365dAmHglw" type="3009">
+ <children xmi:type="notation:DecorationNode" xmi:id="_qYjL8HcDEeW7365dAmHglw" type="5018"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_qYjL8XcDEeW7365dAmHglw" type="6045">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_qYjL8ncDEeW7365dAmHglw" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_qYjL83cDEeW7365dAmHglw" type="7012">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_qYjL9HcDEeW7365dAmHglw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_qYjL9XcDEeW7365dAmHglw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qYjL9ncDEeW7365dAmHglw"/>
+ </children>
+ <element xmi:type="uml:UseCase" href="propertylifecycle.uml#_qX_yUHcDEeW7365dAmHglw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qYeTcXcDEeW7365dAmHglw" x="195" y="198" width="174" height="36"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_623_kHcDEeW7365dAmHglw" type="3009">
+ <children xmi:type="notation:DecorationNode" xmi:id="_624moHcDEeW7365dAmHglw" type="5018"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_624moXcDEeW7365dAmHglw" type="6045">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_624moncDEeW7365dAmHglw" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_624mo3cDEeW7365dAmHglw" type="7012">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_624mpHcDEeW7365dAmHglw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_624mpXcDEeW7365dAmHglw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_624mpncDEeW7365dAmHglw"/>
+ </children>
+ <element xmi:type="uml:UseCase" href="propertylifecycle.uml#_62qkMHcDEeW7365dAmHglw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_623_kXcDEeW7365dAmHglw" x="477" y="258" width="220" height="36"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_FjJ0sHcHEeW7365dAmHglw" type="3009">
+ <children xmi:type="notation:DecorationNode" xmi:id="_FjJ0sncHEeW7365dAmHglw" type="5018"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_FjJ0s3cHEeW7365dAmHglw" type="6045">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_FjJ0tHcHEeW7365dAmHglw" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_FjJ0tXcHEeW7365dAmHglw" type="7012">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_FjJ0tncHEeW7365dAmHglw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_FjJ0t3cHEeW7365dAmHglw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_FjJ0uHcHEeW7365dAmHglw"/>
+ </children>
+ <element xmi:type="uml:UseCase" href="propertylifecycle.uml#_FiuW4HcHEeW7365dAmHglw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_FjJ0sXcHEeW7365dAmHglw" x="475" y="138" width="215" height="36"/>
+ </children>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gjT3EXcBEeW7365dAmHglw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_gjePIHcBEeW7365dAmHglw" type="compartment_shape_display">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_gjePIXcBEeW7365dAmHglw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gjePIncBEeW7365dAmHglw"/>
+ </children>
+ <element xmi:type="uml:Component" href="propertylifecycle.uml#_gjI38HcBEeW7365dAmHglw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gjSo8XcBEeW7365dAmHglw" x="220" y="20" width="761" height="441"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_d6f6gHftEeW-pZnxtbVJ7A" type="2015">
+ <children xmi:type="notation:DecorationNode" xmi:id="_d6f6gnftEeW-pZnxtbVJ7A" type="5019"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_d6ghkHftEeW-pZnxtbVJ7A" type="6047">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_d6ghkXftEeW-pZnxtbVJ7A" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_d6ghknftEeW-pZnxtbVJ7A" type="7011">
+ <children xmi:type="notation:Shape" xmi:id="_OYSe8HfvEeW-pZnxtbVJ7A" type="3009">
+ <children xmi:type="notation:DecorationNode" xmi:id="_OYSe8nfvEeW-pZnxtbVJ7A" type="5018"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_OYSe83fvEeW-pZnxtbVJ7A" type="6045">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_OYSe9HfvEeW-pZnxtbVJ7A" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_OYSe9XfvEeW-pZnxtbVJ7A" type="7012">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_OYSe9nfvEeW-pZnxtbVJ7A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_OYSe93fvEeW-pZnxtbVJ7A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OYSe-HfvEeW-pZnxtbVJ7A"/>
+ </children>
+ <element xmi:type="uml:UseCase" href="propertylifecycle.uml#_OX4PQHfvEeW-pZnxtbVJ7A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OYSe8XfvEeW-pZnxtbVJ7A" x="75" y="74"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_JrN2YHfwEeW-pZnxtbVJ7A" type="3009">
+ <children xmi:type="notation:DecorationNode" xmi:id="_JrN2YnfwEeW-pZnxtbVJ7A" type="5018"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_JrN2Y3fwEeW-pZnxtbVJ7A" type="6045">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_JrN2ZHfwEeW-pZnxtbVJ7A" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_JrOdcHfwEeW-pZnxtbVJ7A" type="7012">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_JrOdcXfwEeW-pZnxtbVJ7A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_JrOdcnfwEeW-pZnxtbVJ7A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JrOdc3fwEeW-pZnxtbVJ7A"/>
+ </children>
+ <element xmi:type="uml:UseCase" href="propertylifecycle.uml#_Jq4fMHfwEeW-pZnxtbVJ7A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JrN2YXfwEeW-pZnxtbVJ7A" x="95" y="254"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3ut_IHfwEeW-pZnxtbVJ7A" type="3009">
+ <children xmi:type="notation:DecorationNode" xmi:id="_3uumMHfwEeW-pZnxtbVJ7A" type="5018"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3uumMXfwEeW-pZnxtbVJ7A" type="6045">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3uumMnfwEeW-pZnxtbVJ7A" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3uumM3fwEeW-pZnxtbVJ7A" type="7012">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3uumNHfwEeW-pZnxtbVJ7A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3uumNXfwEeW-pZnxtbVJ7A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3uumNnfwEeW-pZnxtbVJ7A"/>
+ </children>
+ <element xmi:type="uml:UseCase" href="propertylifecycle.uml#_3uNo0HfwEeW-pZnxtbVJ7A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3ut_IXfwEeW-pZnxtbVJ7A" x="715" y="254"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_HLi5gHfxEeW-pZnxtbVJ7A" type="3009">
+ <children xmi:type="notation:DecorationNode" xmi:id="_HLjgkHfxEeW-pZnxtbVJ7A" type="5018"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_HLjgkXfxEeW-pZnxtbVJ7A" type="6045">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_HLjgknfxEeW-pZnxtbVJ7A" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_HLjgk3fxEeW-pZnxtbVJ7A" type="7012">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_HLjglHfxEeW-pZnxtbVJ7A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_HLjglXfxEeW-pZnxtbVJ7A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HLjglnfxEeW-pZnxtbVJ7A"/>
+ </children>
+ <element xmi:type="uml:UseCase" href="propertylifecycle.uml#_HLGNkHfxEeW-pZnxtbVJ7A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HLi5gXfxEeW-pZnxtbVJ7A" x="455" y="74"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_zCUE8HfxEeW-pZnxtbVJ7A" type="3009">
+ <children xmi:type="notation:DecorationNode" xmi:id="_zCUsAHfxEeW-pZnxtbVJ7A" type="5018"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_zCUsAXfxEeW-pZnxtbVJ7A" type="6045">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_zCUsAnfxEeW-pZnxtbVJ7A" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_zCUsA3fxEeW-pZnxtbVJ7A" type="7012">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_zCUsBHfxEeW-pZnxtbVJ7A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_zCUsBXfxEeW-pZnxtbVJ7A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zCUsBnfxEeW-pZnxtbVJ7A"/>
+ </children>
+ <element xmi:type="uml:UseCase" href="propertylifecycle.uml#_zB7qcHfxEeW-pZnxtbVJ7A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zCUE8XfxEeW-pZnxtbVJ7A" x="435" y="254"/>
+ </children>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_d6ghk3ftEeW-pZnxtbVJ7A"/>
+ </children>
+ <element xmi:type="uml:Component" href="propertylifecycle.uml#_d6Zz4HftEeW-pZnxtbVJ7A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_d6f6gXftEeW-pZnxtbVJ7A" x="220" y="500" width="1041"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_TG8b4HfuEeW-pZnxtbVJ7A" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_TG8b4XfuEeW-pZnxtbVJ7A" showTitle="true"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_TG8b43fuEeW-pZnxtbVJ7A" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="propertylifecycle.uml#_cNexYHckEeW7365dAmHglw"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TG8b4nfuEeW-pZnxtbVJ7A" x="200"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_y8sakHfwEeW-pZnxtbVJ7A" type="2011">
+ <children xmi:type="notation:DecorationNode" xmi:id="_y8saknfwEeW-pZnxtbVJ7A" type="5014">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_y8sak3fwEeW-pZnxtbVJ7A" y="60"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_y8salHfwEeW-pZnxtbVJ7A" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_y8salXfwEeW-pZnxtbVJ7A" x="20" y="100"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_y8salnfwEeW-pZnxtbVJ7A" type="6037">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_y8sal3fwEeW-pZnxtbVJ7A" x="20" y="80"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_y8samHfwEeW-pZnxtbVJ7A" type="6048">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_y8samXfwEeW-pZnxtbVJ7A" y="5"/>
+ </children>
+ <element xmi:type="uml:Actor" href="propertylifecycle.uml#_RGOI4Hb_EeW7365dAmHglw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_y8sakXfwEeW-pZnxtbVJ7A" x="100" y="640"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_UlqVQHfxEeW-pZnxtbVJ7A" type="2015">
+ <children xmi:type="notation:DecorationNode" xmi:id="_Ulq8UHfxEeW-pZnxtbVJ7A" type="5019"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Ulq8UXfxEeW-pZnxtbVJ7A" type="6047">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Ulq8UnfxEeW-pZnxtbVJ7A" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Ulq8U3fxEeW-pZnxtbVJ7A" type="7011">
+ <children xmi:type="notation:Shape" xmi:id="_ltSkkHfxEeW-pZnxtbVJ7A" type="3009">
+ <children xmi:type="notation:DecorationNode" xmi:id="_ltSkknfxEeW-pZnxtbVJ7A" type="5018"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ltTLoHfxEeW-pZnxtbVJ7A" type="6045">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ltTLoXfxEeW-pZnxtbVJ7A" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_ltTLonfxEeW-pZnxtbVJ7A" type="7012">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ltTLo3fxEeW-pZnxtbVJ7A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ltTLpHfxEeW-pZnxtbVJ7A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ltTLpXfxEeW-pZnxtbVJ7A"/>
+ </children>
+ <element xmi:type="uml:UseCase" href="propertylifecycle.uml#_lsc3EHfxEeW-pZnxtbVJ7A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ltSkkXfxEeW-pZnxtbVJ7A" x="75" y="94"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_ssDGcHfxEeW-pZnxtbVJ7A" type="3009">
+ <children xmi:type="notation:DecorationNode" xmi:id="_ssDtgHfxEeW-pZnxtbVJ7A" type="5018"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ssDtgXfxEeW-pZnxtbVJ7A" type="6045">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ssDtgnfxEeW-pZnxtbVJ7A" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_ssDtg3fxEeW-pZnxtbVJ7A" type="7012">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ssDthHfxEeW-pZnxtbVJ7A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ssDthXfxEeW-pZnxtbVJ7A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ssDthnfxEeW-pZnxtbVJ7A"/>
+ </children>
+ <element xmi:type="uml:UseCase" href="propertylifecycle.uml#_srrTAHfxEeW-pZnxtbVJ7A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ssDGcXfxEeW-pZnxtbVJ7A" x="75" y="234"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_RCD2MHfyEeW-pZnxtbVJ7A" type="3009">
+ <children xmi:type="notation:DecorationNode" xmi:id="_RCD2MnfyEeW-pZnxtbVJ7A" type="5018"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_RCD2M3fyEeW-pZnxtbVJ7A" type="6045">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_RCD2NHfyEeW-pZnxtbVJ7A" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_RCD2NXfyEeW-pZnxtbVJ7A" type="7012">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_RCD2NnfyEeW-pZnxtbVJ7A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_RCD2N3fyEeW-pZnxtbVJ7A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_RCD2OHfyEeW-pZnxtbVJ7A"/>
+ </children>
+ <element xmi:type="uml:UseCase" href="propertylifecycle.uml#_RBjf4HfyEeW-pZnxtbVJ7A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_RCD2MXfyEeW-pZnxtbVJ7A" x="415" y="94"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_TV6vMHfyEeW-pZnxtbVJ7A" type="3009">
+ <children xmi:type="notation:DecorationNode" xmi:id="_TV7WQHfyEeW-pZnxtbVJ7A" type="5018"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_TV7WQXfyEeW-pZnxtbVJ7A" type="6045">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_TV7WQnfyEeW-pZnxtbVJ7A" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_TV7WQ3fyEeW-pZnxtbVJ7A" type="7012">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_TV7WRHfyEeW-pZnxtbVJ7A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_TV7WRXfyEeW-pZnxtbVJ7A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TV7WRnfyEeW-pZnxtbVJ7A"/>
+ </children>
+ <element xmi:type="uml:UseCase" href="propertylifecycle.uml#_TVi7wHfyEeW-pZnxtbVJ7A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TV6vMXfyEeW-pZnxtbVJ7A" x="415" y="234"/>
+ </children>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Ulq8VHfxEeW-pZnxtbVJ7A"/>
+ </children>
+ <element xmi:type="uml:Component" href="propertylifecycle.uml#_Uln5AHfxEeW-pZnxtbVJ7A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_UlqVQXfxEeW-pZnxtbVJ7A" x="220" y="940" width="761"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_WxQDEHfxEeW-pZnxtbVJ7A" type="2011">
+ <children xmi:type="notation:DecorationNode" xmi:id="_WxQqIHfxEeW-pZnxtbVJ7A" type="5014">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_WxQqIXfxEeW-pZnxtbVJ7A" x="20" y="60"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_WxQqInfxEeW-pZnxtbVJ7A" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_WxQqI3fxEeW-pZnxtbVJ7A" x="20" y="100"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_WxQqJHfxEeW-pZnxtbVJ7A" type="6037">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_WxQqJXfxEeW-pZnxtbVJ7A" x="20" y="80"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_WxQqJnfxEeW-pZnxtbVJ7A" type="6048">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_WxQqJ3fxEeW-pZnxtbVJ7A" y="5"/>
+ </children>
+ <element xmi:type="uml:Actor" href="propertylifecycle.uml#_RGOI4Hb_EeW7365dAmHglw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WxQDEXfxEeW-pZnxtbVJ7A" x="98" y="1055"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_9BQdgHf1EeW-pZnxtbVJ7A" type="2015">
+ <children xmi:type="notation:DecorationNode" xmi:id="_9BQdgnf1EeW-pZnxtbVJ7A" type="5019"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_9BQdg3f1EeW-pZnxtbVJ7A" type="6047">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_9BQdhHf1EeW-pZnxtbVJ7A" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_9BQdhXf1EeW-pZnxtbVJ7A" type="7011">
+ <children xmi:type="notation:Shape" xmi:id="_Czx1wHf2EeW-pZnxtbVJ7A" type="3009">
+ <children xmi:type="notation:DecorationNode" xmi:id="_Czyc0Hf2EeW-pZnxtbVJ7A" type="5018"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Czyc0Xf2EeW-pZnxtbVJ7A" type="6045">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Czyc0nf2EeW-pZnxtbVJ7A" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Czyc03f2EeW-pZnxtbVJ7A" type="7012">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Czyc1Hf2EeW-pZnxtbVJ7A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Czyc1Xf2EeW-pZnxtbVJ7A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Czyc1nf2EeW-pZnxtbVJ7A"/>
+ </children>
+ <element xmi:type="uml:UseCase" href="propertylifecycle.uml#_CzKKsHf2EeW-pZnxtbVJ7A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Czx1wXf2EeW-pZnxtbVJ7A" x="75" y="94"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_EGHnYHf2EeW-pZnxtbVJ7A" type="3009">
+ <children xmi:type="notation:DecorationNode" xmi:id="_EGHnYnf2EeW-pZnxtbVJ7A" type="5018"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_EGHnY3f2EeW-pZnxtbVJ7A" type="6045">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_EGIOcHf2EeW-pZnxtbVJ7A" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_EGIOcXf2EeW-pZnxtbVJ7A" type="7012">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_EGIOcnf2EeW-pZnxtbVJ7A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_EGIOc3f2EeW-pZnxtbVJ7A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EGIOdHf2EeW-pZnxtbVJ7A"/>
+ </children>
+ <element xmi:type="uml:UseCase" href="propertylifecycle.uml#_EFiYkHf2EeW-pZnxtbVJ7A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EGHnYXf2EeW-pZnxtbVJ7A" x="315" y="94"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_QEePwHf2EeW-pZnxtbVJ7A" type="3009">
+ <children xmi:type="notation:DecorationNode" xmi:id="_QEe20Hf2EeW-pZnxtbVJ7A" type="5018"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_QEe20Xf2EeW-pZnxtbVJ7A" type="6045">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_QEe20nf2EeW-pZnxtbVJ7A" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_QEe203f2EeW-pZnxtbVJ7A" type="7012">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_QEe21Hf2EeW-pZnxtbVJ7A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_QEe21Xf2EeW-pZnxtbVJ7A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QEe21nf2EeW-pZnxtbVJ7A"/>
+ </children>
+ <element xmi:type="uml:UseCase" href="propertylifecycle.uml#_QD19oHf2EeW-pZnxtbVJ7A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QEePwXf2EeW-pZnxtbVJ7A" x="535" y="14"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_TJ3TYHf2EeW-pZnxtbVJ7A" type="3009">
+ <children xmi:type="notation:DecorationNode" xmi:id="_TJ3TYnf2EeW-pZnxtbVJ7A" type="5018"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_TJ3TY3f2EeW-pZnxtbVJ7A" type="6045">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_TJ3TZHf2EeW-pZnxtbVJ7A" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_TJ3TZXf2EeW-pZnxtbVJ7A" type="7012">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_TJ3TZnf2EeW-pZnxtbVJ7A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_TJ3TZ3f2EeW-pZnxtbVJ7A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TJ3TaHf2EeW-pZnxtbVJ7A"/>
+ </children>
+ <element xmi:type="uml:UseCase" href="propertylifecycle.uml#_TJVu8Hf2EeW-pZnxtbVJ7A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TJ3TYXf2EeW-pZnxtbVJ7A" x="535" y="174" width="176"/>
+ </children>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9BQdhnf1EeW-pZnxtbVJ7A"/>
+ </children>
+ <element xmi:type="uml:Component" href="propertylifecycle.uml#_9BJv0Hf1EeW-pZnxtbVJ7A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9BQdgXf1EeW-pZnxtbVJ7A" x="220" y="1380" width="761" height="281"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_BkO5cHf2EeW-pZnxtbVJ7A" type="2011">
+ <children xmi:type="notation:DecorationNode" xmi:id="_BkO5cnf2EeW-pZnxtbVJ7A" type="5014">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_BkO5c3f2EeW-pZnxtbVJ7A" x="20" y="60"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_BkPggHf2EeW-pZnxtbVJ7A" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_BkPggXf2EeW-pZnxtbVJ7A" x="20" y="100"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_BkPggnf2EeW-pZnxtbVJ7A" type="6037">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_BkPgg3f2EeW-pZnxtbVJ7A" x="20" y="80"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_BkPghHf2EeW-pZnxtbVJ7A" type="6048">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_BkPghXf2EeW-pZnxtbVJ7A" y="5"/>
+ </children>
+ <element xmi:type="uml:Actor" href="propertylifecycle.uml#_RGOI4Hb_EeW7365dAmHglw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BkO5cXf2EeW-pZnxtbVJ7A" x="120" y="1520"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_KiIKsIF8EeWOp44XR6VXyA" type="2015">
+ <children xmi:type="notation:DecorationNode" xmi:id="_KiKm8IF8EeWOp44XR6VXyA" type="5019"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_KiKm8YF8EeWOp44XR6VXyA" type="6047">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_KiKm8oF8EeWOp44XR6VXyA" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_KiKm84F8EeWOp44XR6VXyA" type="7011">
+ <children xmi:type="notation:Shape" xmi:id="_Dgih0IF9EeWOp44XR6VXyA" type="3009">
+ <children xmi:type="notation:DecorationNode" xmi:id="_Dgih0oF9EeWOp44XR6VXyA" type="5018"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Dgih04F9EeWOp44XR6VXyA" type="6045">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Dgih1IF9EeWOp44XR6VXyA" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Dgih1YF9EeWOp44XR6VXyA" type="7012">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Dgih1oF9EeWOp44XR6VXyA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Dgih14F9EeWOp44XR6VXyA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Dgih2IF9EeWOp44XR6VXyA"/>
+ </children>
+ <element xmi:type="uml:UseCase" href="propertylifecycle.uml#_Dfk4gIF9EeWOp44XR6VXyA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Dgih0YF9EeWOp44XR6VXyA" x="64" y="166"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_IJRAcIF9EeWOp44XR6VXyA" type="3009">
+ <children xmi:type="notation:DecorationNode" xmi:id="_IJRngIF9EeWOp44XR6VXyA" type="5018"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_IJRngYF9EeWOp44XR6VXyA" type="6045">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_IJRngoF9EeWOp44XR6VXyA" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_IJSOkIF9EeWOp44XR6VXyA" type="7012">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_IJSOkYF9EeWOp44XR6VXyA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_IJSOkoF9EeWOp44XR6VXyA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IJSOk4F9EeWOp44XR6VXyA"/>
+ </children>
+ <element xmi:type="uml:UseCase" href="propertylifecycle.uml#_IIN3kIF9EeWOp44XR6VXyA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IJRAcYF9EeWOp44XR6VXyA" x="175" y="34"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_LKCp0IF9EeWOp44XR6VXyA" type="3009">
+ <children xmi:type="notation:DecorationNode" xmi:id="_LKCp0oF9EeWOp44XR6VXyA" type="5018"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_LKCp04F9EeWOp44XR6VXyA" type="6045">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_LKCp1IF9EeWOp44XR6VXyA" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_LKCp1YF9EeWOp44XR6VXyA" type="7012">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_LKCp1oF9EeWOp44XR6VXyA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_LKCp14F9EeWOp44XR6VXyA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LKCp2IF9EeWOp44XR6VXyA"/>
+ </children>
+ <element xmi:type="uml:UseCase" href="propertylifecycle.uml#_LJJ5AIF9EeWOp44XR6VXyA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LKCp0YF9EeWOp44XR6VXyA" x="346" y="161"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_PB66UIF9EeWOp44XR6VXyA" type="3009">
+ <children xmi:type="notation:DecorationNode" xmi:id="_PB7hYIF9EeWOp44XR6VXyA" type="5018"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_PB7hYYF9EeWOp44XR6VXyA" type="6045">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_PB7hYoF9EeWOp44XR6VXyA" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_PB7hY4F9EeWOp44XR6VXyA" type="7012">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_PB7hZIF9EeWOp44XR6VXyA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_PB7hZYF9EeWOp44XR6VXyA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_PB7hZoF9EeWOp44XR6VXyA"/>
+ </children>
+ <element xmi:type="uml:UseCase" href="propertylifecycle.uml#_PBAUUIF9EeWOp44XR6VXyA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_PB66UYF9EeWOp44XR6VXyA" x="455" y="37"/>
+ </children>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_KiKm9IF8EeWOp44XR6VXyA"/>
+ </children>
+ <element xmi:type="uml:Component" href="propertylifecycle.uml#_KdqhcIF8EeWOp44XR6VXyA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_KiIKsYF8EeWOp44XR6VXyA" x="220" y="1700" width="761" height="321"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_U8T1IIF9EeWOp44XR6VXyA" type="2011">
+ <children xmi:type="notation:DecorationNode" xmi:id="_U8T1IoF9EeWOp44XR6VXyA" type="5014">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_U8T1I4F9EeWOp44XR6VXyA" x="20" y="60"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_U8T1JIF9EeWOp44XR6VXyA" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_U8T1JYF9EeWOp44XR6VXyA" x="20" y="100"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_U8T1JoF9EeWOp44XR6VXyA" type="6037">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_U8T1J4F9EeWOp44XR6VXyA" x="20" y="80"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_U8T1KIF9EeWOp44XR6VXyA" type="6048">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_U8T1KYF9EeWOp44XR6VXyA" y="5"/>
+ </children>
+ <element xmi:type="uml:Actor" href="propertylifecycle.uml#_RGOI4Hb_EeW7365dAmHglw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_U8T1IYF9EeWOp44XR6VXyA" x="120" y="1880"/>
+ </children>
+ <styles xmi:type="notation:StringValueStyle" xmi:id="_9CnikXb8EeW7365dAmHglw" name="diagram_compatibility_version" stringValue="1.1.0"/>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_9Cniknb8EeW7365dAmHglw"/>
+ <styles xmi:type="style:PapyrusViewStyle" xmi:id="_9Cnik3b8EeW7365dAmHglw">
+ <owner xmi:type="uml:Model" href="propertylifecycle.uml#_QHqHsHcnEeW7365dAmHglw"/>
+ </styles>
+ <element xmi:type="uml:Model" href="propertylifecycle.uml#_-hZxkHb4EeWgXf4JsIe8SQ"/>
+ <edges xmi:type="notation:Connector" xmi:id="_3eBNYHcDEeW7365dAmHglw" type="4011" source="_ilU8sHcCEeW7365dAmHglw" target="_qYeTcHcDEeW7365dAmHglw">
+ <children xmi:type="notation:DecorationNode" xmi:id="_3eBNY3cDEeW7365dAmHglw" type="6008">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_t-E2QHcFEeW7365dAmHglw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3eBNZHcDEeW7365dAmHglw" y="39"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3eBNZXcDEeW7365dAmHglw" type="6033">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_t-ZmYHcFEeW7365dAmHglw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3eBNZncDEeW7365dAmHglw" x="1" y="-18"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_3eBNYXcDEeW7365dAmHglw"/>
+ <element xmi:type="uml:Association" href="propertylifecycle.uml#_3duScHcDEeW7365dAmHglw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3eBNYncDEeW7365dAmHglw" points="[380, 140, -643984, -643984]$[500, 240, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3eUvYHcDEeW7365dAmHglw" id="(0.6593406593406593,1.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3eVWcHcDEeW7365dAmHglw" id="(0.3225806451612903,0.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_36fG8HcDEeW7365dAmHglw" type="4011" source="_Vld0AHcCEeW7365dAmHglw" target="_qYeTcHcDEeW7365dAmHglw">
+ <children xmi:type="notation:DecorationNode" xmi:id="_36fG83cDEeW7365dAmHglw" type="6008">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_t-9nEHcFEeW7365dAmHglw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_36fG9HcDEeW7365dAmHglw" y="38"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_36fG9XcDEeW7365dAmHglw" type="6033">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_t_UMYHcFEeW7365dAmHglw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_36fG9ncDEeW7365dAmHglw" x="1" y="-18"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_36fG8XcDEeW7365dAmHglw"/>
+ <element xmi:type="uml:Association" href="propertylifecycle.uml#_36dRwHcDEeW7365dAmHglw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_36fG8ncDEeW7365dAmHglw" points="[360, 380, -643984, -643984]$[500, 300, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_364vkHcDEeW7365dAmHglw" id="(0.625,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_364vkXcDEeW7365dAmHglw" id="(0.3225806451612903,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_moZMsHcGEeW7365dAmHglw" type="4008" source="_qYeTcHcDEeW7365dAmHglw" target="_623_kHcDEeW7365dAmHglw">
+ <children xmi:type="notation:DecorationNode" xmi:id="_moZzwHcGEeW7365dAmHglw" type="6006">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_1vr78HcGEeW7365dAmHglw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_moZzwXcGEeW7365dAmHglw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_moZzwncGEeW7365dAmHglw" type="6030">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_1wB6MHcGEeW7365dAmHglw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_moZzw3cGEeW7365dAmHglw" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_moZMsXcGEeW7365dAmHglw"/>
+ <element xmi:type="uml:Include" href="propertylifecycle.uml#_moIG8HcGEeW7365dAmHglw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_moZMsncGEeW7365dAmHglw" points="[540, 292, -643984, -643984]$[760, 292, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_mo4U4HcGEeW7365dAmHglw" id="(1.0,0.45454545454545453)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_mo4U4XcGEeW7365dAmHglw" id="(0.0,0.45454545454545453)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_Px6uwHcHEeW7365dAmHglw" type="4008" source="_qYeTcHcDEeW7365dAmHglw" target="_FjJ0sHcHEeW7365dAmHglw">
+ <children xmi:type="notation:DecorationNode" xmi:id="_Px7V0HcHEeW7365dAmHglw" type="6006">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_X2UqEHcHEeW7365dAmHglw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Px7V0XcHEeW7365dAmHglw" y="19"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Px7V0ncHEeW7365dAmHglw" type="6030">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_X20ZUHcHEeW7365dAmHglw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Px784HcHEeW7365dAmHglw" x="1" y="-18"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_Px6uwXcHEeW7365dAmHglw"/>
+ <element xmi:type="uml:Include" href="propertylifecycle.uml#_PxssUHcHEeW7365dAmHglw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Px6uwncHEeW7365dAmHglw" points="[594, 260, -643984, -643984]$[694, 220, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_PyUXYHcHEeW7365dAmHglw" id="(1.0,0.45454545454545453)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_PyUXYXcHEeW7365dAmHglw" id="(0.0,0.45454545454545453)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_mmFDEHcHEeW7365dAmHglw" type="4011" source="_RGf1sHb_EeW7365dAmHglw" target="_ilU8sHcCEeW7365dAmHglw">
+ <children xmi:type="notation:DecorationNode" xmi:id="_mmFqIHcHEeW7365dAmHglw" type="6008">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_qGFmIHcHEeW7365dAmHglw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_mmFqIXcHEeW7365dAmHglw" y="39"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_mmFqIncHEeW7365dAmHglw" type="6033">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_qGkuUHcHEeW7365dAmHglw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_mmFqI3cHEeW7365dAmHglw" x="1" y="-18"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_mmFDEXcHEeW7365dAmHglw"/>
+ <element xmi:type="uml:Association" href="propertylifecycle.uml#_mmD08HcHEeW7365dAmHglw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_mmFDEncHEeW7365dAmHglw" points="[130, 180, -643984, -643984]$[266, 120, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_mmc2gHcHEeW7365dAmHglw" id="(1.0,0.4)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_mmc2gXcHEeW7365dAmHglw" id="(0.0,0.45454545454545453)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_n-IbIHcHEeW7365dAmHglw" type="4011" source="_RGf1sHb_EeW7365dAmHglw" target="_Vld0AHcCEeW7365dAmHglw">
+ <children xmi:type="notation:DecorationNode" xmi:id="_n-JCMHcHEeW7365dAmHglw" type="6008">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_sFTE0HcHEeW7365dAmHglw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_n-JCMXcHEeW7365dAmHglw" x="-1" y="38"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_n-JCMncHEeW7365dAmHglw" type="6033">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_sFstcHcHEeW7365dAmHglw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_n-JCM3cHEeW7365dAmHglw" y="-19"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_n-IbIXcHEeW7365dAmHglw"/>
+ <element xmi:type="uml:Association" href="propertylifecycle.uml#_n-C7kHcHEeW7365dAmHglw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_n-IbIncHEeW7365dAmHglw" points="[100, 160, -643984, -643984]$[260, 400, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_n-xUUHcHEeW7365dAmHglw" id="(1.0,0.8)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_n-x7YHcHEeW7365dAmHglw" id="(0.0,0.45454545454545453)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_TG8b5HfuEeW-pZnxtbVJ7A" type="StereotypeCommentLink" target="_TG8b4HfuEeW-pZnxtbVJ7A">
+ <styles xmi:type="notation:FontStyle" xmi:id="_TG8b5XfuEeW-pZnxtbVJ7A"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_TG8b6XfuEeW-pZnxtbVJ7A" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="propertylifecycle.uml#_cNexYHckEeW7365dAmHglw"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_TG8b5nfuEeW-pZnxtbVJ7A" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_TG8b53fuEeW-pZnxtbVJ7A"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_TG8b6HfuEeW-pZnxtbVJ7A"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_0c4a8HfwEeW-pZnxtbVJ7A" type="4011" source="_y8sakHfwEeW-pZnxtbVJ7A" target="_OYSe8HfvEeW-pZnxtbVJ7A">
+ <children xmi:type="notation:DecorationNode" xmi:id="_0c4a83fwEeW-pZnxtbVJ7A" type="6008">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_0c4a9HfwEeW-pZnxtbVJ7A" y="40"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_0c5CAHfwEeW-pZnxtbVJ7A" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_0c5CAXfwEeW-pZnxtbVJ7A" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_0c4a8XfwEeW-pZnxtbVJ7A"/>
+ <element xmi:type="uml:Association" href="propertylifecycle.uml#_0c1-sHfwEeW-pZnxtbVJ7A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_0c4a8nfwEeW-pZnxtbVJ7A" points="[130, 660, -643984, -643984]$[300, 640, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_0dZYUHfwEeW-pZnxtbVJ7A" id="(1.0,0.4)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_0dZYUXfwEeW-pZnxtbVJ7A" id="(0.0,0.6666666666666666)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_1NIzMHfwEeW-pZnxtbVJ7A" type="4011" source="_y8sakHfwEeW-pZnxtbVJ7A" target="_JrN2YHfwEeW-pZnxtbVJ7A">
+ <children xmi:type="notation:DecorationNode" xmi:id="_1NIzM3fwEeW-pZnxtbVJ7A" type="6008">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_1NIzNHfwEeW-pZnxtbVJ7A" y="40"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_1NIzNXfwEeW-pZnxtbVJ7A" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_1NIzNnfwEeW-pZnxtbVJ7A" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_1NIzMXfwEeW-pZnxtbVJ7A"/>
+ <element xmi:type="uml:Association" href="propertylifecycle.uml#_1NCskHfwEeW-pZnxtbVJ7A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_1NIzMnfwEeW-pZnxtbVJ7A" points="[130, 660, -643984, -643984]$[320, 800, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_1NupEHfwEeW-pZnxtbVJ7A" id="(1.0,0.4)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_1NupEXfwEeW-pZnxtbVJ7A" id="(0.0,0.3333333333333333)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_FmXEYHfxEeW-pZnxtbVJ7A" type="4008" source="_zCUE8HfxEeW-pZnxtbVJ7A" target="_3ut_IHfwEeW-pZnxtbVJ7A">
+ <children xmi:type="notation:DecorationNode" xmi:id="_FmXrcHfxEeW-pZnxtbVJ7A" type="6006">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_3uOacHfxEeW-pZnxtbVJ7A" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_FmXrcXfxEeW-pZnxtbVJ7A" x="-1" y="18"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_FmXrcnfxEeW-pZnxtbVJ7A" type="6030">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_3uncAHfxEeW-pZnxtbVJ7A" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_FmXrc3fxEeW-pZnxtbVJ7A" x="1" y="-19"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_FmXEYXfxEeW-pZnxtbVJ7A"/>
+ <element xmi:type="uml:Include" href="propertylifecycle.uml#_Fl_4AHfxEeW-pZnxtbVJ7A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_FmXEYnfxEeW-pZnxtbVJ7A" points="[440, 840, -643984, -643984]$[700, 840, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_FnAkoHfxEeW-pZnxtbVJ7A" id="(1.0,0.6666666666666666)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_FnAkoXfxEeW-pZnxtbVJ7A" id="(0.0,0.6666666666666666)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_LStjMHfxEeW-pZnxtbVJ7A" type="4008" source="_OYSe8HfvEeW-pZnxtbVJ7A" target="_HLi5gHfxEeW-pZnxtbVJ7A">
+ <children xmi:type="notation:DecorationNode" xmi:id="_LSuKQHfxEeW-pZnxtbVJ7A" type="6006">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_8Emk0HfxEeW-pZnxtbVJ7A" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_LSuKQXfxEeW-pZnxtbVJ7A" x="1" y="19"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_LSuKQnfxEeW-pZnxtbVJ7A" type="6030">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_8FA0gHfxEeW-pZnxtbVJ7A" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_LSuKQ3fxEeW-pZnxtbVJ7A" x="1" y="-18"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_LStjMXfxEeW-pZnxtbVJ7A"/>
+ <element xmi:type="uml:Include" href="propertylifecycle.uml#_LSaBMHfxEeW-pZnxtbVJ7A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_LStjMnfxEeW-pZnxtbVJ7A" points="[497, 620, -643984, -643984]$[740, 640, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_LTQVwHfxEeW-pZnxtbVJ7A" id="(1.0,0.3333333333333333)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_LTQVwXfxEeW-pZnxtbVJ7A" id="(0.0,0.3333333333333333)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_MJHmwHfxEeW-pZnxtbVJ7A" type="4008" source="_JrN2YHfwEeW-pZnxtbVJ7A" target="_HLi5gHfxEeW-pZnxtbVJ7A">
+ <children xmi:type="notation:DecorationNode" xmi:id="_MJHmw3fxEeW-pZnxtbVJ7A" type="6006">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_8FTvcHfxEeW-pZnxtbVJ7A" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_MJHmxHfxEeW-pZnxtbVJ7A" x="1" y="18"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_MJHmxXfxEeW-pZnxtbVJ7A" type="6030">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_8FnRcHfxEeW-pZnxtbVJ7A" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_MJHmxnfxEeW-pZnxtbVJ7A" x="1" y="-18"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_MJHmwXfxEeW-pZnxtbVJ7A"/>
+ <element xmi:type="uml:Include" href="propertylifecycle.uml#_MI0EwHfxEeW-pZnxtbVJ7A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_MJHmwnfxEeW-pZnxtbVJ7A" points="[469, 800, -643984, -643984]$[760, 680, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_MJ3NoHfxEeW-pZnxtbVJ7A" id="(1.0,0.3333333333333333)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_MJ3NoXfxEeW-pZnxtbVJ7A" id="(0.1388888888888889,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_164NgHfxEeW-pZnxtbVJ7A" type="4011" source="_JrN2YHfwEeW-pZnxtbVJ7A" target="_zCUE8HfxEeW-pZnxtbVJ7A">
+ <children xmi:type="notation:DecorationNode" xmi:id="_1640knfxEeW-pZnxtbVJ7A" type="6008">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_4Ds7MHfxEeW-pZnxtbVJ7A" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_1640k3fxEeW-pZnxtbVJ7A" y="39"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_1640lHfxEeW-pZnxtbVJ7A" type="6033">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_4EQU0HfxEeW-pZnxtbVJ7A" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_1640lXfxEeW-pZnxtbVJ7A" x="-1" y="-18"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_1640kHfxEeW-pZnxtbVJ7A"/>
+ <element xmi:type="uml:Association" href="propertylifecycle.uml#_160jIHfxEeW-pZnxtbVJ7A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_1640kXfxEeW-pZnxtbVJ7A" points="[440, 840, -643984, -643984]$[1120, 840, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_17wXQHfxEeW-pZnxtbVJ7A" id="(1.0,0.6666666666666666)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_17wXQXfxEeW-pZnxtbVJ7A" id="(0.0,0.6666666666666666)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_KRceAHfyEeW-pZnxtbVJ7A" type="4011" source="_WxQDEHfxEeW-pZnxtbVJ7A" target="_ltSkkHfxEeW-pZnxtbVJ7A">
+ <children xmi:type="notation:DecorationNode" xmi:id="_KRdFEnfyEeW-pZnxtbVJ7A" type="6008">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_KRdFE3fyEeW-pZnxtbVJ7A" y="40"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_KRdFFHfyEeW-pZnxtbVJ7A" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_KRdFFXfyEeW-pZnxtbVJ7A" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_KRdFEHfyEeW-pZnxtbVJ7A"/>
+ <element xmi:type="uml:Association" href="propertylifecycle.uml#_KRao0HfyEeW-pZnxtbVJ7A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_KRdFEXfyEeW-pZnxtbVJ7A" points="[128, 1080, -643984, -643984]$[300, 1080, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_KSUnwHfyEeW-pZnxtbVJ7A" id="(1.0,0.5)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_KSUnwXfyEeW-pZnxtbVJ7A" id="(0.0,0.3333333333333333)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_LGDx0HfyEeW-pZnxtbVJ7A" type="4011" source="_WxQDEHfxEeW-pZnxtbVJ7A" target="_ssDGcHfxEeW-pZnxtbVJ7A">
+ <children xmi:type="notation:DecorationNode" xmi:id="_LGEY4HfyEeW-pZnxtbVJ7A" type="6008">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_LGEY4XfyEeW-pZnxtbVJ7A" y="40"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_LGEY4nfyEeW-pZnxtbVJ7A" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_LGEY43fyEeW-pZnxtbVJ7A" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_LGDx0XfyEeW-pZnxtbVJ7A"/>
+ <element xmi:type="uml:Association" href="propertylifecycle.uml#_LGBVkHfyEeW-pZnxtbVJ7A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_LGDx0nfyEeW-pZnxtbVJ7A" points="[128, 1080, -643984, -643984]$[300, 1220, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_LG77kHfyEeW-pZnxtbVJ7A" id="(1.0,0.5)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_LG8ioHfyEeW-pZnxtbVJ7A" id="(0.0,0.3333333333333333)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_ci5cIHfyEeW-pZnxtbVJ7A" type="4008" source="_ssDGcHfxEeW-pZnxtbVJ7A" target="_RCD2MHfyEeW-pZnxtbVJ7A">
+ <children xmi:type="notation:DecorationNode" xmi:id="_ci6DMHfyEeW-pZnxtbVJ7A" type="6006">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ci6DMXfyEeW-pZnxtbVJ7A" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ci6DMnfyEeW-pZnxtbVJ7A" type="6030">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ci6DM3fyEeW-pZnxtbVJ7A" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ci5cIXfyEeW-pZnxtbVJ7A"/>
+ <element xmi:type="uml:Include" href="propertylifecycle.uml#_ciRxEHfyEeW-pZnxtbVJ7A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ci5cInfyEeW-pZnxtbVJ7A" points="[420, 1200, -643984, -643984]$[680, 1120, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_cjstYHfyEeW-pZnxtbVJ7A" id="(0.7317073170731707,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_cjstYXfyEeW-pZnxtbVJ7A" id="(0.2857142857142857,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_dFJ0oHfyEeW-pZnxtbVJ7A" type="4008" source="_ltSkkHfxEeW-pZnxtbVJ7A" target="_RCD2MHfyEeW-pZnxtbVJ7A">
+ <children xmi:type="notation:DecorationNode" xmi:id="_dFKbsHfyEeW-pZnxtbVJ7A" type="6006">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_dFKbsXfyEeW-pZnxtbVJ7A" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_dFKbsnfyEeW-pZnxtbVJ7A" type="6030">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_dFKbs3fyEeW-pZnxtbVJ7A" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_dFJ0oXfyEeW-pZnxtbVJ7A"/>
+ <element xmi:type="uml:Include" href="propertylifecycle.uml#_dElz8HfyEeW-pZnxtbVJ7A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_dFJ0onfyEeW-pZnxtbVJ7A" points="[420, 1120, -643984, -643984]$[680, 1120, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dF40cHfyEeW-pZnxtbVJ7A" id="(1.0,0.3333333333333333)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dF40cXfyEeW-pZnxtbVJ7A" id="(0.0,0.3333333333333333)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_ef24EHfyEeW-pZnxtbVJ7A" type="4008" source="_ssDGcHfxEeW-pZnxtbVJ7A" target="_TV6vMHfyEeW-pZnxtbVJ7A">
+ <children xmi:type="notation:DecorationNode" xmi:id="_ef3fIHfyEeW-pZnxtbVJ7A" type="6006">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ef3fIXfyEeW-pZnxtbVJ7A" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ef3fInfyEeW-pZnxtbVJ7A" type="6030">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ef3fI3fyEeW-pZnxtbVJ7A" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ef24EXfyEeW-pZnxtbVJ7A"/>
+ <element xmi:type="uml:Include" href="propertylifecycle.uml#_efbaQHfyEeW-pZnxtbVJ7A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ef24EnfyEeW-pZnxtbVJ7A" points="[420, 1260, -643984, -643984]$[720, 1260, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_egr-gHfyEeW-pZnxtbVJ7A" id="(0.7317073170731707,1.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_egr-gXfyEeW-pZnxtbVJ7A" id="(0.42328042328042326,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_J7pQUHf2EeW-pZnxtbVJ7A" type="4011" source="_BkO5cHf2EeW-pZnxtbVJ7A" target="_Czx1wHf2EeW-pZnxtbVJ7A">
+ <children xmi:type="notation:DecorationNode" xmi:id="_J7pQU3f2EeW-pZnxtbVJ7A" type="6008">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_Mr-C4Hf2EeW-pZnxtbVJ7A" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_J7pQVHf2EeW-pZnxtbVJ7A" y="39"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_J7p3YHf2EeW-pZnxtbVJ7A" type="6033">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_MslG4Hf2EeW-pZnxtbVJ7A" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_J7p3YXf2EeW-pZnxtbVJ7A" x="1" y="-18"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_J7pQUXf2EeW-pZnxtbVJ7A"/>
+ <element xmi:type="uml:Association" href="propertylifecycle.uml#_J7m0EHf2EeW-pZnxtbVJ7A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_J7pQUnf2EeW-pZnxtbVJ7A" points="[151, 1480, -643984, -643984]$[300, 1580, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_J8kdYHf2EeW-pZnxtbVJ7A" id="(1.0,0.4)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_J8kdYXf2EeW-pZnxtbVJ7A" id="(0.0,0.6666666666666666)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_KfVMMHf2EeW-pZnxtbVJ7A" type="4011" source="_Czx1wHf2EeW-pZnxtbVJ7A" target="_EGHnYHf2EeW-pZnxtbVJ7A">
+ <children xmi:type="notation:DecorationNode" xmi:id="_KfVMM3f2EeW-pZnxtbVJ7A" type="6008">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_LcSjsHf2EeW-pZnxtbVJ7A" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_KfVMNHf2EeW-pZnxtbVJ7A" y="40"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_KfVMNXf2EeW-pZnxtbVJ7A" type="6033">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_Lcxr4Hf2EeW-pZnxtbVJ7A" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_KfVMNnf2EeW-pZnxtbVJ7A" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_KfVMMXf2EeW-pZnxtbVJ7A"/>
+ <element xmi:type="uml:Association" href="propertylifecycle.uml#_KfSv8Hf2EeW-pZnxtbVJ7A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_KfVMMnf2EeW-pZnxtbVJ7A" points="[400, 1600, -643984, -643984]$[660, 1600, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_KgOkEHf2EeW-pZnxtbVJ7A" id="(1.0,0.6666666666666666)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_KgOkEXf2EeW-pZnxtbVJ7A" id="(0.0,0.6666666666666666)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_YVsfEHf2EeW-pZnxtbVJ7A" type="4008" source="_EGHnYHf2EeW-pZnxtbVJ7A" target="_QEePwHf2EeW-pZnxtbVJ7A">
+ <children xmi:type="notation:DecorationNode" xmi:id="_YVsfE3f2EeW-pZnxtbVJ7A" type="6006">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_Eq22sHf3EeW-pZnxtbVJ7A" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_YVsfFHf2EeW-pZnxtbVJ7A" x="1" y="18"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_YVsfFXf2EeW-pZnxtbVJ7A" type="6030">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_ErfI0Hf3EeW-pZnxtbVJ7A" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_YVsfFnf2EeW-pZnxtbVJ7A" x="-1" y="-18"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_YVsfEXf2EeW-pZnxtbVJ7A"/>
+ <element xmi:type="uml:Include" href="propertylifecycle.uml#_YVFbEHf2EeW-pZnxtbVJ7A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_YVsfEnf2EeW-pZnxtbVJ7A" points="[680, 1540, -643984, -643984]$[780, 1480, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_YWtLsHf2EeW-pZnxtbVJ7A" id="(1.0,0.6666666666666666)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_YWtLsXf2EeW-pZnxtbVJ7A" id="(0.1111111111111111,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_uc_tYHf2EeW-pZnxtbVJ7A" type="4008" source="_EGHnYHf2EeW-pZnxtbVJ7A" target="_TJ3TYHf2EeW-pZnxtbVJ7A">
+ <children xmi:type="notation:DecorationNode" xmi:id="_udAUcHf2EeW-pZnxtbVJ7A" type="6006">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_Er-RAHf3EeW-pZnxtbVJ7A" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_udAUcXf2EeW-pZnxtbVJ7A" x="-1" y="18"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_udAUcnf2EeW-pZnxtbVJ7A" type="6030">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_EsZu0Hf3EeW-pZnxtbVJ7A" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_udAUc3f2EeW-pZnxtbVJ7A" x="1" y="-18"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_uc_tYXf2EeW-pZnxtbVJ7A"/>
+ <element xmi:type="uml:Include" href="propertylifecycle.uml#_ucU_AHf2EeW-pZnxtbVJ7A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_uc_tYnf2EeW-pZnxtbVJ7A" points="[680, 1540, -643984, -643984]$[754, 1580, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ueHHsHf2EeW-pZnxtbVJ7A" id="(1.0,0.6666666666666666)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ueHHsXf2EeW-pZnxtbVJ7A" id="(0.0,0.3333333333333333)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_UQ3rcIF9EeWOp44XR6VXyA" type="4011" source="_Dgih0IF9EeWOp44XR6VXyA" target="_LKCp0IF9EeWOp44XR6VXyA">
+ <children xmi:type="notation:DecorationNode" xmi:id="_UQ3rc4F9EeWOp44XR6VXyA" type="6008">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_UQ3rdIF9EeWOp44XR6VXyA" y="40"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_UQ3rdYF9EeWOp44XR6VXyA" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_UQ3rdoF9EeWOp44XR6VXyA" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_UQ3rcYF9EeWOp44XR6VXyA"/>
+ <element xmi:type="uml:Association" href="propertylifecycle.uml#_UQi7UIF9EeWOp44XR6VXyA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_UQ3rcoF9EeWOp44XR6VXyA" points="[429, 1920, -643984, -643984]$[571, 1920, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_UTKKcIF9EeWOp44XR6VXyA" id="(1.0,0.4666666666666667)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_UTKxgIF9EeWOp44XR6VXyA" id="(0.0,0.55)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_Vgp4UIF9EeWOp44XR6VXyA" type="4011" source="_U8T1IIF9EeWOp44XR6VXyA" target="_Dgih0IF9EeWOp44XR6VXyA">
+ <children xmi:type="notation:DecorationNode" xmi:id="_Vgp4U4F9EeWOp44XR6VXyA" type="6008">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_fQs2EIF9EeWOp44XR6VXyA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Vgp4VIF9EeWOp44XR6VXyA" x="1" y="38"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Vgp4VYF9EeWOp44XR6VXyA" type="6033">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_fRm1AIF9EeWOp44XR6VXyA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Vgp4VoF9EeWOp44XR6VXyA" x="1" y="-18"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_Vgp4UYF9EeWOp44XR6VXyA"/>
+ <element xmi:type="uml:Association" href="propertylifecycle.uml#_Vgm1AIF9EeWOp44XR6VXyA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Vgp4UoF9EeWOp44XR6VXyA" points="[160, 1913, -643984, -643984]$[289, 1920, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ViwxIIF9EeWOp44XR6VXyA" id="(1.0,0.8)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ViwxIYF9EeWOp44XR6VXyA" id="(0.0,0.4666666666666667)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_XNa8IIF9EeWOp44XR6VXyA" type="4008" source="_LKCp0IF9EeWOp44XR6VXyA" target="_IJRAcIF9EeWOp44XR6VXyA">
+ <children xmi:type="notation:DecorationNode" xmi:id="_XNa8I4F9EeWOp44XR6VXyA" type="6006">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_XNbjMIF9EeWOp44XR6VXyA" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_XNbjMYF9EeWOp44XR6VXyA" type="6030">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_XNbjMoF9EeWOp44XR6VXyA" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_XNa8IYF9EeWOp44XR6VXyA"/>
+ <element xmi:type="uml:Include" href="propertylifecycle.uml#_XMJw0IF9EeWOp44XR6VXyA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_XNa8IoF9EeWOp44XR6VXyA" points="[380, 1892, -643984, -643984]$[480, 1820, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_XPexoIF9EeWOp44XR6VXyA" id="(0.16666666666666666,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_XPexoYF9EeWOp44XR6VXyA" id="(0.4444444444444444,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_YYOiYIF9EeWOp44XR6VXyA" type="4008" source="_LKCp0IF9EeWOp44XR6VXyA" target="_PB66UIF9EeWOp44XR6VXyA">
+ <children xmi:type="notation:DecorationNode" xmi:id="_YYPJcIF9EeWOp44XR6VXyA" type="6006">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_YYPJcYF9EeWOp44XR6VXyA" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_YYPJcoF9EeWOp44XR6VXyA" type="6030">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_YYPJc4F9EeWOp44XR6VXyA" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_YYOiYYF9EeWOp44XR6VXyA"/>
+ <element xmi:type="uml:Include" href="propertylifecycle.uml#_YXgwsIF9EeWOp44XR6VXyA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_YYOiYoF9EeWOp44XR6VXyA" points="[660, 1887, -643984, -643984]$[760, 1823, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_YatOoIF9EeWOp44XR6VXyA" id="(0.5114942528735632,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_YatOoYF9EeWOp44XR6VXyA" id="(0.5095541401273885,1.0)"/>
+ </edges>
+ </notation:Diagram>
+ <nattable:Table xmi:id="_NxCOkHcnEeW7365dAmHglw" name="PreferencePageReq" currentRowAxisProvider="_NxCOlXcnEeW7365dAmHglw" currentColumnAxisProvider="_NxCOkXcnEeW7365dAmHglw">
+ <context xmi:type="uml:Model" href="propertylifecycle.uml#_BHhwYHcnEeW7365dAmHglw"/>
+ <owner xmi:type="uml:Model" href="propertylifecycle.uml#_BHhwYHcnEeW7365dAmHglw"/>
+ <prototype xmi:type="configuration:PapyrusSyncTable" href="platform:/plugin/org.eclipse.papyrus.infra.viewpoints.policy/builtin/default.configuration#_7wNb3txhEeOqHvRyiN87hA"/>
+ <tableConfiguration xmi:type="nattableconfiguration:TableConfiguration" href="platform:/plugin/org.eclipse.papyrus.sysml.nattable.requirement.config/configs/requirement.nattableconfiguration#/"/>
+ <columnAxisProvidersHistory xmi:type="nattableaxisprovider:SlaveObjectAxisProvider" xmi:id="_NxCOkXcnEeW7365dAmHglw" description="Provides the columns of the tables with a default configuration" name="Requirements Feature Columns Provider">
+ <axis xmi:type="nattableaxis:FeatureIdAxis" xmi:id="_NxCOkncnEeW7365dAmHglw" element="property_of_stereotype:/SysML::Requirements::Requirement::id">
+ <manager xmi:type="nattableaxisconfiguration:AxisManagerRepresentation" href="platform:/plugin/org.eclipse.papyrus.sysml.nattable.requirement.config/configs/requirement.nattableconfiguration#//@columnHeaderAxisConfiguration/@axisManagers.1"/>
+ </axis>
+ <axis xmi:type="nattableaxis:EStructuralFeatureAxis" xmi:id="_NxCOk3cnEeW7365dAmHglw">
+ <manager xmi:type="nattableaxisconfiguration:AxisManagerRepresentation" href="platform:/plugin/org.eclipse.papyrus.sysml.nattable.requirement.config/configs/requirement.nattableconfiguration#//@columnHeaderAxisConfiguration/@axisManagers.0"/>
+ <element xmi:type="ecore:EAttribute" href="http://www.eclipse.org/uml2/5.0.0/UML#//NamedElement/name"/>
+ </axis>
+ <axis xmi:type="nattableaxis:FeatureIdAxis" xmi:id="_NxCOlHcnEeW7365dAmHglw" element="property_of_stereotype:/SysML::Requirements::Requirement::text">
+ <styles xmi:type="nattablestyle:IntValueStyle" xmi:id="_OUgIAHcnEeW7365dAmHglw" name="axisWidth" intValue="1037"/>
+ <manager xmi:type="nattableaxisconfiguration:AxisManagerRepresentation" href="platform:/plugin/org.eclipse.papyrus.sysml.nattable.requirement.config/configs/requirement.nattableconfiguration#//@columnHeaderAxisConfiguration/@axisManagers.1"/>
+ </axis>
+ </columnAxisProvidersHistory>
+ <rowAxisProvidersHistory xmi:type="nattableaxisprovider:MasterObjectAxisProvider" xmi:id="_NxCOlXcnEeW7365dAmHglw" description="Provides the requirements directly owned by the context of the table" name="Requirement Axis Provider" disconnectSlave="true"/>
+ <localRowHeaderAxisConfiguration xmi:type="nattableaxisconfiguration:LocalTableHeaderAxisConfiguration" xmi:id="_6zUEsHdEEeWKENLFMGan-w" indexStyle="NUMERIC" displayLabel="false"/>
+ <localColumnHeaderAxisConfiguration xmi:type="nattableaxisconfiguration:LocalTableHeaderAxisConfiguration" xmi:id="_6WFWIHdEEeWKENLFMGan-w" displayIndex="false"/>
+ </nattable:Table>
+ <nattable:Table xmi:id="_f66lEHcnEeW7365dAmHglw" name="ModelUsabilityReq" currentRowAxisProvider="_f66lFXcnEeW7365dAmHglw" currentColumnAxisProvider="_f66lEXcnEeW7365dAmHglw">
+ <context xmi:type="uml:Model" href="propertylifecycle.uml#_bBVnAHcnEeW7365dAmHglw"/>
+ <owner xmi:type="uml:Model" href="propertylifecycle.uml#_bBVnAHcnEeW7365dAmHglw"/>
+ <prototype xmi:type="configuration:PapyrusSyncTable" href="platform:/plugin/org.eclipse.papyrus.infra.viewpoints.policy/builtin/default.configuration#_7wNb3txhEeOqHvRyiN87hA"/>
+ <tableConfiguration xmi:type="nattableconfiguration:TableConfiguration" href="platform:/plugin/org.eclipse.papyrus.sysml.nattable.requirement.config/configs/requirement.nattableconfiguration#/"/>
+ <columnAxisProvidersHistory xmi:type="nattableaxisprovider:SlaveObjectAxisProvider" xmi:id="_f66lEXcnEeW7365dAmHglw" description="Provides the columns of the tables with a default configuration" name="Requirements Feature Columns Provider">
+ <axis xmi:type="nattableaxis:FeatureIdAxis" xmi:id="_f66lEncnEeW7365dAmHglw" element="property_of_stereotype:/SysML::Requirements::Requirement::id">
+ <manager xmi:type="nattableaxisconfiguration:AxisManagerRepresentation" href="platform:/plugin/org.eclipse.papyrus.sysml.nattable.requirement.config/configs/requirement.nattableconfiguration#//@columnHeaderAxisConfiguration/@axisManagers.1"/>
+ </axis>
+ <axis xmi:type="nattableaxis:EStructuralFeatureAxis" xmi:id="_f66lE3cnEeW7365dAmHglw">
+ <styles xmi:type="nattablestyle:IntValueStyle" xmi:id="_XTZfIHf3EeW-pZnxtbVJ7A" name="axisWidth" intValue="197"/>
+ <manager xmi:type="nattableaxisconfiguration:AxisManagerRepresentation" href="platform:/plugin/org.eclipse.papyrus.sysml.nattable.requirement.config/configs/requirement.nattableconfiguration#//@columnHeaderAxisConfiguration/@axisManagers.0"/>
+ <element xmi:type="ecore:EAttribute" href="http://www.eclipse.org/uml2/5.0.0/UML#//NamedElement/name"/>
+ </axis>
+ <axis xmi:type="nattableaxis:FeatureIdAxis" xmi:id="_f66lFHcnEeW7365dAmHglw" element="property_of_stereotype:/SysML::Requirements::Requirement::text">
+ <styles xmi:type="nattablestyle:IntValueStyle" xmi:id="_gknpYHcnEeW7365dAmHglw" name="axisWidth" intValue="1036"/>
+ <manager xmi:type="nattableaxisconfiguration:AxisManagerRepresentation" href="platform:/plugin/org.eclipse.papyrus.sysml.nattable.requirement.config/configs/requirement.nattableconfiguration#//@columnHeaderAxisConfiguration/@axisManagers.1"/>
+ </axis>
+ </columnAxisProvidersHistory>
+ <rowAxisProvidersHistory xmi:type="nattableaxisprovider:MasterObjectAxisProvider" xmi:id="_f66lFXcnEeW7365dAmHglw" description="Provides the requirements directly owned by the context of the table" name="Requirement Axis Provider" disconnectSlave="true"/>
+ <localRowHeaderAxisConfiguration xmi:type="nattableaxisconfiguration:LocalTableHeaderAxisConfiguration" xmi:id="_2qNhUHdEEeWKENLFMGan-w" indexStyle="NUMERIC" displayLabel="false"/>
+ <localColumnHeaderAxisConfiguration xmi:type="nattableaxisconfiguration:LocalTableHeaderAxisConfiguration" xmi:id="_4HxEcHdEEeWKENLFMGan-w" displayIndex="false"/>
+ </nattable:Table>
+ <notation:Diagram xmi:id="_GBaowHctEeWKENLFMGan-w" type="PapyrusUMLClassDiagram" name="StrategiesConfigurationDiagram" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_GBaowXctEeWKENLFMGan-w" type="2008">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GBaoxnctEeWKENLFMGan-w" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GBaox3ctEeWKENLFMGan-w" key="visible" value="true"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GBaoyHctEeWKENLFMGan-w" type="5029"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GBaoyXctEeWKENLFMGan-w" type="8510">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GBbP0HctEeWKENLFMGan-w" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_GBbP0XctEeWKENLFMGan-w" visible="false" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GBbP0nctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GBbP03ctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GBbP1HctEeWKENLFMGan-w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GBbP1XctEeWKENLFMGan-w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_GBbP1nctEeWKENLFMGan-w" visible="false" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GBbP13ctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GBbP2HctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GBbP2XctEeWKENLFMGan-w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GBbP2nctEeWKENLFMGan-w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_GBbP23ctEeWKENLFMGan-w" visible="false" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GBbP3HctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GBbP3XctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GBbP3nctEeWKENLFMGan-w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GBbP33ctEeWKENLFMGan-w"/>
+ </children>
+ <element xmi:type="uml:Class" href="propertylifecycle.uml#_IV8RgXKKEeWqG7lDxSBeNQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GBbQAnctEeWKENLFMGan-w" x="220" y="20" width="121"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GBbQA3ctEeWKENLFMGan-w" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GBbQBHctEeWKENLFMGan-w" showTitle="true"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_GBbQBXctEeWKENLFMGan-w" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="propertylifecycle.uml#_IV8RgXKKEeWqG7lDxSBeNQ"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GBbQInctEeWKENLFMGan-w" x="200"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GBbQI3ctEeWKENLFMGan-w" type="2008">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GBbQKHctEeWKENLFMGan-w" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GBbQKXctEeWKENLFMGan-w" key="visible" value="true"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GBbQKnctEeWKENLFMGan-w" type="5029"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GBbQK3ctEeWKENLFMGan-w" type="8510">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GBbQLHctEeWKENLFMGan-w" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_GBbQLXctEeWKENLFMGan-w" visible="false" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GBbQLnctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GBbQL3ctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GBbQMHctEeWKENLFMGan-w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GBbQMXctEeWKENLFMGan-w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_GBbQMnctEeWKENLFMGan-w" visible="false" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GBbQM3ctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GBbQNHctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GBbQNXctEeWKENLFMGan-w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GBbQNnctEeWKENLFMGan-w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_GBbQN3ctEeWKENLFMGan-w" visible="false" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GBbQOHctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GBbQOXctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GBbQOnctEeWKENLFMGan-w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GBbQO3ctEeWKENLFMGan-w"/>
+ </children>
+ <element xmi:type="uml:Class" href="propertylifecycle.uml#_IV84k3KKEeWqG7lDxSBeNQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GBbQXnctEeWKENLFMGan-w" x="220" y="200" width="120"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GBbQX3ctEeWKENLFMGan-w" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GBbQYHctEeWKENLFMGan-w" showTitle="true"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_GBbQYXctEeWKENLFMGan-w" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="propertylifecycle.uml#_IV84k3KKEeWqG7lDxSBeNQ"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GBbQfnctEeWKENLFMGan-w" x="200"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GBbQf3ctEeWKENLFMGan-w" type="2008">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GBbQgHctEeWKENLFMGan-w" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GBbQgXctEeWKENLFMGan-w" key="visible" value="true"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GBbQhnctEeWKENLFMGan-w" type="5029"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GBbQh3ctEeWKENLFMGan-w" type="8510">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GBbQiHctEeWKENLFMGan-w" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_GBbQiXctEeWKENLFMGan-w" visible="false" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GBbQinctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GBbQi3ctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GBbQjHctEeWKENLFMGan-w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GBbQjXctEeWKENLFMGan-w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_GBbQjnctEeWKENLFMGan-w" visible="false" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GBbQj3ctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GBbQkHctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GBbQkXctEeWKENLFMGan-w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GBbQknctEeWKENLFMGan-w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_GBbQk3ctEeWKENLFMGan-w" visible="false" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GBbQlHctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GBbQlXctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GBbQlnctEeWKENLFMGan-w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GBbQl3ctEeWKENLFMGan-w"/>
+ </children>
+ <element xmi:type="uml:Class" href="propertylifecycle.uml#_IV84l3KKEeWqG7lDxSBeNQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GBbQunctEeWKENLFMGan-w" x="600" y="200" width="121"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GBbQu3ctEeWKENLFMGan-w" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GBbQvHctEeWKENLFMGan-w" showTitle="true"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_GBbQvXctEeWKENLFMGan-w" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="propertylifecycle.uml#_IV84l3KKEeWqG7lDxSBeNQ"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GBbQ2nctEeWKENLFMGan-w" x="200"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GBbQ23ctEeWKENLFMGan-w" type="2008">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GBbQ4HctEeWKENLFMGan-w" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GBbQ4XctEeWKENLFMGan-w" key="visible" value="true"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GBbQ4nctEeWKENLFMGan-w" type="5029"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GBbQ43ctEeWKENLFMGan-w" type="8510">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GBbQ5HctEeWKENLFMGan-w" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_GBbQ5XctEeWKENLFMGan-w" visible="false" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GBbQ5nctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GBbQ53ctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GBbQ6HctEeWKENLFMGan-w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GBbQ6XctEeWKENLFMGan-w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_GBbQ6nctEeWKENLFMGan-w" visible="false" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GBbQ63ctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GBbQ7HctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GBbQ7XctEeWKENLFMGan-w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GBbQ7nctEeWKENLFMGan-w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_GBbQ73ctEeWKENLFMGan-w" visible="false" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GBbQ8HctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GBbQ8XctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GBbQ8nctEeWKENLFMGan-w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GBbQ83ctEeWKENLFMGan-w"/>
+ </children>
+ <element xmi:type="uml:Class" href="propertylifecycle.uml#_IV84pHKKEeWqG7lDxSBeNQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GBbRFnctEeWKENLFMGan-w" x="760" y="20" width="121"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GBbRF3ctEeWKENLFMGan-w" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GBbRGHctEeWKENLFMGan-w" showTitle="true"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_GBbRGXctEeWKENLFMGan-w" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="propertylifecycle.uml#_IV84pHKKEeWqG7lDxSBeNQ"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GBbRNnctEeWKENLFMGan-w" x="200"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GBcd-nctEeWKENLFMGan-w" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GBcd-3ctEeWKENLFMGan-w" showTitle="true"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_GBcd_HctEeWKENLFMGan-w" name="BASE_ELEMENT"/>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GBceGXctEeWKENLFMGan-w" x="200"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GBdFFHctEeWKENLFMGan-w" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GBdFFXctEeWKENLFMGan-w" showTitle="true"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_GBdFFnctEeWKENLFMGan-w" name="BASE_ELEMENT"/>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GBdFM3ctEeWKENLFMGan-w" x="200"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GBdFcHctEeWKENLFMGan-w" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GBdFcXctEeWKENLFMGan-w" showTitle="true"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_GBdFcnctEeWKENLFMGan-w" name="BASE_ELEMENT"/>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GBdFj3ctEeWKENLFMGan-w" x="200"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GBdFkHctEeWKENLFMGan-w" type="2008">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GBdFlXctEeWKENLFMGan-w" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GBdFlnctEeWKENLFMGan-w" key="visible" value="true"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GBdFl3ctEeWKENLFMGan-w" type="5029"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GBdFmHctEeWKENLFMGan-w" type="8510">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GBdFmXctEeWKENLFMGan-w" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_GBdFmnctEeWKENLFMGan-w" visible="false" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GBdFm3ctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GBdFnHctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GBdFnXctEeWKENLFMGan-w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GBdFnnctEeWKENLFMGan-w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_GBdFn3ctEeWKENLFMGan-w" visible="false" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GBdFoHctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GBdFoXctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GBdFonctEeWKENLFMGan-w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GBdFo3ctEeWKENLFMGan-w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_GBdFpHctEeWKENLFMGan-w" visible="false" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GBdFpXctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GBdFpnctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GBdFp3ctEeWKENLFMGan-w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GBdFqHctEeWKENLFMGan-w"/>
+ </children>
+ <element xmi:type="uml:Class" href="propertylifecycle.uml#_IV84t3KKEeWqG7lDxSBeNQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GBdFy3ctEeWKENLFMGan-w" x="600" y="360" width="121"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GBdFzHctEeWKENLFMGan-w" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GBdFzXctEeWKENLFMGan-w" showTitle="true"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_GBdFznctEeWKENLFMGan-w" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="propertylifecycle.uml#_IV84t3KKEeWqG7lDxSBeNQ"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GBdsJXctEeWKENLFMGan-w" x="200"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GBdsUHctEeWKENLFMGan-w" type="2008">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GBdsVXctEeWKENLFMGan-w" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GBdsVnctEeWKENLFMGan-w" key="visible" value="true"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GBdsV3ctEeWKENLFMGan-w" type="5029"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GBdsWHctEeWKENLFMGan-w" type="8510">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GBdsWXctEeWKENLFMGan-w" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_GBdsWnctEeWKENLFMGan-w" visible="false" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GBdsW3ctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GBdsXHctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GBdsXXctEeWKENLFMGan-w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GBdsXnctEeWKENLFMGan-w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_GBdsX3ctEeWKENLFMGan-w" visible="false" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GBdsYHctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GBdsYXctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GBdsYnctEeWKENLFMGan-w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GBdsY3ctEeWKENLFMGan-w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_GBdsZHctEeWKENLFMGan-w" visible="false" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GBdsZXctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GBdsZnctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GBdsZ3ctEeWKENLFMGan-w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GBdsaHctEeWKENLFMGan-w"/>
+ </children>
+ <element xmi:type="uml:Class" href="propertylifecycle.uml#_IV84x3KKEeWqG7lDxSBeNQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GBdsi3ctEeWKENLFMGan-w" x="900" y="200" width="121" height="101"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GBdsjHctEeWKENLFMGan-w" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GBdsjXctEeWKENLFMGan-w" showTitle="true"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_GBdsjnctEeWKENLFMGan-w" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="propertylifecycle.uml#_IV84x3KKEeWqG7lDxSBeNQ"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GBdsq3ctEeWKENLFMGan-w" x="200"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GBds1nctEeWKENLFMGan-w" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GBds13ctEeWKENLFMGan-w" showTitle="true"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_GBds2HctEeWKENLFMGan-w" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Enumeration" href="propertylifecycle.uml#_cKIeYHMyEeWaSYDtLQJgQw"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GBds7XctEeWKENLFMGan-w" x="200"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GBds7nctEeWKENLFMGan-w" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GBds73ctEeWKENLFMGan-w" showTitle="true"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_GBds8HctEeWKENLFMGan-w" name="BASE_ELEMENT"/>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GBds8XctEeWKENLFMGan-w" x="220" y="420"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GBds8nctEeWKENLFMGan-w" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GBds83ctEeWKENLFMGan-w" showTitle="true"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_GBds9HctEeWKENLFMGan-w" name="BASE_ELEMENT"/>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GBds9XctEeWKENLFMGan-w" x="220" y="420"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GBds9nctEeWKENLFMGan-w" type="2012">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GBds93ctEeWKENLFMGan-w" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GBds-HctEeWKENLFMGan-w" key="visible" value="true"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GBds-XctEeWKENLFMGan-w" type="5038"/>
+ <element xmi:type="uml:Comment" href="propertylifecycle.uml#_zhY64HNBEeWMaapY9PW8Gw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GBds-nctEeWKENLFMGan-w" x="20" y="40" width="161" height="61"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GBds-3ctEeWKENLFMGan-w" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GBds_HctEeWKENLFMGan-w" showTitle="true"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_GBds_XctEeWKENLFMGan-w" name="BASE_ELEMENT"/>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GBds_nctEeWKENLFMGan-w" x="220" y="420"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GBds_3ctEeWKENLFMGan-w" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GBdtAHctEeWKENLFMGan-w" showTitle="true"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_GBdtAXctEeWKENLFMGan-w" name="BASE_ELEMENT"/>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GBdtAnctEeWKENLFMGan-w" x="220" y="420"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GBdtA3ctEeWKENLFMGan-w" type="2012">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GBdtBHctEeWKENLFMGan-w" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GBdtBXctEeWKENLFMGan-w" key="visible" value="true"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GBdtBnctEeWKENLFMGan-w" type="5038"/>
+ <element xmi:type="uml:Comment" href="propertylifecycle.uml#_y6PPwHNLEeWwzbMQPBkuTQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GBdtB3ctEeWKENLFMGan-w" x="20" y="220" width="161" height="62"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GBdtCHctEeWKENLFMGan-w" type="2012">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GBdtCXctEeWKENLFMGan-w" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GBdtCnctEeWKENLFMGan-w" key="visible" value="true"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GBdtC3ctEeWKENLFMGan-w" type="5038"/>
+ <element xmi:type="uml:Comment" href="propertylifecycle.uml#_dWoH4HNMEeWwzbMQPBkuTQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GBdtDHctEeWKENLFMGan-w" x="480" y="40" width="241" height="61"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GBdtEnctEeWKENLFMGan-w" type="2012">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GBdtE3ctEeWKENLFMGan-w" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GBdtFHctEeWKENLFMGan-w" key="visible" value="true"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GBdtFXctEeWKENLFMGan-w" type="5038"/>
+ <element xmi:type="uml:Comment" href="propertylifecycle.uml#_7yFkwHNMEeWwzbMQPBkuTQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GBdtFnctEeWKENLFMGan-w" x="400" y="200" width="161" height="41"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GBdtF3ctEeWKENLFMGan-w" type="2012">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GBdtGHctEeWKENLFMGan-w" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GBdtGXctEeWKENLFMGan-w" key="visible" value="true"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GBdtGnctEeWKENLFMGan-w" type="5038"/>
+ <element xmi:type="uml:Comment" href="propertylifecycle.uml#_ERG_gHNNEeWwzbMQPBkuTQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GBdtG3ctEeWKENLFMGan-w" x="1080" y="240" width="184" height="66"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GBdtJnctEeWKENLFMGan-w" type="2012">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GBdtJ3ctEeWKENLFMGan-w" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GBdtKHctEeWKENLFMGan-w" key="visible" value="true"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GBdtKXctEeWKENLFMGan-w" type="5038"/>
+ <element xmi:type="uml:Comment" href="propertylifecycle.uml#__GRc4HNNEeWwzbMQPBkuTQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GBeTIHctEeWKENLFMGan-w" x="400" y="380" width="161" height="61"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GBeTK3ctEeWKENLFMGan-w" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GBeTLHctEeWKENLFMGan-w" showTitle="true"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_GBeTLXctEeWKENLFMGan-w" name="BASE_ELEMENT"/>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GBeTLnctEeWKENLFMGan-w" x="220" y="420"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GBeTL3ctEeWKENLFMGan-w" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GBeTMHctEeWKENLFMGan-w" showTitle="true"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_GBeTMXctEeWKENLFMGan-w" name="BASE_ELEMENT"/>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GBeTMnctEeWKENLFMGan-w" x="220" y="420"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GBeTM3ctEeWKENLFMGan-w" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GBeTNHctEeWKENLFMGan-w" showTitle="true"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_GBeTNXctEeWKENLFMGan-w" name="BASE_ELEMENT"/>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GBeTNnctEeWKENLFMGan-w" x="220" y="420"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GBeTN3ctEeWKENLFMGan-w" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GBeTOHctEeWKENLFMGan-w" showTitle="true"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_GBeTOXctEeWKENLFMGan-w" name="BASE_ELEMENT"/>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GBeTOnctEeWKENLFMGan-w" x="220" y="420"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GBeTO3ctEeWKENLFMGan-w" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GBeTPHctEeWKENLFMGan-w" showTitle="true"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_GBeTPXctEeWKENLFMGan-w" name="BASE_ELEMENT"/>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GBeTPnctEeWKENLFMGan-w" x="220" y="420"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_Gi-dsHctEeWKENLFMGan-w" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Gi-dsXctEeWKENLFMGan-w" showTitle="true"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_GjA58HctEeWKENLFMGan-w" name="BASE_ELEMENT"/>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Gi-dsnctEeWKENLFMGan-w" x="220" y="420"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="__sw9QLg6EeWJ68NTu2ajAQ" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="__syycLg6EeWJ68NTu2ajAQ" type="5029"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="__szZgLg6EeWJ68NTu2ajAQ" type="8510">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="__szZgbg6EeWJ68NTu2ajAQ" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="__s1OsLg6EeWJ68NTu2ajAQ" visible="false" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="__s1Osbg6EeWJ68NTu2ajAQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="__s1Osrg6EeWJ68NTu2ajAQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="__s1Os7g6EeWJ68NTu2ajAQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="__s1OtLg6EeWJ68NTu2ajAQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="__s1Otbg6EeWJ68NTu2ajAQ" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="__s1Otrg6EeWJ68NTu2ajAQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="__s1Ot7g6EeWJ68NTu2ajAQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="__s1OuLg6EeWJ68NTu2ajAQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="__s1Oubg6EeWJ68NTu2ajAQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="__s1Ourg6EeWJ68NTu2ajAQ" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="__s1Ou7g6EeWJ68NTu2ajAQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="__s1OvLg6EeWJ68NTu2ajAQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="__s1Ovbg6EeWJ68NTu2ajAQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="__s1Ovrg6EeWJ68NTu2ajAQ"/>
+ </children>
+ <element xmi:type="uml:Class" href="propertylifecycle.uml#__rw3sLg6EeWJ68NTu2ajAQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="__sw9Qbg6EeWJ68NTu2ajAQ" x="700" y="540"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_Rc9L8Lg8EeWJ68NTu2ajAQ" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_Rc9zALg8EeWJ68NTu2ajAQ" type="5029"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Rc9zAbg8EeWJ68NTu2ajAQ" type="8510">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Rc9zArg8EeWJ68NTu2ajAQ" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Rc9zA7g8EeWJ68NTu2ajAQ" visible="false" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Rc9zBLg8EeWJ68NTu2ajAQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Rc9zBbg8EeWJ68NTu2ajAQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Rc9zBrg8EeWJ68NTu2ajAQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Rc9zB7g8EeWJ68NTu2ajAQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Rc9zCLg8EeWJ68NTu2ajAQ" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Rc9zCbg8EeWJ68NTu2ajAQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Rc9zCrg8EeWJ68NTu2ajAQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Rc9zC7g8EeWJ68NTu2ajAQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Rc9zDLg8EeWJ68NTu2ajAQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Rc9zDbg8EeWJ68NTu2ajAQ" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Rc9zDrg8EeWJ68NTu2ajAQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Rc9zD7g8EeWJ68NTu2ajAQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Rc9zELg8EeWJ68NTu2ajAQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Rc9zEbg8EeWJ68NTu2ajAQ"/>
+ </children>
+ <element xmi:type="uml:Class" href="propertylifecycle.uml#_RcrfILg8EeWJ68NTu2ajAQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Rc9L8bg8EeWJ68NTu2ajAQ" x="700" y="700" width="121"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_QYI_ULhEEeWJ68NTu2ajAQ" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_QYI_UrhEEeWJ68NTu2ajAQ" type="5029"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_QYI_U7hEEeWJ68NTu2ajAQ" type="8510">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_QYI_VLhEEeWJ68NTu2ajAQ" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_QYI_VbhEEeWJ68NTu2ajAQ" visible="false" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_QYI_VrhEEeWJ68NTu2ajAQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_QYI_V7hEEeWJ68NTu2ajAQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_QYI_WLhEEeWJ68NTu2ajAQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QYI_WbhEEeWJ68NTu2ajAQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_QYJmYLhEEeWJ68NTu2ajAQ" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_QYJmYbhEEeWJ68NTu2ajAQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_QYJmYrhEEeWJ68NTu2ajAQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_QYJmY7hEEeWJ68NTu2ajAQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QYJmZLhEEeWJ68NTu2ajAQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_QYJmZbhEEeWJ68NTu2ajAQ" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_QYJmZrhEEeWJ68NTu2ajAQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_QYJmZ7hEEeWJ68NTu2ajAQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_QYJmaLhEEeWJ68NTu2ajAQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QYJmabhEEeWJ68NTu2ajAQ"/>
+ </children>
+ <element xmi:type="uml:Class" href="propertylifecycle.uml#_QXuvoLhEEeWJ68NTu2ajAQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QYI_UbhEEeWJ68NTu2ajAQ" x="500" y="700" width="121" height="101"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_UgLywLhEEeWJ68NTu2ajAQ" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_UgLywrhEEeWJ68NTu2ajAQ" type="5029"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_UgLyw7hEEeWJ68NTu2ajAQ" type="8510">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_UgLyxLhEEeWJ68NTu2ajAQ" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_UgLyxbhEEeWJ68NTu2ajAQ" visible="false" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_UgLyxrhEEeWJ68NTu2ajAQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_UgLyx7hEEeWJ68NTu2ajAQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_UgLyyLhEEeWJ68NTu2ajAQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_UgLyybhEEeWJ68NTu2ajAQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_UgLyyrhEEeWJ68NTu2ajAQ" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_UgLyy7hEEeWJ68NTu2ajAQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_UgLyzLhEEeWJ68NTu2ajAQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_UgLyzbhEEeWJ68NTu2ajAQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_UgLyzrhEEeWJ68NTu2ajAQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_UgLyz7hEEeWJ68NTu2ajAQ" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_UgLy0LhEEeWJ68NTu2ajAQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_UgLy0bhEEeWJ68NTu2ajAQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_UgLy0rhEEeWJ68NTu2ajAQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_UgLy07hEEeWJ68NTu2ajAQ"/>
+ </children>
+ <element xmi:type="uml:Class" href="propertylifecycle.uml#_Uf4QwLhEEeWJ68NTu2ajAQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_UgLywbhEEeWJ68NTu2ajAQ" x="500" y="540" width="121" height="101"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_sqcP8LhHEeWJ68NTu2ajAQ" type="2012">
+ <children xmi:type="notation:DecorationNode" xmi:id="_sqc3ALhHEeWJ68NTu2ajAQ" type="5038"/>
+ <element xmi:type="uml:Comment" href="propertylifecycle.uml#_kMtOoLhHEeWJ68NTu2ajAQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_sqcP8bhHEeWJ68NTu2ajAQ" x="860" y="560" width="186"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_ERZ6MLhIEeWJ68NTu2ajAQ" type="2012">
+ <children xmi:type="notation:DecorationNode" xmi:id="_ERZ6MrhIEeWJ68NTu2ajAQ" type="5038"/>
+ <element xmi:type="uml:Comment" href="propertylifecycle.uml#_7jHw4LhGEeWJ68NTu2ajAQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ERZ6MbhIEeWJ68NTu2ajAQ" x="860" y="720" width="181"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_Ns1S0LhIEeWJ68NTu2ajAQ" type="2012">
+ <children xmi:type="notation:DecorationNode" xmi:id="_Ns1S0rhIEeWJ68NTu2ajAQ" type="5038"/>
+ <element xmi:type="uml:Comment" href="propertylifecycle.uml#_H_t0cLhHEeWJ68NTu2ajAQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Ns1S0bhIEeWJ68NTu2ajAQ" x="240" y="720" width="221"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_hbtyELhlEeWJ68NTu2ajAQ" type="2012">
+ <children xmi:type="notation:DecorationNode" xmi:id="_hbuZILhlEeWJ68NTu2ajAQ" type="5038"/>
+ <element xmi:type="uml:Comment" href="propertylifecycle.uml#_eyisALhHEeWJ68NTu2ajAQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hbtyEbhlEeWJ68NTu2ajAQ" x="240" y="560" width="221"/>
+ </children>
+ <styles xmi:type="notation:StringValueStyle" xmi:id="_GBeTP3ctEeWKENLFMGan-w" name="diagram_compatibility_version" stringValue="1.1.0"/>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_GBeTQHctEeWKENLFMGan-w"/>
+ <styles xmi:type="style:PapyrusViewStyle" xmi:id="_GBeTQXctEeWKENLFMGan-w">
+ <owner xmi:type="uml:Model" href="propertylifecycle.uml#_1MrvAHcmEeW7365dAmHglw"/>
+ </styles>
+ <styles xmi:type="notation:EObjectListValueStyle" xmi:id="_vHwmcIFeEeWW3PzPq3nIjg" name="css_stylesheets" eObjectListValue="_SLzp8IFdEeWW3PzPq3nIjg"/>
+ <element xmi:type="uml:Model" href="propertylifecycle.uml#_1MrvAHcmEeW7365dAmHglw"/>
+ <edges xmi:type="notation:Connector" xmi:id="_GBeTQnctEeWKENLFMGan-w" type="StereotypeCommentLink" source="_GBaowXctEeWKENLFMGan-w" target="_GBbQA3ctEeWKENLFMGan-w">
+ <styles xmi:type="notation:FontStyle" xmi:id="_GBeTQ3ctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_GBeTRHctEeWKENLFMGan-w" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="propertylifecycle.uml#_IV8RgXKKEeWqG7lDxSBeNQ"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_GBeTRXctEeWKENLFMGan-w" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GBeTRnctEeWKENLFMGan-w"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GBeTR3ctEeWKENLFMGan-w"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_GBeTSHctEeWKENLFMGan-w" type="StereotypeCommentLink" source="_GBbQI3ctEeWKENLFMGan-w" target="_GBbQX3ctEeWKENLFMGan-w">
+ <styles xmi:type="notation:FontStyle" xmi:id="_GBeTSXctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_GBeTSnctEeWKENLFMGan-w" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="propertylifecycle.uml#_IV84k3KKEeWqG7lDxSBeNQ"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_GBeTS3ctEeWKENLFMGan-w" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GBeTTHctEeWKENLFMGan-w"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GBeTTXctEeWKENLFMGan-w"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_GBeTTnctEeWKENLFMGan-w" type="StereotypeCommentLink" source="_GBbQf3ctEeWKENLFMGan-w" target="_GBbQu3ctEeWKENLFMGan-w">
+ <styles xmi:type="notation:FontStyle" xmi:id="_GBeTT3ctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_GBeTUHctEeWKENLFMGan-w" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="propertylifecycle.uml#_IV84l3KKEeWqG7lDxSBeNQ"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_GBeTUXctEeWKENLFMGan-w" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GBeTUnctEeWKENLFMGan-w"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GBeTU3ctEeWKENLFMGan-w"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_GBeTVHctEeWKENLFMGan-w" type="StereotypeCommentLink" source="_GBbQ23ctEeWKENLFMGan-w" target="_GBbRF3ctEeWKENLFMGan-w">
+ <styles xmi:type="notation:FontStyle" xmi:id="_GBeTVXctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_GBeTVnctEeWKENLFMGan-w" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="propertylifecycle.uml#_IV84pHKKEeWqG7lDxSBeNQ"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_GBeTV3ctEeWKENLFMGan-w" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GBeTWHctEeWKENLFMGan-w"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GBeTWXctEeWKENLFMGan-w"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_GBeTbHctEeWKENLFMGan-w" type="StereotypeCommentLink" source="_GBdFkHctEeWKENLFMGan-w" target="_GBdFzHctEeWKENLFMGan-w">
+ <styles xmi:type="notation:FontStyle" xmi:id="_GBeTbXctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_GBeTbnctEeWKENLFMGan-w" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="propertylifecycle.uml#_IV84t3KKEeWqG7lDxSBeNQ"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_GBeTb3ctEeWKENLFMGan-w" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GBeTcHctEeWKENLFMGan-w"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GBeTcXctEeWKENLFMGan-w"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_GBeTeHctEeWKENLFMGan-w" type="StereotypeCommentLink" source="_GBdsUHctEeWKENLFMGan-w" target="_GBdsjHctEeWKENLFMGan-w">
+ <styles xmi:type="notation:FontStyle" xmi:id="_GBeTeXctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_GBeTenctEeWKENLFMGan-w" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="propertylifecycle.uml#_IV84x3KKEeWqG7lDxSBeNQ"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_GBeTe3ctEeWKENLFMGan-w" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GBeTfHctEeWKENLFMGan-w"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GBeTfXctEeWKENLFMGan-w"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_GBeTsHctEeWKENLFMGan-w" type="4001" source="_GBdFkHctEeWKENLFMGan-w" target="_GBbQf3ctEeWKENLFMGan-w">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GBeTsXctEeWKENLFMGan-w" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GBeTsnctEeWKENLFMGan-w" key="visible" value="true"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GBeTs3ctEeWKENLFMGan-w" type="6001">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_GBeTtHctEeWKENLFMGan-w" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GBeTtXctEeWKENLFMGan-w" x="-21" y="-18"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GBeTtnctEeWKENLFMGan-w" type="6002">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_GBeTt3ctEeWKENLFMGan-w" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GBeTuHctEeWKENLFMGan-w" x="-21" y="18"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GBeTuXctEeWKENLFMGan-w" visible="false" type="6003">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_GBeTunctEeWKENLFMGan-w" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GBeTu3ctEeWKENLFMGan-w" x="13" y="71"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GBeTvHctEeWKENLFMGan-w" visible="false" type="6005">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_GBeTvXctEeWKENLFMGan-w" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GBeTvnctEeWKENLFMGan-w" x="-41" y="18"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GBeTv3ctEeWKENLFMGan-w" type="6033">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_GBeTwHctEeWKENLFMGan-w" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GBeTwXctEeWKENLFMGan-w" x="13" y="-30"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GBeTwnctEeWKENLFMGan-w" type="6034">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_GBeTw3ctEeWKENLFMGan-w" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GBeTxHctEeWKENLFMGan-w" x="-7" y="25"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_GBeTxXctEeWKENLFMGan-w"/>
+ <element xmi:type="uml:Association" href="propertylifecycle.uml#_IV84xXKKEeWqG7lDxSBeNQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_GBeTxnctEeWKENLFMGan-w" points="[640, 400, -643984, -643984]$[640, 320, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GBeTx3ctEeWKENLFMGan-w" id="(0.49586776859504134,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GBeTyHctEeWKENLFMGan-w" id="(0.49586776859504134,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_GBeTyXctEeWKENLFMGan-w" type="4001" source="_GBdsUHctEeWKENLFMGan-w" target="_GBbQf3ctEeWKENLFMGan-w">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GBeTynctEeWKENLFMGan-w" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GBeTy3ctEeWKENLFMGan-w" key="visible" value="true"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GBeTzHctEeWKENLFMGan-w" type="6001">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_GBeTzXctEeWKENLFMGan-w" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GBeTznctEeWKENLFMGan-w" x="-2" y="-17"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GBeTz3ctEeWKENLFMGan-w" type="6002">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_GBeT0HctEeWKENLFMGan-w" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GBeT0XctEeWKENLFMGan-w" x="-1" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GBeT0nctEeWKENLFMGan-w" visible="false" type="6003">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_GBeT03ctEeWKENLFMGan-w" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GBeT1HctEeWKENLFMGan-w" x="63" y="13"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GBeT1XctEeWKENLFMGan-w" visible="false" type="6005">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_GBeT1nctEeWKENLFMGan-w" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GBeT13ctEeWKENLFMGan-w" x="-39" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GBeT2HctEeWKENLFMGan-w" type="6033">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_GBeT2XctEeWKENLFMGan-w" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GBeT2nctEeWKENLFMGan-w" x="16" y="-27"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GBeT23ctEeWKENLFMGan-w" type="6034">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_GBeT3HctEeWKENLFMGan-w" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GBeT3XctEeWKENLFMGan-w" x="-25" y="-27"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_GBeT3nctEeWKENLFMGan-w"/>
+ <element xmi:type="uml:Association" href="propertylifecycle.uml#_IV84yXKKEeWqG7lDxSBeNQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_GBeT33ctEeWKENLFMGan-w" points="[438, 410, -643984, -643984]$[547, 164, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GBeT4HctEeWKENLFMGan-w" id="(0.0,0.594059405940594)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GBeT4XctEeWKENLFMGan-w" id="(1.0,0.6)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_GBeT4nctEeWKENLFMGan-w" type="4001" source="_GBbQf3ctEeWKENLFMGan-w" target="_GBbQI3ctEeWKENLFMGan-w">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GBeT43ctEeWKENLFMGan-w" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GBeT5HctEeWKENLFMGan-w" key="visible" value="true"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GBeT5XctEeWKENLFMGan-w" type="6001">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_GBeT5nctEeWKENLFMGan-w" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GBeT53ctEeWKENLFMGan-w" x="-40" y="-19"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GBeT6HctEeWKENLFMGan-w" type="6002">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_GBeT6XctEeWKENLFMGan-w" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GBeT6nctEeWKENLFMGan-w" x="-39" y="17"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GBeT63ctEeWKENLFMGan-w" visible="false" type="6003">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_GBeT7HctEeWKENLFMGan-w" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GBeT7XctEeWKENLFMGan-w" x="51" y="13"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GBeT7nctEeWKENLFMGan-w" visible="false" type="6005">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_GBeT73ctEeWKENLFMGan-w" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GBeT8HctEeWKENLFMGan-w" x="-40" y="17"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GBeT8XctEeWKENLFMGan-w" type="6033">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_GBeT8nctEeWKENLFMGan-w" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GBeT83ctEeWKENLFMGan-w" x="30" y="-27"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GBeT9HctEeWKENLFMGan-w" type="6034">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_GBeT9XctEeWKENLFMGan-w" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GBeT9nctEeWKENLFMGan-w" x="-25" y="-27"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_GBeT93ctEeWKENLFMGan-w"/>
+ <element xmi:type="uml:Association" href="propertylifecycle.uml#_IV84y3KKEeWqG7lDxSBeNQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_GBeT-HctEeWKENLFMGan-w" points="[480, 138, -643984, -643984]$[242, 264, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GBeT-XctEeWKENLFMGan-w" id="(0.0,0.6)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GBeT-nctEeWKENLFMGan-w" id="(1.0,0.6)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_GBeT-3ctEeWKENLFMGan-w" type="4002" source="_GBdsUHctEeWKENLFMGan-w" target="_GBbQ23ctEeWKENLFMGan-w">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GBeT_HctEeWKENLFMGan-w" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GBeT_XctEeWKENLFMGan-w" key="visible" value="true"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GBeT_nctEeWKENLFMGan-w" type="6007">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_GBeT_3ctEeWKENLFMGan-w" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GBeUAHctEeWKENLFMGan-w" x="-59" y="39"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_GBeUAXctEeWKENLFMGan-w"/>
+ <element xmi:type="uml:Generalization" href="propertylifecycle.uml#_IV84yHKKEeWqG7lDxSBeNQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_GBeUAnctEeWKENLFMGan-w" points="[940, 200, -643984, -643984]$[940, 160, -643984, -643984]$[820, 160, -643984, -643984]$[820, 120, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GBeUA3ctEeWKENLFMGan-w" id="(0.3305785123966942,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GBeUBHctEeWKENLFMGan-w" id="(0.49586776859504134,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_GBeUBXctEeWKENLFMGan-w" type="4002" source="_GBbQf3ctEeWKENLFMGan-w" target="_GBbQ23ctEeWKENLFMGan-w">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GBeUBnctEeWKENLFMGan-w" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GBeUB3ctEeWKENLFMGan-w" key="visible" value="true"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GBeUCHctEeWKENLFMGan-w" type="6007">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_GBeUCXctEeWKENLFMGan-w" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GBeUCnctEeWKENLFMGan-w" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_GBeUC3ctEeWKENLFMGan-w"/>
+ <element xmi:type="uml:Generalization" href="propertylifecycle.uml#_IV84mHKKEeWqG7lDxSBeNQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_GBeUDHctEeWKENLFMGan-w" points="[680, 200, -643984, -643984]$[680, 160, -643984, -643984]$[820, 160, -643984, -643984]$[820, 120, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GBeUDXctEeWKENLFMGan-w" id="(0.6611570247933884,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GBeUDnctEeWKENLFMGan-w" id="(0.49586776859504134,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_GBeUD3ctEeWKENLFMGan-w" type="4002" source="_GBbQI3ctEeWKENLFMGan-w" target="_GBaowXctEeWKENLFMGan-w">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GBeUEHctEeWKENLFMGan-w" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GBeUEXctEeWKENLFMGan-w" key="visible" value="true"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GBeUEnctEeWKENLFMGan-w" type="6007">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_GBeUE3ctEeWKENLFMGan-w" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GBeUFHctEeWKENLFMGan-w" x="-40" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_GBeUFXctEeWKENLFMGan-w"/>
+ <element xmi:type="uml:Generalization" href="propertylifecycle.uml#_IV84lHKKEeWqG7lDxSBeNQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_GBeUFnctEeWKENLFMGan-w" points="[202, 283, -643984, -643984]$[376, 291, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GBeUF3ctEeWKENLFMGan-w" id="(0.5,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GBeUGHctEeWKENLFMGan-w" id="(0.49586776859504134,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_GBeUUHctEeWKENLFMGan-w" type="4013" source="_GBds9nctEeWKENLFMGan-w" target="_GBaowXctEeWKENLFMGan-w">
+ <styles xmi:type="notation:FontStyle" xmi:id="_GBeUUXctEeWKENLFMGan-w"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_GBeUUnctEeWKENLFMGan-w" points="[160, 101, -643984, -643984]$[220, 80, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GBeUU3ctEeWKENLFMGan-w" id="(1.0,0.6557377049180327)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GBeUVHctEeWKENLFMGan-w" id="(0.0,0.6)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_GBeUVXctEeWKENLFMGan-w" type="4013" source="_GBdtA3ctEeWKENLFMGan-w" target="_GBbQI3ctEeWKENLFMGan-w">
+ <styles xmi:type="notation:FontStyle" xmi:id="_GBeUVnctEeWKENLFMGan-w"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_GBeUV3ctEeWKENLFMGan-w" points="[221, 240, -643984, -643984]$[240, 240, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GBeUWHctEeWKENLFMGan-w" id="(1.0,0.6451612903225806)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GBeUWXctEeWKENLFMGan-w" id="(0.0,0.6)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_GBeUWnctEeWKENLFMGan-w" type="4013" source="_GBdtCHctEeWKENLFMGan-w" target="_GBbQ23ctEeWKENLFMGan-w">
+ <styles xmi:type="notation:FontStyle" xmi:id="_GBeUW3ctEeWKENLFMGan-w"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_GBeUXHctEeWKENLFMGan-w" points="[741, 80, -643984, -643984]$[760, 80, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GBeUXXctEeWKENLFMGan-w" id="(1.0,0.6557377049180327)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GBeUXnctEeWKENLFMGan-w" id="(0.0,0.6)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_GBeUZHctEeWKENLFMGan-w" type="4013" source="_GBdtEnctEeWKENLFMGan-w" target="_GBbQf3ctEeWKENLFMGan-w">
+ <styles xmi:type="notation:FontStyle" xmi:id="_GBeUZXctEeWKENLFMGan-w"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_GBeUZnctEeWKENLFMGan-w" points="[581, 220, -643984, -643984]$[600, 220, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GBeUZ3ctEeWKENLFMGan-w" id="(1.0,0.47619047619047616)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GBeUaHctEeWKENLFMGan-w" id="(0.0,0.2)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_GBeUaXctEeWKENLFMGan-w" type="4013" source="_GBdtF3ctEeWKENLFMGan-w" target="_GBdsUHctEeWKENLFMGan-w">
+ <styles xmi:type="notation:FontStyle" xmi:id="_GBeUanctEeWKENLFMGan-w"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_GBeUa3ctEeWKENLFMGan-w" points="[1060, 260, -643984, -643984]$[1021, 260, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GBeUbHctEeWKENLFMGan-w" id="(0.0,0.6060606060606061)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GBeUbXctEeWKENLFMGan-w" id="(1.0,0.7920792079207921)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_GBeUeHctEeWKENLFMGan-w" type="4013" source="_GBdtJnctEeWKENLFMGan-w" target="_GBdFkHctEeWKENLFMGan-w">
+ <styles xmi:type="notation:FontStyle" xmi:id="_GBeUeXctEeWKENLFMGan-w"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_GBeUenctEeWKENLFMGan-w" points="[340, 500, -643984, -643984]$[340, 480, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GBeUe3ctEeWKENLFMGan-w" id="(1.0,0.6557377049180327)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GBeUfHctEeWKENLFMGan-w" id="(0.0,0.6)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_5-unAKPvEeWuBZEJ81dCIQ" type="4001" source="_GBdsUHctEeWKENLFMGan-w" target="_GBdsUHctEeWKENLFMGan-w">
+ <children xmi:type="notation:DecorationNode" xmi:id="_5-2i0KPvEeWuBZEJ81dCIQ" type="6001">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_8D0rQKPvEeWuBZEJ81dCIQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_5-2i0aPvEeWuBZEJ81dCIQ" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_5-3J4KPvEeWuBZEJ81dCIQ" type="6002">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_8ElgQKPvEeWuBZEJ81dCIQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_5-3J4aPvEeWuBZEJ81dCIQ" y="40"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_5-3J4qPvEeWuBZEJ81dCIQ" type="6003">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_8FW8UKPvEeWuBZEJ81dCIQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_5-3J46PvEeWuBZEJ81dCIQ" x="44" y="-18"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_5-3J5KPvEeWuBZEJ81dCIQ" type="6005">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_8GBDoKPvEeWuBZEJ81dCIQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_5-3J5aPvEeWuBZEJ81dCIQ" x="-20" y="-15"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_5-3J5qPvEeWuBZEJ81dCIQ" type="6033">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_8GvcYKPvEeWuBZEJ81dCIQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_5-3J56PvEeWuBZEJ81dCIQ" x="13" y="24"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_5-3J6KPvEeWuBZEJ81dCIQ" type="6034">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_8HTdEKPvEeWuBZEJ81dCIQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_5-3J6aPvEeWuBZEJ81dCIQ" x="-24" y="-7"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_5-unAaPvEeWuBZEJ81dCIQ"/>
+ <element xmi:type="uml:Association" href="propertylifecycle.uml#_qNrVoKPaEeWAw9SV1KeTXw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_5-unAqPvEeWuBZEJ81dCIQ" points="[980, 200, -643984, -643984]$[980, 160, -643984, -643984]$[1060, 160, -643984, -643984]$[1060, 240, -643984, -643984]$[1021, 240, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8DLLAKPvEeWuBZEJ81dCIQ" id="(0.6611570247933884,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8DLyEKPvEeWuBZEJ81dCIQ" id="(1.0,0.39603960396039606)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_WWvlYLg8EeWJ68NTu2ajAQ" type="4002" source="_Rc9L8Lg8EeWJ68NTu2ajAQ" target="__sw9QLg6EeWJ68NTu2ajAQ">
+ <children xmi:type="notation:DecorationNode" xmi:id="_WWvlY7g8EeWJ68NTu2ajAQ" type="6007">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_sbI0MLg9EeWJ68NTu2ajAQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_WWvlZLg8EeWJ68NTu2ajAQ" x="-2" y="57"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_WWvlYbg8EeWJ68NTu2ajAQ"/>
+ <element xmi:type="uml:Generalization" href="propertylifecycle.uml#_WWCawLg8EeWJ68NTu2ajAQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_WWvlYrg8EeWJ68NTu2ajAQ" points="[760, 700, -643984, -643984]$[760, 640, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_WXaTwLg8EeWJ68NTu2ajAQ" id="(0.49586776859504134,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_WXaTwbg8EeWJ68NTu2ajAQ" id="(0.46875,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_m_BmQLg8EeWJ68NTu2ajAQ" type="4001" source="_GBdFkHctEeWKENLFMGan-w" target="__sw9QLg6EeWJ68NTu2ajAQ">
+ <children xmi:type="notation:DecorationNode" xmi:id="_m_CNULg8EeWJ68NTu2ajAQ" type="6001">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_scKH4Lg9EeWJ68NTu2ajAQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_m_CNUbg8EeWJ68NTu2ajAQ" x="-159" y="139"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_m_CNUrg8EeWJ68NTu2ajAQ" type="6002">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_scgtMLg9EeWJ68NTu2ajAQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_m_CNU7g8EeWJ68NTu2ajAQ" x="-162" y="175"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_m_CNVLg8EeWJ68NTu2ajAQ" type="6003">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_sczBELg9EeWJ68NTu2ajAQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_m_CNVbg8EeWJ68NTu2ajAQ" x="33" y="-18"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_m_CNVrg8EeWJ68NTu2ajAQ" type="6005">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_sdIYQLg9EeWJ68NTu2ajAQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_m_CNV7g8EeWJ68NTu2ajAQ" x="-34" y="17"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_m_C0YLg8EeWJ68NTu2ajAQ" type="6033">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_sdaFELg9EeWJ68NTu2ajAQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_m_C0Ybg8EeWJ68NTu2ajAQ" x="27" y="15"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_m_C0Yrg8EeWJ68NTu2ajAQ" type="6034">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_sdx4gLg9EeWJ68NTu2ajAQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_m_C0Y7g8EeWJ68NTu2ajAQ" x="-13" y="-25"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_m_BmQbg8EeWJ68NTu2ajAQ"/>
+ <element xmi:type="uml:Association" href="propertylifecycle.uml#_m-FyILg8EeWJ68NTu2ajAQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_m_BmQrg8EeWJ68NTu2ajAQ" points="[660, 460, -643984, -643984]$[660, 500, -643984, -643984]$[760, 500, -643984, -643984]$[760, 540, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_m_2ssLg8EeWJ68NTu2ajAQ" id="(0.49586776859504134,1.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_m_2ssbg8EeWJ68NTu2ajAQ" id="(0.46875,0.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_WrS_cLhEEeWJ68NTu2ajAQ" type="4001" source="_GBdFkHctEeWKENLFMGan-w" target="_UgLywLhEEeWJ68NTu2ajAQ">
+ <children xmi:type="notation:DecorationNode" xmi:id="_WrTmgLhEEeWJ68NTu2ajAQ" type="6001">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_XESuQLhEEeWJ68NTu2ajAQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_WrTmgbhEEeWJ68NTu2ajAQ" y="3"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_WrTmgrhEEeWJ68NTu2ajAQ" type="6002">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_XEzEkLhEEeWJ68NTu2ajAQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_WrTmg7hEEeWJ68NTu2ajAQ" x="-2" y="17"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_WrTmhLhEEeWJ68NTu2ajAQ" type="6003">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_XFEKULhEEeWJ68NTu2ajAQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_WrTmhbhEEeWJ68NTu2ajAQ" x="28" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_WrTmhrhEEeWJ68NTu2ajAQ" type="6005">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_XFUpALhEEeWJ68NTu2ajAQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_WrTmh7hEEeWJ68NTu2ajAQ" x="-27" y="18"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_WrTmiLhEEeWJ68NTu2ajAQ" type="6033">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_XFlHsLhEEeWJ68NTu2ajAQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_WrTmibhEEeWJ68NTu2ajAQ" x="27" y="-25"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_WrTmirhEEeWJ68NTu2ajAQ" type="6034">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_XF2NcLhEEeWJ68NTu2ajAQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_WrTmi7hEEeWJ68NTu2ajAQ" x="-13" y="30"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_WrS_cbhEEeWJ68NTu2ajAQ"/>
+ <element xmi:type="uml:Association" href="propertylifecycle.uml#_WqyCELhEEeWJ68NTu2ajAQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_WrS_crhEEeWJ68NTu2ajAQ" points="[660, 460, -643984, -643984]$[660, 500, -643984, -643984]$[560, 500, -643984, -643984]$[560, 540, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_WsaZwLhEEeWJ68NTu2ajAQ" id="(0.49586776859504134,1.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_WsaZwbhEEeWJ68NTu2ajAQ" id="(0.49586776859504134,0.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_eT6WoLhEEeWJ68NTu2ajAQ" type="4002" source="_QYI_ULhEEeWJ68NTu2ajAQ" target="_UgLywLhEEeWJ68NTu2ajAQ">
+ <children xmi:type="notation:DecorationNode" xmi:id="_eT6Wo7hEEeWJ68NTu2ajAQ" type="6007">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_gIMXsLhEEeWJ68NTu2ajAQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_eT6WpLhEEeWJ68NTu2ajAQ" x="-1" y="37"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_eT6WobhEEeWJ68NTu2ajAQ"/>
+ <element xmi:type="uml:Generalization" href="propertylifecycle.uml#_eThVELhEEeWJ68NTu2ajAQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_eT6WorhEEeWJ68NTu2ajAQ" points="[560, 700, -643984, -643984]$[560, 641, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_eUnhQLhEEeWJ68NTu2ajAQ" id="(0.49586776859504134,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_eUp9gLhEEeWJ68NTu2ajAQ" id="(0.49586776859504134,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_RcPj0LhIEeWJ68NTu2ajAQ" type="4013" source="_ERZ6MLhIEeWJ68NTu2ajAQ" target="_Rc9L8Lg8EeWJ68NTu2ajAQ">
+ <styles xmi:type="notation:FontStyle" xmi:id="_RcPj0bhIEeWJ68NTu2ajAQ"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_RcPj0rhIEeWJ68NTu2ajAQ" points="[560, 740, -643984, -643984]$[620, 720, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Rc4dALhIEeWJ68NTu2ajAQ" id="(0.0,0.6666666666666666)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Rc4dAbhIEeWJ68NTu2ajAQ" id="(1.0,0.6)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_R5aoALhIEeWJ68NTu2ajAQ" type="4013" source="_Ns1S0LhIEeWJ68NTu2ajAQ" target="_QYI_ULhEEeWJ68NTu2ajAQ">
+ <styles xmi:type="notation:FontStyle" xmi:id="_R5aoAbhIEeWJ68NTu2ajAQ"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_R5aoArhIEeWJ68NTu2ajAQ" points="[680, 780, -643984, -643984]$[641, 780, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_R6VOALhIEeWJ68NTu2ajAQ" id="(1.0,0.6666666666666666)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_R6VOAbhIEeWJ68NTu2ajAQ" id="(0.0,0.594059405940594)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_TwdCILhIEeWJ68NTu2ajAQ" type="4013" source="_sqcP8LhHEeWJ68NTu2ajAQ" target="__sw9QLg6EeWJ68NTu2ajAQ">
+ <styles xmi:type="notation:FontStyle" xmi:id="_TwdCIbhIEeWJ68NTu2ajAQ"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_TwdCIrhIEeWJ68NTu2ajAQ" points="[860, 600, -643984, -643984]$[828, 600, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_TxY2QLhIEeWJ68NTu2ajAQ" id="(0.0,0.6666666666666666)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_TxZdULhIEeWJ68NTu2ajAQ" id="(1.0,0.6)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_mbuIQLhlEeWJ68NTu2ajAQ" type="4013" source="_hbtyELhlEeWJ68NTu2ajAQ" target="_UgLywLhEEeWJ68NTu2ajAQ">
+ <styles xmi:type="notation:FontStyle" xmi:id="_mbuIQbhlEeWJ68NTu2ajAQ"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_mbuIQrhlEeWJ68NTu2ajAQ" points="[381, 580, -643984, -643984]$[440, 580, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_mchZgLhlEeWJ68NTu2ajAQ" id="(1.0,0.6666666666666666)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_mchZgbhlEeWJ68NTu2ajAQ" id="(0.0,0.594059405940594)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_ialssLk3EeWp56hvkK2Lrw" type="4002" source="_GBbQf3ctEeWKENLFMGan-w" target="_GBaowXctEeWKENLFMGan-w">
+ <children xmi:type="notation:DecorationNode" xmi:id="_ianh4Lk3EeWp56hvkK2Lrw" type="6007">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_kWzhwLk3EeWp56hvkK2Lrw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ianh4bk3EeWp56hvkK2Lrw" x="-1" y="38"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ialssbk3EeWp56hvkK2Lrw"/>
+ <element xmi:type="uml:Generalization" href="propertylifecycle.uml#_ujAFcLk2EeWp56hvkK2Lrw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ialssrk3EeWp56hvkK2Lrw" points="[640, 200, -643984, -643984]$[640, 160, -643984, -643984]$[280, 160, -643984, -643984]$[280, 120, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jC_JcLk3EeWp56hvkK2Lrw" id="(0.3305785123966942,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jo7IELk3EeWp56hvkK2Lrw" id="(0.49586776859504134,1.0)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_GCUnsHctEeWKENLFMGan-w" type="PapyrusUMLClassDiagram" name="StrategyTemplate" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_GCUnsXctEeWKENLFMGan-w" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_GCUnuHctEeWKENLFMGan-w" type="5029"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GCUnuXctEeWKENLFMGan-w" type="8510">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GCUnunctEeWKENLFMGan-w" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_GCUnu3ctEeWKENLFMGan-w" type="7017">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ScKqwLh_EeWvXZFuuA8B2g" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ScKqwbh_EeWvXZFuuA8B2g" key="mutable" value="true"/>
+ </eAnnotations>
+ <children xmi:type="notation:Shape" xmi:id="_GCUnvnctEeWKENLFMGan-w" type="3012">
+ <element xmi:type="uml:Property" href="propertylifecycle.uml#_IV8Rg3KKEeWqG7lDxSBeNQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GCUnv3ctEeWKENLFMGan-w"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GCUnwHctEeWKENLFMGan-w" type="3012">
+ <element xmi:type="uml:Property" href="propertylifecycle.uml#_IV84kXKKEeWqG7lDxSBeNQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GCUnwXctEeWKENLFMGan-w"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_Sbv0ALh_EeWvXZFuuA8B2g" type="3012">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ScKqwrh_EeWvXZFuuA8B2g" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ScKqw7h_EeWvXZFuuA8B2g" key="mutable" value="true"/>
+ </eAnnotations>
+ <element xmi:type="uml:Property" href="propertylifecycle.uml#_SbHh4Lh_EeWvXZFuuA8B2g"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Sbv0Abh_EeWvXZFuuA8B2g"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GCUnwnctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GCUnw3ctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GCUnxHctEeWKENLFMGan-w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GCUnxXctEeWKENLFMGan-w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_GCUnxnctEeWKENLFMGan-w" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GCUnx3ctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GCUnyHctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GCUnyXctEeWKENLFMGan-w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GCUnynctEeWKENLFMGan-w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_GCUny3ctEeWKENLFMGan-w" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GCUnzHctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GCUnzXctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GCUnznctEeWKENLFMGan-w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GCUnz3ctEeWKENLFMGan-w"/>
+ </children>
+ <styles xmi:type="notation:CanonicalStyle" xmi:id="_GCUn0HctEeWKENLFMGan-w"/>
+ <element xmi:type="uml:Class" href="propertylifecycle.uml#_IV8RgXKKEeWqG7lDxSBeNQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GCUn83ctEeWKENLFMGan-w" x="20" y="20" width="161" height="101"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GCUn9HctEeWKENLFMGan-w" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GCUn9XctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_GCUn9nctEeWKENLFMGan-w" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="propertylifecycle.uml#_IV8RgXKKEeWqG7lDxSBeNQ"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GCUoE3ctEeWKENLFMGan-w" x="200"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GCUoFHctEeWKENLFMGan-w" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GCUoFXctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_GCUoFnctEeWKENLFMGan-w" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="propertylifecycle.uml#_IV84k3KKEeWqG7lDxSBeNQ"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GCUoF3ctEeWKENLFMGan-w" x="819" y="251"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GCUoGHctEeWKENLFMGan-w" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GCUoGXctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_GCUoGnctEeWKENLFMGan-w" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="propertylifecycle.uml#_IV84l3KKEeWqG7lDxSBeNQ"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GCUoG3ctEeWKENLFMGan-w" x="819" y="251"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GCUoHHctEeWKENLFMGan-w" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GCUoHXctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_GCUoHnctEeWKENLFMGan-w" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="propertylifecycle.uml#_IV84pHKKEeWqG7lDxSBeNQ"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GCUoH3ctEeWKENLFMGan-w" x="819" y="251"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GCUoIHctEeWKENLFMGan-w" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GCUoIXctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_GCUoInctEeWKENLFMGan-w" name="BASE_ELEMENT"/>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GCUoI3ctEeWKENLFMGan-w" x="819" y="251"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GCUoJHctEeWKENLFMGan-w" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GCUoJXctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_GCUoJnctEeWKENLFMGan-w" name="BASE_ELEMENT"/>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GCUoJ3ctEeWKENLFMGan-w" x="819" y="251"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GCUoKHctEeWKENLFMGan-w" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GCUoKXctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_GCUoKnctEeWKENLFMGan-w" name="BASE_ELEMENT"/>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GCUoK3ctEeWKENLFMGan-w" x="819" y="251"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GCUoLHctEeWKENLFMGan-w" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GCUoLXctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_GCUoLnctEeWKENLFMGan-w" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="propertylifecycle.uml#_IV84t3KKEeWqG7lDxSBeNQ"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GCUoL3ctEeWKENLFMGan-w" x="819" y="251"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GCUoMHctEeWKENLFMGan-w" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GCUoMXctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_GCUoMnctEeWKENLFMGan-w" name="BASE_ELEMENT"/>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GCUoM3ctEeWKENLFMGan-w" x="819" y="251"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GCUoNHctEeWKENLFMGan-w" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GCUoNXctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_GCUoNnctEeWKENLFMGan-w" name="BASE_ELEMENT"/>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GCUoN3ctEeWKENLFMGan-w" x="819" y="251"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GCUoOHctEeWKENLFMGan-w" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GCUoOXctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_GCUoOnctEeWKENLFMGan-w" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="propertylifecycle.uml#_IV84x3KKEeWqG7lDxSBeNQ"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GCUoO3ctEeWKENLFMGan-w" x="819" y="251"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_bjYggIFhEeWW3PzPq3nIjg" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_bjYggoFhEeWW3PzPq3nIjg" type="5029"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_bjYgg4FhEeWW3PzPq3nIjg" type="8510">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_bjYghIFhEeWW3PzPq3nIjg" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_bjYghYFhEeWW3PzPq3nIjg" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_bjYghoFhEeWW3PzPq3nIjg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_bjYgh4FhEeWW3PzPq3nIjg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_bjYgiIFhEeWW3PzPq3nIjg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bjYgiYFhEeWW3PzPq3nIjg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_bjYgioFhEeWW3PzPq3nIjg" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_bjYgi4FhEeWW3PzPq3nIjg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_bjYgjIFhEeWW3PzPq3nIjg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_bjYgjYFhEeWW3PzPq3nIjg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bjYgjoFhEeWW3PzPq3nIjg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_bjYgj4FhEeWW3PzPq3nIjg" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_bjYgkIFhEeWW3PzPq3nIjg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_bjYgkYFhEeWW3PzPq3nIjg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_bjYgkoFhEeWW3PzPq3nIjg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bjYgk4FhEeWW3PzPq3nIjg"/>
+ </children>
+ <element xmi:type="uml:Class" href="propertylifecycle.uml#_IV84k3KKEeWqG7lDxSBeNQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bjYggYFhEeWW3PzPq3nIjg" x="20" y="200" width="161" height="81"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_bLpkULk4EeWp56hvkK2Lrw" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_bLpkUrk4EeWp56hvkK2Lrw" type="5029"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_bLqLYLk4EeWp56hvkK2Lrw" type="8510">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_bLqLYbk4EeWp56hvkK2Lrw" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_bLqLYrk4EeWp56hvkK2Lrw" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_bLqLY7k4EeWp56hvkK2Lrw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_bLqLZLk4EeWp56hvkK2Lrw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_bLqLZbk4EeWp56hvkK2Lrw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bLqLZrk4EeWp56hvkK2Lrw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_bLqLZ7k4EeWp56hvkK2Lrw" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_bLqLaLk4EeWp56hvkK2Lrw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_bLqLabk4EeWp56hvkK2Lrw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_bLqLark4EeWp56hvkK2Lrw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bLqLa7k4EeWp56hvkK2Lrw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_bLqLbLk4EeWp56hvkK2Lrw" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_bLqLbbk4EeWp56hvkK2Lrw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_bLqLbrk4EeWp56hvkK2Lrw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_bLqLb7k4EeWp56hvkK2Lrw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bLqLcLk4EeWp56hvkK2Lrw"/>
+ </children>
+ <element xmi:type="uml:Class" href="propertylifecycle.uml#_IV84l3KKEeWqG7lDxSBeNQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bLpkUbk4EeWp56hvkK2Lrw" x="300" y="200" width="161" height="81"/>
+ </children>
+ <styles xmi:type="notation:StringValueStyle" xmi:id="_GCUoPHctEeWKENLFMGan-w" name="diagram_compatibility_version" stringValue="1.1.0"/>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_GCUoPXctEeWKENLFMGan-w"/>
+ <styles xmi:type="style:PapyrusViewStyle" xmi:id="_GCUoPnctEeWKENLFMGan-w">
+ <owner xmi:type="uml:Model" href="propertylifecycle.uml#_1MrvAHcmEeW7365dAmHglw"/>
+ </styles>
+ <styles xmi:type="notation:EObjectListValueStyle" xmi:id="_qFGQ0H4cEeWW3PzPq3nIjg" name="css_stylesheets" eObjectListValue="_SLzp8IFdEeWW3PzPq3nIjg"/>
+ <element xmi:type="uml:Model" href="propertylifecycle.uml#_1MrvAHcmEeW7365dAmHglw"/>
+ <edges xmi:type="notation:Connector" xmi:id="_GCUoP3ctEeWKENLFMGan-w" type="StereotypeCommentLink" source="_GCUnsXctEeWKENLFMGan-w" target="_GCUn9HctEeWKENLFMGan-w">
+ <styles xmi:type="notation:FontStyle" xmi:id="_GCUoQHctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_GCUoQXctEeWKENLFMGan-w" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="propertylifecycle.uml#_IV8RgXKKEeWqG7lDxSBeNQ"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_GCUoQnctEeWKENLFMGan-w" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GCUoQ3ctEeWKENLFMGan-w"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GCUoRHctEeWKENLFMGan-w"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_GCUoRXctEeWKENLFMGan-w" type="StereotypeCommentLink" target="_GCUoFHctEeWKENLFMGan-w">
+ <styles xmi:type="notation:FontStyle" xmi:id="_GCUoRnctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_GCUoR3ctEeWKENLFMGan-w" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="propertylifecycle.uml#_IV84k3KKEeWqG7lDxSBeNQ"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_GCUoSHctEeWKENLFMGan-w" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GCUoSXctEeWKENLFMGan-w"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GCUoSnctEeWKENLFMGan-w"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_GCUoS3ctEeWKENLFMGan-w" type="StereotypeCommentLink" target="_GCUoGHctEeWKENLFMGan-w">
+ <styles xmi:type="notation:FontStyle" xmi:id="_GCUoTHctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_GCUoTXctEeWKENLFMGan-w" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="propertylifecycle.uml#_IV84l3KKEeWqG7lDxSBeNQ"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_GCUoTnctEeWKENLFMGan-w" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GCUoT3ctEeWKENLFMGan-w"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GCUoUHctEeWKENLFMGan-w"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_GCUoUXctEeWKENLFMGan-w" type="StereotypeCommentLink" target="_GCUoHHctEeWKENLFMGan-w">
+ <styles xmi:type="notation:FontStyle" xmi:id="_GCUoUnctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_GCUoU3ctEeWKENLFMGan-w" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="propertylifecycle.uml#_IV84pHKKEeWqG7lDxSBeNQ"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_GCUoVHctEeWKENLFMGan-w" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GCUoVXctEeWKENLFMGan-w"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GCUoVnctEeWKENLFMGan-w"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_GCUoV3ctEeWKENLFMGan-w" type="StereotypeCommentLink" target="_GCUoIHctEeWKENLFMGan-w">
+ <styles xmi:type="notation:FontStyle" xmi:id="_GCUoWHctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_GCUoWXctEeWKENLFMGan-w" name="BASE_ELEMENT"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_GCUoWnctEeWKENLFMGan-w" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GCUoW3ctEeWKENLFMGan-w"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GCUoXHctEeWKENLFMGan-w"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_GCUoXXctEeWKENLFMGan-w" type="StereotypeCommentLink" target="_GCUoJHctEeWKENLFMGan-w">
+ <styles xmi:type="notation:FontStyle" xmi:id="_GCUoXnctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_GCUoX3ctEeWKENLFMGan-w" name="BASE_ELEMENT"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_GCUoYHctEeWKENLFMGan-w" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GCUoYXctEeWKENLFMGan-w"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GCUoYnctEeWKENLFMGan-w"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_GCUoY3ctEeWKENLFMGan-w" type="StereotypeCommentLink" target="_GCUoKHctEeWKENLFMGan-w">
+ <styles xmi:type="notation:FontStyle" xmi:id="_GCUoZHctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_GCUoZXctEeWKENLFMGan-w" name="BASE_ELEMENT"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_GCUoZnctEeWKENLFMGan-w" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GCUoZ3ctEeWKENLFMGan-w"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GCUoaHctEeWKENLFMGan-w"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_GCUoaXctEeWKENLFMGan-w" type="StereotypeCommentLink" target="_GCUoLHctEeWKENLFMGan-w">
+ <styles xmi:type="notation:FontStyle" xmi:id="_GCUoanctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_GCUoa3ctEeWKENLFMGan-w" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="propertylifecycle.uml#_IV84t3KKEeWqG7lDxSBeNQ"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_GCUobHctEeWKENLFMGan-w" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GCUobXctEeWKENLFMGan-w"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GCUobnctEeWKENLFMGan-w"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_GCUob3ctEeWKENLFMGan-w" type="StereotypeCommentLink" target="_GCUoMHctEeWKENLFMGan-w">
+ <styles xmi:type="notation:FontStyle" xmi:id="_GCUocHctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_GCUocXctEeWKENLFMGan-w" name="BASE_ELEMENT"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_GCUocnctEeWKENLFMGan-w" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GCUoc3ctEeWKENLFMGan-w"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GCUodHctEeWKENLFMGan-w"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_GCUodXctEeWKENLFMGan-w" type="StereotypeCommentLink" target="_GCUoNHctEeWKENLFMGan-w">
+ <styles xmi:type="notation:FontStyle" xmi:id="_GCUodnctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_GCUod3ctEeWKENLFMGan-w" name="BASE_ELEMENT"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_GCUoeHctEeWKENLFMGan-w" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GCUoeXctEeWKENLFMGan-w"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GCUoenctEeWKENLFMGan-w"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_GCUoe3ctEeWKENLFMGan-w" type="StereotypeCommentLink" target="_GCUoOHctEeWKENLFMGan-w">
+ <styles xmi:type="notation:FontStyle" xmi:id="_GCUofHctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_GCUofXctEeWKENLFMGan-w" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="propertylifecycle.uml#_IV84x3KKEeWqG7lDxSBeNQ"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_GCUofnctEeWKENLFMGan-w" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GCUof3ctEeWKENLFMGan-w"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GCUogHctEeWKENLFMGan-w"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_bxJ2wIFhEeWW3PzPq3nIjg" type="4002" source="_bjYggIFhEeWW3PzPq3nIjg" target="_GCUnsXctEeWKENLFMGan-w">
+ <children xmi:type="notation:DecorationNode" xmi:id="_bxJ2w4FhEeWW3PzPq3nIjg" type="6007">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_cEozcIFhEeWW3PzPq3nIjg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_bxJ2xIFhEeWW3PzPq3nIjg" y="39"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_bxJ2wYFhEeWW3PzPq3nIjg"/>
+ <element xmi:type="uml:Generalization" href="propertylifecycle.uml#_IV84lHKKEeWqG7lDxSBeNQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_bxJ2woFhEeWW3PzPq3nIjg" points="[210, 345, -643984, -643984]$[122, 130, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_cEu6EIFhEeWW3PzPq3nIjg" id="(0.4968944099378882,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_cEu6EYFhEeWW3PzPq3nIjg" id="(0.4968944099378882,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_bL0jcLk4EeWp56hvkK2Lrw" type="4002" source="_bLpkULk4EeWp56hvkK2Lrw" target="_GCUnsXctEeWKENLFMGan-w">
+ <children xmi:type="notation:DecorationNode" xmi:id="_bL0jc7k4EeWp56hvkK2Lrw" type="6007">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_bonNILk4EeWp56hvkK2Lrw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_bL0jdLk4EeWp56hvkK2Lrw" y="39"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_bL0jcbk4EeWp56hvkK2Lrw"/>
+ <element xmi:type="uml:Generalization" href="propertylifecycle.uml#_ujAFcLk2EeWp56hvkK2Lrw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_bL0jcrk4EeWp56hvkK2Lrw" points="[380, 200, -643984, -643984]$[380, 160, -643984, -643984]$[100, 160, -643984, -643984]$[100, 121, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_bosFoLk4EeWp56hvkK2Lrw" id="(0.4968944099378882,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_bosssLk4EeWp56hvkK2Lrw" id="(0.4968944099378882,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_rxfVMLk4EeWp56hvkK2Lrw" type="4001" source="_bLpkULk4EeWp56hvkK2Lrw" target="_bjYggIFhEeWW3PzPq3nIjg">
+ <children xmi:type="notation:DecorationNode" xmi:id="_rxf8QLk4EeWp56hvkK2Lrw" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_rxf8Qbk4EeWp56hvkK2Lrw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_rxf8Qrk4EeWp56hvkK2Lrw" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_rxf8Q7k4EeWp56hvkK2Lrw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_rxf8RLk4EeWp56hvkK2Lrw" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_rxf8Rbk4EeWp56hvkK2Lrw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_rxf8Rrk4EeWp56hvkK2Lrw" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_rxf8R7k4EeWp56hvkK2Lrw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_rxf8SLk4EeWp56hvkK2Lrw" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_rxf8Sbk4EeWp56hvkK2Lrw" x="12" y="-27"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_rxf8Srk4EeWp56hvkK2Lrw" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_rxf8S7k4EeWp56hvkK2Lrw" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_rxfVMbk4EeWp56hvkK2Lrw"/>
+ <element xmi:type="uml:Association" href="propertylifecycle.uml#_IV84y3KKEeWqG7lDxSBeNQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_rxfVMrk4EeWp56hvkK2Lrw" points="[280, 240, -643984, -643984]$[181, 240, -643984, -643984]"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_GCWc4HctEeWKENLFMGan-w" type="PapyrusUMLClassDiagram" name="StrategySet" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_GCWc4XctEeWKENLFMGan-w" type="2008">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GCWc4nctEeWKENLFMGan-w" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GCWc43ctEeWKENLFMGan-w" key="canonical" value="true"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GCWc5HctEeWKENLFMGan-w" type="5029"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GCWc5XctEeWKENLFMGan-w" type="8510">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GCWc5nctEeWKENLFMGan-w" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_GCWc53ctEeWKENLFMGan-w" type="7017">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_QPNk8IFeEeWW3PzPq3nIjg" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_QPNk8YFeEeWW3PzPq3nIjg" key="visible" value="true"/>
+ </eAnnotations>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GCWc6HctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GCWc6XctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GCWc6nctEeWKENLFMGan-w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GCWc63ctEeWKENLFMGan-w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_GCWc7HctEeWKENLFMGan-w" visible="false" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GCWc7XctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GCWc7nctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GCWc73ctEeWKENLFMGan-w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GCWc8HctEeWKENLFMGan-w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_GCWc8XctEeWKENLFMGan-w" visible="false" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GCWc8nctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GCWc83ctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GCWc9HctEeWKENLFMGan-w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GCWc9XctEeWKENLFMGan-w"/>
+ </children>
+ <styles xmi:type="notation:CanonicalStyle" xmi:id="_GCWc9nctEeWKENLFMGan-w" canonical="false"/>
+ <element xmi:type="uml:Class" href="propertylifecycle.uml#_IV84k3KKEeWqG7lDxSBeNQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GCWdGXctEeWKENLFMGan-w" x="20" y="200" width="161" height="81"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GCWdGnctEeWKENLFMGan-w" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GCWdG3ctEeWKENLFMGan-w" showTitle="true"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_GCWdHHctEeWKENLFMGan-w" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="propertylifecycle.uml#_IV84k3KKEeWqG7lDxSBeNQ"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GCWdOXctEeWKENLFMGan-w" x="200"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GCWdOnctEeWKENLFMGan-w" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GCWdO3ctEeWKENLFMGan-w" showTitle="true"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_GCWdPHctEeWKENLFMGan-w" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Property" href="propertylifecycle.uml#_IV84lXKKEeWqG7lDxSBeNQ"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GCWdPXctEeWKENLFMGan-w" x="200"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GCWdPnctEeWKENLFMGan-w" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GCWdP3ctEeWKENLFMGan-w" showTitle="true"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_GCWdQHctEeWKENLFMGan-w" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="propertylifecycle.uml#_IV84l3KKEeWqG7lDxSBeNQ"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GCWdQXctEeWKENLFMGan-w" x="200"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GCWdQnctEeWKENLFMGan-w" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GCWdQ3ctEeWKENLFMGan-w" showTitle="true"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_GCWdRHctEeWKENLFMGan-w" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Property" href="propertylifecycle.uml#_IV84lXKKEeWqG7lDxSBeNQ"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GCWdRXctEeWKENLFMGan-w" x="200"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GCWdRnctEeWKENLFMGan-w" type="2008">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GCWdR3ctEeWKENLFMGan-w" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GCWdSHctEeWKENLFMGan-w" key="canonical" value="true"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GCWdTXctEeWKENLFMGan-w" type="5029"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GCWdTnctEeWKENLFMGan-w" type="8510">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GCWdT3ctEeWKENLFMGan-w" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_GCWdUHctEeWKENLFMGan-w" type="7017">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_OXKeMIFeEeWW3PzPq3nIjg" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_OXLFQIFeEeWW3PzPq3nIjg" key="visible" value="true"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_OipRILPBEeWthroTS8FGaQ" key="mutable" value="true"/>
+ </eAnnotations>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GCWdUXctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GCWdUnctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GCWdU3ctEeWKENLFMGan-w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GCWdVHctEeWKENLFMGan-w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_GCWdVXctEeWKENLFMGan-w" visible="false" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GCWdVnctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GCWdV3ctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GCWdWHctEeWKENLFMGan-w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GCWdWXctEeWKENLFMGan-w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_GCWdWnctEeWKENLFMGan-w" visible="false" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GCWdW3ctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GCWdXHctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GCWdXXctEeWKENLFMGan-w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GCWdXnctEeWKENLFMGan-w"/>
+ </children>
+ <styles xmi:type="notation:CanonicalStyle" xmi:id="_GCWdX3ctEeWKENLFMGan-w"/>
+ <element xmi:type="uml:Class" href="propertylifecycle.uml#_IV84l3KKEeWqG7lDxSBeNQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GCWdgnctEeWKENLFMGan-w" x="300" y="200" width="161" height="81"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GCWdg3ctEeWKENLFMGan-w" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GCWdhHctEeWKENLFMGan-w" showTitle="true"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_GCXD8HctEeWKENLFMGan-w" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="propertylifecycle.uml#_IV84l3KKEeWqG7lDxSBeNQ"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GCXEDXctEeWKENLFMGan-w" x="200"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GCXEDnctEeWKENLFMGan-w" type="2008">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GCXEE3ctEeWKENLFMGan-w" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GCXEFHctEeWKENLFMGan-w" key="canonical" value="true"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GCXEFXctEeWKENLFMGan-w" type="5029"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GCXEFnctEeWKENLFMGan-w" type="8510">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GCXEF3ctEeWKENLFMGan-w" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_GCXEGHctEeWKENLFMGan-w" type="7017">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GCXEGXctEeWKENLFMGan-w" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GCXEGnctEeWKENLFMGan-w" key="mutable" value="true"/>
+ </eAnnotations>
+ <children xmi:type="notation:Shape" xmi:id="_GCXEIHctEeWKENLFMGan-w" type="3012">
+ <element xmi:type="uml:Property" href="propertylifecycle.uml#_IV8Rg3KKEeWqG7lDxSBeNQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GCXEJXctEeWKENLFMGan-w"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GCXEJnctEeWKENLFMGan-w" type="3012">
+ <element xmi:type="uml:Property" href="propertylifecycle.uml#_IV84kXKKEeWqG7lDxSBeNQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GCXEJ3ctEeWKENLFMGan-w"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_Sby3ULh_EeWvXZFuuA8B2g" type="3012">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ScO8MLh_EeWvXZFuuA8B2g" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ScPjQLh_EeWvXZFuuA8B2g" key="mutable" value="true"/>
+ </eAnnotations>
+ <element xmi:type="uml:Property" href="propertylifecycle.uml#_SbHh4Lh_EeWvXZFuuA8B2g"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Sby3Ubh_EeWvXZFuuA8B2g"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GCXEKHctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GCXEKXctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GCXEKnctEeWKENLFMGan-w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GCXEK3ctEeWKENLFMGan-w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_GCXELHctEeWKENLFMGan-w" visible="false" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GCXELXctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GCXELnctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GCXEL3ctEeWKENLFMGan-w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GCXEMHctEeWKENLFMGan-w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_GCXEMXctEeWKENLFMGan-w" visible="false" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GCXEMnctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GCXEM3ctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GCXENHctEeWKENLFMGan-w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GCXENXctEeWKENLFMGan-w"/>
+ </children>
+ <styles xmi:type="notation:CanonicalStyle" xmi:id="_GCXENnctEeWKENLFMGan-w"/>
+ <element xmi:type="uml:Class" href="propertylifecycle.uml#_IV8RgXKKEeWqG7lDxSBeNQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GCXEWXctEeWKENLFMGan-w" x="20" y="20" width="161" height="101"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GCXEWnctEeWKENLFMGan-w" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GCXEW3ctEeWKENLFMGan-w" showTitle="true"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_GCXEXHctEeWKENLFMGan-w" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="propertylifecycle.uml#_IV8RgXKKEeWqG7lDxSBeNQ"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GCXEeXctEeWKENLFMGan-w" x="200"/>
+ </children>
+ <styles xmi:type="notation:StringValueStyle" xmi:id="_GCXEenctEeWKENLFMGan-w" name="diagram_compatibility_version" stringValue="1.1.0"/>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_GCXEe3ctEeWKENLFMGan-w"/>
+ <styles xmi:type="style:PapyrusViewStyle" xmi:id="_GCXEfHctEeWKENLFMGan-w">
+ <owner xmi:type="uml:Model" href="propertylifecycle.uml#_1MrvAHcmEeW7365dAmHglw"/>
+ </styles>
+ <styles xmi:type="notation:EObjectListValueStyle" xmi:id="_ApiQkIFeEeWW3PzPq3nIjg" name="css_stylesheets" eObjectListValue="_SLzp8IFdEeWW3PzPq3nIjg"/>
+ <element xmi:type="uml:Model" href="propertylifecycle.uml#_1MrvAHcmEeW7365dAmHglw"/>
+ <edges xmi:type="notation:Connector" xmi:id="_GCXEfXctEeWKENLFMGan-w" type="StereotypeCommentLink" source="_GCWc4XctEeWKENLFMGan-w" target="_GCWdGnctEeWKENLFMGan-w">
+ <styles xmi:type="notation:FontStyle" xmi:id="_GCXEfnctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_GCXEf3ctEeWKENLFMGan-w" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="propertylifecycle.uml#_IV84k3KKEeWqG7lDxSBeNQ"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_GCXEgHctEeWKENLFMGan-w" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GCXEgXctEeWKENLFMGan-w"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GCXEgnctEeWKENLFMGan-w"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_GCXEg3ctEeWKENLFMGan-w" type="StereotypeCommentLink" target="_GCWdOnctEeWKENLFMGan-w">
+ <styles xmi:type="notation:FontStyle" xmi:id="_GCXEhHctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_GCXEhXctEeWKENLFMGan-w" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Property" href="propertylifecycle.uml#_IV84lXKKEeWqG7lDxSBeNQ"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_GCXEhnctEeWKENLFMGan-w" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GCXEh3ctEeWKENLFMGan-w"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GCXEiHctEeWKENLFMGan-w"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_GCXEiXctEeWKENLFMGan-w" type="StereotypeCommentLink" target="_GCWdPnctEeWKENLFMGan-w">
+ <styles xmi:type="notation:FontStyle" xmi:id="_GCXEinctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_GCXEi3ctEeWKENLFMGan-w" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="propertylifecycle.uml#_IV84l3KKEeWqG7lDxSBeNQ"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_GCXEjHctEeWKENLFMGan-w" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GCXEjXctEeWKENLFMGan-w"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GCXEjnctEeWKENLFMGan-w"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_GCXEj3ctEeWKENLFMGan-w" type="StereotypeCommentLink" target="_GCWdQnctEeWKENLFMGan-w">
+ <styles xmi:type="notation:FontStyle" xmi:id="_GCXEkHctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_GCXEkXctEeWKENLFMGan-w" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Property" href="propertylifecycle.uml#_IV84lXKKEeWqG7lDxSBeNQ"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_GCXEknctEeWKENLFMGan-w" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GCXEk3ctEeWKENLFMGan-w"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GCXElHctEeWKENLFMGan-w"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_GCXElXctEeWKENLFMGan-w" type="StereotypeCommentLink" source="_GCWdRnctEeWKENLFMGan-w" target="_GCWdg3ctEeWKENLFMGan-w">
+ <styles xmi:type="notation:FontStyle" xmi:id="_GCXElnctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_GCXEl3ctEeWKENLFMGan-w" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="propertylifecycle.uml#_IV84l3KKEeWqG7lDxSBeNQ"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_GCXEmHctEeWKENLFMGan-w" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GCXEmXctEeWKENLFMGan-w"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GCXEmnctEeWKENLFMGan-w"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_GCXEm3ctEeWKENLFMGan-w" type="4001" source="_GCWdRnctEeWKENLFMGan-w" target="_GCWc4XctEeWKENLFMGan-w">
+ <children xmi:type="notation:DecorationNode" xmi:id="_GCXEnHctEeWKENLFMGan-w" type="6001">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_GCXEnXctEeWKENLFMGan-w" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GCXEnnctEeWKENLFMGan-w" x="-1" y="-19"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GCXEn3ctEeWKENLFMGan-w" type="6002">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_GCXEoHctEeWKENLFMGan-w" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GCXEoXctEeWKENLFMGan-w" x="-1" y="18"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GCXEonctEeWKENLFMGan-w" type="6003">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_GCXEo3ctEeWKENLFMGan-w" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <styles xmi:type="notation:StringListValueStyle" xmi:id="_GCXEpHctEeWKENLFMGan-w" name="maskLabel">
+ <stringListValue>name</stringListValue>
+ <stringListValue>derived</stringListValue>
+ </styles>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GCXEpXctEeWKENLFMGan-w" x="35" y="33"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GCXEpnctEeWKENLFMGan-w" visible="false" type="6005">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_GCXEp3ctEeWKENLFMGan-w" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GCXEqHctEeWKENLFMGan-w" x="-21" y="17"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GCXEqXctEeWKENLFMGan-w" type="6033">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_GCXEqnctEeWKENLFMGan-w" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GCXEq3ctEeWKENLFMGan-w" x="30" y="-27"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GCXErHctEeWKENLFMGan-w" type="6034">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_GCXErXctEeWKENLFMGan-w" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GCXErnctEeWKENLFMGan-w" x="-24" y="-27"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_GCXEr3ctEeWKENLFMGan-w"/>
+ <element xmi:type="uml:Association" href="propertylifecycle.uml#_IV84y3KKEeWqG7lDxSBeNQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_GCXEsHctEeWKENLFMGan-w" points="[-380, -20, -643984, -643984]$[60, 156, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GCXEsXctEeWKENLFMGan-w" id="(0.0,0.49382716049382713)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GCXEsnctEeWKENLFMGan-w" id="(1.0,0.49382716049382713)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_GCXEs3ctEeWKENLFMGan-w" type="StereotypeCommentLink" source="_GCXEDnctEeWKENLFMGan-w" target="_GCXEWnctEeWKENLFMGan-w">
+ <styles xmi:type="notation:FontStyle" xmi:id="_GCXEtHctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_GCXEtXctEeWKENLFMGan-w" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="propertylifecycle.uml#_IV8RgXKKEeWqG7lDxSBeNQ"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_GCXEtnctEeWKENLFMGan-w" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GCXEt3ctEeWKENLFMGan-w"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GCXEuHctEeWKENLFMGan-w"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_GCXEuXctEeWKENLFMGan-w" type="4002" source="_GCWc4XctEeWKENLFMGan-w" target="_GCXEDnctEeWKENLFMGan-w">
+ <children xmi:type="notation:DecorationNode" xmi:id="_GCXEunctEeWKENLFMGan-w" type="6007">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_GCXEu3ctEeWKENLFMGan-w" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GCXEvHctEeWKENLFMGan-w" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_GCXEvXctEeWKENLFMGan-w"/>
+ <element xmi:type="uml:Generalization" href="propertylifecycle.uml#_IV84lHKKEeWqG7lDxSBeNQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_GCXEvnctEeWKENLFMGan-w" points="[124, 220, -643984, -643984]$[129, 124, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GCXEv3ctEeWKENLFMGan-w" id="(0.4968944099378882,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GCXEwHctEeWKENLFMGan-w" id="(0.4968944099378882,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_uj0k0Lk2EeWp56hvkK2Lrw" type="4002" source="_GCWdRnctEeWKENLFMGan-w" target="_GCXEDnctEeWKENLFMGan-w">
+ <children xmi:type="notation:DecorationNode" xmi:id="_uj0k07k2EeWp56hvkK2Lrw" type="6007">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_6XlRULk3EeWp56hvkK2Lrw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_uj0k1Lk2EeWp56hvkK2Lrw" x="-1" y="38"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_uj0k0bk2EeWp56hvkK2Lrw"/>
+ <element xmi:type="uml:Generalization" href="propertylifecycle.uml#_ujAFcLk2EeWp56hvkK2Lrw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_uj0k0rk2EeWp56hvkK2Lrw" points="[320, 200, -643984, -643984]$[380, 160, -643984, -643984]$[100, 160, -643984, -643984]$[100, 121, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ukPbkLk2EeWp56hvkK2Lrw" id="(0.4968944099378882,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ukPbkbk2EeWp56hvkK2Lrw" id="(0.4968944099378882,1.0)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_GCaHQHctEeWKENLFMGan-w" type="PapyrusUMLClassDiagram" name="StrategyElement" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_GCaHQXctEeWKENLFMGan-w" type="2008">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GCaHQnctEeWKENLFMGan-w" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GCaHQ3ctEeWKENLFMGan-w" key="canonical" value="true"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GCaHRHctEeWKENLFMGan-w" type="5029"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GCaHRXctEeWKENLFMGan-w" type="8510">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GCaHRnctEeWKENLFMGan-w" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_GCaHR3ctEeWKENLFMGan-w" type="7017">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Oi6W4LPBEeWthroTS8FGaQ" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Oi6W4bPBEeWthroTS8FGaQ" key="mutable" value="true"/>
+ </eAnnotations>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GCaHSHctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GCaHSXctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GCaHSnctEeWKENLFMGan-w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GCaHS3ctEeWKENLFMGan-w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_GCaHTHctEeWKENLFMGan-w" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GCaHTXctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GCaHTnctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GCaHT3ctEeWKENLFMGan-w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GCaHUHctEeWKENLFMGan-w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_GCaHUXctEeWKENLFMGan-w" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GCaHUnctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GCaHU3ctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GCaHVHctEeWKENLFMGan-w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GCaHVXctEeWKENLFMGan-w"/>
+ </children>
+ <styles xmi:type="notation:CanonicalStyle" xmi:id="_GCaHVnctEeWKENLFMGan-w"/>
+ <element xmi:type="uml:Class" href="propertylifecycle.uml#_IV84l3KKEeWqG7lDxSBeNQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GCaHeXctEeWKENLFMGan-w" x="180" y="200" width="161" height="81"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GCaHenctEeWKENLFMGan-w" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GCaHe3ctEeWKENLFMGan-w" showTitle="true"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_GCaHfHctEeWKENLFMGan-w" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="propertylifecycle.uml#_IV84l3KKEeWqG7lDxSBeNQ"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GCaHmXctEeWKENLFMGan-w" x="200"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GCaHmnctEeWKENLFMGan-w" type="2008">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GCaHn3ctEeWKENLFMGan-w" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GCaHoHctEeWKENLFMGan-w" key="canonical" value="true"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GCaHoXctEeWKENLFMGan-w" type="5029"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GCaHonctEeWKENLFMGan-w" type="8510">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GCaHo3ctEeWKENLFMGan-w" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_GCaHpHctEeWKENLFMGan-w" type="7017">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GCaHpXctEeWKENLFMGan-w" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GCaHpnctEeWKENLFMGan-w" key="mutable" value="true"/>
+ </eAnnotations>
+ <children xmi:type="notation:Shape" xmi:id="_GCaHp3ctEeWKENLFMGan-w" type="3012">
+ <element xmi:type="uml:Property" href="propertylifecycle.uml#_IV84pXKKEeWqG7lDxSBeNQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GCaHqHctEeWKENLFMGan-w"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GCaHqXctEeWKENLFMGan-w" type="3012">
+ <element xmi:type="uml:Property" href="propertylifecycle.uml#_IV84pnKKEeWqG7lDxSBeNQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GCaHqnctEeWKENLFMGan-w"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GCaHq3ctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GCaHrHctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GCaHrXctEeWKENLFMGan-w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GCaHrnctEeWKENLFMGan-w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_GCaHr3ctEeWKENLFMGan-w" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GCaHsHctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GCaHsXctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GCaHsnctEeWKENLFMGan-w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GCaHs3ctEeWKENLFMGan-w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_GCaHtHctEeWKENLFMGan-w" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GCaHtXctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GCaHtnctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GCaHt3ctEeWKENLFMGan-w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GCaHuHctEeWKENLFMGan-w"/>
+ </children>
+ <styles xmi:type="notation:CanonicalStyle" xmi:id="_GCaHuXctEeWKENLFMGan-w"/>
+ <element xmi:type="uml:Class" href="propertylifecycle.uml#_IV84pHKKEeWqG7lDxSBeNQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GCaH3HctEeWKENLFMGan-w" x="280" y="20" width="201" height="101"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GCaH3XctEeWKENLFMGan-w" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GCaH3nctEeWKENLFMGan-w" showTitle="true"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_GCaH33ctEeWKENLFMGan-w" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="propertylifecycle.uml#_IV84pHKKEeWqG7lDxSBeNQ"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GCaH_HctEeWKENLFMGan-w" x="200"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GCaIPnctEeWKENLFMGan-w" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GCaIP3ctEeWKENLFMGan-w" showTitle="true"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_GCaIQHctEeWKENLFMGan-w" name="BASE_ELEMENT"/>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GCaIXXctEeWKENLFMGan-w" x="200"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GCaIn3ctEeWKENLFMGan-w" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GCaIoHctEeWKENLFMGan-w" showTitle="true"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_GCaIoXctEeWKENLFMGan-w" name="BASE_ELEMENT"/>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GCaIvnctEeWKENLFMGan-w" x="200"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GCaIv3ctEeWKENLFMGan-w" type="2008">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GCaIxHctEeWKENLFMGan-w" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GCaIxXctEeWKENLFMGan-w" key="canonical" value="true"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_g-_mkLh1EeWvXZFuuA8B2g" key="mutable" value="true"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GCaIxnctEeWKENLFMGan-w" type="5029"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GCaIx3ctEeWKENLFMGan-w" type="8510">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GCaIyHctEeWKENLFMGan-w" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_GCaIyXctEeWKENLFMGan-w" type="7017">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GCaIynctEeWKENLFMGan-w" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GCaIy3ctEeWKENLFMGan-w" key="mutable" value="true"/>
+ </eAnnotations>
+ <children xmi:type="notation:Shape" xmi:id="_GCaIzHctEeWKENLFMGan-w" type="3012">
+ <element xmi:type="uml:Property" href="propertylifecycle.uml#_IV84uHKKEeWqG7lDxSBeNQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GCaIzXctEeWKENLFMGan-w"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GCaI1HctEeWKENLFMGan-w" type="3012">
+ <element xmi:type="uml:Property" href="propertylifecycle.uml#_IV84vHKKEeWqG7lDxSBeNQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GCaI1XctEeWKENLFMGan-w"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GCaI1nctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GCaI13ctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GCaI2HctEeWKENLFMGan-w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GCaI2XctEeWKENLFMGan-w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_GCaI2nctEeWKENLFMGan-w" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GCaI23ctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GCaI3HctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GCaI3XctEeWKENLFMGan-w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GCaI3nctEeWKENLFMGan-w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_GCaI33ctEeWKENLFMGan-w" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GCaI4HctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GCaI4XctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GCaI4nctEeWKENLFMGan-w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GCaI43ctEeWKENLFMGan-w"/>
+ </children>
+ <styles xmi:type="notation:CanonicalStyle" xmi:id="_GCaI5HctEeWKENLFMGan-w"/>
+ <element xmi:type="uml:Class" href="propertylifecycle.uml#_IV84t3KKEeWqG7lDxSBeNQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GCaJB3ctEeWKENLFMGan-w" x="180" y="360" width="161" height="101"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GCaJCHctEeWKENLFMGan-w" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GCaJCXctEeWKENLFMGan-w" showTitle="true"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_GCaJCnctEeWKENLFMGan-w" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="propertylifecycle.uml#_IV84t3KKEeWqG7lDxSBeNQ"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GCaJJ3ctEeWKENLFMGan-w" x="200"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GCaJKHctEeWKENLFMGan-w" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_GCaJLXctEeWKENLFMGan-w" type="5029"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GCaJLnctEeWKENLFMGan-w" type="8510">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GCaJL3ctEeWKENLFMGan-w" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_GCaJMHctEeWKENLFMGan-w" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GCaJMXctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GCaJMnctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GCaJM3ctEeWKENLFMGan-w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GCaJNHctEeWKENLFMGan-w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_GCaJNXctEeWKENLFMGan-w" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GCaJNnctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GCaJN3ctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GCaJOHctEeWKENLFMGan-w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GCaJOXctEeWKENLFMGan-w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_GCaJOnctEeWKENLFMGan-w" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GCaJO3ctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GCaJPHctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GCaJPXctEeWKENLFMGan-w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GCaJPnctEeWKENLFMGan-w"/>
+ </children>
+ <element xmi:type="uml:Class" href="propertylifecycle.uml#_IV84x3KKEeWqG7lDxSBeNQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GCaJYXctEeWKENLFMGan-w" x="440" y="200" width="161" height="81"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GCaJYnctEeWKENLFMGan-w" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GCaJY3ctEeWKENLFMGan-w" showTitle="true"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_GCaJZHctEeWKENLFMGan-w" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="propertylifecycle.uml#_IV84x3KKEeWqG7lDxSBeNQ"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GCaJgXctEeWKENLFMGan-w" x="200"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_sJzkALk3EeWp56hvkK2Lrw" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_sJ0LELk3EeWp56hvkK2Lrw" type="5029"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_sJ0LEbk3EeWp56hvkK2Lrw" type="8510">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_sJ0LErk3EeWp56hvkK2Lrw" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_sJ0LE7k3EeWp56hvkK2Lrw" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_2fvdELk3EeWp56hvkK2Lrw" type="3012">
+ <element xmi:type="uml:Property" href="propertylifecycle.uml#_IV8Rg3KKEeWqG7lDxSBeNQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_2fvdEbk3EeWp56hvkK2Lrw"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_2ybvkLk3EeWp56hvkK2Lrw" type="3012">
+ <element xmi:type="uml:Property" href="propertylifecycle.uml#_IV84kXKKEeWqG7lDxSBeNQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_2ybvkbk3EeWp56hvkK2Lrw"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3Eeh0Lk3EeWp56hvkK2Lrw" type="3012">
+ <element xmi:type="uml:Property" href="propertylifecycle.uml#_SbHh4Lh_EeWvXZFuuA8B2g"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3Eeh0bk3EeWp56hvkK2Lrw"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_sJ0LFLk3EeWp56hvkK2Lrw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_sJ0LFbk3EeWp56hvkK2Lrw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_sJ0LFrk3EeWp56hvkK2Lrw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_sJ0LF7k3EeWp56hvkK2Lrw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_sJ0LGLk3EeWp56hvkK2Lrw" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_sJ0LGbk3EeWp56hvkK2Lrw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_sJ0LGrk3EeWp56hvkK2Lrw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_sJ0LG7k3EeWp56hvkK2Lrw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_sJ0LHLk3EeWp56hvkK2Lrw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_sJ0LHbk3EeWp56hvkK2Lrw" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_sJ0LHrk3EeWp56hvkK2Lrw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_sJ0LH7k3EeWp56hvkK2Lrw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_sJ0LILk3EeWp56hvkK2Lrw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_sJ0LIbk3EeWp56hvkK2Lrw"/>
+ </children>
+ <element xmi:type="uml:Class" href="propertylifecycle.uml#_IV8RgXKKEeWqG7lDxSBeNQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_sJzkAbk3EeWp56hvkK2Lrw" x="20" y="20" width="201" height="101"/>
+ </children>
+ <styles xmi:type="notation:StringValueStyle" xmi:id="_GCaJgnctEeWKENLFMGan-w" name="diagram_compatibility_version" stringValue="1.1.0"/>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_GCaJg3ctEeWKENLFMGan-w"/>
+ <styles xmi:type="style:PapyrusViewStyle" xmi:id="_GCaJhHctEeWKENLFMGan-w">
+ <owner xmi:type="uml:Model" href="propertylifecycle.uml#_1MrvAHcmEeW7365dAmHglw"/>
+ </styles>
+ <styles xmi:type="notation:EObjectListValueStyle" xmi:id="_Ic_xcH4fEeWW3PzPq3nIjg" name="css_stylesheets" eObjectListValue="_SLzp8IFdEeWW3PzPq3nIjg"/>
+ <element xmi:type="uml:Model" href="propertylifecycle.uml#_1MrvAHcmEeW7365dAmHglw"/>
+ <edges xmi:type="notation:Connector" xmi:id="_GCaJhXctEeWKENLFMGan-w" type="StereotypeCommentLink" source="_GCaHQXctEeWKENLFMGan-w" target="_GCaHenctEeWKENLFMGan-w">
+ <styles xmi:type="notation:FontStyle" xmi:id="_GCaJhnctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_GCaJh3ctEeWKENLFMGan-w" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="propertylifecycle.uml#_IV84l3KKEeWqG7lDxSBeNQ"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_GCaJiHctEeWKENLFMGan-w" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GCaJiXctEeWKENLFMGan-w"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GCaJinctEeWKENLFMGan-w"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_GCaJi3ctEeWKENLFMGan-w" type="StereotypeCommentLink" source="_GCaHmnctEeWKENLFMGan-w" target="_GCaH3XctEeWKENLFMGan-w">
+ <styles xmi:type="notation:FontStyle" xmi:id="_GCaJjHctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_GCaJjXctEeWKENLFMGan-w" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="propertylifecycle.uml#_IV84pHKKEeWqG7lDxSBeNQ"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_GCaJjnctEeWKENLFMGan-w" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GCaJj3ctEeWKENLFMGan-w"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GCaJkHctEeWKENLFMGan-w"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_GCaJkXctEeWKENLFMGan-w" type="4002" source="_GCaHQXctEeWKENLFMGan-w" target="_GCaHmnctEeWKENLFMGan-w">
+ <children xmi:type="notation:DecorationNode" xmi:id="_GCaJknctEeWKENLFMGan-w" type="6007">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_GCaJk3ctEeWKENLFMGan-w" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GCaJlHctEeWKENLFMGan-w" x="-20" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_GCaJlXctEeWKENLFMGan-w"/>
+ <element xmi:type="uml:Generalization" href="propertylifecycle.uml#_IV84mHKKEeWqG7lDxSBeNQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_GCaJlnctEeWKENLFMGan-w" points="[280, 200, -643984, -643984]$[280, 160, -643984, -643984]$[380, 160, -643984, -643984]$[380, 121, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GCaJl3ctEeWKENLFMGan-w" id="(0.6211180124223602,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GCaJmHctEeWKENLFMGan-w" id="(0.4975124378109453,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_GCaJ1XctEeWKENLFMGan-w" type="StereotypeCommentLink" source="_GCaIv3ctEeWKENLFMGan-w" target="_GCaJCHctEeWKENLFMGan-w">
+ <styles xmi:type="notation:FontStyle" xmi:id="_GCaJ1nctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_GCaJ13ctEeWKENLFMGan-w" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="propertylifecycle.uml#_IV84t3KKEeWqG7lDxSBeNQ"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_GCaJ2HctEeWKENLFMGan-w" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GCaJ2XctEeWKENLFMGan-w"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GCaJ2nctEeWKENLFMGan-w"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_GCaJ23ctEeWKENLFMGan-w" type="4001" source="_GCaIv3ctEeWKENLFMGan-w" target="_GCaHQXctEeWKENLFMGan-w">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_eVI3gH4hEeWW3PzPq3nIjg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_eVI3gX4hEeWW3PzPq3nIjg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GCaJ3HctEeWKENLFMGan-w" type="6001">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_GCaJ3XctEeWKENLFMGan-w" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GCaJ3nctEeWKENLFMGan-w" y="-19"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GCaJ33ctEeWKENLFMGan-w" type="6002">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_GCaJ4HctEeWKENLFMGan-w" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GCaJ4XctEeWKENLFMGan-w" x="-1" y="18"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GCaJ4nctEeWKENLFMGan-w" type="6003">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_GCaJ43ctEeWKENLFMGan-w" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GCaJ5HctEeWKENLFMGan-w" x="52" y="-19"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GCaJ5XctEeWKENLFMGan-w" visible="false" type="6005">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_GCaJ5nctEeWKENLFMGan-w" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GCauUHctEeWKENLFMGan-w" x="-51" y="18"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GCauUXctEeWKENLFMGan-w" type="6033">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_GCauUnctEeWKENLFMGan-w" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GCauU3ctEeWKENLFMGan-w" x="13" y="30"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GCauVHctEeWKENLFMGan-w" type="6034">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_GCauVXctEeWKENLFMGan-w" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GCauVnctEeWKENLFMGan-w" x="-26" y="-15"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_GCauV3ctEeWKENLFMGan-w"/>
+ <element xmi:type="uml:Association" href="propertylifecycle.uml#_IV84xXKKEeWqG7lDxSBeNQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_GCauWHctEeWKENLFMGan-w" points="[240, 340, -643984, -643984]$[260, 281, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GCauWXctEeWKENLFMGan-w" id="(0.4968944099378882,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GCauWnctEeWKENLFMGan-w" id="(0.4968944099378882,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_GCauW3ctEeWKENLFMGan-w" type="StereotypeCommentLink" source="_GCaJKHctEeWKENLFMGan-w" target="_GCaJYnctEeWKENLFMGan-w">
+ <styles xmi:type="notation:FontStyle" xmi:id="_GCauXHctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_GCauXXctEeWKENLFMGan-w" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="propertylifecycle.uml#_IV84x3KKEeWqG7lDxSBeNQ"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_GCauXnctEeWKENLFMGan-w" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GCauX3ctEeWKENLFMGan-w"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GCauYHctEeWKENLFMGan-w"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_GCauYXctEeWKENLFMGan-w" type="4001" source="_GCaJKHctEeWKENLFMGan-w" target="_GCaHQXctEeWKENLFMGan-w">
+ <children xmi:type="notation:DecorationNode" xmi:id="_GCauYnctEeWKENLFMGan-w" type="6001">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_GCauY3ctEeWKENLFMGan-w" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GCauZHctEeWKENLFMGan-w" x="1" y="-18"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GCauZXctEeWKENLFMGan-w" type="6002">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_GCauZnctEeWKENLFMGan-w" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GCauZ3ctEeWKENLFMGan-w" x="-1" y="19"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GCauaHctEeWKENLFMGan-w" type="6003">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_GCauaXctEeWKENLFMGan-w" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GCauanctEeWKENLFMGan-w" x="60" y="-13"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GCaua3ctEeWKENLFMGan-w" type="6005">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_GCaubHctEeWKENLFMGan-w" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GCaubXctEeWKENLFMGan-w" x="-19" y="19"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GCaubnctEeWKENLFMGan-w" type="6033">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_GCaub3ctEeWKENLFMGan-w" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GCaucHctEeWKENLFMGan-w" x="16" y="19"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GCaucXctEeWKENLFMGan-w" type="6034">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_GCaucnctEeWKENLFMGan-w" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GCauc3ctEeWKENLFMGan-w" x="-30" y="-27"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_GCaudHctEeWKENLFMGan-w"/>
+ <element xmi:type="uml:Association" href="propertylifecycle.uml#_IV84yXKKEeWqG7lDxSBeNQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_GCaudXctEeWKENLFMGan-w" points="[60, 0, -643984, -643984]$[460, 217, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GCaudnctEeWKENLFMGan-w" id="(0.0,0.49382716049382713)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GCaud3ctEeWKENLFMGan-w" id="(1.0,0.49382716049382713)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_GCaueHctEeWKENLFMGan-w" type="4002" source="_GCaJKHctEeWKENLFMGan-w" target="_GCaHmnctEeWKENLFMGan-w">
+ <children xmi:type="notation:DecorationNode" xmi:id="_GCaueXctEeWKENLFMGan-w" type="6007">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_GCauenctEeWKENLFMGan-w" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GCaue3ctEeWKENLFMGan-w" x="-1" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_GCaufHctEeWKENLFMGan-w"/>
+ <element xmi:type="uml:Generalization" href="propertylifecycle.uml#_IV84yHKKEeWqG7lDxSBeNQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_GCaufXctEeWKENLFMGan-w" points="[500, 200, -643984, -643984]$[500, 160, -643984, -643984]$[380, 160, -643984, -643984]$[380, 121, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GCaufnctEeWKENLFMGan-w" id="(0.37267080745341613,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GCauf3ctEeWKENLFMGan-w" id="(0.4975124378109453,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_eOYAgLLMEeWTPurdRWMNHw" type="4001" source="_GCaJKHctEeWKENLFMGan-w" target="_GCaJKHctEeWKENLFMGan-w">
+ <children xmi:type="notation:DecorationNode" xmi:id="_eOYnkLLMEeWTPurdRWMNHw" type="6001">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_jGT_0LLMEeWTPurdRWMNHw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_eOYnkbLMEeWTPurdRWMNHw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_eOYnkrLMEeWTPurdRWMNHw" type="6002">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_jGtBYLLMEeWTPurdRWMNHw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_eOYnk7LMEeWTPurdRWMNHw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_eOYnlLLMEeWTPurdRWMNHw" type="6003">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_jG7D0LLMEeWTPurdRWMNHw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_eOYnlbLMEeWTPurdRWMNHw" x="45" y="-19"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_eOYnlrLMEeWTPurdRWMNHw" type="6005">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_jHGqALLMEeWTPurdRWMNHw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_eOYnl7LMEeWTPurdRWMNHw" x="-46" y="18"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_eOYnmLLMEeWTPurdRWMNHw" type="6033">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_jHV6kLLMEeWTPurdRWMNHw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_eOYnmbLMEeWTPurdRWMNHw" x="53" y="31"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_eOYnmrLMEeWTPurdRWMNHw" type="6034">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_jHiH0LLMEeWTPurdRWMNHw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_eOYnm7LMEeWTPurdRWMNHw" x="-24" y="13"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_eOYAgbLMEeWTPurdRWMNHw"/>
+ <element xmi:type="uml:Association" href="propertylifecycle.uml#_qNrVoKPaEeWAw9SV1KeTXw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_eOYAgrLMEeWTPurdRWMNHw" points="[560, 200, -643984, -643984]$[560, 160, -643984, -643984]$[640, 160, -643984, -643984]$[640, 240, -643984, -643984]$[601, 240, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kAnr8LLMEeWTPurdRWMNHw" id="(0.7453416149068323,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_k3VRgLLMEeWTPurdRWMNHw" id="(1.0,0.49382716049382713)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_sKLXcLk3EeWp56hvkK2Lrw" type="4002" source="_GCaHQXctEeWKENLFMGan-w" target="_sJzkALk3EeWp56hvkK2Lrw">
+ <children xmi:type="notation:DecorationNode" xmi:id="_sKLXc7k3EeWp56hvkK2Lrw" type="6007">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_sgxSgLk3EeWp56hvkK2Lrw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_sKLXdLk3EeWp56hvkK2Lrw" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_sKLXcbk3EeWp56hvkK2Lrw"/>
+ <element xmi:type="uml:Generalization" href="propertylifecycle.uml#_ujAFcLk2EeWp56hvkK2Lrw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_sKLXcrk3EeWp56hvkK2Lrw" points="[240, 200, -643984, -643984]$[240, 160, -643984, -643984]$[120, 160, -643984, -643984]$[120, 120, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_shPzoLk3EeWp56hvkK2Lrw" id="(0.37267080745341613,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_shRo0Lk3EeWp56hvkK2Lrw" id="(0.4975124378109453,1.0)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_GCgN4HctEeWKENLFMGan-w" type="PapyrusUMLClassDiagram" name="ElementTemplate" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_GCgN4XctEeWKENLFMGan-w" type="2008">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GCgN4nctEeWKENLFMGan-w" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GCgN43ctEeWKENLFMGan-w" key="canonical" value="true"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GCgN5HctEeWKENLFMGan-w" type="5029"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GCgN5XctEeWKENLFMGan-w" type="8510">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GCgN5nctEeWKENLFMGan-w" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_GCgN53ctEeWKENLFMGan-w" type="7017">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VIBQYLPGEeWthroTS8FGaQ" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VIBQYbPGEeWthroTS8FGaQ" key="mutable" value="true"/>
+ </eAnnotations>
+ <children xmi:type="notation:Shape" xmi:id="_GCgN6HctEeWKENLFMGan-w" type="3012">
+ <element xmi:type="uml:Property" href="propertylifecycle.uml#_IV84pXKKEeWqG7lDxSBeNQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GCgN6XctEeWKENLFMGan-w"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GCgN6nctEeWKENLFMGan-w" type="3012">
+ <element xmi:type="uml:Property" href="propertylifecycle.uml#_IV84pnKKEeWqG7lDxSBeNQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GCgN63ctEeWKENLFMGan-w"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GCgN7HctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GCgN7XctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GCgN7nctEeWKENLFMGan-w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GCgN73ctEeWKENLFMGan-w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_GCgN8HctEeWKENLFMGan-w" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GCgN8XctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GCgN8nctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GCgN83ctEeWKENLFMGan-w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GCgN9HctEeWKENLFMGan-w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_GCgN9XctEeWKENLFMGan-w" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GCgN9nctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GCgN93ctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GCgN-HctEeWKENLFMGan-w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GCgN-XctEeWKENLFMGan-w"/>
+ </children>
+ <styles xmi:type="notation:CanonicalStyle" xmi:id="_GCgN-nctEeWKENLFMGan-w"/>
+ <element xmi:type="uml:Class" href="propertylifecycle.uml#_IV84pHKKEeWqG7lDxSBeNQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GCgOHXctEeWKENLFMGan-w" x="120" y="20" width="201" height="101"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GCgOHnctEeWKENLFMGan-w" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GCgOH3ctEeWKENLFMGan-w" showTitle="true"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_GCgOIHctEeWKENLFMGan-w" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="propertylifecycle.uml#_IV84pHKKEeWqG7lDxSBeNQ"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GCgOPXctEeWKENLFMGan-w" x="200"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GCgOf3ctEeWKENLFMGan-w" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GCgOgHctEeWKENLFMGan-w" showTitle="true"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_GCgOgXctEeWKENLFMGan-w" name="BASE_ELEMENT"/>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GCgOnnctEeWKENLFMGan-w" x="200"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_OBuSUIFhEeWW3PzPq3nIjg" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_OBuSUoFhEeWW3PzPq3nIjg" type="5029"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_OBuSU4FhEeWW3PzPq3nIjg" type="8510">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_OBuSVIFhEeWW3PzPq3nIjg" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_OBuSVYFhEeWW3PzPq3nIjg" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_OBuSVoFhEeWW3PzPq3nIjg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_OBuSV4FhEeWW3PzPq3nIjg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_OBuSWIFhEeWW3PzPq3nIjg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OBuSWYFhEeWW3PzPq3nIjg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_OBuSWoFhEeWW3PzPq3nIjg" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_OBuSW4FhEeWW3PzPq3nIjg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_OBuSXIFhEeWW3PzPq3nIjg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_OBuSXYFhEeWW3PzPq3nIjg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OBuSXoFhEeWW3PzPq3nIjg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_OBuSX4FhEeWW3PzPq3nIjg" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_OBuSYIFhEeWW3PzPq3nIjg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_OBuSYYFhEeWW3PzPq3nIjg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_OBuSYoFhEeWW3PzPq3nIjg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OBuSY4FhEeWW3PzPq3nIjg"/>
+ </children>
+ <element xmi:type="uml:Class" href="propertylifecycle.uml#_IV84l3KKEeWqG7lDxSBeNQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OBuSUYFhEeWW3PzPq3nIjg" x="20" y="200" width="161" height="82"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_OoILAIFhEeWW3PzPq3nIjg" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_OoILAoFhEeWW3PzPq3nIjg" type="5029"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_OoILA4FhEeWW3PzPq3nIjg" type="8510">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_OoILBIFhEeWW3PzPq3nIjg" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_OoILBYFhEeWW3PzPq3nIjg" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_OoILBoFhEeWW3PzPq3nIjg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_OoILB4FhEeWW3PzPq3nIjg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_OoILCIFhEeWW3PzPq3nIjg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OoILCYFhEeWW3PzPq3nIjg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_OoILCoFhEeWW3PzPq3nIjg" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_OoILC4FhEeWW3PzPq3nIjg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_OoILDIFhEeWW3PzPq3nIjg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_OoILDYFhEeWW3PzPq3nIjg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OoILDoFhEeWW3PzPq3nIjg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_OoILD4FhEeWW3PzPq3nIjg" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_OoILEIFhEeWW3PzPq3nIjg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_OoILEYFhEeWW3PzPq3nIjg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_OoILEoFhEeWW3PzPq3nIjg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OoILE4FhEeWW3PzPq3nIjg"/>
+ </children>
+ <element xmi:type="uml:Class" href="propertylifecycle.uml#_IV84x3KKEeWqG7lDxSBeNQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OoILAYFhEeWW3PzPq3nIjg" x="280" y="200" width="161" height="82"/>
+ </children>
+ <styles xmi:type="notation:StringValueStyle" xmi:id="_GCgOn3ctEeWKENLFMGan-w" name="diagram_compatibility_version" stringValue="1.1.0"/>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_GCgOoHctEeWKENLFMGan-w"/>
+ <styles xmi:type="style:PapyrusViewStyle" xmi:id="_GCgOoXctEeWKENLFMGan-w">
+ <owner xmi:type="uml:Model" href="propertylifecycle.uml#_1MrvAHcmEeW7365dAmHglw"/>
+ </styles>
+ <styles xmi:type="notation:EObjectListValueStyle" xmi:id="_89rC0IFdEeWW3PzPq3nIjg" name="css_stylesheets" eObjectListValue="_SLzp8IFdEeWW3PzPq3nIjg"/>
+ <element xmi:type="uml:Model" href="propertylifecycle.uml#_1MrvAHcmEeW7365dAmHglw"/>
+ <edges xmi:type="notation:Connector" xmi:id="_GCgOonctEeWKENLFMGan-w" type="StereotypeCommentLink" source="_GCgN4XctEeWKENLFMGan-w" target="_GCgOHnctEeWKENLFMGan-w">
+ <styles xmi:type="notation:FontStyle" xmi:id="_GCgOo3ctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_GCgOpHctEeWKENLFMGan-w" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="propertylifecycle.uml#_IV84pHKKEeWqG7lDxSBeNQ"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_GCgOpXctEeWKENLFMGan-w" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GCgOpnctEeWKENLFMGan-w"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GCg08HctEeWKENLFMGan-w"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_P8-eEIFhEeWW3PzPq3nIjg" type="4002" source="_OoILAIFhEeWW3PzPq3nIjg" target="_GCgN4XctEeWKENLFMGan-w">
+ <children xmi:type="notation:DecorationNode" xmi:id="_P8-eE4FhEeWW3PzPq3nIjg" type="6007">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_RSVugIFhEeWW3PzPq3nIjg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_P8-eFIFhEeWW3PzPq3nIjg" x="17" y="-36"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_P8-eEYFhEeWW3PzPq3nIjg"/>
+ <element xmi:type="uml:Generalization" href="propertylifecycle.uml#_IV84yHKKEeWqG7lDxSBeNQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_P8-eEoFhEeWW3PzPq3nIjg" points="[360, 200, -643984, -643984]$[360, 160, -643984, -643984]$[220, 160, -643984, -643984]$[220, 121, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_RSuwEoFhEeWW3PzPq3nIjg" id="(0.4968944099378882,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_RSvXIIFhEeWW3PzPq3nIjg" id="(0.4975124378109453,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_QKXZ0IFhEeWW3PzPq3nIjg" type="4002" source="_OBuSUIFhEeWW3PzPq3nIjg" target="_GCgN4XctEeWKENLFMGan-w">
+ <children xmi:type="notation:DecorationNode" xmi:id="_QKYA4IFhEeWW3PzPq3nIjg" type="6007">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_RSk_EIFhEeWW3PzPq3nIjg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_QKYA4YFhEeWW3PzPq3nIjg" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_QKXZ0YFhEeWW3PzPq3nIjg"/>
+ <element xmi:type="uml:Generalization" href="propertylifecycle.uml#_IV84mHKKEeWqG7lDxSBeNQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_QKXZ0oFhEeWW3PzPq3nIjg" points="[100, 200, -643984, -643984]$[100, 160, -643984, -643984]$[220, 160, -643984, -643984]$[220, 121, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_RSuwEIFhEeWW3PzPq3nIjg" id="(0.4968944099378882,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_RSuwEYFhEeWW3PzPq3nIjg" id="(0.4975124378109453,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_YBpfIIFhEeWW3PzPq3nIjg" type="4001" source="_OoILAIFhEeWW3PzPq3nIjg" target="_OBuSUIFhEeWW3PzPq3nIjg">
+ <children xmi:type="notation:DecorationNode" xmi:id="_YBqGMoFhEeWW3PzPq3nIjg" type="6001">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_D_BcUJdwEeW3YpXtKu_U9w" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_YBqtQIFhEeWW3PzPq3nIjg" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_YBqtQYFhEeWW3PzPq3nIjg" type="6002">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_D_f9cJdwEeW3YpXtKu_U9w" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_YBqtQoFhEeWW3PzPq3nIjg" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_YBqtQ4FhEeWW3PzPq3nIjg" type="6003">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_D_v1EJdwEeW3YpXtKu_U9w" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_YBqtRIFhEeWW3PzPq3nIjg" x="15" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_YBqtRYFhEeWW3PzPq3nIjg" type="6005">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_D_7bQJdwEeW3YpXtKu_U9w" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_YBqtRoFhEeWW3PzPq3nIjg" x="-15" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_YBqtR4FhEeWW3PzPq3nIjg" type="6033">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_EAL58JdwEeW3YpXtKu_U9w" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_YBqtSIFhEeWW3PzPq3nIjg" x="15" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_YBqtSYFhEeWW3PzPq3nIjg" type="6034">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_EAbxkJdwEeW3YpXtKu_U9w" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_YBqtSoFhEeWW3PzPq3nIjg" x="-15" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_YBqGMIFhEeWW3PzPq3nIjg"/>
+ <element xmi:type="uml:Association" href="propertylifecycle.uml#_IV84yXKKEeWqG7lDxSBeNQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_YBqGMYFhEeWW3PzPq3nIjg" points="[220, 251, -643984, -643984]$[120, 251, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5j2OoLRSEeWthroTS8FGaQ" id="(0.0,0.4878048780487805)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5j2OobRSEeWthroTS8FGaQ" id="(1.0,0.4878048780487805)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_hGvsMLPGEeWthroTS8FGaQ" type="4001" source="_OoILAIFhEeWW3PzPq3nIjg" target="_OoILAIFhEeWW3PzPq3nIjg">
+ <children xmi:type="notation:DecorationNode" xmi:id="_hGvsM7PGEeWthroTS8FGaQ" type="6001">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_hrTKwLPGEeWthroTS8FGaQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_hGvsNLPGEeWthroTS8FGaQ" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_hGvsNbPGEeWthroTS8FGaQ" type="6002">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_hrZ4cLPGEeWthroTS8FGaQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_hGvsNrPGEeWthroTS8FGaQ" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_hGvsN7PGEeWthroTS8FGaQ" type="6003">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_hrhNMLPGEeWthroTS8FGaQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_hGvsOLPGEeWthroTS8FGaQ" x="49" y="-17"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_hGvsObPGEeWthroTS8FGaQ" type="6005">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_hrpJALPGEeWthroTS8FGaQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_hGvsOrPGEeWthroTS8FGaQ" x="-50" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_hGvsO7PGEeWthroTS8FGaQ" type="6033">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_hrwdwLPGEeWthroTS8FGaQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_hGvsPLPGEeWthroTS8FGaQ" x="53" y="24"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_hGvsPbPGEeWthroTS8FGaQ" type="6034">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_hr3ygLPGEeWthroTS8FGaQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_hGvsPrPGEeWthroTS8FGaQ" x="-24" y="13"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_hGvsMbPGEeWthroTS8FGaQ"/>
+ <element xmi:type="uml:Association" href="propertylifecycle.uml#_qNrVoKPaEeWAw9SV1KeTXw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_hGvsMrPGEeWthroTS8FGaQ" points="[380, 200, -643984, -643984]$[400, 160, -643984, -643984]$[480, 160, -643984, -643984]$[480, 240, -643984, -643984]$[441, 240, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hrL2ALPGEeWthroTS8FGaQ" id="(0.7453416149068323,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hrL2AbPGEeWthroTS8FGaQ" id="(1.0,0.4878048780487805)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_GCmUgHctEeWKENLFMGan-w" type="PapyrusUMLClassDiagram" name="ElementProperty" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_GCmUgXctEeWKENLFMGan-w" type="2008">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GCmUgnctEeWKENLFMGan-w" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GCmUg3ctEeWKENLFMGan-w" key="canonical" value="true"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_g-kv0Lh1EeWvXZFuuA8B2g" key="mutable" value="true"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GCmUhHctEeWKENLFMGan-w" type="5029"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GCmUhXctEeWKENLFMGan-w" type="8510">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GCmUhnctEeWKENLFMGan-w" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_GCmUh3ctEeWKENLFMGan-w" type="7017">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_eKieoLUXEeWCgOuRhHQNMw" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_eKieobUXEeWCgOuRhHQNMw" key="mutable" value="true"/>
+ </eAnnotations>
+ <children xmi:type="notation:Shape" xmi:id="_GCmUiHctEeWKENLFMGan-w" type="3012">
+ <element xmi:type="uml:Property" href="propertylifecycle.uml#_IV84uHKKEeWqG7lDxSBeNQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GCmUiXctEeWKENLFMGan-w"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GCmUmHctEeWKENLFMGan-w" type="3012">
+ <element xmi:type="uml:Property" href="propertylifecycle.uml#_IV84vHKKEeWqG7lDxSBeNQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GCmUmXctEeWKENLFMGan-w"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GCmUmnctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GCmUm3ctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GCmUnHctEeWKENLFMGan-w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GCmUnXctEeWKENLFMGan-w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_GCmUnnctEeWKENLFMGan-w" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GCmUn3ctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GCmUoHctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GCmUoXctEeWKENLFMGan-w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GCmUonctEeWKENLFMGan-w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_GCmUo3ctEeWKENLFMGan-w" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GCmUpHctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GCmUpXctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GCmUpnctEeWKENLFMGan-w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GCmUp3ctEeWKENLFMGan-w"/>
+ </children>
+ <styles xmi:type="notation:CanonicalStyle" xmi:id="_GCmUqHctEeWKENLFMGan-w"/>
+ <element xmi:type="uml:Class" href="propertylifecycle.uml#_IV84t3KKEeWqG7lDxSBeNQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GCmUy3ctEeWKENLFMGan-w" x="80" y="180" width="161" height="101"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GCmUzHctEeWKENLFMGan-w" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GCmUzXctEeWKENLFMGan-w" showTitle="true"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_GCmUznctEeWKENLFMGan-w" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="propertylifecycle.uml#_IV84t3KKEeWqG7lDxSBeNQ"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GCmU63ctEeWKENLFMGan-w" x="200"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_zOrGkIFgEeWW3PzPq3nIjg" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_zOrtoIFgEeWW3PzPq3nIjg" type="5029"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_zOrtoYFgEeWW3PzPq3nIjg" type="8510">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_zOrtooFgEeWW3PzPq3nIjg" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_zOrto4FgEeWW3PzPq3nIjg" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_zOrtpIFgEeWW3PzPq3nIjg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_zOrtpYFgEeWW3PzPq3nIjg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_zOrtpoFgEeWW3PzPq3nIjg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zOrtp4FgEeWW3PzPq3nIjg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_zOrtqIFgEeWW3PzPq3nIjg" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_zOrtqYFgEeWW3PzPq3nIjg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_zOrtqoFgEeWW3PzPq3nIjg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_zOrtq4FgEeWW3PzPq3nIjg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zOrtrIFgEeWW3PzPq3nIjg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_zOrtrYFgEeWW3PzPq3nIjg" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_zOrtroFgEeWW3PzPq3nIjg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_zOrtr4FgEeWW3PzPq3nIjg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_zOrtsIFgEeWW3PzPq3nIjg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zOrtsYFgEeWW3PzPq3nIjg"/>
+ </children>
+ <element xmi:type="uml:Class" href="propertylifecycle.uml#_IV84l3KKEeWqG7lDxSBeNQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zOrGkYFgEeWW3PzPq3nIjg" x="80" y="20" width="161" height="101"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_aZlEsLhoEeWJ68NTu2ajAQ" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_aZlrwLhoEeWJ68NTu2ajAQ" type="5029"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_aZlrwbhoEeWJ68NTu2ajAQ" type="8510">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_aZlrwrhoEeWJ68NTu2ajAQ" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_aZlrw7hoEeWJ68NTu2ajAQ" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_aZlrxLhoEeWJ68NTu2ajAQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_aZlrxbhoEeWJ68NTu2ajAQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_aZlrxrhoEeWJ68NTu2ajAQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aZlrx7hoEeWJ68NTu2ajAQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_aZlryLhoEeWJ68NTu2ajAQ" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_aZlrybhoEeWJ68NTu2ajAQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_aZlryrhoEeWJ68NTu2ajAQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_aZlry7hoEeWJ68NTu2ajAQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aZlrzLhoEeWJ68NTu2ajAQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_aZlrzbhoEeWJ68NTu2ajAQ" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_aZlrzrhoEeWJ68NTu2ajAQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_aZlrz7hoEeWJ68NTu2ajAQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_aZlr0LhoEeWJ68NTu2ajAQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aZlr0bhoEeWJ68NTu2ajAQ"/>
+ </children>
+ <element xmi:type="uml:Class" href="propertylifecycle.uml#__rw3sLg6EeWJ68NTu2ajAQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aZlEsbhoEeWJ68NTu2ajAQ" x="-20" y="360" width="161"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_bbSZULhoEeWJ68NTu2ajAQ" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_bbSZUrhoEeWJ68NTu2ajAQ" type="5029"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_bbSZU7hoEeWJ68NTu2ajAQ" type="8510">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_bbSZVLhoEeWJ68NTu2ajAQ" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_bbSZVbhoEeWJ68NTu2ajAQ" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_bbSZVrhoEeWJ68NTu2ajAQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_bbSZV7hoEeWJ68NTu2ajAQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_bbSZWLhoEeWJ68NTu2ajAQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bbSZWbhoEeWJ68NTu2ajAQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_bbSZWrhoEeWJ68NTu2ajAQ" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_bbSZW7hoEeWJ68NTu2ajAQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_bbSZXLhoEeWJ68NTu2ajAQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_bbSZXbhoEeWJ68NTu2ajAQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bbSZXrhoEeWJ68NTu2ajAQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_bbSZX7hoEeWJ68NTu2ajAQ" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_bbSZYLhoEeWJ68NTu2ajAQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_bbSZYbhoEeWJ68NTu2ajAQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_bbSZYrhoEeWJ68NTu2ajAQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bbSZY7hoEeWJ68NTu2ajAQ"/>
+ </children>
+ <element xmi:type="uml:Class" href="propertylifecycle.uml#_Uf4QwLhEEeWJ68NTu2ajAQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bbSZUbhoEeWJ68NTu2ajAQ" x="180" y="360" width="161"/>
+ </children>
+ <styles xmi:type="notation:StringValueStyle" xmi:id="_GCmU7HctEeWKENLFMGan-w" name="diagram_compatibility_version" stringValue="1.1.0"/>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_GCmU7XctEeWKENLFMGan-w"/>
+ <styles xmi:type="style:PapyrusViewStyle" xmi:id="_GCmU7nctEeWKENLFMGan-w">
+ <owner xmi:type="uml:Model" href="propertylifecycle.uml#_1MrvAHcmEeW7365dAmHglw"/>
+ </styles>
+ <styles xmi:type="notation:EObjectListValueStyle" xmi:id="_0DfWEIFdEeWW3PzPq3nIjg" name="css_stylesheets" eObjectListValue="_SLzp8IFdEeWW3PzPq3nIjg"/>
+ <element xmi:type="uml:Model" href="propertylifecycle.uml#_1MrvAHcmEeW7365dAmHglw"/>
+ <edges xmi:type="notation:Connector" xmi:id="_GCmU73ctEeWKENLFMGan-w" type="StereotypeCommentLink" source="_GCmUgXctEeWKENLFMGan-w" target="_GCmUzHctEeWKENLFMGan-w">
+ <styles xmi:type="notation:FontStyle" xmi:id="_GCmU8HctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_GCmU8XctEeWKENLFMGan-w" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="propertylifecycle.uml#_IV84t3KKEeWqG7lDxSBeNQ"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_GCmU8nctEeWKENLFMGan-w" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GCmU83ctEeWKENLFMGan-w"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GCmU9HctEeWKENLFMGan-w"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_0fa8wIFgEeWW3PzPq3nIjg" type="4001" source="_GCmUgXctEeWKENLFMGan-w" target="_zOrGkIFgEeWW3PzPq3nIjg">
+ <children xmi:type="notation:DecorationNode" xmi:id="_0fa8w4FgEeWW3PzPq3nIjg" type="6001">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_zQscQLRXEeWthroTS8FGaQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_0fa8xIFgEeWW3PzPq3nIjg" x="40" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_0fa8xYFgEeWW3PzPq3nIjg" type="6002">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_zQ0YELRXEeWthroTS8FGaQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_0fbj0IFgEeWW3PzPq3nIjg" x="40" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_0fbj0YFgEeWW3PzPq3nIjg" type="6003">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_zQ7FwLRXEeWthroTS8FGaQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_0fbj0oFgEeWW3PzPq3nIjg" x="18" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_0fbj04FgEeWW3PzPq3nIjg" type="6005">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_zRBMYLRXEeWthroTS8FGaQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_0fbj1IFgEeWW3PzPq3nIjg" x="-18" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_0fbj1YFgEeWW3PzPq3nIjg" type="6033">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_zRE2wLRXEeWthroTS8FGaQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_0fbj1oFgEeWW3PzPq3nIjg" x="13" y="30"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_0fbj14FgEeWW3PzPq3nIjg" type="6034">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_zRJIMLRXEeWthroTS8FGaQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_0fbj2IFgEeWW3PzPq3nIjg" x="-6" y="-15"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_0fa8wYFgEeWW3PzPq3nIjg"/>
+ <element xmi:type="uml:Association" href="propertylifecycle.uml#_IV84xXKKEeWqG7lDxSBeNQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_0fa8woFgEeWW3PzPq3nIjg" points="[360, 80, -643984, -643984]$[201, 80, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_zRQc8LRXEeWthroTS8FGaQ" id="(0.4968944099378882,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_zRQc8bRXEeWthroTS8FGaQ" id="(0.4968944099378882,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_aZ08ULhoEeWJ68NTu2ajAQ" type="4001" source="_aZlEsLhoEeWJ68NTu2ajAQ" target="_GCmUgXctEeWKENLFMGan-w">
+ <children xmi:type="notation:DecorationNode" xmi:id="_aZ08U7hoEeWJ68NTu2ajAQ" type="6001">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_c4ewELhoEeWJ68NTu2ajAQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_aZ08VLhoEeWJ68NTu2ajAQ" x="1" y="-18"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_aZ08VbhoEeWJ68NTu2ajAQ" type="6002">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_c4v10LhoEeWJ68NTu2ajAQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_aZ08VrhoEeWJ68NTu2ajAQ" y="39"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_aZ08V7hoEeWJ68NTu2ajAQ" type="6003">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_c46N4LhoEeWJ68NTu2ajAQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_aZ08WLhoEeWJ68NTu2ajAQ" x="43" y="-18"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_aZ08WbhoEeWJ68NTu2ajAQ" type="6005">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_c5BioLhoEeWJ68NTu2ajAQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_aZ08WrhoEeWJ68NTu2ajAQ" x="-43" y="18"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_aZ08W7hoEeWJ68NTu2ajAQ" type="6033">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_c5HCMLhoEeWJ68NTu2ajAQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_aZ08XLhoEeWJ68NTu2ajAQ" x="13" y="-15"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_aZ08XbhoEeWJ68NTu2ajAQ" type="6034">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_c5Nv4LhoEeWJ68NTu2ajAQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_aZ08XrhoEeWJ68NTu2ajAQ" x="-6" y="25"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_aZ08UbhoEeWJ68NTu2ajAQ"/>
+ <element xmi:type="uml:Association" href="propertylifecycle.uml#_m-FyILg8EeWJ68NTu2ajAQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_aZ08UrhoEeWJ68NTu2ajAQ" points="[40, 360, -643984, -643984]$[40, 320, -643984, -643984]$[160, 320, -643984, -643984]$[160, 281, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_c5_L8LhoEeWJ68NTu2ajAQ" id="(0.37267080745341613,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_c5_L8bhoEeWJ68NTu2ajAQ" id="(0.4968944099378882,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_bbf0sLhoEeWJ68NTu2ajAQ" type="4001" source="_bbSZULhoEeWJ68NTu2ajAQ" target="_GCmUgXctEeWKENLFMGan-w">
+ <children xmi:type="notation:DecorationNode" xmi:id="_bbf0s7hoEeWJ68NTu2ajAQ" type="6001">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_c5T2gLhoEeWJ68NTu2ajAQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_bbf0tLhoEeWJ68NTu2ajAQ" y="-39"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_bbf0tbhoEeWJ68NTu2ajAQ" type="6002">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_c5akMLhoEeWJ68NTu2ajAQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_bbf0trhoEeWJ68NTu2ajAQ" x="-1" y="18"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_bbf0t7hoEeWJ68NTu2ajAQ" type="6003">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_c5gq0LhoEeWJ68NTu2ajAQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_bbf0uLhoEeWJ68NTu2ajAQ" x="84" y="-19"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_bbf0ubhoEeWJ68NTu2ajAQ" type="6005">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_c5omoLhoEeWJ68NTu2ajAQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_bbf0urhoEeWJ68NTu2ajAQ" x="-83" y="17"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_bbf0u7hoEeWJ68NTu2ajAQ" type="6033">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_c5vUULhoEeWJ68NTu2ajAQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_bbf0vLhoEeWJ68NTu2ajAQ" x="13" y="30"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_bbf0vbhoEeWJ68NTu2ajAQ" type="6034">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_c50z4LhoEeWJ68NTu2ajAQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_bbf0vrhoEeWJ68NTu2ajAQ" x="-6" y="-15"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_bbf0sbhoEeWJ68NTu2ajAQ"/>
+ <element xmi:type="uml:Association" href="propertylifecycle.uml#_WqyCELhEEeWJ68NTu2ajAQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_bbf0srhoEeWJ68NTu2ajAQ" points="[260, 360, -643984, -643984]$[260, 320, -643984, -643984]$[160, 320, -643984, -643984]$[160, 281, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_c5_zALhoEeWJ68NTu2ajAQ" id="(0.4968944099378882,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_c5_zAbhoEeWJ68NTu2ajAQ" id="(0.4968944099378882,1.0)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_GCnioHctEeWKENLFMGan-w" type="PapyrusUMLClassDiagram" name="ElementContainer" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_GCnioXctEeWKENLFMGan-w" type="2008">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GCnionctEeWKENLFMGan-w" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GCnio3ctEeWKENLFMGan-w" key="canonical" value="true"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_EzkroKPaEeWAw9SV1KeTXw" key="mutable" value="true"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GCnipHctEeWKENLFMGan-w" type="5029"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GCnipXctEeWKENLFMGan-w" type="8510">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GCnipnctEeWKENLFMGan-w" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_GCnip3ctEeWKENLFMGan-w" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GCniqHctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GCniqXctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GCniqnctEeWKENLFMGan-w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GCniq3ctEeWKENLFMGan-w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_GCnirHctEeWKENLFMGan-w" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GCnirXctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GCnirnctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GCnir3ctEeWKENLFMGan-w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GCnisHctEeWKENLFMGan-w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_GCnisXctEeWKENLFMGan-w" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GCnisnctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GCnis3ctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GCnitHctEeWKENLFMGan-w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GCnitXctEeWKENLFMGan-w"/>
+ </children>
+ <styles xmi:type="notation:CanonicalStyle" xmi:id="_GCnitnctEeWKENLFMGan-w"/>
+ <element xmi:type="uml:Class" href="propertylifecycle.uml#_IV84x3KKEeWqG7lDxSBeNQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GCni2XctEeWKENLFMGan-w" x="280" y="200" width="161" height="81"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GCni2nctEeWKENLFMGan-w" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GCni23ctEeWKENLFMGan-w" showTitle="true"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_GCni3HctEeWKENLFMGan-w" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="propertylifecycle.uml#_IV84x3KKEeWqG7lDxSBeNQ"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GCni-XctEeWKENLFMGan-w" x="200"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GCni-nctEeWKENLFMGan-w" type="2008">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GCni_3ctEeWKENLFMGan-w" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GCnjAHctEeWKENLFMGan-w" key="canonical" value="true"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GCnjAXctEeWKENLFMGan-w" type="5029"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GCnjAnctEeWKENLFMGan-w" type="8510">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GCnjA3ctEeWKENLFMGan-w" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_GCnjBHctEeWKENLFMGan-w" type="7017">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GCnjBXctEeWKENLFMGan-w" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GCnjBnctEeWKENLFMGan-w" key="mutable" value="true"/>
+ </eAnnotations>
+ <children xmi:type="notation:Shape" xmi:id="_GCnjB3ctEeWKENLFMGan-w" type="3012">
+ <element xmi:type="uml:Property" href="propertylifecycle.uml#_IV84pXKKEeWqG7lDxSBeNQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GCnjCHctEeWKENLFMGan-w"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GCnjCXctEeWKENLFMGan-w" type="3012">
+ <element xmi:type="uml:Property" href="propertylifecycle.uml#_IV84pnKKEeWqG7lDxSBeNQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GCnjCnctEeWKENLFMGan-w"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GCnjC3ctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GCnjDHctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GCnjDXctEeWKENLFMGan-w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GCnjDnctEeWKENLFMGan-w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_GCnjD3ctEeWKENLFMGan-w" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GCnjEHctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GCnjEXctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GCnjEnctEeWKENLFMGan-w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GCnjE3ctEeWKENLFMGan-w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_GCnjFHctEeWKENLFMGan-w" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GCnjFXctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GCnjFnctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GCnjF3ctEeWKENLFMGan-w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GCnjGHctEeWKENLFMGan-w"/>
+ </children>
+ <styles xmi:type="notation:CanonicalStyle" xmi:id="_GCnjGXctEeWKENLFMGan-w"/>
+ <element xmi:type="uml:Class" href="propertylifecycle.uml#_IV84pHKKEeWqG7lDxSBeNQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GCnjPHctEeWKENLFMGan-w" x="120" y="20" width="201" height="101"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GCnjPXctEeWKENLFMGan-w" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GCnjPnctEeWKENLFMGan-w" showTitle="true"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_GCnjP3ctEeWKENLFMGan-w" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="propertylifecycle.uml#_IV84pHKKEeWqG7lDxSBeNQ"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GCnjXHctEeWKENLFMGan-w" x="200"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_7hWHYIFgEeWW3PzPq3nIjg" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_7hWHYoFgEeWW3PzPq3nIjg" type="5029"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_7hWHY4FgEeWW3PzPq3nIjg" type="8510">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_7hWHZIFgEeWW3PzPq3nIjg" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_7hWHZYFgEeWW3PzPq3nIjg" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_7hWHZoFgEeWW3PzPq3nIjg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_7hWHZ4FgEeWW3PzPq3nIjg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_7hWHaIFgEeWW3PzPq3nIjg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7hWHaYFgEeWW3PzPq3nIjg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_7hWHaoFgEeWW3PzPq3nIjg" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_7hWHa4FgEeWW3PzPq3nIjg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_7hWHbIFgEeWW3PzPq3nIjg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_7hWHbYFgEeWW3PzPq3nIjg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7hWHboFgEeWW3PzPq3nIjg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_7hWHb4FgEeWW3PzPq3nIjg" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_7hWHcIFgEeWW3PzPq3nIjg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_7hWHcYFgEeWW3PzPq3nIjg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_7hWHcoFgEeWW3PzPq3nIjg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7hWHc4FgEeWW3PzPq3nIjg"/>
+ </children>
+ <element xmi:type="uml:Class" href="propertylifecycle.uml#_IV84l3KKEeWqG7lDxSBeNQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7hWHYYFgEeWW3PzPq3nIjg" x="20" y="200" width="161" height="81"/>
+ </children>
+ <styles xmi:type="notation:StringValueStyle" xmi:id="_GCnjXXctEeWKENLFMGan-w" name="diagram_compatibility_version" stringValue="1.1.0"/>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_GCnjXnctEeWKENLFMGan-w"/>
+ <styles xmi:type="style:PapyrusViewStyle" xmi:id="_GCnjX3ctEeWKENLFMGan-w">
+ <owner xmi:type="uml:Model" href="propertylifecycle.uml#_1MrvAHcmEeW7365dAmHglw"/>
+ </styles>
+ <styles xmi:type="notation:EObjectListValueStyle" xmi:id="_URMpIIFdEeWW3PzPq3nIjg" name="css_stylesheets" eObjectListValue="_SLzp8IFdEeWW3PzPq3nIjg"/>
+ <element xmi:type="uml:Model" href="propertylifecycle.uml#_1MrvAHcmEeW7365dAmHglw"/>
+ <edges xmi:type="notation:Connector" xmi:id="_GCoJsHctEeWKENLFMGan-w" type="StereotypeCommentLink" source="_GCnioXctEeWKENLFMGan-w" target="_GCni2nctEeWKENLFMGan-w">
+ <styles xmi:type="notation:FontStyle" xmi:id="_GCoJsXctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_GCoJsnctEeWKENLFMGan-w" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="propertylifecycle.uml#_IV84x3KKEeWqG7lDxSBeNQ"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_GCoJs3ctEeWKENLFMGan-w" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GCoJtHctEeWKENLFMGan-w"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GCoJtXctEeWKENLFMGan-w"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_GCoJtnctEeWKENLFMGan-w" type="StereotypeCommentLink" source="_GCni-nctEeWKENLFMGan-w" target="_GCnjPXctEeWKENLFMGan-w">
+ <styles xmi:type="notation:FontStyle" xmi:id="_GCoJt3ctEeWKENLFMGan-w"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_GCoJuHctEeWKENLFMGan-w" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="propertylifecycle.uml#_IV84pHKKEeWqG7lDxSBeNQ"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_GCoJuXctEeWKENLFMGan-w" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GCoJunctEeWKENLFMGan-w"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GCoJu3ctEeWKENLFMGan-w"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_GCoJvHctEeWKENLFMGan-w" type="4002" source="_GCnioXctEeWKENLFMGan-w" target="_GCni-nctEeWKENLFMGan-w">
+ <children xmi:type="notation:DecorationNode" xmi:id="_GCoJvXctEeWKENLFMGan-w" type="6007">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_GCoJvnctEeWKENLFMGan-w" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GCoJv3ctEeWKENLFMGan-w" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_GCoJwHctEeWKENLFMGan-w"/>
+ <element xmi:type="uml:Generalization" href="propertylifecycle.uml#_IV84yHKKEeWqG7lDxSBeNQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_GCoJwXctEeWKENLFMGan-w" points="[360, 200, -643984, -643984]$[360, 160, -643984, -643984]$[220, 160, -643984, -643984]$[220, 121, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GCoJwnctEeWKENLFMGan-w" id="(0.4968944099378882,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GCoJw3ctEeWKENLFMGan-w" id="(0.45248868778280543,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_84uxEIFgEeWW3PzPq3nIjg" type="4001" source="_GCnioXctEeWKENLFMGan-w" target="_7hWHYIFgEeWW3PzPq3nIjg">
+ <children xmi:type="notation:DecorationNode" xmi:id="_84uxE4FgEeWW3PzPq3nIjg" type="6001">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_LYcRoLRTEeWthroTS8FGaQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_84uxFIFgEeWW3PzPq3nIjg" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_84uxFYFgEeWW3PzPq3nIjg" type="6002">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_LY4WgLRTEeWthroTS8FGaQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_84uxFoFgEeWW3PzPq3nIjg" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_84uxF4FgEeWW3PzPq3nIjg" type="6003">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_LY_rQLRTEeWthroTS8FGaQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_84uxGIFgEeWW3PzPq3nIjg" x="15" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_84uxGYFgEeWW3PzPq3nIjg" type="6005">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_LZGY8LRTEeWthroTS8FGaQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_84uxGoFgEeWW3PzPq3nIjg" x="-15" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_84uxG4FgEeWW3PzPq3nIjg" type="6033">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_LZOUwLRTEeWthroTS8FGaQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_84uxHIFgEeWW3PzPq3nIjg" x="15" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_84uxHYFgEeWW3PzPq3nIjg" type="6034">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_LZWQkLRTEeWthroTS8FGaQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_84uxHoFgEeWW3PzPq3nIjg" x="-15" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_84uxEYFgEeWW3PzPq3nIjg"/>
+ <element xmi:type="uml:Association" href="propertylifecycle.uml#_IV84yXKKEeWqG7lDxSBeNQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_84uxEoFgEeWW3PzPq3nIjg" points="[280, 217, -643984, -643984]$[141, 212, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_9svn8IFgEeWW3PzPq3nIjg" id="(0.0,0.594059405940594)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_-plqsIFgEeWW3PzPq3nIjg" id="(1.0,0.6)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_C7SJYIFhEeWW3PzPq3nIjg" type="4002" source="_7hWHYIFgEeWW3PzPq3nIjg" target="_GCni-nctEeWKENLFMGan-w">
+ <children xmi:type="notation:DecorationNode" xmi:id="_C7SJY4FhEeWW3PzPq3nIjg" type="6007">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_DaAFsIFhEeWW3PzPq3nIjg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_C7SJZIFhEeWW3PzPq3nIjg" x="-1" y="59"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_C7SJYYFhEeWW3PzPq3nIjg"/>
+ <element xmi:type="uml:Generalization" href="propertylifecycle.uml#_IV84mHKKEeWqG7lDxSBeNQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_C7SJYoFhEeWW3PzPq3nIjg" points="[100, 200, -643984, -643984]$[100, 160, -643984, -643984]$[220, 160, -643984, -643984]$[220, 121, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_DZz4cIFhEeWW3PzPq3nIjg" id="(0.4968944099378882,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_DZz4cYFhEeWW3PzPq3nIjg" id="(0.45248868778280543,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_q_oXAKPaEeWAw9SV1KeTXw" type="4001" source="_GCnioXctEeWKENLFMGan-w" target="_GCnioXctEeWKENLFMGan-w">
+ <children xmi:type="notation:DecorationNode" xmi:id="_q_oXA6PaEeWAw9SV1KeTXw" type="6001">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_roHTUKPaEeWAw9SV1KeTXw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_q_oXBKPaEeWAw9SV1KeTXw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_q_oXBaPaEeWAw9SV1KeTXw" type="6002">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_roUusKPaEeWAw9SV1KeTXw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_q_oXBqPaEeWAw9SV1KeTXw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_q_oXB6PaEeWAw9SV1KeTXw" type="6003">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_rogU4KPaEeWAw9SV1KeTXw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_q_oXCKPaEeWAw9SV1KeTXw" x="51" y="-17"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_q_oXCaPaEeWAw9SV1KeTXw" type="6005">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_rooQsKPaEeWAw9SV1KeTXw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_q_oXCqPaEeWAw9SV1KeTXw" x="-53" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_q_oXC6PaEeWAw9SV1KeTXw" type="6033">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_rowzkKPaEeWAw9SV1KeTXw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_q_oXDKPaEeWAw9SV1KeTXw" x="53" y="24"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_q_oXDaPaEeWAw9SV1KeTXw" type="6034">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_ro5WcKPaEeWAw9SV1KeTXw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_q_oXDqPaEeWAw9SV1KeTXw" x="-24" y="13"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_q_oXAaPaEeWAw9SV1KeTXw"/>
+ <element xmi:type="uml:Association" href="propertylifecycle.uml#_qNrVoKPaEeWAw9SV1KeTXw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_q_oXAqPaEeWAw9SV1KeTXw" points="[400, 200, -643984, -643984]$[400, 160, -643984, -643984]$[480, 160, -643984, -643984]$[480, 240, -643984, -643984]$[441, 240, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_rn4p0KPaEeWAw9SV1KeTXw" id="(0.7453416149068323,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_rn5Q4KPaEeWAw9SV1KeTXw" id="(1.0,0.49382716049382713)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_ONtbIHc1EeWKENLFMGan-w" type="PapyrusUMLClassDiagram" name="ReadOrderDiagram" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_OulTkHc1EeWKENLFMGan-w" type="2005">
+ <children xmi:type="notation:DecorationNode" xmi:id="_Oul6oHc1EeWKENLFMGan-w" type="5020"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Oul6oXc1EeWKENLFMGan-w" type="7009">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Oul6onc1EeWKENLFMGan-w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Oul6o3c1EeWKENLFMGan-w"/>
+ </children>
+ <element xmi:type="uml:Model" href="propertylifecycle.uml#_1MrvAHcmEeW7365dAmHglw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OulTkXc1EeWKENLFMGan-w" x="20" y="180"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_O9_BgHc1EeWKENLFMGan-w" type="2005">
+ <children xmi:type="notation:DecorationNode" xmi:id="_O9_Bgnc1EeWKENLFMGan-w" type="5020"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_O9_Bg3c1EeWKENLFMGan-w" type="7009">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_O9_BhHc1EeWKENLFMGan-w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_O9_BhXc1EeWKENLFMGan-w"/>
+ </children>
+ <element xmi:type="uml:Model" href="propertylifecycle.uml#_BHhwYHcnEeW7365dAmHglw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_O9_BgXc1EeWKENLFMGan-w" x="20" y="340"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_PJxawHc1EeWKENLFMGan-w" type="2005">
+ <children xmi:type="notation:DecorationNode" xmi:id="_PJxawnc1EeWKENLFMGan-w" type="5020"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_PJxaw3c1EeWKENLFMGan-w" type="7009">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_PJxaxHc1EeWKENLFMGan-w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_PJxaxXc1EeWKENLFMGan-w"/>
+ </children>
+ <element xmi:type="uml:Model" href="propertylifecycle.uml#_QHqHsHcnEeW7365dAmHglw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_PJxawXc1EeWKENLFMGan-w" x="20" y="500"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_PZnNkHc1EeWKENLFMGan-w" type="2005">
+ <children xmi:type="notation:DecorationNode" xmi:id="_PZnNknc1EeWKENLFMGan-w" type="5020"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_PZnNk3c1EeWKENLFMGan-w" type="7009">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_PZnNlHc1EeWKENLFMGan-w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_PZnNlXc1EeWKENLFMGan-w"/>
+ </children>
+ <element xmi:type="uml:Model" href="propertylifecycle.uml#_bBVnAHcnEeW7365dAmHglw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_PZnNkXc1EeWKENLFMGan-w" x="20" y="20"/>
+ </children>
+ <styles xmi:type="notation:StringValueStyle" xmi:id="_ONtbIXc1EeWKENLFMGan-w" name="diagram_compatibility_version" stringValue="1.1.0"/>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_ONtbInc1EeWKENLFMGan-w"/>
+ <styles xmi:type="style:PapyrusViewStyle" xmi:id="_ONtbI3c1EeWKENLFMGan-w">
+ <owner xmi:type="uml:Model" href="propertylifecycle.uml#_-hZxkHb4EeWgXf4JsIe8SQ"/>
+ </styles>
+ <styles xmi:type="notation:EObjectListValueStyle" xmi:id="_3KQdQIFeEeWW3PzPq3nIjg" name="css_stylesheets" eObjectListValue="_SLzp8IFdEeWW3PzPq3nIjg"/>
+ <element xmi:type="uml:Model" href="propertylifecycle.uml#_-hZxkHb4EeWgXf4JsIe8SQ"/>
+ </notation:Diagram>
+ <css:ModelStyleSheets xmi:id="_lJS90H4fEeWW3PzPq3nIjg"/>
+ <css:StyleSheetReference xmi:id="_SLzp8IFdEeWW3PzPq3nIjg" path="/Lifecycle/propertylifecycle.css"/>
+ <notation:Diagram xmi:id="_BgNCQLhmEeWJ68NTu2ajAQ" type="PapyrusUMLClassDiagram" name="AbstractTrigger" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_CLBg4LhmEeWJ68NTu2ajAQ" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_CLCH8LhmEeWJ68NTu2ajAQ" type="5029"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_CLCH8bhmEeWJ68NTu2ajAQ" type="8510">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_CLCH8rhmEeWJ68NTu2ajAQ" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_CLCH87hmEeWJ68NTu2ajAQ" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_CLCH9LhmEeWJ68NTu2ajAQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_CLCH9bhmEeWJ68NTu2ajAQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_CLCH9rhmEeWJ68NTu2ajAQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CLCH97hmEeWJ68NTu2ajAQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_CLCH-LhmEeWJ68NTu2ajAQ" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_CLCH-bhmEeWJ68NTu2ajAQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_CLCH-rhmEeWJ68NTu2ajAQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_CLCH-7hmEeWJ68NTu2ajAQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CLCH_LhmEeWJ68NTu2ajAQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_CLCH_bhmEeWJ68NTu2ajAQ" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_CLCH_rhmEeWJ68NTu2ajAQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_CLCH_7hmEeWJ68NTu2ajAQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_CLCIALhmEeWJ68NTu2ajAQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CLCIAbhmEeWJ68NTu2ajAQ"/>
+ </children>
+ <element xmi:type="uml:Class" href="propertylifecycle.uml#_Uf4QwLhEEeWJ68NTu2ajAQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CLBg4bhmEeWJ68NTu2ajAQ" x="20" y="180" width="161"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_HTVegLhmEeWJ68NTu2ajAQ" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_HTVegrhmEeWJ68NTu2ajAQ" type="5029"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_HTVeg7hmEeWJ68NTu2ajAQ" type="8510">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_HTVehLhmEeWJ68NTu2ajAQ" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_HTVehbhmEeWJ68NTu2ajAQ" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_HTVehrhmEeWJ68NTu2ajAQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_HTVeh7hmEeWJ68NTu2ajAQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_HTVeiLhmEeWJ68NTu2ajAQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HTVeibhmEeWJ68NTu2ajAQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_HTVeirhmEeWJ68NTu2ajAQ" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_HTVei7hmEeWJ68NTu2ajAQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_HTVejLhmEeWJ68NTu2ajAQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_HTVejbhmEeWJ68NTu2ajAQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HTVejrhmEeWJ68NTu2ajAQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_HTVej7hmEeWJ68NTu2ajAQ" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_HTVekLhmEeWJ68NTu2ajAQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_HTVekbhmEeWJ68NTu2ajAQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_HTVekrhmEeWJ68NTu2ajAQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HTVek7hmEeWJ68NTu2ajAQ"/>
+ </children>
+ <element xmi:type="uml:Class" href="propertylifecycle.uml#_IV84t3KKEeWqG7lDxSBeNQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HTVegbhmEeWJ68NTu2ajAQ" x="20" y="20" width="161"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_I5VzALhmEeWJ68NTu2ajAQ" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_I5VzArhmEeWJ68NTu2ajAQ" type="5029"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_I5VzA7hmEeWJ68NTu2ajAQ" type="8510">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_I5VzBLhmEeWJ68NTu2ajAQ" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_I5VzBbhmEeWJ68NTu2ajAQ" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_dbx8ULhmEeWJ68NTu2ajAQ" type="3012">
+ <element xmi:type="uml:Property" href="propertylifecycle.uml#_M_wRwLhFEeWJ68NTu2ajAQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_dbx8UbhmEeWJ68NTu2ajAQ"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_d0EggLhmEeWJ68NTu2ajAQ" type="3012">
+ <element xmi:type="uml:Property" href="propertylifecycle.uml#_WgRlwLhFEeWJ68NTu2ajAQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_d0EggbhmEeWJ68NTu2ajAQ"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_eKe1YLhmEeWJ68NTu2ajAQ" type="3012">
+ <element xmi:type="uml:Property" href="propertylifecycle.uml#_e2rQALhFEeWJ68NTu2ajAQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_eKe1YbhmEeWJ68NTu2ajAQ"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_eeaeALhmEeWJ68NTu2ajAQ" type="3012">
+ <element xmi:type="uml:Property" href="propertylifecycle.uml#_kM4fsLhFEeWJ68NTu2ajAQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_eeaeAbhmEeWJ68NTu2ajAQ"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_I5VzBrhmEeWJ68NTu2ajAQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_I5VzB7hmEeWJ68NTu2ajAQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_I5VzCLhmEeWJ68NTu2ajAQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_I5VzCbhmEeWJ68NTu2ajAQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_I5VzCrhmEeWJ68NTu2ajAQ" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_I5VzC7hmEeWJ68NTu2ajAQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_I5VzDLhmEeWJ68NTu2ajAQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_I5VzDbhmEeWJ68NTu2ajAQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_I5VzDrhmEeWJ68NTu2ajAQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_I5WaELhmEeWJ68NTu2ajAQ" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_I5WaEbhmEeWJ68NTu2ajAQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_I5WaErhmEeWJ68NTu2ajAQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_I5WaE7hmEeWJ68NTu2ajAQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_I5WaFLhmEeWJ68NTu2ajAQ"/>
+ </children>
+ <element xmi:type="uml:Class" href="propertylifecycle.uml#_QXuvoLhEEeWJ68NTu2ajAQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_I5VzAbhmEeWJ68NTu2ajAQ" x="20" y="340" width="161" height="101"/>
+ </children>
+ <styles xmi:type="notation:StringValueStyle" xmi:id="_BgNCQbhmEeWJ68NTu2ajAQ" name="diagram_compatibility_version" stringValue="1.1.0"/>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_BgNCQrhmEeWJ68NTu2ajAQ"/>
+ <styles xmi:type="style:PapyrusViewStyle" xmi:id="_BgNCQ7hmEeWJ68NTu2ajAQ">
+ <owner xmi:type="uml:Model" href="propertylifecycle.uml#_1MrvAHcmEeW7365dAmHglw"/>
+ </styles>
+ <styles xmi:type="notation:EObjectListValueStyle" xmi:id="_LfBb0LhmEeWJ68NTu2ajAQ" name="css_stylesheets" eObjectListValue="_SLzp8IFdEeWW3PzPq3nIjg"/>
+ <element xmi:type="uml:Model" href="propertylifecycle.uml#_1MrvAHcmEeW7365dAmHglw"/>
+ <edges xmi:type="notation:Connector" xmi:id="_HTgdoLhmEeWJ68NTu2ajAQ" type="4001" source="_CLBg4LhmEeWJ68NTu2ajAQ" target="_HTVegLhmEeWJ68NTu2ajAQ">
+ <children xmi:type="notation:DecorationNode" xmi:id="_HTgdo7hmEeWJ68NTu2ajAQ" type="6001">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_HoeBALhmEeWJ68NTu2ajAQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_HTgdpLhmEeWJ68NTu2ajAQ" x="-1" y="-18"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_HThEsLhmEeWJ68NTu2ajAQ" type="6002">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_HopAILhmEeWJ68NTu2ajAQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_HThEsbhmEeWJ68NTu2ajAQ" x="-1" y="18"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_HThEsrhmEeWJ68NTu2ajAQ" type="6003">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_Hoz_QLhmEeWJ68NTu2ajAQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_HThEs7hmEeWJ68NTu2ajAQ" x="3" y="-18"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_HThEtLhmEeWJ68NTu2ajAQ" type="6005">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_Ho5e0LhmEeWJ68NTu2ajAQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_HThEtbhmEeWJ68NTu2ajAQ" x="-4" y="18"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_HThEtrhmEeWJ68NTu2ajAQ" type="6033">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_Ho9wQLhmEeWJ68NTu2ajAQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_HThEt7hmEeWJ68NTu2ajAQ" x="13" y="30"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_HThEuLhmEeWJ68NTu2ajAQ" type="6034">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_HpCowLhmEeWJ68NTu2ajAQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_HThEubhmEeWJ68NTu2ajAQ" x="-7" y="-15"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_HTgdobhmEeWJ68NTu2ajAQ"/>
+ <element xmi:type="uml:Association" href="propertylifecycle.uml#_WqyCELhEEeWJ68NTu2ajAQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_HTgdorhmEeWJ68NTu2ajAQ" points="[199, 447, -643984, -643984]$[-140, 0, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HpJWcLhmEeWJ68NTu2ajAQ" id="(0.4968944099378882,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HpJWcbhmEeWJ68NTu2ajAQ" id="(0.4968944099378882,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_JUalcLhmEeWJ68NTu2ajAQ" type="4002" source="_I5VzALhmEeWJ68NTu2ajAQ" target="_CLBg4LhmEeWJ68NTu2ajAQ">
+ <children xmi:type="notation:DecorationNode" xmi:id="_JUalc7hmEeWJ68NTu2ajAQ" type="6007">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_PBfdALhmEeWJ68NTu2ajAQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_JUbMgLhmEeWJ68NTu2ajAQ" x="-1" y="38"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_JUalcbhmEeWJ68NTu2ajAQ"/>
+ <element xmi:type="uml:Generalization" href="propertylifecycle.uml#_eThVELhEEeWJ68NTu2ajAQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_JUalcrhmEeWJ68NTu2ajAQ" points="[100, 340, -643984, -643984]$[100, 320, -643984, -643984]$[100, 280, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_PCuMELhmEeWJ68NTu2ajAQ" id="(0.4968944099378882,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_PCuMEbhmEeWJ68NTu2ajAQ" id="(0.4968944099378882,1.0)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_mQAyELhmEeWJ68NTu2ajAQ" type="PapyrusUMLClassDiagram" name="AbstractValueProcessor" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_55UCALhoEeWJ68NTu2ajAQ" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_55UpELhoEeWJ68NTu2ajAQ" type="5029"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_55UpEbhoEeWJ68NTu2ajAQ" type="8510">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_55UpErhoEeWJ68NTu2ajAQ" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_55UpE7hoEeWJ68NTu2ajAQ" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_55UpFLhoEeWJ68NTu2ajAQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_55UpFbhoEeWJ68NTu2ajAQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_55UpFrhoEeWJ68NTu2ajAQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_55UpF7hoEeWJ68NTu2ajAQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_55UpGLhoEeWJ68NTu2ajAQ" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_55UpGbhoEeWJ68NTu2ajAQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_55UpGrhoEeWJ68NTu2ajAQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_55UpG7hoEeWJ68NTu2ajAQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_55UpHLhoEeWJ68NTu2ajAQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_55UpHbhoEeWJ68NTu2ajAQ" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_55UpHrhoEeWJ68NTu2ajAQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_55UpH7hoEeWJ68NTu2ajAQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_55UpILhoEeWJ68NTu2ajAQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_55UpIbhoEeWJ68NTu2ajAQ"/>
+ </children>
+ <element xmi:type="uml:Class" href="propertylifecycle.uml#__rw3sLg6EeWJ68NTu2ajAQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_55UCAbhoEeWJ68NTu2ajAQ" x="20" y="180" width="161"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_6dY_cLhoEeWJ68NTu2ajAQ" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_6dZmgLhoEeWJ68NTu2ajAQ" type="5029"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_6dZmgbhoEeWJ68NTu2ajAQ" type="8510">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_6dZmgrhoEeWJ68NTu2ajAQ" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_6dZmg7hoEeWJ68NTu2ajAQ" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_6dZmhLhoEeWJ68NTu2ajAQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_6dZmhbhoEeWJ68NTu2ajAQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_6dZmhrhoEeWJ68NTu2ajAQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6dZmh7hoEeWJ68NTu2ajAQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_6dZmiLhoEeWJ68NTu2ajAQ" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_6dZmibhoEeWJ68NTu2ajAQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_6dZmirhoEeWJ68NTu2ajAQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_6dZmi7hoEeWJ68NTu2ajAQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6dZmjLhoEeWJ68NTu2ajAQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_6dZmjbhoEeWJ68NTu2ajAQ" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_6dZmjrhoEeWJ68NTu2ajAQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_6dZmj7hoEeWJ68NTu2ajAQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_6dZmkLhoEeWJ68NTu2ajAQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6dZmkbhoEeWJ68NTu2ajAQ"/>
+ </children>
+ <element xmi:type="uml:Class" href="propertylifecycle.uml#_IV84t3KKEeWqG7lDxSBeNQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6dY_cbhoEeWJ68NTu2ajAQ" x="20" y="20" width="161"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_AzsaMLhpEeWJ68NTu2ajAQ" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_AzsaMrhpEeWJ68NTu2ajAQ" type="5029"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_AzsaM7hpEeWJ68NTu2ajAQ" type="8510">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_AzsaNLhpEeWJ68NTu2ajAQ" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_AzsaNbhpEeWJ68NTu2ajAQ" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_Oe2ioLhpEeWJ68NTu2ajAQ" type="3012">
+ <element xmi:type="uml:Property" href="propertylifecycle.uml#_Qt_hQLhJEeWJ68NTu2ajAQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Oe2iobhpEeWJ68NTu2ajAQ"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_AzsaNrhpEeWJ68NTu2ajAQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_AzsaN7hpEeWJ68NTu2ajAQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_AzsaOLhpEeWJ68NTu2ajAQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AzsaObhpEeWJ68NTu2ajAQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_AzsaOrhpEeWJ68NTu2ajAQ" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_AzsaO7hpEeWJ68NTu2ajAQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_AzsaPLhpEeWJ68NTu2ajAQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_AzsaPbhpEeWJ68NTu2ajAQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AzsaPrhpEeWJ68NTu2ajAQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_AzsaP7hpEeWJ68NTu2ajAQ" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_AzsaQLhpEeWJ68NTu2ajAQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_AzsaQbhpEeWJ68NTu2ajAQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_AzsaQrhpEeWJ68NTu2ajAQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AzsaQ7hpEeWJ68NTu2ajAQ"/>
+ </children>
+ <element xmi:type="uml:Class" href="propertylifecycle.uml#_RcrfILg8EeWJ68NTu2ajAQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AzsaMbhpEeWJ68NTu2ajAQ" x="20" y="340" width="161"/>
+ </children>
+ <styles xmi:type="notation:StringValueStyle" xmi:id="_mQAyEbhmEeWJ68NTu2ajAQ" name="diagram_compatibility_version" stringValue="1.1.0"/>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_mQAyErhmEeWJ68NTu2ajAQ"/>
+ <styles xmi:type="style:PapyrusViewStyle" xmi:id="_mQAyE7hmEeWJ68NTu2ajAQ">
+ <owner xmi:type="uml:Model" href="propertylifecycle.uml#_1MrvAHcmEeW7365dAmHglw"/>
+ </styles>
+ <styles xmi:type="notation:EObjectListValueStyle" xmi:id="_HSMHoLhpEeWJ68NTu2ajAQ" name="css_stylesheets" eObjectListValue="_SLzp8IFdEeWW3PzPq3nIjg"/>
+ <element xmi:type="uml:Model" href="propertylifecycle.uml#_1MrvAHcmEeW7365dAmHglw"/>
+ <edges xmi:type="notation:Connector" xmi:id="_6dno8LhoEeWJ68NTu2ajAQ" type="4001" source="_55UCALhoEeWJ68NTu2ajAQ" target="_6dY_cLhoEeWJ68NTu2ajAQ">
+ <children xmi:type="notation:DecorationNode" xmi:id="_6dno87hoEeWJ68NTu2ajAQ" type="6001">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_9XFwcLhoEeWJ68NTu2ajAQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_6dno9LhoEeWJ68NTu2ajAQ" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_6dno9bhoEeWJ68NTu2ajAQ" type="6002">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_9XNsQLhoEeWJ68NTu2ajAQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_6dno9rhoEeWJ68NTu2ajAQ" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_6dno97hoEeWJ68NTu2ajAQ" type="6003">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_9XVoELhoEeWJ68NTu2ajAQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_6dno-LhoEeWJ68NTu2ajAQ" x="25" y="-52"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_6dno-bhoEeWJ68NTu2ajAQ" type="6005">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_9Xc80LhoEeWJ68NTu2ajAQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_6dno-rhoEeWJ68NTu2ajAQ" x="-28" y="-11"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_6dno-7hoEeWJ68NTu2ajAQ" type="6033">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_9XkRkLhoEeWJ68NTu2ajAQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_6dno_LhoEeWJ68NTu2ajAQ" x="13" y="25"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_6dno_bhoEeWJ68NTu2ajAQ" type="6034">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_9XqYMLhoEeWJ68NTu2ajAQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_6dno_rhoEeWJ68NTu2ajAQ" x="-7" y="-15"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_6dno8bhoEeWJ68NTu2ajAQ"/>
+ <element xmi:type="uml:Association" href="propertylifecycle.uml#_m-FyILg8EeWJ68NTu2ajAQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_6dno8rhoEeWJ68NTu2ajAQ" points="[245, 359, -643984, -643984]$[-100, 0, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_9Xy7ELhoEeWJ68NTu2ajAQ" id="(0.4968944099378882,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_9Xy7EbhoEeWJ68NTu2ajAQ" id="(0.4968944099378882,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_KTCCcLhpEeWJ68NTu2ajAQ" type="4002" source="_AzsaMLhpEeWJ68NTu2ajAQ" target="_55UCALhoEeWJ68NTu2ajAQ">
+ <children xmi:type="notation:DecorationNode" xmi:id="_KTCpgLhpEeWJ68NTu2ajAQ" type="6007">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_NOhjMLhpEeWJ68NTu2ajAQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_KTCpgbhpEeWJ68NTu2ajAQ" x="1" y="38"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_KTCCcbhpEeWJ68NTu2ajAQ"/>
+ <element xmi:type="uml:Generalization" href="propertylifecycle.uml#_WWCawLg8EeWJ68NTu2ajAQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_KTCCcrhpEeWJ68NTu2ajAQ" points="[100, 340, -643984, -643984]$[100, 280, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_M8eJ4LhpEeWJ68NTu2ajAQ" id="(0.4968944099378882,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Mlks0LhpEeWJ68NTu2ajAQ" id="(0.4968944099378882,1.0)"/>
+ </edges>
+ </notation:Diagram>
+</xmi:XMI>
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/model/papyrus/propertylifecycle.uml b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/model/papyrus/propertylifecycle.uml
new file mode 100755
index 00000000000..1d426776b1a
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/model/papyrus/propertylifecycle.uml
@@ -0,0 +1,449 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:Requirements="http://www.eclipse.org/papyrus/0.7.0/SysML/Requirements" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xsi:schemaLocation="http://www.eclipse.org/papyrus/0.7.0/SysML/Requirements http://www.eclipse.org/papyrus/0.7.0/SysML#//requirements">
+ <uml:Model xmi:id="_-hZxkHb4EeWgXf4JsIe8SQ" name="propertylifecycle">
+ <packagedElement xmi:type="uml:Model" xmi:id="_1MrvAHcmEeW7365dAmHglw" name="StrategiesConfiguration">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_4-qnwLO_EeWthroTS8FGaQ">
+ <body>These informations are used to select and edit the property</body>
+ </ownedComment>
+ <packagedElement xmi:type="uml:Class" xmi:id="_IV8RgXKKEeWqG7lDxSBeNQ" name="StrategyTemplate" isAbstract="true">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_zhY64HNBEeWMaapY9PW8Gw" annotatedElement="_IV8RgXKKEeWqG7lDxSBeNQ">
+ <body>Contains the standard informations needed to identify the strategy sets</body>
+ </ownedComment>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_IV8Rg3KKEeWqG7lDxSBeNQ" 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="_IV84kHKKEeWqG7lDxSBeNQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_IV84kXKKEeWqG7lDxSBeNQ" name="decription" visibility="public" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_IV84knKKEeWqG7lDxSBeNQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_SbHh4Lh_EeWvXZFuuA8B2g" name="id">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_IV84k3KKEeWqG7lDxSBeNQ" name="StrategySet">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_y6PPwHNLEeWwzbMQPBkuTQ" annotatedElement="_IV84k3KKEeWqG7lDxSBeNQ">
+ <body>Root set containing the defined strategies</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="_IV84lHKKEeWqG7lDxSBeNQ" general="_IV8RgXKKEeWqG7lDxSBeNQ"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_IV84lXKKEeWqG7lDxSBeNQ" name="strategies" type="_IV84l3KKEeWqG7lDxSBeNQ" isOrdered="true" aggregation="composite" association="_IV84y3KKEeWqG7lDxSBeNQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_IV84lnKKEeWqG7lDxSBeNQ" value="*"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_IV84l3KKEeWqG7lDxSBeNQ" name="StrategyElement">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_7yFkwHNMEeWwzbMQPBkuTQ" annotatedElement="_IV84l3KKEeWqG7lDxSBeNQ">
+ <body>The element affected by this strategy</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="_IV84mHKKEeWqG7lDxSBeNQ" general="_IV84pHKKEeWqG7lDxSBeNQ"/>
+ <generalization xmi:type="uml:Generalization" xmi:id="_ujAFcLk2EeWp56hvkK2Lrw" general="_IV8RgXKKEeWqG7lDxSBeNQ"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_IV84oXKKEeWqG7lDxSBeNQ" name="elementContainers" type="_IV84x3KKEeWqG7lDxSBeNQ" isOrdered="true" aggregation="composite" association="_IV84yXKKEeWqG7lDxSBeNQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_IV84onKKEeWqG7lDxSBeNQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_IV84o3KKEeWqG7lDxSBeNQ" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_IV84n3KKEeWqG7lDxSBeNQ" name="elementProperties" type="_IV84t3KKEeWqG7lDxSBeNQ" isOrdered="true" aggregation="composite" association="_IV84xXKKEeWqG7lDxSBeNQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_IV84oHKKEeWqG7lDxSBeNQ" value="*"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_IV84pHKKEeWqG7lDxSBeNQ" name="ElementTemplate" isAbstract="true">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_dWoH4HNMEeWwzbMQPBkuTQ" annotatedElement="_IV84pHKKEeWqG7lDxSBeNQ">
+ <body>Contains the standard informations needed to identify the elements affected by this strategy</body>
+ </ownedComment>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_IV84pXKKEeWqG7lDxSBeNQ" name="baseType" visibility="public" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_IV84pnKKEeWqG7lDxSBeNQ" name="specializedType" visibility="public" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_IV84p3KKEeWqG7lDxSBeNQ"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_IV84t3KKEeWqG7lDxSBeNQ" name="ElementProperty">
+ <ownedComment xmi:type="uml:Comment" xmi:id="__GRc4HNNEeWwzbMQPBkuTQ" annotatedElement="_IV84t3KKEeWqG7lDxSBeNQ">
+ <body>These informations are used to select and edit the property</body>
+ </ownedComment>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_IV84uHKKEeWqG7lDxSBeNQ" name="featureLabel" visibility="public" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_IV84vHKKEeWqG7lDxSBeNQ" name="priority" visibility="public" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EIntegerObject"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_WqypIrhEEeWJ68NTu2ajAQ" name="triggers" type="_Uf4QwLhEEeWJ68NTu2ajAQ" aggregation="composite" association="_WqyCELhEEeWJ68NTu2ajAQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_dCiOULhEEeWJ68NTu2ajAQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_dCkDgLhEEeWJ68NTu2ajAQ" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_m-GZMrg8EeWJ68NTu2ajAQ" name="valueProcessor" type="__rw3sLg6EeWJ68NTu2ajAQ" aggregation="composite" association="_m-FyILg8EeWJ68NTu2ajAQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_qi1EMLg8EeWJ68NTu2ajAQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_qjZE4Lg8EeWJ68NTu2ajAQ" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_IV84xXKKEeWqG7lDxSBeNQ" memberEnd="_IV84n3KKEeWqG7lDxSBeNQ _IV84xnKKEeWqG7lDxSBeNQ">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_IV84xnKKEeWqG7lDxSBeNQ" name="elementProperty" type="_IV84l3KKEeWqG7lDxSBeNQ" association="_IV84xXKKEeWqG7lDxSBeNQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_IV84x3KKEeWqG7lDxSBeNQ" name="ElementContainer">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_ERG_gHNNEeWwzbMQPBkuTQ" annotatedElement="_IV84x3KKEeWqG7lDxSBeNQ">
+ <body>The informations defining the required immediate possible container(s) of the element</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="_IV84yHKKEeWqG7lDxSBeNQ" general="_IV84pHKKEeWqG7lDxSBeNQ"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_qNsjwqPaEeWAw9SV1KeTXw" name="containersContainer" type="_IV84x3KKEeWqG7lDxSBeNQ" aggregation="composite" association="_qNrVoKPaEeWAw9SV1KeTXw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_1tmVkKPaEeWAw9SV1KeTXw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1toKwKPaEeWAw9SV1KeTXw" value="1"/>
+ </ownedAttribute>
+ <nestedClassifier xmi:type="uml:Association" xmi:id="_qNrVoKPaEeWAw9SV1KeTXw" memberEnd="_qNsjwqPaEeWAw9SV1KeTXw _qNuY8KPaEeWAw9SV1KeTXw">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qNsjwKPaEeWAw9SV1KeTXw" source="org.eclipse.papyrus">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qNsjwaPaEeWAw9SV1KeTXw" key="nature" value="UML_Nature"/>
+ </eAnnotations>
+ <ownedEnd xmi:type="uml:Property" xmi:id="_qNuY8KPaEeWAw9SV1KeTXw" name="elementcontainer" type="_IV84x3KKEeWqG7lDxSBeNQ" association="_qNrVoKPaEeWAw9SV1KeTXw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_z1FUwKPaEeWAw9SV1KeTXw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_z1HxAKPaEeWAw9SV1KeTXw" value="1"/>
+ </ownedEnd>
+ </nestedClassifier>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_IV84yXKKEeWqG7lDxSBeNQ" memberEnd="_IV84oXKKEeWqG7lDxSBeNQ _IV84ynKKEeWqG7lDxSBeNQ">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_IV84ynKKEeWqG7lDxSBeNQ" name="elementContainer" type="_IV84l3KKEeWqG7lDxSBeNQ" association="_IV84yXKKEeWqG7lDxSBeNQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_vwCa0Lg6EeWJ68NTu2ajAQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_vwFeILg6EeWJ68NTu2ajAQ" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_IV84y3KKEeWqG7lDxSBeNQ" memberEnd="_IV84lXKKEeWqG7lDxSBeNQ _IV84zHKKEeWqG7lDxSBeNQ">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_IV84zHKKEeWqG7lDxSBeNQ" name="strategyElement" type="_IV84k3KKEeWqG7lDxSBeNQ" association="_IV84y3KKEeWqG7lDxSBeNQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="__rw3sLg6EeWJ68NTu2ajAQ" name="AbstractValueProcessor" isAbstract="true">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_kMtOoLhHEeWJ68NTu2ajAQ" annotatedElement="__rw3sLg6EeWJ68NTu2ajAQ">
+ <body>Processor from which to compute the new value of the property</body>
+ </ownedComment>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_RcrfILg8EeWJ68NTu2ajAQ" name="JavaProcessor">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_7jHw4LhGEeWJ68NTu2ajAQ" annotatedElement="_RcrfILg8EeWJ68NTu2ajAQ">
+ <body>Process the new vaue from the specified java class</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="_WWCawLg8EeWJ68NTu2ajAQ" general="__rw3sLg6EeWJ68NTu2ajAQ"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_Qt_hQLhJEeWJ68NTu2ajAQ" name="className">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_m-FyILg8EeWJ68NTu2ajAQ" memberEnd="_m-GZMrg8EeWJ68NTu2ajAQ _m-HAQLg8EeWJ68NTu2ajAQ">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_m-GZMLg8EeWJ68NTu2ajAQ" source="org.eclipse.papyrus">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_m-GZMbg8EeWJ68NTu2ajAQ" key="nature" value="UML_Nature"/>
+ </eAnnotations>
+ <ownedEnd xmi:type="uml:Property" xmi:id="_m-HAQLg8EeWJ68NTu2ajAQ" name="abstractValueProcessor" type="_IV84t3KKEeWqG7lDxSBeNQ" association="_m-FyILg8EeWJ68NTu2ajAQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_QXuvoLhEEeWJ68NTu2ajAQ" name="BasicTrigger">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_H_t0cLhHEeWJ68NTu2ajAQ" annotatedElement="_QXuvoLhEEeWJ68NTu2ajAQ">
+ <body>Specify the basic triggers of an element's lifecycle</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="_eThVELhEEeWJ68NTu2ajAQ" general="_Uf4QwLhEEeWJ68NTu2ajAQ"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_M_wRwLhFEeWJ68NTu2ajAQ" name="onCreate">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_WgRlwLhFEeWJ68NTu2ajAQ" name="onDelete">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_e2rQALhFEeWJ68NTu2ajAQ" name="onOpen">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_kM4fsLhFEeWJ68NTu2ajAQ" name="onMove">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_Uf4QwLhEEeWJ68NTu2ajAQ" name="AbstractTrigger" isAbstract="true">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_eyisALhHEeWJ68NTu2ajAQ" annotatedElement="_Uf4QwLhEEeWJ68NTu2ajAQ">
+ <body>Triggers specifying the lifecycle moment(s) from which to apply the processed value to the property</body>
+ </ownedComment>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_WqyCELhEEeWJ68NTu2ajAQ" memberEnd="_WqypIrhEEeWJ68NTu2ajAQ _WqzQMLhEEeWJ68NTu2ajAQ">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_WqypILhEEeWJ68NTu2ajAQ" source="org.eclipse.papyrus">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_WqypIbhEEeWJ68NTu2ajAQ" key="nature" value="UML_Nature"/>
+ </eAnnotations>
+ <ownedEnd xmi:type="uml:Property" xmi:id="_WqzQMLhEEeWJ68NTu2ajAQ" name="abstractTrigger" type="_IV84t3KKEeWqG7lDxSBeNQ" association="_WqyCELhEEeWJ68NTu2ajAQ"/>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Model" xmi:id="_bBVnAHcnEeW7365dAmHglw" name="ModelUsability">
+ <packagedElement xmi:type="uml:Class" xmi:id="_YCKRMHcIEeW7365dAmHglw" name="Customization EditStrategy"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_inB-IHcIEeW7365dAmHglw" name="Customization NewRepository"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_b7WmwHb8EeW7365dAmHglw" name="Customization NewStrategy"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_RsfYgHccEeW7365dAmHglw" name="Application DefaultBehavior"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_aD89QHcdEeW7365dAmHglw" name="Application DeploymentBehavior"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_JiZAsHcjEeW7365dAmHglw" name="Strategy CreationContext"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_eVJa8HdEEeWKENLFMGan-w" name="Customization Extension"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_sWQv0HdFEeWKENLFMGan-w" name="Customization LabelProvider"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_mzEHYHfREeW-pZnxtbVJ7A" name="Application Scope"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_5gWs8HfREeW-pZnxtbVJ7A" name="Application ProvidingValue"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_25KtsHcgEeW7365dAmHglw" name="Application SelectionContext"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_EjfvsHchEeW7365dAmHglw" name="Application SelectionPriority"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_iw53kHcjEeW7365dAmHglw" name="Application CreationContext"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_cNexYHckEeW7365dAmHglw" name="Strategy ElementID"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_qmbz8HckEeW7365dAmHglw" name="Application Override"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_SC8nEHfUEeW-pZnxtbVJ7A" name="Strategy RepositoryID"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_bC92EHfUEeW-pZnxtbVJ7A" name="Strategy StrategyID"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_qPFJAHfWEeW-pZnxtbVJ7A" name="Application ConcurentStrategies"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_x5dsgJKKEeW1-qKY3br1Ig" name="Application Redefinition"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Model" xmi:id="_BHhwYHcnEeW7365dAmHglw" name="PreferencePage">
+ <packagedElement xmi:type="uml:Class" xmi:id="_6TyuYHcIEeW7365dAmHglw" name="Viewer RepositoryDisplay"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_Gik_cHcJEeW7365dAmHglw" name="Repository Selection"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_V1-4EHcJEeW7365dAmHglw" name="Viewer StrategyDisplay"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_pKenkHcJEeW7365dAmHglw" name="Strategy Selection"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_6Ix7wHcJEeW7365dAmHglw" name="Repository Selected"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_DyKrUHcfEeW7365dAmHglw" name="Repository Browser"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UKIYQHcfEeW7365dAmHglw" name="Customization NewRepository"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_hdJGcHcfEeW7365dAmHglw" name="Customization SaveRepository"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_vT2-oHcfEeW7365dAmHglw" name="Viewer SelectionSynchronization"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_VesiAHcgEeW7365dAmHglw" name="Viewer CrossSelection"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_DpCYsHfIEeWKENLFMGan-w" name="Customization AccessRepository"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_LkUlgHfOEeWKENLFMGan-w" name="Customization EditRepository"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="__nM10Hv3EeWZBetlvWKcoQ" name="Viewer StrategyDetails"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Model" xmi:id="_QHqHsHcnEeW7365dAmHglw" name="UseCase">
+ <packagedElement xmi:type="uml:Actor" xmi:id="_RGOI4Hb_EeW7365dAmHglw" name="User"/>
+ <packagedElement xmi:type="uml:Component" xmi:id="_gjI38HcBEeW7365dAmHglw" name="Strategy Application" useCase="_Vk8PkHcCEeW7365dAmHglw _ilG6QHcCEeW7365dAmHglw _qX_yUHcDEeW7365dAmHglw _62qkMHcDEeW7365dAmHglw _FiuW4HcHEeW7365dAmHglw">
+ <ownedUseCase xmi:type="uml:UseCase" xmi:id="_Vk8PkHcCEeW7365dAmHglw" name="Create a new Element" subject="_gjI38HcBEeW7365dAmHglw"/>
+ <ownedUseCase xmi:type="uml:UseCase" xmi:id="_ilG6QHcCEeW7365dAmHglw" name="Reuse an existing Element" subject="_gjI38HcBEeW7365dAmHglw"/>
+ <ownedUseCase xmi:type="uml:UseCase" xmi:id="_qX_yUHcDEeW7365dAmHglw" name="Change the property value" subject="_gjI38HcBEeW7365dAmHglw">
+ <include xmi:type="uml:Include" xmi:id="_moIG8HcGEeW7365dAmHglw" addition="_62qkMHcDEeW7365dAmHglw"/>
+ <include xmi:type="uml:Include" xmi:id="_PxssUHcHEeW7365dAmHglw" addition="_FiuW4HcHEeW7365dAmHglw"/>
+ </ownedUseCase>
+ <ownedUseCase xmi:type="uml:UseCase" xmi:id="_62qkMHcDEeW7365dAmHglw" name="Evaluate the context of the Element" subject="_gjI38HcBEeW7365dAmHglw"/>
+ <ownedUseCase xmi:type="uml:UseCase" xmi:id="_FiuW4HcHEeW7365dAmHglw" name="Get the User strategy preferences" subject="_gjI38HcBEeW7365dAmHglw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3duScHcDEeW7365dAmHglw" memberEnd="_3d-xIHcDEeW7365dAmHglw _3d-xIXcDEeW7365dAmHglw">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3d8U4HcDEeW7365dAmHglw" source="org.eclipse.papyrus">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3d8U4XcDEeW7365dAmHglw" key="nature" value="UML_Nature"/>
+ </eAnnotations>
+ <ownedEnd xmi:type="uml:Property" xmi:id="_3d-xIHcDEeW7365dAmHglw" name="change the property value" type="_qX_yUHcDEeW7365dAmHglw" association="_3duScHcDEeW7365dAmHglw"/>
+ <ownedEnd xmi:type="uml:Property" xmi:id="_3d-xIXcDEeW7365dAmHglw" name="reuse an existing element" type="_ilG6QHcCEeW7365dAmHglw" association="_3duScHcDEeW7365dAmHglw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_36dRwHcDEeW7365dAmHglw" memberEnd="_36d40ncDEeW7365dAmHglw _36d403cDEeW7365dAmHglw">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_36d40HcDEeW7365dAmHglw" source="org.eclipse.papyrus">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_36d40XcDEeW7365dAmHglw" key="nature" value="UML_Nature"/>
+ </eAnnotations>
+ <ownedEnd xmi:type="uml:Property" xmi:id="_36d40ncDEeW7365dAmHglw" name="change the property value" type="_qX_yUHcDEeW7365dAmHglw" association="_36dRwHcDEeW7365dAmHglw"/>
+ <ownedEnd xmi:type="uml:Property" xmi:id="_36d403cDEeW7365dAmHglw" name="create a new element" type="_Vk8PkHcCEeW7365dAmHglw" association="_36dRwHcDEeW7365dAmHglw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_mmD08HcHEeW7365dAmHglw" memberEnd="_mmD083cHEeW7365dAmHglw _mmD09HcHEeW7365dAmHglw">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_mmD08XcHEeW7365dAmHglw" source="org.eclipse.papyrus">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_mmD08ncHEeW7365dAmHglw" key="nature" value="UML_Nature"/>
+ </eAnnotations>
+ <ownedEnd xmi:type="uml:Property" xmi:id="_mmD083cHEeW7365dAmHglw" name="reuse an existing element" type="_gjI38HcBEeW7365dAmHglw" association="_mmD08HcHEeW7365dAmHglw"/>
+ <ownedEnd xmi:type="uml:Property" xmi:id="_mmD09HcHEeW7365dAmHglw" name="user" type="_RGOI4Hb_EeW7365dAmHglw" association="_mmD08HcHEeW7365dAmHglw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_n-C7kHcHEeW7365dAmHglw" memberEnd="_n-EJsHcHEeW7365dAmHglw _n-EJsXcHEeW7365dAmHglw">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_n-DioHcHEeW7365dAmHglw" source="org.eclipse.papyrus">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_n-DioXcHEeW7365dAmHglw" key="nature" value="UML_Nature"/>
+ </eAnnotations>
+ <ownedEnd xmi:type="uml:Property" xmi:id="_n-EJsHcHEeW7365dAmHglw" name="create a new element" type="_Vk8PkHcCEeW7365dAmHglw" association="_n-C7kHcHEeW7365dAmHglw"/>
+ <ownedEnd xmi:type="uml:Property" xmi:id="_n-EJsXcHEeW7365dAmHglw" name="user" type="_RGOI4Hb_EeW7365dAmHglw" association="_n-C7kHcHEeW7365dAmHglw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_MfemMHfOEeWKENLFMGan-w" name=""/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_0c1-sHfwEeW-pZnxtbVJ7A" memberEnd="_0c2lwnfwEeW-pZnxtbVJ7A _0c2lw3fwEeW-pZnxtbVJ7A">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_0c2lwHfwEeW-pZnxtbVJ7A" source="org.eclipse.papyrus">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0c2lwXfwEeW-pZnxtbVJ7A" key="nature" value="UML_Nature"/>
+ </eAnnotations>
+ <ownedEnd xmi:type="uml:Property" xmi:id="_0c2lwnfwEeW-pZnxtbVJ7A" name="select whole strategy repositories" type="_OX4PQHfvEeW-pZnxtbVJ7A" association="_0c1-sHfwEeW-pZnxtbVJ7A"/>
+ <ownedEnd xmi:type="uml:Property" xmi:id="_0c2lw3fwEeW-pZnxtbVJ7A" name="user" type="_RGOI4Hb_EeW7365dAmHglw" association="_0c1-sHfwEeW-pZnxtbVJ7A"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_1NCskHfwEeW-pZnxtbVJ7A" memberEnd="_1NHlEHfwEeW-pZnxtbVJ7A _1NHlEXfwEeW-pZnxtbVJ7A">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1NDToHfwEeW-pZnxtbVJ7A" source="org.eclipse.papyrus">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1NDToXfwEeW-pZnxtbVJ7A" key="nature" value="UML_Nature"/>
+ </eAnnotations>
+ <ownedEnd xmi:type="uml:Property" xmi:id="_1NHlEHfwEeW-pZnxtbVJ7A" name="select a specific strategy" type="_Jq4fMHfwEeW-pZnxtbVJ7A" association="_1NCskHfwEeW-pZnxtbVJ7A"/>
+ <ownedEnd xmi:type="uml:Property" xmi:id="_1NHlEXfwEeW-pZnxtbVJ7A" name="user" type="_RGOI4Hb_EeW7365dAmHglw" association="_1NCskHfwEeW-pZnxtbVJ7A"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_160jIHfxEeW-pZnxtbVJ7A" memberEnd="_161xQHfxEeW-pZnxtbVJ7A _161xQXfxEeW-pZnxtbVJ7A">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_161KMHfxEeW-pZnxtbVJ7A" source="org.eclipse.papyrus">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_161KMXfxEeW-pZnxtbVJ7A" key="nature" value="UML_Nature"/>
+ </eAnnotations>
+ <ownedEnd xmi:type="uml:Property" xmi:id="_161xQHfxEeW-pZnxtbVJ7A" name="construct a custom repository" type="_zB7qcHfxEeW-pZnxtbVJ7A" association="_160jIHfxEeW-pZnxtbVJ7A"/>
+ <ownedEnd xmi:type="uml:Property" xmi:id="_161xQXfxEeW-pZnxtbVJ7A" name="select a specific strategy" type="_d6Zz4HftEeW-pZnxtbVJ7A" association="_160jIHfxEeW-pZnxtbVJ7A"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_KRao0HfyEeW-pZnxtbVJ7A" memberEnd="_KRbP4nfyEeW-pZnxtbVJ7A _KRbP43fyEeW-pZnxtbVJ7A">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_KRbP4HfyEeW-pZnxtbVJ7A" source="org.eclipse.papyrus">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_KRbP4XfyEeW-pZnxtbVJ7A" key="nature" value="UML_Nature"/>
+ </eAnnotations>
+ <ownedEnd xmi:type="uml:Property" xmi:id="_KRbP4nfyEeW-pZnxtbVJ7A" name="import existing repositories" type="_lsc3EHfxEeW-pZnxtbVJ7A" association="_KRao0HfyEeW-pZnxtbVJ7A"/>
+ <ownedEnd xmi:type="uml:Property" xmi:id="_KRbP43fyEeW-pZnxtbVJ7A" name="user" type="_RGOI4Hb_EeW7365dAmHglw" association="_KRao0HfyEeW-pZnxtbVJ7A"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_LGBVkHfyEeW-pZnxtbVJ7A" memberEnd="_LGB8onfyEeW-pZnxtbVJ7A _LGB8o3fyEeW-pZnxtbVJ7A">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_LGB8oHfyEeW-pZnxtbVJ7A" source="org.eclipse.papyrus">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_LGB8oXfyEeW-pZnxtbVJ7A" key="nature" value="UML_Nature"/>
+ </eAnnotations>
+ <ownedEnd xmi:type="uml:Property" xmi:id="_LGB8onfyEeW-pZnxtbVJ7A" name="save the custom repository" type="_srrTAHfxEeW-pZnxtbVJ7A" association="_LGBVkHfyEeW-pZnxtbVJ7A"/>
+ <ownedEnd xmi:type="uml:Property" xmi:id="_LGB8o3fyEeW-pZnxtbVJ7A" name="user" type="_RGOI4Hb_EeW7365dAmHglw" association="_LGBVkHfyEeW-pZnxtbVJ7A"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_J7m0EHf2EeW-pZnxtbVJ7A" memberEnd="_J7nbIHf2EeW-pZnxtbVJ7A _J7nbIXf2EeW-pZnxtbVJ7A">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_J7m0EXf2EeW-pZnxtbVJ7A" source="org.eclipse.papyrus">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_J7m0Enf2EeW-pZnxtbVJ7A" key="nature" value="UML_Nature"/>
+ </eAnnotations>
+ <ownedEnd xmi:type="uml:Property" xmi:id="_J7nbIHf2EeW-pZnxtbVJ7A" name="select a strategy" type="_CzKKsHf2EeW-pZnxtbVJ7A" association="_J7m0EHf2EeW-pZnxtbVJ7A"/>
+ <ownedEnd xmi:type="uml:Property" xmi:id="_J7nbIXf2EeW-pZnxtbVJ7A" name="user" type="_RGOI4Hb_EeW7365dAmHglw" association="_J7m0EHf2EeW-pZnxtbVJ7A"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_KfSv8Hf2EeW-pZnxtbVJ7A" memberEnd="_KfT-EHf2EeW-pZnxtbVJ7A _KfT-EXf2EeW-pZnxtbVJ7A">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_KfTXAHf2EeW-pZnxtbVJ7A" source="org.eclipse.papyrus">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_KfTXAXf2EeW-pZnxtbVJ7A" key="nature" value="UML_Nature"/>
+ </eAnnotations>
+ <ownedEnd xmi:type="uml:Property" xmi:id="_KfT-EHf2EeW-pZnxtbVJ7A" name="modify the strategy parameters" type="_EFiYkHf2EeW-pZnxtbVJ7A" association="_KfSv8Hf2EeW-pZnxtbVJ7A"/>
+ <ownedEnd xmi:type="uml:Property" xmi:id="_KfT-EXf2EeW-pZnxtbVJ7A" name="select a strategy" type="_CzKKsHf2EeW-pZnxtbVJ7A" association="_KfSv8Hf2EeW-pZnxtbVJ7A"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Component" xmi:id="_d6Zz4HftEeW-pZnxtbVJ7A" name="Strategy Selection" useCase="_OX4PQHfvEeW-pZnxtbVJ7A _Jq4fMHfwEeW-pZnxtbVJ7A _3uNo0HfwEeW-pZnxtbVJ7A _HLGNkHfxEeW-pZnxtbVJ7A _zB7qcHfxEeW-pZnxtbVJ7A">
+ <ownedUseCase xmi:type="uml:UseCase" xmi:id="_OX4PQHfvEeW-pZnxtbVJ7A" name="Select whole strategy repositories" subject="_d6Zz4HftEeW-pZnxtbVJ7A">
+ <include xmi:type="uml:Include" xmi:id="_LSaBMHfxEeW-pZnxtbVJ7A" addition="_HLGNkHfxEeW-pZnxtbVJ7A"/>
+ </ownedUseCase>
+ <ownedUseCase xmi:type="uml:UseCase" xmi:id="_Jq4fMHfwEeW-pZnxtbVJ7A" name="Select a specific strategy" subject="_d6Zz4HftEeW-pZnxtbVJ7A">
+ <include xmi:type="uml:Include" xmi:id="_MI0EwHfxEeW-pZnxtbVJ7A" addition="_HLGNkHfxEeW-pZnxtbVJ7A"/>
+ </ownedUseCase>
+ <ownedUseCase xmi:type="uml:UseCase" xmi:id="_3uNo0HfwEeW-pZnxtbVJ7A" name="Display the strategies contained in each repository" subject="_d6Zz4HftEeW-pZnxtbVJ7A"/>
+ <ownedUseCase xmi:type="uml:UseCase" xmi:id="_HLGNkHfxEeW-pZnxtbVJ7A" name="Display the repositories" subject="_d6Zz4HftEeW-pZnxtbVJ7A"/>
+ <ownedUseCase xmi:type="uml:UseCase" xmi:id="_zB7qcHfxEeW-pZnxtbVJ7A" name="Construct a custom repository" subject="_d6Zz4HftEeW-pZnxtbVJ7A">
+ <include xmi:type="uml:Include" xmi:id="_Fl_4AHfxEeW-pZnxtbVJ7A" addition="_3uNo0HfwEeW-pZnxtbVJ7A"/>
+ </ownedUseCase>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Component" xmi:id="_Uln5AHfxEeW-pZnxtbVJ7A" name="Strategy Management" useCase="_lsc3EHfxEeW-pZnxtbVJ7A _srrTAHfxEeW-pZnxtbVJ7A _RBjf4HfyEeW-pZnxtbVJ7A _TVi7wHfyEeW-pZnxtbVJ7A">
+ <ownedUseCase xmi:type="uml:UseCase" xmi:id="_lsc3EHfxEeW-pZnxtbVJ7A" name="Import Existing repositories" subject="_Uln5AHfxEeW-pZnxtbVJ7A">
+ <include xmi:type="uml:Include" xmi:id="_dElz8HfyEeW-pZnxtbVJ7A" addition="_RBjf4HfyEeW-pZnxtbVJ7A"/>
+ </ownedUseCase>
+ <ownedUseCase xmi:type="uml:UseCase" xmi:id="_srrTAHfxEeW-pZnxtbVJ7A" name="Save the custom repository" subject="_Uln5AHfxEeW-pZnxtbVJ7A">
+ <include xmi:type="uml:Include" xmi:id="_ciRxEHfyEeW-pZnxtbVJ7A" addition="_RBjf4HfyEeW-pZnxtbVJ7A"/>
+ <include xmi:type="uml:Include" xmi:id="_efbaQHfyEeW-pZnxtbVJ7A" addition="_TVi7wHfyEeW-pZnxtbVJ7A"/>
+ </ownedUseCase>
+ <ownedUseCase xmi:type="uml:UseCase" xmi:id="_RBjf4HfyEeW-pZnxtbVJ7A" name="Browse the system" subject="_Uln5AHfxEeW-pZnxtbVJ7A"/>
+ <ownedUseCase xmi:type="uml:UseCase" xmi:id="_TVi7wHfyEeW-pZnxtbVJ7A" name="Save in a new repository on disk" subject="_Uln5AHfxEeW-pZnxtbVJ7A"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Component" xmi:id="_9BJv0Hf1EeW-pZnxtbVJ7A" name="Strategy Edition" useCase="_CzKKsHf2EeW-pZnxtbVJ7A _EFiYkHf2EeW-pZnxtbVJ7A _QD19oHf2EeW-pZnxtbVJ7A _TJVu8Hf2EeW-pZnxtbVJ7A">
+ <ownedUseCase xmi:type="uml:UseCase" xmi:id="_CzKKsHf2EeW-pZnxtbVJ7A" name="Select a strategy" subject="_9BJv0Hf1EeW-pZnxtbVJ7A"/>
+ <ownedUseCase xmi:type="uml:UseCase" xmi:id="_EFiYkHf2EeW-pZnxtbVJ7A" name="Modify the strategy parameters" subject="_9BJv0Hf1EeW-pZnxtbVJ7A">
+ <include xmi:type="uml:Include" xmi:id="_YVFbEHf2EeW-pZnxtbVJ7A" addition="_QD19oHf2EeW-pZnxtbVJ7A"/>
+ <include xmi:type="uml:Include" xmi:id="_ucU_AHf2EeW-pZnxtbVJ7A" addition="_TJVu8Hf2EeW-pZnxtbVJ7A"/>
+ </ownedUseCase>
+ <ownedUseCase xmi:type="uml:UseCase" xmi:id="_QD19oHf2EeW-pZnxtbVJ7A" name="Browse the strategy repository" subject="_9BJv0Hf1EeW-pZnxtbVJ7A"/>
+ <ownedUseCase xmi:type="uml:UseCase" xmi:id="_TJVu8Hf2EeW-pZnxtbVJ7A" name="Edit the strategy repository" subject="_9BJv0Hf1EeW-pZnxtbVJ7A"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Component" xmi:id="_KdqhcIF8EeWOp44XR6VXyA" name="Multiple Strategies Application" useCase="_Dfk4gIF9EeWOp44XR6VXyA _IIN3kIF9EeWOp44XR6VXyA _LJJ5AIF9EeWOp44XR6VXyA _PBAUUIF9EeWOp44XR6VXyA">
+ <ownedUseCase xmi:type="uml:UseCase" xmi:id="_Dfk4gIF9EeWOp44XR6VXyA" name="Create a new Element" subject="_KdqhcIF8EeWOp44XR6VXyA"/>
+ <ownedUseCase xmi:type="uml:UseCase" xmi:id="_IIN3kIF9EeWOp44XR6VXyA" name="Browse the strategy repository" subject="_KdqhcIF8EeWOp44XR6VXyA"/>
+ <ownedUseCase xmi:type="uml:UseCase" xmi:id="_LJJ5AIF9EeWOp44XR6VXyA" name="Apply all the verified strategy" subject="_KdqhcIF8EeWOp44XR6VXyA">
+ <include xmi:type="uml:Include" xmi:id="_YXgwsIF9EeWOp44XR6VXyA" addition="_PBAUUIF9EeWOp44XR6VXyA"/>
+ <include xmi:type="uml:Include" xmi:id="_XMJw0IF9EeWOp44XR6VXyA" addition="_IIN3kIF9EeWOp44XR6VXyA"/>
+ </ownedUseCase>
+ <ownedUseCase xmi:type="uml:UseCase" xmi:id="_PBAUUIF9EeWOp44XR6VXyA" name="Verify the strategy priority" subject="_KdqhcIF8EeWOp44XR6VXyA"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Actor" xmi:id="_Uz7xsIF8EeWOp44XR6VXyA" name="Toolsmith"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UQi7UIF9EeWOp44XR6VXyA" memberEnd="_UQ0BEIF9EeWOp44XR6VXyA _UQ0BEYF9EeWOp44XR6VXyA">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_UQwWsIF9EeWOp44XR6VXyA" source="org.eclipse.papyrus">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_UQwWsYF9EeWOp44XR6VXyA" key="nature" value="UML_Nature"/>
+ </eAnnotations>
+ <ownedEnd xmi:type="uml:Property" xmi:id="_UQ0BEIF9EeWOp44XR6VXyA" name="apply all the verified strategy" type="_LJJ5AIF9EeWOp44XR6VXyA" association="_UQi7UIF9EeWOp44XR6VXyA"/>
+ <ownedEnd xmi:type="uml:Property" xmi:id="_UQ0BEYF9EeWOp44XR6VXyA" name="create a new element" type="_Dfk4gIF9EeWOp44XR6VXyA" association="_UQi7UIF9EeWOp44XR6VXyA"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_Vgm1AIF9EeWOp44XR6VXyA" memberEnd="_VgoDIIF9EeWOp44XR6VXyA _VgoDIYF9EeWOp44XR6VXyA">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VgncEIF9EeWOp44XR6VXyA" source="org.eclipse.papyrus">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VgncEYF9EeWOp44XR6VXyA" key="nature" value="UML_Nature"/>
+ </eAnnotations>
+ <ownedEnd xmi:type="uml:Property" xmi:id="_VgoDIIF9EeWOp44XR6VXyA" name="create a new element" type="_Dfk4gIF9EeWOp44XR6VXyA" association="_Vgm1AIF9EeWOp44XR6VXyA"/>
+ <ownedEnd xmi:type="uml:Property" xmi:id="_VgoDIYF9EeWOp44XR6VXyA" name="user" type="_RGOI4Hb_EeW7365dAmHglw" association="_Vgm1AIF9EeWOp44XR6VXyA"/>
+ </packagedElement>
+ </packagedElement>
+ <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_IV84zXKKEeWqG7lDxSBeNQ">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_IV84znKKEeWqG7lDxSBeNQ" 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>
+ <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_-ouhkHb4EeWgXf4JsIe8SQ">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-ow90Hb4EeWgXf4JsIe8SQ" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/0.7.0/SysML#/"/>
+ </eAnnotations>
+ <appliedProfile xmi:type="uml:Profile" href="pathmap://SysML_PROFILES/SysML.profile.uml#_TZ_nULU5EduiKqCzJMWbGw"/>
+ </profileApplication>
+ <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_-oyzAHb4EeWgXf4JsIe8SQ">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-oyzAXb4EeWgXf4JsIe8SQ" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/0.7.0/SysML#//modelelements"/>
+ </eAnnotations>
+ <appliedProfile xmi:type="uml:Profile" href="pathmap://SysML_PROFILES/SysML.profile.uml#_Gx8MgLX7EduFmqQsrNB9lw"/>
+ </profileApplication>
+ <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_-o788Hb4EeWgXf4JsIe8SQ">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-o788Xb4EeWgXf4JsIe8SQ" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/0.7.0/SysML#//blocks"/>
+ </eAnnotations>
+ <appliedProfile xmi:type="uml:Profile" href="pathmap://SysML_PROFILES/SysML.profile.uml#_fSw28LX7EduFmqQsrNB9lw"/>
+ </profileApplication>
+ <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_-o8kAHb4EeWgXf4JsIe8SQ">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-o8kAXb4EeWgXf4JsIe8SQ" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/0.7.0/SysML#//portandflows"/>
+ </eAnnotations>
+ <appliedProfile xmi:type="uml:Profile" href="pathmap://SysML_PROFILES/SysML.profile.uml#_rpx28LX7EduFmqQsrNB9lw"/>
+ </profileApplication>
+ <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_-o8kAnb4EeWgXf4JsIe8SQ">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-o8kA3b4EeWgXf4JsIe8SQ" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/0.7.0/SysML#//constraints"/>
+ </eAnnotations>
+ <appliedProfile xmi:type="uml:Profile" href="pathmap://SysML_PROFILES/SysML.profile.uml#_5WYJ0LX7EduFmqQsrNB9lw"/>
+ </profileApplication>
+ <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_-o9LEHb4EeWgXf4JsIe8SQ">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-o9LEXb4EeWgXf4JsIe8SQ" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/0.7.0/SysML#//activities"/>
+ </eAnnotations>
+ <appliedProfile xmi:type="uml:Profile" href="pathmap://SysML_PROFILES/SysML.profile.uml#_C2zXMLX8EduFmqQsrNB9lw"/>
+ </profileApplication>
+ <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_-o9LEnb4EeWgXf4JsIe8SQ">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-o9yIHb4EeWgXf4JsIe8SQ" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/0.7.0/SysML#//allocations"/>
+ </eAnnotations>
+ <appliedProfile xmi:type="uml:Profile" href="pathmap://SysML_PROFILES/SysML.profile.uml#_NxdG4LX8EduFmqQsrNB9lw"/>
+ </profileApplication>
+ <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_-o9yIXb4EeWgXf4JsIe8SQ">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-o9yInb4EeWgXf4JsIe8SQ" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/0.7.0/SysML#//requirements"/>
+ </eAnnotations>
+ <appliedProfile xmi:type="uml:Profile" href="pathmap://SysML_PROFILES/SysML.profile.uml#_OOJC4LX8EduFmqQsrNB9lw"/>
+ </profileApplication>
+ <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_-o-ZMHb4EeWgXf4JsIe8SQ">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-o-ZMXb4EeWgXf4JsIe8SQ" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/0.7.0/SysML#//interactions"/>
+ </eAnnotations>
+ <appliedProfile xmi:type="uml:Profile" href="pathmap://SysML_PROFILES/SysML.profile.uml#_meOioLX8EduFmqQsrNB9lw"/>
+ </profileApplication>
+ <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_-o-ZMnb4EeWgXf4JsIe8SQ">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-o-ZM3b4EeWgXf4JsIe8SQ" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/0.7.0/SysML#//statemachines"/>
+ </eAnnotations>
+ <appliedProfile xmi:type="uml:Profile" href="pathmap://SysML_PROFILES/SysML.profile.uml#_nAF5kLX8EduFmqQsrNB9lw"/>
+ </profileApplication>
+ <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_-o_AQHb4EeWgXf4JsIe8SQ">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-o_AQXb4EeWgXf4JsIe8SQ" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/0.7.0/SysML#//usecases"/>
+ </eAnnotations>
+ <appliedProfile xmi:type="uml:Profile" href="pathmap://SysML_PROFILES/SysML.profile.uml#_neZmMLX8EduFmqQsrNB9lw"/>
+ </profileApplication>
+ </uml:Model>
+ <Requirements:Requirement xmi:id="_b7uaMHb8EeW7365dAmHglw" text="The system should allow an interaction with the strategy repository in order to add new strategies corresponding to the user's needs" base_Class="_b7WmwHb8EeW7365dAmHglw"/>
+ <Requirements:Requirement xmi:id="_YCK4QHcIEeW7365dAmHglw" text="The user should be able to edit every existing strategies" base_Class="_YCKRMHcIEeW7365dAmHglw"/>
+ <Requirements:Requirement xmi:id="_inB-IXcIEeW7365dAmHglw" text="The user should be able to create new strategy repositories" base_Class="_inB-IHcIEeW7365dAmHglw"/>
+ <Requirements:Requirement xmi:id="_6TzVcHcIEeW7365dAmHglw" text="A preference page should be made available to the user in order to display the currently applied strategy models" base_Class="_6TyuYHcIEeW7365dAmHglw"/>
+ <Requirements:Requirement xmi:id="_GioCwHcJEeW7365dAmHglw" text="The user should be able to select which of the preference page's displayed models need to be applied" base_Class="_Gik_cHcJEeW7365dAmHglw"/>
+ <Requirements:Requirement xmi:id="_V2AGMHcJEeW7365dAmHglw" text="The User should be able to view the different strategies inside a model from the preference page" base_Class="_V1-4EHcJEeW7365dAmHglw"/>
+ <Requirements:Requirement xmi:id="_pKf1sHcJEeW7365dAmHglw" text="The user should be able to select individual strategies from the preference page in addition or instead of a whole model selection" base_Class="_pKenkHcJEeW7365dAmHglw"/>
+ <Requirements:Requirement xmi:id="_6Iyi0HcJEeW7365dAmHglw" text="The visualization of the applicable strategies should display the available models" base_Class="_6Ix7wHcJEeW7365dAmHglw"/>
+ <Requirements:Requirement xmi:id="_Rsf_kHccEeW7365dAmHglw" text="The default strategy repositories should be deployed until the user chooses not to" base_Class="_RsfYgHccEeW7365dAmHglw"/>
+ <Requirements:Requirement xmi:id="_aD9kUHcdEeW7365dAmHglw" text="The strategy repository should be deployable dynamically" base_Class="_aD89QHcdEeW7365dAmHglw"/>
+ <Requirements:Requirement xmi:id="_DyNuoHcfEeW7365dAmHglw" text="The user should be able to retrieve any strategy repository from the disk" base_Class="_DyKrUHcfEeW7365dAmHglw"/>
+ <Requirements:Requirement xmi:id="_UKI_UHcfEeW7365dAmHglw" text="The user should be able to create a custom model by selecting specific strategies from different existing models" base_Class="_UKIYQHcfEeW7365dAmHglw"/>
+ <Requirements:Requirement xmi:id="_hdJGcXcfEeW7365dAmHglw" text="The user should be able to save on disk his custom model to be opened or modified later" base_Class="_hdJGcHcfEeW7365dAmHglw"/>
+ <Requirements:Requirement xmi:id="_vT3lsHcfEeW7365dAmHglw" text="As the custom model can contain strategies from different existing models, the preference page should provide a way to quickly locate the model containing each strategy" base_Class="_vT2-oHcfEeW7365dAmHglw"/>
+ <Requirements:Requirement xmi:id="_VetwIHcgEeW7365dAmHglw" text="The user should be able to see if single strategies are already selected in the Basic viewer or if a whole model is already selected in the Advanced viewer" base_Class="_VesiAHcgEeW7365dAmHglw"/>
+ <Requirements:Requirement xmi:id="_25NJ8HcgEeW7365dAmHglw" text="The strategies will be filtered and applied based on the context of the element" base_Class="_25KtsHcgEeW7365dAmHglw"/>
+ <Requirements:Requirement xmi:id="_EjfvsXchEeW7365dAmHglw" text="If multiple strategies can be applied to the same element, they should be ordered by priority and apply the heavier one last" base_Class="_EjfvsHchEeW7365dAmHglw"/>
+ <Requirements:Requirement xmi:id="_JiZnwHcjEeW7365dAmHglw" text="The user should specify the context of the affected element in the strategy" base_Class="_JiZAsHcjEeW7365dAmHglw"/>
+ <Requirements:Requirement xmi:id="_iw6eoHcjEeW7365dAmHglw" text="The strategies should be applicable to elements, created or modified in a diagram as well as in the model explorer" base_Class="_iw53kHcjEeW7365dAmHglw"/>
+ <Requirements:Requirement xmi:id="_cNfYcHckEeW7365dAmHglw" text="The strategies should have the necessary parameters to assert the context and the type of the element they will affect" base_Class="_cNexYHckEeW7365dAmHglw"/>
+ <Requirements:Requirement xmi:id="_qmcbAHckEeW7365dAmHglw" text="If there are predefined and mandatory settings, the user should be able to apply a strategy partialy" base_Class="_qmbz8HckEeW7365dAmHglw"/>
+ <Requirements:Requirement xmi:id="_eVeyIHdEEeWKENLFMGan-w" text="The framework should accomodate new filtering criteria for the strategies" base_Class="_eVJa8HdEEeWKENLFMGan-w"/>
+ <Requirements:Requirement xmi:id="_sWRW4HdFEeWKENLFMGan-w" text="A custom appearance should be made to be able to see the different part of the strategies clearly" base_Class="_sWQv0HdFEeWKENLFMGan-w"/>
+ <Requirements:Requirement xmi:id="_DpEN4HfIEeWKENLFMGan-w" text="If the user created a custom model using the advanced view of the preference page, the model should be remembered and accessed through the strategy preferences path node" base_Class="_DpCYsHfIEeWKENLFMGan-w"/>
+ <Requirements:Requirement xmi:id="_LkVMkHfOEeWKENLFMGan-w" text="The user should be able to select part of the strategy to affect the selected properties" base_Class="_LkUlgHfOEeWKENLFMGan-w"/>
+ <Requirements:Requirement xmi:id="_MffNQHfOEeWKENLFMGan-w" base_Class="_MfemMHfOEeWKENLFMGan-w"/>
+ <Requirements:Requirement xmi:id="_mzVNIHfREeW-pZnxtbVJ7A" text="A strategy should be able to affect multiple properties of a same Element at once" base_Class="_mzEHYHfREeW-pZnxtbVJ7A"/>
+ <Requirements:Requirement xmi:id="_5gYiIHfREeW-pZnxtbVJ7A" text="The strategy should be able to construct the new property value dynamically as well as providing a static value" base_Class="_5gWs8HfREeW-pZnxtbVJ7A"/>
+ <Requirements:Requirement xmi:id="_SC9OIHfUEeW-pZnxtbVJ7A" text="A strategy repository should be tagged by a unique identifier" base_Class="_SC8nEHfUEeW-pZnxtbVJ7A"/>
+ <Requirements:Requirement xmi:id="_bC_EMHfUEeW-pZnxtbVJ7A" text="A strategy should be tagged by a unique identifier" base_Class="_bC92EHfUEeW-pZnxtbVJ7A"/>
+ <Requirements:Requirement xmi:id="_qPJacHfWEeW-pZnxtbVJ7A" text="If there are concurent strategies they should both be apllied or partialy applied" id="" base_Class="_qPFJAHfWEeW-pZnxtbVJ7A"/>
+ <Requirements:Requirement xmi:id="__oG0wHv3EeWZBetlvWKcoQ" text="A foldable property view should be made available to the user to display the details of the selected strategy" base_Class="__nM10Hv3EeWZBetlvWKcoQ"/>
+ <Requirements:Requirement xmi:id="_x5zDsJKKEeW1-qKY3br1Ig" text="A strategy should be able to redefine/override the results of an applied strategy" id="" base_Class="_x5dsgJKKEeW1-qKY3br1Ig"/>
+</xmi:XMI>
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/model/propertylifecycle.ecore b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/model/propertylifecycle.ecore
new file mode 100755
index 00000000000..533039a39f0
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/model/propertylifecycle.ecore
@@ -0,0 +1,89 @@
+<?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="propertylifecycle" nsURI="http://www.eclipse.org/papyrus/propertylifecycle/0.1"
+ nsPrefix="propertylifecycle">
+ <eClassifiers xsi:type="ecore:EClass" name="StrategyTemplate" abstract="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Contains the standard informations needed to identify the strategy sets"/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="decription" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="id" ordered="false" lowerBound="1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="StrategySet" eSuperTypes="#//StrategyTemplate">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Root set containing the defined strategies"/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="strategies" lowerBound="1"
+ upperBound="-1" eType="#//StrategyElement" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="StrategyElement" eSuperTypes="#//ElementTemplate #//StrategyTemplate">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The element affected by this strategy"/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="elementContainers" upperBound="-1"
+ eType="#//ElementContainer" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="elementProperties" lowerBound="1"
+ upperBound="-1" eType="#//ElementProperty" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ElementTemplate" abstract="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Contains the standard informations needed to identify the elements affected by this strategy"/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="baseType" lowerBound="1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="specializedType" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ElementContainer" eSuperTypes="#//ElementTemplate">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The informations defining the required immediate possible container(s) of the element"/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="containersContainer" ordered="false"
+ eType="#//ElementContainer" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ElementProperty">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="These informations are used to select and edit the property"/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="featureLabel" lowerBound="1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="priority" lowerBound="1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EIntegerObject"
+ defaultValueLiteral="0"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="triggers" ordered="false"
+ lowerBound="1" upperBound="-1" eType="#//AbstractTrigger" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="valueProcessor" ordered="false"
+ lowerBound="1" eType="#//AbstractValueProcessor" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="AbstractTrigger" abstract="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Triggers specifying the lifecycle moment(s) from which to apply the processed value to the property"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="AbstractValueProcessor" abstract="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Processor from which to compute the new value of the property"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaProcessor" eSuperTypes="#//AbstractValueProcessor">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Process the new vaue from the specified java class"/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="className" ordered="false"
+ lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="BasicTrigger" eSuperTypes="#//AbstractTrigger">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specify the basic triggers of an element's lifecycle"/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="onCreate" ordered="false"
+ lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="onDelete" ordered="false"
+ lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="onOpen" ordered="false"
+ lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="onMove" ordered="false"
+ lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eClassifiers>
+</ecore:EPackage>
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/model/propertylifecycle.genmodel b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/model/propertylifecycle.genmodel
new file mode 100755
index 00000000000..d7ea405d044
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/model/propertylifecycle.genmodel
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
+ xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" copyrightText="Copyright (c) 2016 CEA LIST and others.&#xD;&#xA; &#xD;&#xA;All rights reserved. This program and the accompanying materials&#xD;&#xA;are made available under the terms of the Eclipse Public License v1.0&#xD;&#xA;which accompanies this distribution, and is available at&#xD;&#xA;http://www.eclipse.org/legal/epl-v10.html&#xD;&#xA;&#xD;&#xA;Contributors:&#xD;&#xA; &#xD;&#xA;Quentin Le Menez (CEA LIST) quentin.lemenez@cea.fr - Initial API and implementation"
+ modelDirectory="/org.eclipse.papyrus.propertylifecycle.model/src-gen" editDirectory="/org.eclipse.papyrus.propertylifecycle.model.edit/src-gen"
+ editorDirectory="/org.eclipse.papyrus.propertylifecycle.model.editor/src-gen"
+ modelPluginID="org.eclipse.papyrus.propertylifecycle.model" templateDirectory=""
+ redirection="" modelName="Propertylifecycle" modelPluginClass="" editPluginClass="org.eclipse.papyrus.propertylifecycle.provider.PropertylifecycleEditPlugin"
+ editorPluginClass="org.eclipse.papyrus.propertylifecycle.presentation.PropertylifecycleEditorPlugin"
+ nonNLSMarkers="true" rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container"
+ codeFormatting="true" commentFormatting="true" testsDirectory="/org.eclipse.papyrus.propertylifecycle.model.tests/src-gen"
+ testSuiteClass="org.eclipse.papyrus.propertylifecycle.tests.PropertylifecycleAllTests"
+ importerID="org.eclipse.emf.importer.ecore" complianceLevel="8.0" copyrightFields="false"
+ editPluginID="org.eclipse.papyrus.propertylifecycle.model.edit" editorPluginID="org.eclipse.papyrus.propertylifecycle.model.editor"
+ operationReflection="true" cleanup="true">
+ <foreignModel>propertylifecycle.ecore</foreignModel>
+ <genPackages prefix="Propertylifecycle" basePackage="org.eclipse.papyrus" resource="XMI"
+ disposableProviderFactory="true" extensibleProviderFactory="true" contentTypeIdentifier="org.eclipse.papyrus.propertylifecycle"
+ ecorePackage="propertylifecycle.ecore#/">
+ <genClasses image="false" ecoreClass="propertylifecycle.ecore#//StrategyTemplate">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute propertylifecycle.ecore#//StrategyTemplate/name"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute propertylifecycle.ecore#//StrategyTemplate/decription"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute propertylifecycle.ecore#//StrategyTemplate/id"/>
+ </genClasses>
+ <genClasses ecoreClass="propertylifecycle.ecore#//StrategySet">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference propertylifecycle.ecore#//StrategySet/strategies"/>
+ </genClasses>
+ <genClasses ecoreClass="propertylifecycle.ecore#//StrategyElement">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference propertylifecycle.ecore#//StrategyElement/elementContainers"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference propertylifecycle.ecore#//StrategyElement/elementProperties"/>
+ </genClasses>
+ <genClasses image="false" ecoreClass="propertylifecycle.ecore#//ElementTemplate">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute propertylifecycle.ecore#//ElementTemplate/baseType"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute propertylifecycle.ecore#//ElementTemplate/specializedType"/>
+ </genClasses>
+ <genClasses ecoreClass="propertylifecycle.ecore#//ElementContainer">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference propertylifecycle.ecore#//ElementContainer/containersContainer"/>
+ </genClasses>
+ <genClasses ecoreClass="propertylifecycle.ecore#//ElementProperty">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute propertylifecycle.ecore#//ElementProperty/featureLabel"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute propertylifecycle.ecore#//ElementProperty/priority"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference propertylifecycle.ecore#//ElementProperty/triggers"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference propertylifecycle.ecore#//ElementProperty/valueProcessor"/>
+ </genClasses>
+ <genClasses image="false" ecoreClass="propertylifecycle.ecore#//AbstractTrigger"/>
+ <genClasses image="false" ecoreClass="propertylifecycle.ecore#//AbstractValueProcessor"/>
+ <genClasses ecoreClass="propertylifecycle.ecore#//JavaProcessor">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute propertylifecycle.ecore#//JavaProcessor/className"/>
+ </genClasses>
+ <genClasses ecoreClass="propertylifecycle.ecore#//BasicTrigger">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute propertylifecycle.ecore#//BasicTrigger/onCreate"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute propertylifecycle.ecore#//BasicTrigger/onDelete"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute propertylifecycle.ecore#//BasicTrigger/onOpen"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute propertylifecycle.ecore#//BasicTrigger/onMove"/>
+ </genClasses>
+ </genPackages>
+</genmodel:GenModel>
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/plugin.properties b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/plugin.properties
new file mode 100755
index 00000000000..37c7ff58c31
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/plugin.properties
@@ -0,0 +1,16 @@
+# Copyright (c) 2016 CEA LIST and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+#
+# Quentin Le Menez (CEA LIST) quentin.lemenez@cea.fr - Initial API and implementation
+
+pluginName = Propertylifecycle Model
+providerName = www.example.org
+
+_UI_Propertylifecycle_content_type = Propertylifecycle File
+_UI_UMLpropertylifecycle_content_type = UMLpropertylifecycle File
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/plugin.xml b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/plugin.xml
new file mode 100755
index 00000000000..d241dfe9767
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/plugin.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+ Copyright (c) 2016 CEA LIST and others.
+
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License v1.0
+ which accompanies this distribution, and is available at
+ http://www.eclipse.org/legal/epl-v10.html
+
+ Contributors:
+
+ Quentin Le Menez (CEA LIST) quentin.lemenez@cea.fr - Initial API and implementation
+-->
+
+<plugin>
+
+ <extension point="org.eclipse.emf.ecore.generated_package">
+ <!-- @generated propertylifecycle -->
+ <package
+ uri="http://www.eclipse.org/papyrus/infra/propertylifecycle/1.0"
+ class="org.eclipse.papyrus.propertylifecycle.PropertylifecyclePackage"
+ genModel="model/propertylifecycle.genmodel"/>
+ </extension>
+
+ <extension point="org.eclipse.emf.ecore.content_parser">
+ <!-- @generated propertylifecycle -->
+ <parser
+ contentTypeIdentifier="org.eclipse.papyrus.infra.propertylifecycle"
+ class="org.eclipse.papyrus.propertylifecycle.util.PropertylifecycleResourceFactoryImpl"/>
+ </extension>
+
+ <extension point="org.eclipse.core.contenttype.contentTypes">
+ <!-- @generated propertylifecycle -->
+ <content-type
+ base-type="org.eclipse.emf.ecore.xmi"
+ file-extensions="propertylifecycle"
+ id="org.eclipse.papyrus.infra.propertylifecycle"
+ name="%_UI_Propertylifecycle_content_type"
+ priority="normal">
+ <describer class="org.eclipse.emf.ecore.xmi.impl.RootXMLContentHandlerImpl$Describer">
+ <parameter name="namespace" value="http://www.eclipse.org/papyrus/infra/propertylifecycle/1.0"/>
+ <parameter name="kind" value="xmi"/>
+ </describer>
+ </content-type>
+ </extension>
+
+</plugin>
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/pom.xml b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/pom.xml
new file mode 100755
index 00000000000..37c9f9d14bf
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/pom.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <artifactId>org.eclipse.papyrus.infra.propertylifecycle.model</artifactId>
+ <version>0.0.1.qualifier</version>
+ <groupId>org.eclipse.papyrus</groupId>
+ <packaging>eclipse-plugin</packaging>
+ <parent>
+ <groupId>org.eclipse.papyrus</groupId>
+ <artifactId>org.eclipse.papyrus.infra.propertylifecycle</artifactId>
+ <version>0.0.1.qualifier</version>
+ <relativePath>../org.eclipse.papyrus.infra.propertylifecycle/pom.xml</relativePath>
+ </parent>
+</project>
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/schema/propertylifecyclestrategyset.exsd b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/schema/propertylifecyclestrategyset.exsd
new file mode 100755
index 00000000000..bda9ed55387
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/schema/propertylifecyclestrategyset.exsd
@@ -0,0 +1,106 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.eclipse.papyrus.infra.propertylifecycle.model" xmlns="http://www.w3.org/2001/XMLSchema">
+<annotation>
+ <appInfo>
+ <meta.schema plugin="org.eclipse.papyrus.infra.propertylifecycle.model" id="propertylifecyclestrategyset" name="Property Lifecycle Strategy Set"/>
+ </appInfo>
+ <documentation>
+ [Enter description of this extension point.]
+ </documentation>
+ </annotation>
+
+ <element name="extension">
+ <annotation>
+ <appInfo>
+ <meta.element />
+ </appInfo>
+ </annotation>
+ <complexType>
+ <sequence minOccurs="1" maxOccurs="unbounded">
+ <element ref="strategySet"/>
+ </sequence>
+ <attribute name="point" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="id" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="name" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appInfo>
+ <meta.attribute translatable="true"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <element name="strategySet">
+ <complexType>
+ <attribute name="id" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="path" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="since"/>
+ </appInfo>
+ <documentation>
+ [Enter the first release in which this extension point appears.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="examples"/>
+ </appInfo>
+ <documentation>
+ [Enter extension point usage example here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="apiinfo"/>
+ </appInfo>
+ <documentation>
+ [Enter API information here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="implementation"/>
+ </appInfo>
+ <documentation>
+ [Enter information about supplied implementation of this extension point.]
+ </documentation>
+ </annotation>
+
+
+</schema>
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/AbstractTrigger.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/AbstractTrigger.java
new file mode 100755
index 00000000000..575a6f6653f
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/AbstractTrigger.java
@@ -0,0 +1,32 @@
+/**
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *
+ * Quentin Le Menez (CEA LIST) quentin.lemenez@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.propertylifecycle;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Abstract Trigger</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * Triggers specifying the lifecycle moment(s) from which to apply the processed value to the property
+ * <!-- end-model-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.propertylifecycle.PropertylifecyclePackage#getAbstractTrigger()
+ * @model abstract="true"
+ * @generated
+ */
+public interface AbstractTrigger extends EObject {
+} // AbstractTrigger
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/AbstractValueProcessor.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/AbstractValueProcessor.java
new file mode 100755
index 00000000000..1860a609377
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/AbstractValueProcessor.java
@@ -0,0 +1,32 @@
+/**
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *
+ * Quentin Le Menez (CEA LIST) quentin.lemenez@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.propertylifecycle;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Abstract Value Processor</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * Processor from which to compute the new value of the property
+ * <!-- end-model-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.propertylifecycle.PropertylifecyclePackage#getAbstractValueProcessor()
+ * @model abstract="true"
+ * @generated
+ */
+public interface AbstractValueProcessor extends EObject {
+} // AbstractValueProcessor
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/BasicTrigger.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/BasicTrigger.java
new file mode 100755
index 00000000000..542af57d31f
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/BasicTrigger.java
@@ -0,0 +1,156 @@
+/**
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *
+ * Quentin Le Menez (CEA LIST) quentin.lemenez@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.propertylifecycle;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Basic Trigger</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * Specify the basic triggers of an element's lifecycle
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.propertylifecycle.BasicTrigger#isOnCreate <em>On Create</em>}</li>
+ * <li>{@link org.eclipse.papyrus.propertylifecycle.BasicTrigger#isOnDelete <em>On Delete</em>}</li>
+ * <li>{@link org.eclipse.papyrus.propertylifecycle.BasicTrigger#isOnOpen <em>On Open</em>}</li>
+ * <li>{@link org.eclipse.papyrus.propertylifecycle.BasicTrigger#isOnMove <em>On Move</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.propertylifecycle.PropertylifecyclePackage#getBasicTrigger()
+ * @model
+ * @generated
+ */
+public interface BasicTrigger extends AbstractTrigger {
+ /**
+ * Returns the value of the '<em><b>On Create</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>On Create</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>On Create</em>' attribute.
+ * @see #setOnCreate(boolean)
+ * @see org.eclipse.papyrus.propertylifecycle.PropertylifecyclePackage#getBasicTrigger_OnCreate()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ boolean isOnCreate();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.propertylifecycle.BasicTrigger#isOnCreate <em>On Create</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>On Create</em>' attribute.
+ * @see #isOnCreate()
+ * @generated
+ */
+ void setOnCreate(boolean value);
+
+ /**
+ * Returns the value of the '<em><b>On Delete</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>On Delete</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>On Delete</em>' attribute.
+ * @see #setOnDelete(boolean)
+ * @see org.eclipse.papyrus.propertylifecycle.PropertylifecyclePackage#getBasicTrigger_OnDelete()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ boolean isOnDelete();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.propertylifecycle.BasicTrigger#isOnDelete <em>On Delete</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>On Delete</em>' attribute.
+ * @see #isOnDelete()
+ * @generated
+ */
+ void setOnDelete(boolean value);
+
+ /**
+ * Returns the value of the '<em><b>On Open</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>On Open</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>On Open</em>' attribute.
+ * @see #setOnOpen(boolean)
+ * @see org.eclipse.papyrus.propertylifecycle.PropertylifecyclePackage#getBasicTrigger_OnOpen()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ boolean isOnOpen();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.propertylifecycle.BasicTrigger#isOnOpen <em>On Open</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>On Open</em>' attribute.
+ * @see #isOnOpen()
+ * @generated
+ */
+ void setOnOpen(boolean value);
+
+ /**
+ * Returns the value of the '<em><b>On Move</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>On Move</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>On Move</em>' attribute.
+ * @see #setOnMove(boolean)
+ * @see org.eclipse.papyrus.propertylifecycle.PropertylifecyclePackage#getBasicTrigger_OnMove()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ boolean isOnMove();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.propertylifecycle.BasicTrigger#isOnMove <em>On Move</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>On Move</em>' attribute.
+ * @see #isOnMove()
+ * @generated
+ */
+ void setOnMove(boolean value);
+
+} // BasicTrigger
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/ElementContainer.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/ElementContainer.java
new file mode 100755
index 00000000000..0fa70d0bc2e
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/ElementContainer.java
@@ -0,0 +1,66 @@
+/**
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *
+ * Quentin Le Menez (CEA LIST) quentin.lemenez@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.propertylifecycle;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Element Container</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * The informations defining the required immediate possible container(s) of the element
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.propertylifecycle.ElementContainer#getContainersContainer <em>Containers Container</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.propertylifecycle.PropertylifecyclePackage#getElementContainer()
+ * @model
+ * @generated
+ */
+public interface ElementContainer extends ElementTemplate {
+ /**
+ * Returns the value of the '<em><b>Containers Container</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Containers Container</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>Containers Container</em>' containment reference.
+ * @see #setContainersContainer(ElementContainer)
+ * @see org.eclipse.papyrus.propertylifecycle.PropertylifecyclePackage#getElementContainer_ContainersContainer()
+ * @model containment="true" ordered="false"
+ * @generated
+ */
+ ElementContainer getContainersContainer();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.propertylifecycle.ElementContainer#getContainersContainer <em>Containers Container</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>Containers Container</em>' containment reference.
+ * @see #getContainersContainer()
+ * @generated
+ */
+ void setContainersContainer(ElementContainer value);
+
+} // ElementContainer
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/ElementProperty.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/ElementProperty.java
new file mode 100755
index 00000000000..29ccd839489
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/ElementProperty.java
@@ -0,0 +1,148 @@
+/**
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *
+ * Quentin Le Menez (CEA LIST) quentin.lemenez@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.propertylifecycle;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Element Property</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * These informations are used to select and edit the property
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.propertylifecycle.ElementProperty#getFeatureLabel <em>Feature Label</em>}</li>
+ * <li>{@link org.eclipse.papyrus.propertylifecycle.ElementProperty#getPriority <em>Priority</em>}</li>
+ * <li>{@link org.eclipse.papyrus.propertylifecycle.ElementProperty#getTriggers <em>Triggers</em>}</li>
+ * <li>{@link org.eclipse.papyrus.propertylifecycle.ElementProperty#getValueProcessor <em>Value Processor</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.propertylifecycle.PropertylifecyclePackage#getElementProperty()
+ * @model
+ * @generated
+ */
+public interface ElementProperty extends EObject {
+ /**
+ * Returns the value of the '<em><b>Feature Label</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Feature Label</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>Feature Label</em>' attribute.
+ * @see #setFeatureLabel(String)
+ * @see org.eclipse.papyrus.propertylifecycle.PropertylifecyclePackage#getElementProperty_FeatureLabel()
+ * @model required="true"
+ * @generated
+ */
+ String getFeatureLabel();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.propertylifecycle.ElementProperty#getFeatureLabel <em>Feature Label</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>Feature Label</em>' attribute.
+ * @see #getFeatureLabel()
+ * @generated
+ */
+ void setFeatureLabel(String value);
+
+ /**
+ * Returns the value of the '<em><b>Priority</b></em>' attribute.
+ * The default value is <code>"0"</code>.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Priority</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>Priority</em>' attribute.
+ * @see #setPriority(Integer)
+ * @see org.eclipse.papyrus.propertylifecycle.PropertylifecyclePackage#getElementProperty_Priority()
+ * @model default="0" required="true"
+ * @generated
+ */
+ Integer getPriority();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.propertylifecycle.ElementProperty#getPriority <em>Priority</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>Priority</em>' attribute.
+ * @see #getPriority()
+ * @generated
+ */
+ void setPriority(Integer value);
+
+ /**
+ * Returns the value of the '<em><b>Triggers</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.papyrus.propertylifecycle.AbstractTrigger}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Triggers</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>Triggers</em>' containment reference list.
+ * @see org.eclipse.papyrus.propertylifecycle.PropertylifecyclePackage#getElementProperty_Triggers()
+ * @model containment="true" required="true" ordered="false"
+ * @generated
+ */
+ EList<AbstractTrigger> getTriggers();
+
+ /**
+ * Returns the value of the '<em><b>Value Processor</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Value Processor</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>Value Processor</em>' containment reference.
+ * @see #setValueProcessor(AbstractValueProcessor)
+ * @see org.eclipse.papyrus.propertylifecycle.PropertylifecyclePackage#getElementProperty_ValueProcessor()
+ * @model containment="true" required="true" ordered="false"
+ * @generated
+ */
+ AbstractValueProcessor getValueProcessor();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.propertylifecycle.ElementProperty#getValueProcessor <em>Value Processor</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>Value Processor</em>' containment reference.
+ * @see #getValueProcessor()
+ * @generated
+ */
+ void setValueProcessor(AbstractValueProcessor value);
+
+} // ElementProperty
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/ElementTemplate.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/ElementTemplate.java
new file mode 100755
index 00000000000..99c4d468cf9
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/ElementTemplate.java
@@ -0,0 +1,97 @@
+/**
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *
+ * Quentin Le Menez (CEA LIST) quentin.lemenez@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.propertylifecycle;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Element Template</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * Contains the standard informations needed to identify the elements affected by this strategy
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.propertylifecycle.ElementTemplate#getBaseType <em>Base Type</em>}</li>
+ * <li>{@link org.eclipse.papyrus.propertylifecycle.ElementTemplate#getSpecializedType <em>Specialized Type</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.propertylifecycle.PropertylifecyclePackage#getElementTemplate()
+ * @model abstract="true"
+ * @generated
+ */
+public interface ElementTemplate extends EObject {
+ /**
+ * Returns the value of the '<em><b>Base Type</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base 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>Base Type</em>' attribute.
+ * @see #setBaseType(String)
+ * @see org.eclipse.papyrus.propertylifecycle.PropertylifecyclePackage#getElementTemplate_BaseType()
+ * @model required="true"
+ * @generated
+ */
+ String getBaseType();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.propertylifecycle.ElementTemplate#getBaseType <em>Base Type</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>Base Type</em>' attribute.
+ * @see #getBaseType()
+ * @generated
+ */
+ void setBaseType(String value);
+
+ /**
+ * Returns the value of the '<em><b>Specialized Type</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specialized 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>Specialized Type</em>' attribute.
+ * @see #setSpecializedType(String)
+ * @see org.eclipse.papyrus.propertylifecycle.PropertylifecyclePackage#getElementTemplate_SpecializedType()
+ * @model
+ * @generated
+ */
+ String getSpecializedType();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.propertylifecycle.ElementTemplate#getSpecializedType <em>Specialized Type</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>Specialized Type</em>' attribute.
+ * @see #getSpecializedType()
+ * @generated
+ */
+ void setSpecializedType(String value);
+
+} // ElementTemplate
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/JavaProcessor.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/JavaProcessor.java
new file mode 100755
index 00000000000..69d736feef6
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/JavaProcessor.java
@@ -0,0 +1,66 @@
+/**
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *
+ * Quentin Le Menez (CEA LIST) quentin.lemenez@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.propertylifecycle;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Java Processor</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * Process the new vaue from the specified java class
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.propertylifecycle.JavaProcessor#getClassName <em>Class Name</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.propertylifecycle.PropertylifecyclePackage#getJavaProcessor()
+ * @model
+ * @generated
+ */
+public interface JavaProcessor extends AbstractValueProcessor {
+ /**
+ * Returns the value of the '<em><b>Class Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Class 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>Class Name</em>' attribute.
+ * @see #setClassName(String)
+ * @see org.eclipse.papyrus.propertylifecycle.PropertylifecyclePackage#getJavaProcessor_ClassName()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ String getClassName();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.propertylifecycle.JavaProcessor#getClassName <em>Class Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>Class Name</em>' attribute.
+ * @see #getClassName()
+ * @generated
+ */
+ void setClassName(String value);
+
+} // JavaProcessor
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/PropertylifecycleFactory.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/PropertylifecycleFactory.java
new file mode 100755
index 00000000000..2ef95b8e206
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/PropertylifecycleFactory.java
@@ -0,0 +1,106 @@
+/**
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *
+ * Quentin Le Menez (CEA LIST) quentin.lemenez@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.propertylifecycle;
+
+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.propertylifecycle.PropertylifecyclePackage
+ * @generated
+ */
+public interface PropertylifecycleFactory extends EFactory {
+ /**
+ * The singleton instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ PropertylifecycleFactory eINSTANCE = org.eclipse.papyrus.propertylifecycle.impl.PropertylifecycleFactoryImpl.init();
+
+ /**
+ * Returns a new object of class '<em>Strategy Set</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @return a new object of class '<em>Strategy Set</em>'.
+ * @generated
+ */
+ StrategySet createStrategySet();
+
+ /**
+ * Returns a new object of class '<em>Strategy Element</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @return a new object of class '<em>Strategy Element</em>'.
+ * @generated
+ */
+ StrategyElement createStrategyElement();
+
+ /**
+ * Returns a new object of class '<em>Element Container</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @return a new object of class '<em>Element Container</em>'.
+ * @generated
+ */
+ ElementContainer createElementContainer();
+
+ /**
+ * Returns a new object of class '<em>Element Property</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @return a new object of class '<em>Element Property</em>'.
+ * @generated
+ */
+ ElementProperty createElementProperty();
+
+ /**
+ * Returns a new object of class '<em>Java Processor</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @return a new object of class '<em>Java Processor</em>'.
+ * @generated
+ */
+ JavaProcessor createJavaProcessor();
+
+ /**
+ * Returns a new object of class '<em>Basic Trigger</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @return a new object of class '<em>Basic Trigger</em>'.
+ * @generated
+ */
+ BasicTrigger createBasicTrigger();
+
+ /**
+ * Returns the package supported by this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @return the package supported by this factory.
+ * @generated
+ */
+ PropertylifecyclePackage getPropertylifecyclePackage();
+
+} // PropertylifecycleFactory
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/PropertylifecyclePackage.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/PropertylifecyclePackage.java
new file mode 100755
index 00000000000..948d9b9dfc3
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/PropertylifecyclePackage.java
@@ -0,0 +1,1299 @@
+/**
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *
+ * Quentin Le Menez (CEA LIST) quentin.lemenez@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.propertylifecycle;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+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.propertylifecycle.PropertylifecycleFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface PropertylifecyclePackage extends EPackage {
+ /**
+ * The package name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ String eNAME = "propertylifecycle"; //$NON-NLS-1$
+
+ /**
+ * The package namespace URI.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ String eNS_URI = "http://www.eclipse.org/papyrus/infra/propertylifecycle/1.0"; //$NON-NLS-1$
+
+ /**
+ * The package namespace name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ String eNS_PREFIX = "propertylifecycle"; //$NON-NLS-1$
+
+ /**
+ * The package content type ID.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ String eCONTENT_TYPE = "org.eclipse.papyrus.infra.propertylifecycle"; //$NON-NLS-1$
+
+ /**
+ * The singleton instance of the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ PropertylifecyclePackage eINSTANCE = org.eclipse.papyrus.propertylifecycle.impl.PropertylifecyclePackageImpl.init();
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.propertylifecycle.impl.StrategyTemplateImpl <em>Strategy Template</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @see org.eclipse.papyrus.propertylifecycle.impl.StrategyTemplateImpl
+ * @see org.eclipse.papyrus.propertylifecycle.impl.PropertylifecyclePackageImpl#getStrategyTemplate()
+ * @generated
+ */
+ int STRATEGY_TEMPLATE = 0;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int STRATEGY_TEMPLATE__NAME = 0;
+
+ /**
+ * The feature id for the '<em><b>Decription</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int STRATEGY_TEMPLATE__DECRIPTION = 1;
+
+ /**
+ * The feature id for the '<em><b>Id</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int STRATEGY_TEMPLATE__ID = 2;
+
+ /**
+ * The number of structural features of the '<em>Strategy Template</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int STRATEGY_TEMPLATE_FEATURE_COUNT = 3;
+
+ /**
+ * The number of operations of the '<em>Strategy Template</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int STRATEGY_TEMPLATE_OPERATION_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.propertylifecycle.impl.StrategySetImpl <em>Strategy Set</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @see org.eclipse.papyrus.propertylifecycle.impl.StrategySetImpl
+ * @see org.eclipse.papyrus.propertylifecycle.impl.PropertylifecyclePackageImpl#getStrategySet()
+ * @generated
+ */
+ int STRATEGY_SET = 1;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int STRATEGY_SET__NAME = STRATEGY_TEMPLATE__NAME;
+
+ /**
+ * The feature id for the '<em><b>Decription</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int STRATEGY_SET__DECRIPTION = STRATEGY_TEMPLATE__DECRIPTION;
+
+ /**
+ * The feature id for the '<em><b>Id</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int STRATEGY_SET__ID = STRATEGY_TEMPLATE__ID;
+
+ /**
+ * The feature id for the '<em><b>Strategies</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int STRATEGY_SET__STRATEGIES = STRATEGY_TEMPLATE_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Strategy Set</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int STRATEGY_SET_FEATURE_COUNT = STRATEGY_TEMPLATE_FEATURE_COUNT + 1;
+
+ /**
+ * The number of operations of the '<em>Strategy Set</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int STRATEGY_SET_OPERATION_COUNT = STRATEGY_TEMPLATE_OPERATION_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.propertylifecycle.impl.ElementTemplateImpl <em>Element Template</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @see org.eclipse.papyrus.propertylifecycle.impl.ElementTemplateImpl
+ * @see org.eclipse.papyrus.propertylifecycle.impl.PropertylifecyclePackageImpl#getElementTemplate()
+ * @generated
+ */
+ int ELEMENT_TEMPLATE = 3;
+
+ /**
+ * The feature id for the '<em><b>Base Type</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int ELEMENT_TEMPLATE__BASE_TYPE = 0;
+
+ /**
+ * The feature id for the '<em><b>Specialized Type</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int ELEMENT_TEMPLATE__SPECIALIZED_TYPE = 1;
+
+ /**
+ * The number of structural features of the '<em>Element Template</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int ELEMENT_TEMPLATE_FEATURE_COUNT = 2;
+
+ /**
+ * The number of operations of the '<em>Element Template</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int ELEMENT_TEMPLATE_OPERATION_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.propertylifecycle.impl.StrategyElementImpl <em>Strategy Element</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @see org.eclipse.papyrus.propertylifecycle.impl.StrategyElementImpl
+ * @see org.eclipse.papyrus.propertylifecycle.impl.PropertylifecyclePackageImpl#getStrategyElement()
+ * @generated
+ */
+ int STRATEGY_ELEMENT = 2;
+
+ /**
+ * The feature id for the '<em><b>Base Type</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int STRATEGY_ELEMENT__BASE_TYPE = ELEMENT_TEMPLATE__BASE_TYPE;
+
+ /**
+ * The feature id for the '<em><b>Specialized Type</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int STRATEGY_ELEMENT__SPECIALIZED_TYPE = ELEMENT_TEMPLATE__SPECIALIZED_TYPE;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int STRATEGY_ELEMENT__NAME = ELEMENT_TEMPLATE_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Decription</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int STRATEGY_ELEMENT__DECRIPTION = ELEMENT_TEMPLATE_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Id</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int STRATEGY_ELEMENT__ID = ELEMENT_TEMPLATE_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Element Containers</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int STRATEGY_ELEMENT__ELEMENT_CONTAINERS = ELEMENT_TEMPLATE_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Element Properties</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int STRATEGY_ELEMENT__ELEMENT_PROPERTIES = ELEMENT_TEMPLATE_FEATURE_COUNT + 4;
+
+ /**
+ * The number of structural features of the '<em>Strategy Element</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int STRATEGY_ELEMENT_FEATURE_COUNT = ELEMENT_TEMPLATE_FEATURE_COUNT + 5;
+
+ /**
+ * The number of operations of the '<em>Strategy Element</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int STRATEGY_ELEMENT_OPERATION_COUNT = ELEMENT_TEMPLATE_OPERATION_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.propertylifecycle.impl.ElementContainerImpl <em>Element Container</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @see org.eclipse.papyrus.propertylifecycle.impl.ElementContainerImpl
+ * @see org.eclipse.papyrus.propertylifecycle.impl.PropertylifecyclePackageImpl#getElementContainer()
+ * @generated
+ */
+ int ELEMENT_CONTAINER = 4;
+
+ /**
+ * The feature id for the '<em><b>Base Type</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int ELEMENT_CONTAINER__BASE_TYPE = ELEMENT_TEMPLATE__BASE_TYPE;
+
+ /**
+ * The feature id for the '<em><b>Specialized Type</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int ELEMENT_CONTAINER__SPECIALIZED_TYPE = ELEMENT_TEMPLATE__SPECIALIZED_TYPE;
+
+ /**
+ * The feature id for the '<em><b>Containers Container</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int ELEMENT_CONTAINER__CONTAINERS_CONTAINER = ELEMENT_TEMPLATE_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Element Container</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int ELEMENT_CONTAINER_FEATURE_COUNT = ELEMENT_TEMPLATE_FEATURE_COUNT + 1;
+
+ /**
+ * The number of operations of the '<em>Element Container</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int ELEMENT_CONTAINER_OPERATION_COUNT = ELEMENT_TEMPLATE_OPERATION_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.propertylifecycle.impl.ElementPropertyImpl <em>Element Property</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @see org.eclipse.papyrus.propertylifecycle.impl.ElementPropertyImpl
+ * @see org.eclipse.papyrus.propertylifecycle.impl.PropertylifecyclePackageImpl#getElementProperty()
+ * @generated
+ */
+ int ELEMENT_PROPERTY = 5;
+
+ /**
+ * The feature id for the '<em><b>Feature Label</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int ELEMENT_PROPERTY__FEATURE_LABEL = 0;
+
+ /**
+ * The feature id for the '<em><b>Priority</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int ELEMENT_PROPERTY__PRIORITY = 1;
+
+ /**
+ * The feature id for the '<em><b>Triggers</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int ELEMENT_PROPERTY__TRIGGERS = 2;
+
+ /**
+ * The feature id for the '<em><b>Value Processor</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int ELEMENT_PROPERTY__VALUE_PROCESSOR = 3;
+
+ /**
+ * The number of structural features of the '<em>Element Property</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int ELEMENT_PROPERTY_FEATURE_COUNT = 4;
+
+ /**
+ * The number of operations of the '<em>Element Property</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int ELEMENT_PROPERTY_OPERATION_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.propertylifecycle.impl.AbstractTriggerImpl <em>Abstract Trigger</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @see org.eclipse.papyrus.propertylifecycle.impl.AbstractTriggerImpl
+ * @see org.eclipse.papyrus.propertylifecycle.impl.PropertylifecyclePackageImpl#getAbstractTrigger()
+ * @generated
+ */
+ int ABSTRACT_TRIGGER = 6;
+
+ /**
+ * The number of structural features of the '<em>Abstract Trigger</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_TRIGGER_FEATURE_COUNT = 0;
+
+ /**
+ * The number of operations of the '<em>Abstract Trigger</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_TRIGGER_OPERATION_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.propertylifecycle.impl.AbstractValueProcessorImpl <em>Abstract Value Processor</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @see org.eclipse.papyrus.propertylifecycle.impl.AbstractValueProcessorImpl
+ * @see org.eclipse.papyrus.propertylifecycle.impl.PropertylifecyclePackageImpl#getAbstractValueProcessor()
+ * @generated
+ */
+ int ABSTRACT_VALUE_PROCESSOR = 7;
+
+ /**
+ * The number of structural features of the '<em>Abstract Value Processor</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_VALUE_PROCESSOR_FEATURE_COUNT = 0;
+
+ /**
+ * The number of operations of the '<em>Abstract Value Processor</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_VALUE_PROCESSOR_OPERATION_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.propertylifecycle.impl.JavaProcessorImpl <em>Java Processor</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @see org.eclipse.papyrus.propertylifecycle.impl.JavaProcessorImpl
+ * @see org.eclipse.papyrus.propertylifecycle.impl.PropertylifecyclePackageImpl#getJavaProcessor()
+ * @generated
+ */
+ int JAVA_PROCESSOR = 8;
+
+ /**
+ * The feature id for the '<em><b>Class Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int JAVA_PROCESSOR__CLASS_NAME = ABSTRACT_VALUE_PROCESSOR_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Java Processor</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int JAVA_PROCESSOR_FEATURE_COUNT = ABSTRACT_VALUE_PROCESSOR_FEATURE_COUNT + 1;
+
+ /**
+ * The number of operations of the '<em>Java Processor</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int JAVA_PROCESSOR_OPERATION_COUNT = ABSTRACT_VALUE_PROCESSOR_OPERATION_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.propertylifecycle.impl.BasicTriggerImpl <em>Basic Trigger</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @see org.eclipse.papyrus.propertylifecycle.impl.BasicTriggerImpl
+ * @see org.eclipse.papyrus.propertylifecycle.impl.PropertylifecyclePackageImpl#getBasicTrigger()
+ * @generated
+ */
+ int BASIC_TRIGGER = 9;
+
+ /**
+ * The feature id for the '<em><b>On Create</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int BASIC_TRIGGER__ON_CREATE = ABSTRACT_TRIGGER_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>On Delete</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int BASIC_TRIGGER__ON_DELETE = ABSTRACT_TRIGGER_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>On Open</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int BASIC_TRIGGER__ON_OPEN = ABSTRACT_TRIGGER_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>On Move</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int BASIC_TRIGGER__ON_MOVE = ABSTRACT_TRIGGER_FEATURE_COUNT + 3;
+
+ /**
+ * The number of structural features of the '<em>Basic Trigger</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int BASIC_TRIGGER_FEATURE_COUNT = ABSTRACT_TRIGGER_FEATURE_COUNT + 4;
+
+ /**
+ * The number of operations of the '<em>Basic Trigger</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int BASIC_TRIGGER_OPERATION_COUNT = ABSTRACT_TRIGGER_OPERATION_COUNT + 0;
+
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.propertylifecycle.StrategyTemplate <em>Strategy Template</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @return the meta object for class '<em>Strategy Template</em>'.
+ * @see org.eclipse.papyrus.propertylifecycle.StrategyTemplate
+ * @generated
+ */
+ EClass getStrategyTemplate();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.propertylifecycle.StrategyTemplate#getName <em>Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @return the meta object for the attribute '<em>Name</em>'.
+ * @see org.eclipse.papyrus.propertylifecycle.StrategyTemplate#getName()
+ * @see #getStrategyTemplate()
+ * @generated
+ */
+ EAttribute getStrategyTemplate_Name();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.propertylifecycle.StrategyTemplate#getDecription <em>Decription</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @return the meta object for the attribute '<em>Decription</em>'.
+ * @see org.eclipse.papyrus.propertylifecycle.StrategyTemplate#getDecription()
+ * @see #getStrategyTemplate()
+ * @generated
+ */
+ EAttribute getStrategyTemplate_Decription();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.propertylifecycle.StrategyTemplate#getId <em>Id</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @return the meta object for the attribute '<em>Id</em>'.
+ * @see org.eclipse.papyrus.propertylifecycle.StrategyTemplate#getId()
+ * @see #getStrategyTemplate()
+ * @generated
+ */
+ EAttribute getStrategyTemplate_Id();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.propertylifecycle.StrategySet <em>Strategy Set</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @return the meta object for class '<em>Strategy Set</em>'.
+ * @see org.eclipse.papyrus.propertylifecycle.StrategySet
+ * @generated
+ */
+ EClass getStrategySet();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.papyrus.propertylifecycle.StrategySet#getStrategies <em>Strategies</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @return the meta object for the containment reference list '<em>Strategies</em>'.
+ * @see org.eclipse.papyrus.propertylifecycle.StrategySet#getStrategies()
+ * @see #getStrategySet()
+ * @generated
+ */
+ EReference getStrategySet_Strategies();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.propertylifecycle.StrategyElement <em>Strategy Element</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @return the meta object for class '<em>Strategy Element</em>'.
+ * @see org.eclipse.papyrus.propertylifecycle.StrategyElement
+ * @generated
+ */
+ EClass getStrategyElement();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.papyrus.propertylifecycle.StrategyElement#getElementContainers <em>Element Containers</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @return the meta object for the containment reference list '<em>Element Containers</em>'.
+ * @see org.eclipse.papyrus.propertylifecycle.StrategyElement#getElementContainers()
+ * @see #getStrategyElement()
+ * @generated
+ */
+ EReference getStrategyElement_ElementContainers();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.papyrus.propertylifecycle.StrategyElement#getElementProperties <em>Element Properties</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @return the meta object for the containment reference list '<em>Element Properties</em>'.
+ * @see org.eclipse.papyrus.propertylifecycle.StrategyElement#getElementProperties()
+ * @see #getStrategyElement()
+ * @generated
+ */
+ EReference getStrategyElement_ElementProperties();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.propertylifecycle.ElementTemplate <em>Element Template</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @return the meta object for class '<em>Element Template</em>'.
+ * @see org.eclipse.papyrus.propertylifecycle.ElementTemplate
+ * @generated
+ */
+ EClass getElementTemplate();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.propertylifecycle.ElementTemplate#getBaseType <em>Base Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @return the meta object for the attribute '<em>Base Type</em>'.
+ * @see org.eclipse.papyrus.propertylifecycle.ElementTemplate#getBaseType()
+ * @see #getElementTemplate()
+ * @generated
+ */
+ EAttribute getElementTemplate_BaseType();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.propertylifecycle.ElementTemplate#getSpecializedType <em>Specialized Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @return the meta object for the attribute '<em>Specialized Type</em>'.
+ * @see org.eclipse.papyrus.propertylifecycle.ElementTemplate#getSpecializedType()
+ * @see #getElementTemplate()
+ * @generated
+ */
+ EAttribute getElementTemplate_SpecializedType();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.propertylifecycle.ElementContainer <em>Element Container</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @return the meta object for class '<em>Element Container</em>'.
+ * @see org.eclipse.papyrus.propertylifecycle.ElementContainer
+ * @generated
+ */
+ EClass getElementContainer();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.papyrus.propertylifecycle.ElementContainer#getContainersContainer <em>Containers Container</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @return the meta object for the containment reference '<em>Containers Container</em>'.
+ * @see org.eclipse.papyrus.propertylifecycle.ElementContainer#getContainersContainer()
+ * @see #getElementContainer()
+ * @generated
+ */
+ EReference getElementContainer_ContainersContainer();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.propertylifecycle.ElementProperty <em>Element Property</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @return the meta object for class '<em>Element Property</em>'.
+ * @see org.eclipse.papyrus.propertylifecycle.ElementProperty
+ * @generated
+ */
+ EClass getElementProperty();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.propertylifecycle.ElementProperty#getFeatureLabel <em>Feature Label</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @return the meta object for the attribute '<em>Feature Label</em>'.
+ * @see org.eclipse.papyrus.propertylifecycle.ElementProperty#getFeatureLabel()
+ * @see #getElementProperty()
+ * @generated
+ */
+ EAttribute getElementProperty_FeatureLabel();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.propertylifecycle.ElementProperty#getPriority <em>Priority</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @return the meta object for the attribute '<em>Priority</em>'.
+ * @see org.eclipse.papyrus.propertylifecycle.ElementProperty#getPriority()
+ * @see #getElementProperty()
+ * @generated
+ */
+ EAttribute getElementProperty_Priority();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.papyrus.propertylifecycle.ElementProperty#getTriggers <em>Triggers</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @return the meta object for the containment reference list '<em>Triggers</em>'.
+ * @see org.eclipse.papyrus.propertylifecycle.ElementProperty#getTriggers()
+ * @see #getElementProperty()
+ * @generated
+ */
+ EReference getElementProperty_Triggers();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.papyrus.propertylifecycle.ElementProperty#getValueProcessor <em>Value Processor</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @return the meta object for the containment reference '<em>Value Processor</em>'.
+ * @see org.eclipse.papyrus.propertylifecycle.ElementProperty#getValueProcessor()
+ * @see #getElementProperty()
+ * @generated
+ */
+ EReference getElementProperty_ValueProcessor();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.propertylifecycle.AbstractTrigger <em>Abstract Trigger</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @return the meta object for class '<em>Abstract Trigger</em>'.
+ * @see org.eclipse.papyrus.propertylifecycle.AbstractTrigger
+ * @generated
+ */
+ EClass getAbstractTrigger();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.propertylifecycle.AbstractValueProcessor <em>Abstract Value Processor</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @return the meta object for class '<em>Abstract Value Processor</em>'.
+ * @see org.eclipse.papyrus.propertylifecycle.AbstractValueProcessor
+ * @generated
+ */
+ EClass getAbstractValueProcessor();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.propertylifecycle.JavaProcessor <em>Java Processor</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @return the meta object for class '<em>Java Processor</em>'.
+ * @see org.eclipse.papyrus.propertylifecycle.JavaProcessor
+ * @generated
+ */
+ EClass getJavaProcessor();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.propertylifecycle.JavaProcessor#getClassName <em>Class Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @return the meta object for the attribute '<em>Class Name</em>'.
+ * @see org.eclipse.papyrus.propertylifecycle.JavaProcessor#getClassName()
+ * @see #getJavaProcessor()
+ * @generated
+ */
+ EAttribute getJavaProcessor_ClassName();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.propertylifecycle.BasicTrigger <em>Basic Trigger</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @return the meta object for class '<em>Basic Trigger</em>'.
+ * @see org.eclipse.papyrus.propertylifecycle.BasicTrigger
+ * @generated
+ */
+ EClass getBasicTrigger();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.propertylifecycle.BasicTrigger#isOnCreate <em>On Create</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @return the meta object for the attribute '<em>On Create</em>'.
+ * @see org.eclipse.papyrus.propertylifecycle.BasicTrigger#isOnCreate()
+ * @see #getBasicTrigger()
+ * @generated
+ */
+ EAttribute getBasicTrigger_OnCreate();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.propertylifecycle.BasicTrigger#isOnDelete <em>On Delete</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @return the meta object for the attribute '<em>On Delete</em>'.
+ * @see org.eclipse.papyrus.propertylifecycle.BasicTrigger#isOnDelete()
+ * @see #getBasicTrigger()
+ * @generated
+ */
+ EAttribute getBasicTrigger_OnDelete();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.propertylifecycle.BasicTrigger#isOnOpen <em>On Open</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @return the meta object for the attribute '<em>On Open</em>'.
+ * @see org.eclipse.papyrus.propertylifecycle.BasicTrigger#isOnOpen()
+ * @see #getBasicTrigger()
+ * @generated
+ */
+ EAttribute getBasicTrigger_OnOpen();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.propertylifecycle.BasicTrigger#isOnMove <em>On Move</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @return the meta object for the attribute '<em>On Move</em>'.
+ * @see org.eclipse.papyrus.propertylifecycle.BasicTrigger#isOnMove()
+ * @see #getBasicTrigger()
+ * @generated
+ */
+ EAttribute getBasicTrigger_OnMove();
+
+ /**
+ * 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
+ */
+ PropertylifecycleFactory getPropertylifecycleFactory();
+
+ /**
+ * <!-- 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.propertylifecycle.impl.StrategyTemplateImpl <em>Strategy Template</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @see org.eclipse.papyrus.propertylifecycle.impl.StrategyTemplateImpl
+ * @see org.eclipse.papyrus.propertylifecycle.impl.PropertylifecyclePackageImpl#getStrategyTemplate()
+ * @generated
+ */
+ EClass STRATEGY_TEMPLATE = eINSTANCE.getStrategyTemplate();
+
+ /**
+ * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EAttribute STRATEGY_TEMPLATE__NAME = eINSTANCE.getStrategyTemplate_Name();
+
+ /**
+ * The meta object literal for the '<em><b>Decription</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EAttribute STRATEGY_TEMPLATE__DECRIPTION = eINSTANCE.getStrategyTemplate_Decription();
+
+ /**
+ * The meta object literal for the '<em><b>Id</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EAttribute STRATEGY_TEMPLATE__ID = eINSTANCE.getStrategyTemplate_Id();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.propertylifecycle.impl.StrategySetImpl <em>Strategy Set</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @see org.eclipse.papyrus.propertylifecycle.impl.StrategySetImpl
+ * @see org.eclipse.papyrus.propertylifecycle.impl.PropertylifecyclePackageImpl#getStrategySet()
+ * @generated
+ */
+ EClass STRATEGY_SET = eINSTANCE.getStrategySet();
+
+ /**
+ * The meta object literal for the '<em><b>Strategies</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference STRATEGY_SET__STRATEGIES = eINSTANCE.getStrategySet_Strategies();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.propertylifecycle.impl.StrategyElementImpl <em>Strategy Element</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @see org.eclipse.papyrus.propertylifecycle.impl.StrategyElementImpl
+ * @see org.eclipse.papyrus.propertylifecycle.impl.PropertylifecyclePackageImpl#getStrategyElement()
+ * @generated
+ */
+ EClass STRATEGY_ELEMENT = eINSTANCE.getStrategyElement();
+
+ /**
+ * The meta object literal for the '<em><b>Element Containers</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference STRATEGY_ELEMENT__ELEMENT_CONTAINERS = eINSTANCE.getStrategyElement_ElementContainers();
+
+ /**
+ * The meta object literal for the '<em><b>Element Properties</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference STRATEGY_ELEMENT__ELEMENT_PROPERTIES = eINSTANCE.getStrategyElement_ElementProperties();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.propertylifecycle.impl.ElementTemplateImpl <em>Element Template</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @see org.eclipse.papyrus.propertylifecycle.impl.ElementTemplateImpl
+ * @see org.eclipse.papyrus.propertylifecycle.impl.PropertylifecyclePackageImpl#getElementTemplate()
+ * @generated
+ */
+ EClass ELEMENT_TEMPLATE = eINSTANCE.getElementTemplate();
+
+ /**
+ * The meta object literal for the '<em><b>Base Type</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EAttribute ELEMENT_TEMPLATE__BASE_TYPE = eINSTANCE.getElementTemplate_BaseType();
+
+ /**
+ * The meta object literal for the '<em><b>Specialized Type</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EAttribute ELEMENT_TEMPLATE__SPECIALIZED_TYPE = eINSTANCE.getElementTemplate_SpecializedType();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.propertylifecycle.impl.ElementContainerImpl <em>Element Container</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @see org.eclipse.papyrus.propertylifecycle.impl.ElementContainerImpl
+ * @see org.eclipse.papyrus.propertylifecycle.impl.PropertylifecyclePackageImpl#getElementContainer()
+ * @generated
+ */
+ EClass ELEMENT_CONTAINER = eINSTANCE.getElementContainer();
+
+ /**
+ * The meta object literal for the '<em><b>Containers Container</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference ELEMENT_CONTAINER__CONTAINERS_CONTAINER = eINSTANCE.getElementContainer_ContainersContainer();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.propertylifecycle.impl.ElementPropertyImpl <em>Element Property</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @see org.eclipse.papyrus.propertylifecycle.impl.ElementPropertyImpl
+ * @see org.eclipse.papyrus.propertylifecycle.impl.PropertylifecyclePackageImpl#getElementProperty()
+ * @generated
+ */
+ EClass ELEMENT_PROPERTY = eINSTANCE.getElementProperty();
+
+ /**
+ * The meta object literal for the '<em><b>Feature Label</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EAttribute ELEMENT_PROPERTY__FEATURE_LABEL = eINSTANCE.getElementProperty_FeatureLabel();
+
+ /**
+ * The meta object literal for the '<em><b>Priority</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EAttribute ELEMENT_PROPERTY__PRIORITY = eINSTANCE.getElementProperty_Priority();
+
+ /**
+ * The meta object literal for the '<em><b>Triggers</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference ELEMENT_PROPERTY__TRIGGERS = eINSTANCE.getElementProperty_Triggers();
+
+ /**
+ * The meta object literal for the '<em><b>Value Processor</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference ELEMENT_PROPERTY__VALUE_PROCESSOR = eINSTANCE.getElementProperty_ValueProcessor();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.propertylifecycle.impl.AbstractTriggerImpl <em>Abstract Trigger</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @see org.eclipse.papyrus.propertylifecycle.impl.AbstractTriggerImpl
+ * @see org.eclipse.papyrus.propertylifecycle.impl.PropertylifecyclePackageImpl#getAbstractTrigger()
+ * @generated
+ */
+ EClass ABSTRACT_TRIGGER = eINSTANCE.getAbstractTrigger();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.propertylifecycle.impl.AbstractValueProcessorImpl <em>Abstract Value Processor</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @see org.eclipse.papyrus.propertylifecycle.impl.AbstractValueProcessorImpl
+ * @see org.eclipse.papyrus.propertylifecycle.impl.PropertylifecyclePackageImpl#getAbstractValueProcessor()
+ * @generated
+ */
+ EClass ABSTRACT_VALUE_PROCESSOR = eINSTANCE.getAbstractValueProcessor();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.propertylifecycle.impl.JavaProcessorImpl <em>Java Processor</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @see org.eclipse.papyrus.propertylifecycle.impl.JavaProcessorImpl
+ * @see org.eclipse.papyrus.propertylifecycle.impl.PropertylifecyclePackageImpl#getJavaProcessor()
+ * @generated
+ */
+ EClass JAVA_PROCESSOR = eINSTANCE.getJavaProcessor();
+
+ /**
+ * The meta object literal for the '<em><b>Class Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EAttribute JAVA_PROCESSOR__CLASS_NAME = eINSTANCE.getJavaProcessor_ClassName();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.propertylifecycle.impl.BasicTriggerImpl <em>Basic Trigger</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @see org.eclipse.papyrus.propertylifecycle.impl.BasicTriggerImpl
+ * @see org.eclipse.papyrus.propertylifecycle.impl.PropertylifecyclePackageImpl#getBasicTrigger()
+ * @generated
+ */
+ EClass BASIC_TRIGGER = eINSTANCE.getBasicTrigger();
+
+ /**
+ * The meta object literal for the '<em><b>On Create</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EAttribute BASIC_TRIGGER__ON_CREATE = eINSTANCE.getBasicTrigger_OnCreate();
+
+ /**
+ * The meta object literal for the '<em><b>On Delete</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EAttribute BASIC_TRIGGER__ON_DELETE = eINSTANCE.getBasicTrigger_OnDelete();
+
+ /**
+ * The meta object literal for the '<em><b>On Open</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EAttribute BASIC_TRIGGER__ON_OPEN = eINSTANCE.getBasicTrigger_OnOpen();
+
+ /**
+ * The meta object literal for the '<em><b>On Move</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EAttribute BASIC_TRIGGER__ON_MOVE = eINSTANCE.getBasicTrigger_OnMove();
+
+ }
+
+} // PropertylifecyclePackage
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/StrategyElement.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/StrategyElement.java
new file mode 100755
index 00000000000..965e36e266a
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/StrategyElement.java
@@ -0,0 +1,73 @@
+/**
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *
+ * Quentin Le Menez (CEA LIST) quentin.lemenez@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.propertylifecycle;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Strategy Element</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * The element affected by this strategy
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.propertylifecycle.StrategyElement#getElementContainers <em>Element Containers</em>}</li>
+ * <li>{@link org.eclipse.papyrus.propertylifecycle.StrategyElement#getElementProperties <em>Element Properties</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.propertylifecycle.PropertylifecyclePackage#getStrategyElement()
+ * @model
+ * @generated
+ */
+public interface StrategyElement extends ElementTemplate, StrategyTemplate {
+ /**
+ * Returns the value of the '<em><b>Element Containers</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.papyrus.propertylifecycle.ElementContainer}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Element Containers</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>Element Containers</em>' containment reference list.
+ * @see org.eclipse.papyrus.propertylifecycle.PropertylifecyclePackage#getStrategyElement_ElementContainers()
+ * @model containment="true"
+ * @generated
+ */
+ EList<ElementContainer> getElementContainers();
+
+ /**
+ * Returns the value of the '<em><b>Element Properties</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.papyrus.propertylifecycle.ElementProperty}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Element 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>Element Properties</em>' containment reference list.
+ * @see org.eclipse.papyrus.propertylifecycle.PropertylifecyclePackage#getStrategyElement_ElementProperties()
+ * @model containment="true" required="true"
+ * @generated
+ */
+ EList<ElementProperty> getElementProperties();
+
+} // StrategyElement
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/StrategySet.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/StrategySet.java
new file mode 100755
index 00000000000..7bd1ed22b0c
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/StrategySet.java
@@ -0,0 +1,55 @@
+/**
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *
+ * Quentin Le Menez (CEA LIST) quentin.lemenez@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.propertylifecycle;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Strategy Set</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * Root set containing the defined strategies
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.propertylifecycle.StrategySet#getStrategies <em>Strategies</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.propertylifecycle.PropertylifecyclePackage#getStrategySet()
+ * @model
+ * @generated
+ */
+public interface StrategySet extends StrategyTemplate {
+ /**
+ * Returns the value of the '<em><b>Strategies</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.papyrus.propertylifecycle.StrategyElement}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Strategies</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>Strategies</em>' containment reference list.
+ * @see org.eclipse.papyrus.propertylifecycle.PropertylifecyclePackage#getStrategySet_Strategies()
+ * @model containment="true" required="true"
+ * @generated
+ */
+ EList<StrategyElement> getStrategies();
+
+} // StrategySet
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/StrategyTemplate.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/StrategyTemplate.java
new file mode 100755
index 00000000000..ddebf5f0d30
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/StrategyTemplate.java
@@ -0,0 +1,127 @@
+/**
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *
+ * Quentin Le Menez (CEA LIST) quentin.lemenez@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.propertylifecycle;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Strategy Template</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * Contains the standard informations needed to identify the strategy sets
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.propertylifecycle.StrategyTemplate#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.papyrus.propertylifecycle.StrategyTemplate#getDecription <em>Decription</em>}</li>
+ * <li>{@link org.eclipse.papyrus.propertylifecycle.StrategyTemplate#getId <em>Id</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.propertylifecycle.PropertylifecyclePackage#getStrategyTemplate()
+ * @model abstract="true"
+ * @generated
+ */
+public interface StrategyTemplate 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.propertylifecycle.PropertylifecyclePackage#getStrategyTemplate_Name()
+ * @model
+ * @generated
+ */
+ String getName();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.propertylifecycle.StrategyTemplate#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>Decription</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Decription</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>Decription</em>' attribute.
+ * @see #setDecription(String)
+ * @see org.eclipse.papyrus.propertylifecycle.PropertylifecyclePackage#getStrategyTemplate_Decription()
+ * @model
+ * @generated
+ */
+ String getDecription();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.propertylifecycle.StrategyTemplate#getDecription <em>Decription</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>Decription</em>' attribute.
+ * @see #getDecription()
+ * @generated
+ */
+ void setDecription(String value);
+
+ /**
+ * Returns the value of the '<em><b>Id</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>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>Id</em>' attribute.
+ * @see #setId(String)
+ * @see org.eclipse.papyrus.propertylifecycle.PropertylifecyclePackage#getStrategyTemplate_Id()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ String getId();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.propertylifecycle.StrategyTemplate#getId <em>Id</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>Id</em>' attribute.
+ * @see #getId()
+ * @generated
+ */
+ void setId(String value);
+
+} // StrategyTemplate
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/impl/AbstractTriggerImpl.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/impl/AbstractTriggerImpl.java
new file mode 100755
index 00000000000..696eefcd0c3
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/impl/AbstractTriggerImpl.java
@@ -0,0 +1,50 @@
+/**
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *
+ * Quentin Le Menez (CEA LIST) quentin.lemenez@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.propertylifecycle.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.papyrus.propertylifecycle.AbstractTrigger;
+import org.eclipse.papyrus.propertylifecycle.PropertylifecyclePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Abstract Trigger</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public abstract class AbstractTriggerImpl extends MinimalEObjectImpl.Container implements AbstractTrigger {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected AbstractTriggerImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return PropertylifecyclePackage.Literals.ABSTRACT_TRIGGER;
+ }
+
+} // AbstractTriggerImpl
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/impl/AbstractValueProcessorImpl.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/impl/AbstractValueProcessorImpl.java
new file mode 100755
index 00000000000..43fceb033ca
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/impl/AbstractValueProcessorImpl.java
@@ -0,0 +1,50 @@
+/**
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *
+ * Quentin Le Menez (CEA LIST) quentin.lemenez@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.propertylifecycle.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.papyrus.propertylifecycle.AbstractValueProcessor;
+import org.eclipse.papyrus.propertylifecycle.PropertylifecyclePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Abstract Value Processor</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public abstract class AbstractValueProcessorImpl extends MinimalEObjectImpl.Container implements AbstractValueProcessor {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected AbstractValueProcessorImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return PropertylifecyclePackage.Literals.ABSTRACT_VALUE_PROCESSOR;
+ }
+
+} // AbstractValueProcessorImpl
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/impl/BasicTriggerImpl.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/impl/BasicTriggerImpl.java
new file mode 100755
index 00000000000..d1a69ba6f1b
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/impl/BasicTriggerImpl.java
@@ -0,0 +1,370 @@
+/**
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *
+ * Quentin Le Menez (CEA LIST) quentin.lemenez@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.propertylifecycle.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.propertylifecycle.BasicTrigger;
+import org.eclipse.papyrus.propertylifecycle.PropertylifecyclePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Basic Trigger</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.propertylifecycle.impl.BasicTriggerImpl#isOnCreate <em>On Create</em>}</li>
+ * <li>{@link org.eclipse.papyrus.propertylifecycle.impl.BasicTriggerImpl#isOnDelete <em>On Delete</em>}</li>
+ * <li>{@link org.eclipse.papyrus.propertylifecycle.impl.BasicTriggerImpl#isOnOpen <em>On Open</em>}</li>
+ * <li>{@link org.eclipse.papyrus.propertylifecycle.impl.BasicTriggerImpl#isOnMove <em>On Move</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class BasicTriggerImpl extends AbstractTriggerImpl implements BasicTrigger {
+ /**
+ * The default value of the '{@link #isOnCreate() <em>On Create</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @see #isOnCreate()
+ * @generated
+ * @ordered
+ */
+ protected static final boolean ON_CREATE_EDEFAULT = false;
+
+ /**
+ * The cached value of the '{@link #isOnCreate() <em>On Create</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @see #isOnCreate()
+ * @generated
+ * @ordered
+ */
+ protected boolean onCreate = ON_CREATE_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #isOnDelete() <em>On Delete</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @see #isOnDelete()
+ * @generated
+ * @ordered
+ */
+ protected static final boolean ON_DELETE_EDEFAULT = false;
+
+ /**
+ * The cached value of the '{@link #isOnDelete() <em>On Delete</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @see #isOnDelete()
+ * @generated
+ * @ordered
+ */
+ protected boolean onDelete = ON_DELETE_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #isOnOpen() <em>On Open</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @see #isOnOpen()
+ * @generated
+ * @ordered
+ */
+ protected static final boolean ON_OPEN_EDEFAULT = false;
+
+ /**
+ * The cached value of the '{@link #isOnOpen() <em>On Open</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @see #isOnOpen()
+ * @generated
+ * @ordered
+ */
+ protected boolean onOpen = ON_OPEN_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #isOnMove() <em>On Move</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @see #isOnMove()
+ * @generated
+ * @ordered
+ */
+ protected static final boolean ON_MOVE_EDEFAULT = false;
+
+ /**
+ * The cached value of the '{@link #isOnMove() <em>On Move</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @see #isOnMove()
+ * @generated
+ * @ordered
+ */
+ protected boolean onMove = ON_MOVE_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected BasicTriggerImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return PropertylifecyclePackage.Literals.BASIC_TRIGGER;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public boolean isOnCreate() {
+ return onCreate;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void setOnCreate(boolean newOnCreate) {
+ boolean oldOnCreate = onCreate;
+ onCreate = newOnCreate;
+ if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, PropertylifecyclePackage.BASIC_TRIGGER__ON_CREATE, oldOnCreate, onCreate));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public boolean isOnDelete() {
+ return onDelete;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void setOnDelete(boolean newOnDelete) {
+ boolean oldOnDelete = onDelete;
+ onDelete = newOnDelete;
+ if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, PropertylifecyclePackage.BASIC_TRIGGER__ON_DELETE, oldOnDelete, onDelete));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public boolean isOnOpen() {
+ return onOpen;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void setOnOpen(boolean newOnOpen) {
+ boolean oldOnOpen = onOpen;
+ onOpen = newOnOpen;
+ if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, PropertylifecyclePackage.BASIC_TRIGGER__ON_OPEN, oldOnOpen, onOpen));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public boolean isOnMove() {
+ return onMove;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void setOnMove(boolean newOnMove) {
+ boolean oldOnMove = onMove;
+ onMove = newOnMove;
+ if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, PropertylifecyclePackage.BASIC_TRIGGER__ON_MOVE, oldOnMove, onMove));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case PropertylifecyclePackage.BASIC_TRIGGER__ON_CREATE:
+ return isOnCreate();
+ case PropertylifecyclePackage.BASIC_TRIGGER__ON_DELETE:
+ return isOnDelete();
+ case PropertylifecyclePackage.BASIC_TRIGGER__ON_OPEN:
+ return isOnOpen();
+ case PropertylifecyclePackage.BASIC_TRIGGER__ON_MOVE:
+ return isOnMove();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case PropertylifecyclePackage.BASIC_TRIGGER__ON_CREATE:
+ setOnCreate((Boolean) newValue);
+ return;
+ case PropertylifecyclePackage.BASIC_TRIGGER__ON_DELETE:
+ setOnDelete((Boolean) newValue);
+ return;
+ case PropertylifecyclePackage.BASIC_TRIGGER__ON_OPEN:
+ setOnOpen((Boolean) newValue);
+ return;
+ case PropertylifecyclePackage.BASIC_TRIGGER__ON_MOVE:
+ setOnMove((Boolean) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case PropertylifecyclePackage.BASIC_TRIGGER__ON_CREATE:
+ setOnCreate(ON_CREATE_EDEFAULT);
+ return;
+ case PropertylifecyclePackage.BASIC_TRIGGER__ON_DELETE:
+ setOnDelete(ON_DELETE_EDEFAULT);
+ return;
+ case PropertylifecyclePackage.BASIC_TRIGGER__ON_OPEN:
+ setOnOpen(ON_OPEN_EDEFAULT);
+ return;
+ case PropertylifecyclePackage.BASIC_TRIGGER__ON_MOVE:
+ setOnMove(ON_MOVE_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case PropertylifecyclePackage.BASIC_TRIGGER__ON_CREATE:
+ return onCreate != ON_CREATE_EDEFAULT;
+ case PropertylifecyclePackage.BASIC_TRIGGER__ON_DELETE:
+ return onDelete != ON_DELETE_EDEFAULT;
+ case PropertylifecyclePackage.BASIC_TRIGGER__ON_OPEN:
+ return onOpen != ON_OPEN_EDEFAULT;
+ case PropertylifecyclePackage.BASIC_TRIGGER__ON_MOVE:
+ return onMove != ON_MOVE_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(" (onCreate: "); //$NON-NLS-1$
+ result.append(onCreate);
+ result.append(", onDelete: "); //$NON-NLS-1$
+ result.append(onDelete);
+ result.append(", onOpen: "); //$NON-NLS-1$
+ result.append(onOpen);
+ result.append(", onMove: "); //$NON-NLS-1$
+ result.append(onMove);
+ result.append(')');
+ return result.toString();
+ }
+
+} // BasicTriggerImpl
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/impl/ElementContainerImpl.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/impl/ElementContainerImpl.java
new file mode 100755
index 00000000000..4419f253efc
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/impl/ElementContainerImpl.java
@@ -0,0 +1,204 @@
+/**
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *
+ * Quentin Le Menez (CEA LIST) quentin.lemenez@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.propertylifecycle.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.propertylifecycle.ElementContainer;
+import org.eclipse.papyrus.propertylifecycle.PropertylifecyclePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Element Container</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.propertylifecycle.impl.ElementContainerImpl#getContainersContainer <em>Containers Container</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class ElementContainerImpl extends ElementTemplateImpl implements ElementContainer {
+ /**
+ * The cached value of the '{@link #getContainersContainer() <em>Containers Container</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @see #getContainersContainer()
+ * @generated
+ * @ordered
+ */
+ protected ElementContainer containersContainer;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected ElementContainerImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return PropertylifecyclePackage.Literals.ELEMENT_CONTAINER;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public ElementContainer getContainersContainer() {
+ return containersContainer;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public NotificationChain basicSetContainersContainer(ElementContainer newContainersContainer, NotificationChain msgs) {
+ ElementContainer oldContainersContainer = containersContainer;
+ containersContainer = newContainersContainer;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, PropertylifecyclePackage.ELEMENT_CONTAINER__CONTAINERS_CONTAINER, oldContainersContainer, newContainersContainer);
+ if (msgs == null) {
+ msgs = notification;
+ } else {
+ msgs.add(notification);
+ }
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void setContainersContainer(ElementContainer newContainersContainer) {
+ if (newContainersContainer != containersContainer) {
+ NotificationChain msgs = null;
+ if (containersContainer != null) {
+ msgs = ((InternalEObject) containersContainer).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - PropertylifecyclePackage.ELEMENT_CONTAINER__CONTAINERS_CONTAINER, null, msgs);
+ }
+ if (newContainersContainer != null) {
+ msgs = ((InternalEObject) newContainersContainer).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - PropertylifecyclePackage.ELEMENT_CONTAINER__CONTAINERS_CONTAINER, null, msgs);
+ }
+ msgs = basicSetContainersContainer(newContainersContainer, msgs);
+ if (msgs != null) {
+ msgs.dispatch();
+ }
+ } else if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, PropertylifecyclePackage.ELEMENT_CONTAINER__CONTAINERS_CONTAINER, newContainersContainer, newContainersContainer));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case PropertylifecyclePackage.ELEMENT_CONTAINER__CONTAINERS_CONTAINER:
+ return basicSetContainersContainer(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 PropertylifecyclePackage.ELEMENT_CONTAINER__CONTAINERS_CONTAINER:
+ return getContainersContainer();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case PropertylifecyclePackage.ELEMENT_CONTAINER__CONTAINERS_CONTAINER:
+ setContainersContainer((ElementContainer) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case PropertylifecyclePackage.ELEMENT_CONTAINER__CONTAINERS_CONTAINER:
+ setContainersContainer((ElementContainer) null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case PropertylifecyclePackage.ELEMENT_CONTAINER__CONTAINERS_CONTAINER:
+ return containersContainer != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} // ElementContainerImpl
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/impl/ElementPropertyImpl.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/impl/ElementPropertyImpl.java
new file mode 100755
index 00000000000..287a9a17fc1
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/impl/ElementPropertyImpl.java
@@ -0,0 +1,393 @@
+/**
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *
+ * Quentin Le Menez (CEA LIST) quentin.lemenez@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.propertylifecycle.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.papyrus.propertylifecycle.AbstractTrigger;
+import org.eclipse.papyrus.propertylifecycle.AbstractValueProcessor;
+import org.eclipse.papyrus.propertylifecycle.ElementProperty;
+import org.eclipse.papyrus.propertylifecycle.PropertylifecyclePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Element Property</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.propertylifecycle.impl.ElementPropertyImpl#getFeatureLabel <em>Feature Label</em>}</li>
+ * <li>{@link org.eclipse.papyrus.propertylifecycle.impl.ElementPropertyImpl#getPriority <em>Priority</em>}</li>
+ * <li>{@link org.eclipse.papyrus.propertylifecycle.impl.ElementPropertyImpl#getTriggers <em>Triggers</em>}</li>
+ * <li>{@link org.eclipse.papyrus.propertylifecycle.impl.ElementPropertyImpl#getValueProcessor <em>Value Processor</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class ElementPropertyImpl extends MinimalEObjectImpl.Container implements ElementProperty {
+ /**
+ * The default value of the '{@link #getFeatureLabel() <em>Feature Label</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @see #getFeatureLabel()
+ * @generated
+ * @ordered
+ */
+ protected static final String FEATURE_LABEL_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getFeatureLabel() <em>Feature Label</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @see #getFeatureLabel()
+ * @generated
+ * @ordered
+ */
+ protected String featureLabel = FEATURE_LABEL_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getPriority() <em>Priority</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @see #getPriority()
+ * @generated
+ * @ordered
+ */
+ protected static final Integer PRIORITY_EDEFAULT = new Integer(0);
+
+ /**
+ * The cached value of the '{@link #getPriority() <em>Priority</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @see #getPriority()
+ * @generated
+ * @ordered
+ */
+ protected Integer priority = PRIORITY_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getTriggers() <em>Triggers</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @see #getTriggers()
+ * @generated
+ * @ordered
+ */
+ protected EList<AbstractTrigger> triggers;
+
+ /**
+ * The cached value of the '{@link #getValueProcessor() <em>Value Processor</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @see #getValueProcessor()
+ * @generated
+ * @ordered
+ */
+ protected AbstractValueProcessor valueProcessor;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected ElementPropertyImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return PropertylifecyclePackage.Literals.ELEMENT_PROPERTY;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public String getFeatureLabel() {
+ return featureLabel;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void setFeatureLabel(String newFeatureLabel) {
+ String oldFeatureLabel = featureLabel;
+ featureLabel = newFeatureLabel;
+ if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, PropertylifecyclePackage.ELEMENT_PROPERTY__FEATURE_LABEL, oldFeatureLabel, featureLabel));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public Integer getPriority() {
+ return priority;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void setPriority(Integer newPriority) {
+ Integer oldPriority = priority;
+ priority = newPriority;
+ if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, PropertylifecyclePackage.ELEMENT_PROPERTY__PRIORITY, oldPriority, priority));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public EList<AbstractTrigger> getTriggers() {
+ if (triggers == null) {
+ triggers = new EObjectContainmentEList<AbstractTrigger>(AbstractTrigger.class, this, PropertylifecyclePackage.ELEMENT_PROPERTY__TRIGGERS);
+ }
+ return triggers;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public AbstractValueProcessor getValueProcessor() {
+ return valueProcessor;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public NotificationChain basicSetValueProcessor(AbstractValueProcessor newValueProcessor, NotificationChain msgs) {
+ AbstractValueProcessor oldValueProcessor = valueProcessor;
+ valueProcessor = newValueProcessor;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, PropertylifecyclePackage.ELEMENT_PROPERTY__VALUE_PROCESSOR, oldValueProcessor, newValueProcessor);
+ if (msgs == null) {
+ msgs = notification;
+ } else {
+ msgs.add(notification);
+ }
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void setValueProcessor(AbstractValueProcessor newValueProcessor) {
+ if (newValueProcessor != valueProcessor) {
+ NotificationChain msgs = null;
+ if (valueProcessor != null) {
+ msgs = ((InternalEObject) valueProcessor).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - PropertylifecyclePackage.ELEMENT_PROPERTY__VALUE_PROCESSOR, null, msgs);
+ }
+ if (newValueProcessor != null) {
+ msgs = ((InternalEObject) newValueProcessor).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - PropertylifecyclePackage.ELEMENT_PROPERTY__VALUE_PROCESSOR, null, msgs);
+ }
+ msgs = basicSetValueProcessor(newValueProcessor, msgs);
+ if (msgs != null) {
+ msgs.dispatch();
+ }
+ } else if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, PropertylifecyclePackage.ELEMENT_PROPERTY__VALUE_PROCESSOR, newValueProcessor, newValueProcessor));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case PropertylifecyclePackage.ELEMENT_PROPERTY__TRIGGERS:
+ return ((InternalEList<?>) getTriggers()).basicRemove(otherEnd, msgs);
+ case PropertylifecyclePackage.ELEMENT_PROPERTY__VALUE_PROCESSOR:
+ return basicSetValueProcessor(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 PropertylifecyclePackage.ELEMENT_PROPERTY__FEATURE_LABEL:
+ return getFeatureLabel();
+ case PropertylifecyclePackage.ELEMENT_PROPERTY__PRIORITY:
+ return getPriority();
+ case PropertylifecyclePackage.ELEMENT_PROPERTY__TRIGGERS:
+ return getTriggers();
+ case PropertylifecyclePackage.ELEMENT_PROPERTY__VALUE_PROCESSOR:
+ return getValueProcessor();
+ }
+ 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 PropertylifecyclePackage.ELEMENT_PROPERTY__FEATURE_LABEL:
+ setFeatureLabel((String) newValue);
+ return;
+ case PropertylifecyclePackage.ELEMENT_PROPERTY__PRIORITY:
+ setPriority((Integer) newValue);
+ return;
+ case PropertylifecyclePackage.ELEMENT_PROPERTY__TRIGGERS:
+ getTriggers().clear();
+ getTriggers().addAll((Collection<? extends AbstractTrigger>) newValue);
+ return;
+ case PropertylifecyclePackage.ELEMENT_PROPERTY__VALUE_PROCESSOR:
+ setValueProcessor((AbstractValueProcessor) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case PropertylifecyclePackage.ELEMENT_PROPERTY__FEATURE_LABEL:
+ setFeatureLabel(FEATURE_LABEL_EDEFAULT);
+ return;
+ case PropertylifecyclePackage.ELEMENT_PROPERTY__PRIORITY:
+ setPriority(PRIORITY_EDEFAULT);
+ return;
+ case PropertylifecyclePackage.ELEMENT_PROPERTY__TRIGGERS:
+ getTriggers().clear();
+ return;
+ case PropertylifecyclePackage.ELEMENT_PROPERTY__VALUE_PROCESSOR:
+ setValueProcessor((AbstractValueProcessor) null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case PropertylifecyclePackage.ELEMENT_PROPERTY__FEATURE_LABEL:
+ return FEATURE_LABEL_EDEFAULT == null ? featureLabel != null : !FEATURE_LABEL_EDEFAULT.equals(featureLabel);
+ case PropertylifecyclePackage.ELEMENT_PROPERTY__PRIORITY:
+ return PRIORITY_EDEFAULT == null ? priority != null : !PRIORITY_EDEFAULT.equals(priority);
+ case PropertylifecyclePackage.ELEMENT_PROPERTY__TRIGGERS:
+ return triggers != null && !triggers.isEmpty();
+ case PropertylifecyclePackage.ELEMENT_PROPERTY__VALUE_PROCESSOR:
+ return valueProcessor != 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(" (featureLabel: "); //$NON-NLS-1$
+ result.append(featureLabel);
+ result.append(", priority: "); //$NON-NLS-1$
+ result.append(priority);
+ result.append(')');
+ return result.toString();
+ }
+
+} // ElementPropertyImpl
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/impl/ElementTemplateImpl.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/impl/ElementTemplateImpl.java
new file mode 100755
index 00000000000..cd1dc19cec5
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/impl/ElementTemplateImpl.java
@@ -0,0 +1,249 @@
+/**
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *
+ * Quentin Le Menez (CEA LIST) quentin.lemenez@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.propertylifecycle.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.propertylifecycle.ElementTemplate;
+import org.eclipse.papyrus.propertylifecycle.PropertylifecyclePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Element Template</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.propertylifecycle.impl.ElementTemplateImpl#getBaseType <em>Base Type</em>}</li>
+ * <li>{@link org.eclipse.papyrus.propertylifecycle.impl.ElementTemplateImpl#getSpecializedType <em>Specialized Type</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class ElementTemplateImpl extends MinimalEObjectImpl.Container implements ElementTemplate {
+ /**
+ * The default value of the '{@link #getBaseType() <em>Base Type</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @see #getBaseType()
+ * @generated
+ * @ordered
+ */
+ protected static final String BASE_TYPE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getBaseType() <em>Base Type</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @see #getBaseType()
+ * @generated
+ * @ordered
+ */
+ protected String baseType = BASE_TYPE_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getSpecializedType() <em>Specialized Type</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @see #getSpecializedType()
+ * @generated
+ * @ordered
+ */
+ protected static final String SPECIALIZED_TYPE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getSpecializedType() <em>Specialized Type</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @see #getSpecializedType()
+ * @generated
+ * @ordered
+ */
+ protected String specializedType = SPECIALIZED_TYPE_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected ElementTemplateImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return PropertylifecyclePackage.Literals.ELEMENT_TEMPLATE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public String getBaseType() {
+ return baseType;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void setBaseType(String newBaseType) {
+ String oldBaseType = baseType;
+ baseType = newBaseType;
+ if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, PropertylifecyclePackage.ELEMENT_TEMPLATE__BASE_TYPE, oldBaseType, baseType));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public String getSpecializedType() {
+ return specializedType;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void setSpecializedType(String newSpecializedType) {
+ String oldSpecializedType = specializedType;
+ specializedType = newSpecializedType;
+ if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, PropertylifecyclePackage.ELEMENT_TEMPLATE__SPECIALIZED_TYPE, oldSpecializedType, specializedType));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case PropertylifecyclePackage.ELEMENT_TEMPLATE__BASE_TYPE:
+ return getBaseType();
+ case PropertylifecyclePackage.ELEMENT_TEMPLATE__SPECIALIZED_TYPE:
+ return getSpecializedType();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case PropertylifecyclePackage.ELEMENT_TEMPLATE__BASE_TYPE:
+ setBaseType((String) newValue);
+ return;
+ case PropertylifecyclePackage.ELEMENT_TEMPLATE__SPECIALIZED_TYPE:
+ setSpecializedType((String) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case PropertylifecyclePackage.ELEMENT_TEMPLATE__BASE_TYPE:
+ setBaseType(BASE_TYPE_EDEFAULT);
+ return;
+ case PropertylifecyclePackage.ELEMENT_TEMPLATE__SPECIALIZED_TYPE:
+ setSpecializedType(SPECIALIZED_TYPE_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case PropertylifecyclePackage.ELEMENT_TEMPLATE__BASE_TYPE:
+ return BASE_TYPE_EDEFAULT == null ? baseType != null : !BASE_TYPE_EDEFAULT.equals(baseType);
+ case PropertylifecyclePackage.ELEMENT_TEMPLATE__SPECIALIZED_TYPE:
+ return SPECIALIZED_TYPE_EDEFAULT == null ? specializedType != null : !SPECIALIZED_TYPE_EDEFAULT.equals(specializedType);
+ }
+ 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(" (baseType: "); //$NON-NLS-1$
+ result.append(baseType);
+ result.append(", specializedType: "); //$NON-NLS-1$
+ result.append(specializedType);
+ result.append(')');
+ return result.toString();
+ }
+
+} // ElementTemplateImpl
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/impl/JavaProcessorImpl.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/impl/JavaProcessorImpl.java
new file mode 100755
index 00000000000..0f9ed8726dd
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/impl/JavaProcessorImpl.java
@@ -0,0 +1,187 @@
+/**
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *
+ * Quentin Le Menez (CEA LIST) quentin.lemenez@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.propertylifecycle.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.propertylifecycle.JavaProcessor;
+import org.eclipse.papyrus.propertylifecycle.PropertylifecyclePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Java Processor</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.propertylifecycle.impl.JavaProcessorImpl#getClassName <em>Class Name</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class JavaProcessorImpl extends AbstractValueProcessorImpl implements JavaProcessor {
+ /**
+ * The default value of the '{@link #getClassName() <em>Class Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @see #getClassName()
+ * @generated
+ * @ordered
+ */
+ protected static final String CLASS_NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getClassName() <em>Class Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @see #getClassName()
+ * @generated
+ * @ordered
+ */
+ protected String className = CLASS_NAME_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected JavaProcessorImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return PropertylifecyclePackage.Literals.JAVA_PROCESSOR;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public String getClassName() {
+ return className;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void setClassName(String newClassName) {
+ String oldClassName = className;
+ className = newClassName;
+ if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, PropertylifecyclePackage.JAVA_PROCESSOR__CLASS_NAME, oldClassName, className));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case PropertylifecyclePackage.JAVA_PROCESSOR__CLASS_NAME:
+ return getClassName();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case PropertylifecyclePackage.JAVA_PROCESSOR__CLASS_NAME:
+ setClassName((String) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case PropertylifecyclePackage.JAVA_PROCESSOR__CLASS_NAME:
+ setClassName(CLASS_NAME_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case PropertylifecyclePackage.JAVA_PROCESSOR__CLASS_NAME:
+ return CLASS_NAME_EDEFAULT == null ? className != null : !CLASS_NAME_EDEFAULT.equals(className);
+ }
+ 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: "); //$NON-NLS-1$
+ result.append(className);
+ result.append(')');
+ return result.toString();
+ }
+
+} // JavaProcessorImpl
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/impl/PropertylifecycleFactoryImpl.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/impl/PropertylifecycleFactoryImpl.java
new file mode 100755
index 00000000000..d2da6a58228
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/impl/PropertylifecycleFactoryImpl.java
@@ -0,0 +1,183 @@
+/**
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *
+ * Quentin Le Menez (CEA LIST) quentin.lemenez@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.propertylifecycle.impl;
+
+import org.eclipse.emf.ecore.EClass;
+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.propertylifecycle.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class PropertylifecycleFactoryImpl extends EFactoryImpl implements PropertylifecycleFactory {
+ /**
+ * Creates the default factory implementation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public static PropertylifecycleFactory init() {
+ try {
+ PropertylifecycleFactory thePropertylifecycleFactory = (PropertylifecycleFactory) EPackage.Registry.INSTANCE.getEFactory(PropertylifecyclePackage.eNS_URI);
+ if (thePropertylifecycleFactory != null) {
+ return thePropertylifecycleFactory;
+ }
+ } catch (Exception exception) {
+ EcorePlugin.INSTANCE.log(exception);
+ }
+ return new PropertylifecycleFactoryImpl();
+ }
+
+ /**
+ * Creates an instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public PropertylifecycleFactoryImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public EObject create(EClass eClass) {
+ switch (eClass.getClassifierID()) {
+ case PropertylifecyclePackage.STRATEGY_SET:
+ return createStrategySet();
+ case PropertylifecyclePackage.STRATEGY_ELEMENT:
+ return createStrategyElement();
+ case PropertylifecyclePackage.ELEMENT_CONTAINER:
+ return createElementContainer();
+ case PropertylifecyclePackage.ELEMENT_PROPERTY:
+ return createElementProperty();
+ case PropertylifecyclePackage.JAVA_PROCESSOR:
+ return createJavaProcessor();
+ case PropertylifecyclePackage.BASIC_TRIGGER:
+ return createBasicTrigger();
+ default:
+ throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public StrategySet createStrategySet() {
+ StrategySetImpl strategySet = new StrategySetImpl();
+ return strategySet;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public StrategyElement createStrategyElement() {
+ StrategyElementImpl strategyElement = new StrategyElementImpl();
+ return strategyElement;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public ElementContainer createElementContainer() {
+ ElementContainerImpl elementContainer = new ElementContainerImpl();
+ return elementContainer;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public ElementProperty createElementProperty() {
+ ElementPropertyImpl elementProperty = new ElementPropertyImpl();
+ return elementProperty;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public JavaProcessor createJavaProcessor() {
+ JavaProcessorImpl javaProcessor = new JavaProcessorImpl();
+ return javaProcessor;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public BasicTrigger createBasicTrigger() {
+ BasicTriggerImpl basicTrigger = new BasicTriggerImpl();
+ return basicTrigger;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public PropertylifecyclePackage getPropertylifecyclePackage() {
+ return (PropertylifecyclePackage) getEPackage();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @deprecated
+ * @generated
+ */
+ @Deprecated
+ public static PropertylifecyclePackage getPackage() {
+ return PropertylifecyclePackage.eINSTANCE;
+ }
+
+} // PropertylifecycleFactoryImpl
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/impl/PropertylifecyclePackageImpl.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/impl/PropertylifecyclePackageImpl.java
new file mode 100755
index 00000000000..7fab87a1968
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/impl/PropertylifecyclePackageImpl.java
@@ -0,0 +1,659 @@
+/**
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *
+ * Quentin Le Menez (CEA LIST) quentin.lemenez@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.propertylifecycle.impl;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+import org.eclipse.papyrus.propertylifecycle.AbstractTrigger;
+import org.eclipse.papyrus.propertylifecycle.AbstractValueProcessor;
+import org.eclipse.papyrus.propertylifecycle.BasicTrigger;
+import org.eclipse.papyrus.propertylifecycle.ElementContainer;
+import org.eclipse.papyrus.propertylifecycle.ElementProperty;
+import org.eclipse.papyrus.propertylifecycle.ElementTemplate;
+import org.eclipse.papyrus.propertylifecycle.JavaProcessor;
+import org.eclipse.papyrus.propertylifecycle.PropertylifecycleFactory;
+import org.eclipse.papyrus.propertylifecycle.PropertylifecyclePackage;
+import org.eclipse.papyrus.propertylifecycle.StrategyElement;
+import org.eclipse.papyrus.propertylifecycle.StrategySet;
+import org.eclipse.papyrus.propertylifecycle.StrategyTemplate;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class PropertylifecyclePackageImpl extends EPackageImpl implements PropertylifecyclePackage {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private EClass strategyTemplateEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private EClass strategySetEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private EClass strategyElementEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private EClass elementTemplateEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private EClass elementContainerEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private EClass elementPropertyEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private EClass abstractTriggerEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private EClass abstractValueProcessorEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private EClass javaProcessorEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private EClass basicTriggerEClass = 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.propertylifecycle.PropertylifecyclePackage#eNS_URI
+ * @see #init()
+ * @generated
+ */
+ private PropertylifecyclePackageImpl() {
+ super(eNS_URI, PropertylifecycleFactory.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 PropertylifecyclePackage#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 PropertylifecyclePackage init() {
+ if (isInited) {
+ return (PropertylifecyclePackage) EPackage.Registry.INSTANCE.getEPackage(PropertylifecyclePackage.eNS_URI);
+ }
+
+ // Obtain or create and register package
+ PropertylifecyclePackageImpl thePropertylifecyclePackage = (PropertylifecyclePackageImpl) (EPackage.Registry.INSTANCE.get(eNS_URI) instanceof PropertylifecyclePackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new PropertylifecyclePackageImpl());
+
+ isInited = true;
+
+ // Create package meta-data objects
+ thePropertylifecyclePackage.createPackageContents();
+
+ // Initialize created meta-data
+ thePropertylifecyclePackage.initializePackageContents();
+
+ // Mark meta-data to indicate it can't be changed
+ thePropertylifecyclePackage.freeze();
+
+
+ // Update the registry and return the package
+ EPackage.Registry.INSTANCE.put(PropertylifecyclePackage.eNS_URI, thePropertylifecyclePackage);
+ return thePropertylifecyclePackage;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public EClass getStrategyTemplate() {
+ return strategyTemplateEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public EAttribute getStrategyTemplate_Name() {
+ return (EAttribute) strategyTemplateEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public EAttribute getStrategyTemplate_Decription() {
+ return (EAttribute) strategyTemplateEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public EAttribute getStrategyTemplate_Id() {
+ return (EAttribute) strategyTemplateEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public EClass getStrategySet() {
+ return strategySetEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public EReference getStrategySet_Strategies() {
+ return (EReference) strategySetEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public EClass getStrategyElement() {
+ return strategyElementEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public EReference getStrategyElement_ElementContainers() {
+ return (EReference) strategyElementEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public EReference getStrategyElement_ElementProperties() {
+ return (EReference) strategyElementEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public EClass getElementTemplate() {
+ return elementTemplateEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public EAttribute getElementTemplate_BaseType() {
+ return (EAttribute) elementTemplateEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public EAttribute getElementTemplate_SpecializedType() {
+ return (EAttribute) elementTemplateEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public EClass getElementContainer() {
+ return elementContainerEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public EReference getElementContainer_ContainersContainer() {
+ return (EReference) elementContainerEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public EClass getElementProperty() {
+ return elementPropertyEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public EAttribute getElementProperty_FeatureLabel() {
+ return (EAttribute) elementPropertyEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public EAttribute getElementProperty_Priority() {
+ return (EAttribute) elementPropertyEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public EReference getElementProperty_Triggers() {
+ return (EReference) elementPropertyEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public EReference getElementProperty_ValueProcessor() {
+ return (EReference) elementPropertyEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public EClass getAbstractTrigger() {
+ return abstractTriggerEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public EClass getAbstractValueProcessor() {
+ return abstractValueProcessorEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public EClass getJavaProcessor() {
+ return javaProcessorEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public EAttribute getJavaProcessor_ClassName() {
+ return (EAttribute) javaProcessorEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public EClass getBasicTrigger() {
+ return basicTriggerEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public EAttribute getBasicTrigger_OnCreate() {
+ return (EAttribute) basicTriggerEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public EAttribute getBasicTrigger_OnDelete() {
+ return (EAttribute) basicTriggerEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public EAttribute getBasicTrigger_OnOpen() {
+ return (EAttribute) basicTriggerEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public EAttribute getBasicTrigger_OnMove() {
+ return (EAttribute) basicTriggerEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public PropertylifecycleFactory getPropertylifecycleFactory() {
+ return (PropertylifecycleFactory) 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
+ strategyTemplateEClass = createEClass(STRATEGY_TEMPLATE);
+ createEAttribute(strategyTemplateEClass, STRATEGY_TEMPLATE__NAME);
+ createEAttribute(strategyTemplateEClass, STRATEGY_TEMPLATE__DECRIPTION);
+ createEAttribute(strategyTemplateEClass, STRATEGY_TEMPLATE__ID);
+
+ strategySetEClass = createEClass(STRATEGY_SET);
+ createEReference(strategySetEClass, STRATEGY_SET__STRATEGIES);
+
+ strategyElementEClass = createEClass(STRATEGY_ELEMENT);
+ createEReference(strategyElementEClass, STRATEGY_ELEMENT__ELEMENT_CONTAINERS);
+ createEReference(strategyElementEClass, STRATEGY_ELEMENT__ELEMENT_PROPERTIES);
+
+ elementTemplateEClass = createEClass(ELEMENT_TEMPLATE);
+ createEAttribute(elementTemplateEClass, ELEMENT_TEMPLATE__BASE_TYPE);
+ createEAttribute(elementTemplateEClass, ELEMENT_TEMPLATE__SPECIALIZED_TYPE);
+
+ elementContainerEClass = createEClass(ELEMENT_CONTAINER);
+ createEReference(elementContainerEClass, ELEMENT_CONTAINER__CONTAINERS_CONTAINER);
+
+ elementPropertyEClass = createEClass(ELEMENT_PROPERTY);
+ createEAttribute(elementPropertyEClass, ELEMENT_PROPERTY__FEATURE_LABEL);
+ createEAttribute(elementPropertyEClass, ELEMENT_PROPERTY__PRIORITY);
+ createEReference(elementPropertyEClass, ELEMENT_PROPERTY__TRIGGERS);
+ createEReference(elementPropertyEClass, ELEMENT_PROPERTY__VALUE_PROCESSOR);
+
+ abstractTriggerEClass = createEClass(ABSTRACT_TRIGGER);
+
+ abstractValueProcessorEClass = createEClass(ABSTRACT_VALUE_PROCESSOR);
+
+ javaProcessorEClass = createEClass(JAVA_PROCESSOR);
+ createEAttribute(javaProcessorEClass, JAVA_PROCESSOR__CLASS_NAME);
+
+ basicTriggerEClass = createEClass(BASIC_TRIGGER);
+ createEAttribute(basicTriggerEClass, BASIC_TRIGGER__ON_CREATE);
+ createEAttribute(basicTriggerEClass, BASIC_TRIGGER__ON_DELETE);
+ createEAttribute(basicTriggerEClass, BASIC_TRIGGER__ON_OPEN);
+ createEAttribute(basicTriggerEClass, BASIC_TRIGGER__ON_MOVE);
+ }
+
+ /**
+ * <!-- 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
+ strategySetEClass.getESuperTypes().add(this.getStrategyTemplate());
+ strategyElementEClass.getESuperTypes().add(this.getElementTemplate());
+ strategyElementEClass.getESuperTypes().add(this.getStrategyTemplate());
+ elementContainerEClass.getESuperTypes().add(this.getElementTemplate());
+ javaProcessorEClass.getESuperTypes().add(this.getAbstractValueProcessor());
+ basicTriggerEClass.getESuperTypes().add(this.getAbstractTrigger());
+
+ // Initialize classes, features, and operations; add parameters
+ initEClass(strategyTemplateEClass, StrategyTemplate.class, "StrategyTemplate", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEAttribute(getStrategyTemplate_Name(), ecorePackage.getEString(), "name", null, 0, 1, StrategyTemplate.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEAttribute(getStrategyTemplate_Decription(), ecorePackage.getEString(), "decription", null, 0, 1, StrategyTemplate.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEAttribute(getStrategyTemplate_Id(), ecorePackage.getEString(), "id", null, 1, 1, StrategyTemplate.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(strategySetEClass, StrategySet.class, "StrategySet", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEReference(getStrategySet_Strategies(), this.getStrategyElement(), null, "strategies", null, 1, -1, StrategySet.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, //$NON-NLS-1$
+ IS_ORDERED);
+
+ initEClass(strategyElementEClass, StrategyElement.class, "StrategyElement", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEReference(getStrategyElement_ElementContainers(), this.getElementContainer(), null, "elementContainers", null, 0, -1, StrategyElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, //$NON-NLS-1$
+ !IS_DERIVED, IS_ORDERED);
+ initEReference(getStrategyElement_ElementProperties(), this.getElementProperty(), null, "elementProperties", null, 1, -1, StrategyElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, //$NON-NLS-1$
+ !IS_DERIVED, IS_ORDERED);
+
+ initEClass(elementTemplateEClass, ElementTemplate.class, "ElementTemplate", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEAttribute(getElementTemplate_BaseType(), ecorePackage.getEString(), "baseType", null, 1, 1, ElementTemplate.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEAttribute(getElementTemplate_SpecializedType(), ecorePackage.getEString(), "specializedType", null, 0, 1, ElementTemplate.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(elementContainerEClass, ElementContainer.class, "ElementContainer", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEReference(getElementContainer_ContainersContainer(), this.getElementContainer(), null, "containersContainer", null, 0, 1, ElementContainer.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, //$NON-NLS-1$
+ IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(elementPropertyEClass, ElementProperty.class, "ElementProperty", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEAttribute(getElementProperty_FeatureLabel(), ecorePackage.getEString(), "featureLabel", null, 1, 1, ElementProperty.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEAttribute(getElementProperty_Priority(), ecorePackage.getEIntegerObject(), "priority", "0", 1, 1, ElementProperty.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$ //$NON-NLS-2$
+ initEReference(getElementProperty_Triggers(), this.getAbstractTrigger(), null, "triggers", null, 1, -1, ElementProperty.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, //$NON-NLS-1$
+ !IS_ORDERED);
+ initEReference(getElementProperty_ValueProcessor(), this.getAbstractValueProcessor(), null, "valueProcessor", null, 1, 1, ElementProperty.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, //$NON-NLS-1$
+ !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(abstractTriggerEClass, AbstractTrigger.class, "AbstractTrigger", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+ initEClass(abstractValueProcessorEClass, AbstractValueProcessor.class, "AbstractValueProcessor", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+ initEClass(javaProcessorEClass, JavaProcessor.class, "JavaProcessor", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEAttribute(getJavaProcessor_ClassName(), ecorePackage.getEString(), "className", null, 1, 1, JavaProcessor.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(basicTriggerEClass, BasicTrigger.class, "BasicTrigger", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEAttribute(getBasicTrigger_OnCreate(), ecorePackage.getEBoolean(), "onCreate", null, 1, 1, BasicTrigger.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+ initEAttribute(getBasicTrigger_OnDelete(), ecorePackage.getEBoolean(), "onDelete", null, 1, 1, BasicTrigger.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+ initEAttribute(getBasicTrigger_OnOpen(), ecorePackage.getEBoolean(), "onOpen", null, 1, 1, BasicTrigger.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+ initEAttribute(getBasicTrigger_OnMove(), ecorePackage.getEBoolean(), "onMove", null, 1, 1, BasicTrigger.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+ // Create resource
+ createResource(eNS_URI);
+ }
+
+} // PropertylifecyclePackageImpl
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/impl/StrategyElementImpl.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/impl/StrategyElementImpl.java
new file mode 100755
index 00000000000..e27dded5853
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/impl/StrategyElementImpl.java
@@ -0,0 +1,459 @@
+/**
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *
+ * Quentin Le Menez (CEA LIST) quentin.lemenez@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.propertylifecycle.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.propertylifecycle.ElementContainer;
+import org.eclipse.papyrus.propertylifecycle.ElementProperty;
+import org.eclipse.papyrus.propertylifecycle.PropertylifecyclePackage;
+import org.eclipse.papyrus.propertylifecycle.StrategyElement;
+import org.eclipse.papyrus.propertylifecycle.StrategyTemplate;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Strategy Element</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.propertylifecycle.impl.StrategyElementImpl#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.papyrus.propertylifecycle.impl.StrategyElementImpl#getDecription <em>Decription</em>}</li>
+ * <li>{@link org.eclipse.papyrus.propertylifecycle.impl.StrategyElementImpl#getId <em>Id</em>}</li>
+ * <li>{@link org.eclipse.papyrus.propertylifecycle.impl.StrategyElementImpl#getElementContainers <em>Element Containers</em>}</li>
+ * <li>{@link org.eclipse.papyrus.propertylifecycle.impl.StrategyElementImpl#getElementProperties <em>Element Properties</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class StrategyElementImpl extends ElementTemplateImpl implements StrategyElement {
+ /**
+ * 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 #getDecription() <em>Decription</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @see #getDecription()
+ * @generated
+ * @ordered
+ */
+ protected static final String DECRIPTION_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getDecription() <em>Decription</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @see #getDecription()
+ * @generated
+ * @ordered
+ */
+ protected String decription = DECRIPTION_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getId() <em>Id</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @see #getId()
+ * @generated
+ * @ordered
+ */
+ protected static final String ID_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getId() <em>Id</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @see #getId()
+ * @generated
+ * @ordered
+ */
+ protected String id = ID_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getElementContainers() <em>Element Containers</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @see #getElementContainers()
+ * @generated
+ * @ordered
+ */
+ protected EList<ElementContainer> elementContainers;
+
+ /**
+ * The cached value of the '{@link #getElementProperties() <em>Element Properties</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @see #getElementProperties()
+ * @generated
+ * @ordered
+ */
+ protected EList<ElementProperty> elementProperties;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected StrategyElementImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return PropertylifecyclePackage.Literals.STRATEGY_ELEMENT;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void setName(String newName) {
+ String oldName = name;
+ name = newName;
+ if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, PropertylifecyclePackage.STRATEGY_ELEMENT__NAME, oldName, name));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public String getDecription() {
+ return decription;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void setDecription(String newDecription) {
+ String oldDecription = decription;
+ decription = newDecription;
+ if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, PropertylifecyclePackage.STRATEGY_ELEMENT__DECRIPTION, oldDecription, decription));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public String getId() {
+ return id;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void setId(String newId) {
+ String oldId = id;
+ id = newId;
+ if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, PropertylifecyclePackage.STRATEGY_ELEMENT__ID, oldId, id));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public EList<ElementContainer> getElementContainers() {
+ if (elementContainers == null) {
+ elementContainers = new EObjectContainmentEList<ElementContainer>(ElementContainer.class, this, PropertylifecyclePackage.STRATEGY_ELEMENT__ELEMENT_CONTAINERS);
+ }
+ return elementContainers;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public EList<ElementProperty> getElementProperties() {
+ if (elementProperties == null) {
+ elementProperties = new EObjectContainmentEList<ElementProperty>(ElementProperty.class, this, PropertylifecyclePackage.STRATEGY_ELEMENT__ELEMENT_PROPERTIES);
+ }
+ return elementProperties;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case PropertylifecyclePackage.STRATEGY_ELEMENT__ELEMENT_CONTAINERS:
+ return ((InternalEList<?>) getElementContainers()).basicRemove(otherEnd, msgs);
+ case PropertylifecyclePackage.STRATEGY_ELEMENT__ELEMENT_PROPERTIES:
+ return ((InternalEList<?>) getElementProperties()).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 PropertylifecyclePackage.STRATEGY_ELEMENT__NAME:
+ return getName();
+ case PropertylifecyclePackage.STRATEGY_ELEMENT__DECRIPTION:
+ return getDecription();
+ case PropertylifecyclePackage.STRATEGY_ELEMENT__ID:
+ return getId();
+ case PropertylifecyclePackage.STRATEGY_ELEMENT__ELEMENT_CONTAINERS:
+ return getElementContainers();
+ case PropertylifecyclePackage.STRATEGY_ELEMENT__ELEMENT_PROPERTIES:
+ return getElementProperties();
+ }
+ 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 PropertylifecyclePackage.STRATEGY_ELEMENT__NAME:
+ setName((String) newValue);
+ return;
+ case PropertylifecyclePackage.STRATEGY_ELEMENT__DECRIPTION:
+ setDecription((String) newValue);
+ return;
+ case PropertylifecyclePackage.STRATEGY_ELEMENT__ID:
+ setId((String) newValue);
+ return;
+ case PropertylifecyclePackage.STRATEGY_ELEMENT__ELEMENT_CONTAINERS:
+ getElementContainers().clear();
+ getElementContainers().addAll((Collection<? extends ElementContainer>) newValue);
+ return;
+ case PropertylifecyclePackage.STRATEGY_ELEMENT__ELEMENT_PROPERTIES:
+ getElementProperties().clear();
+ getElementProperties().addAll((Collection<? extends ElementProperty>) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case PropertylifecyclePackage.STRATEGY_ELEMENT__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ case PropertylifecyclePackage.STRATEGY_ELEMENT__DECRIPTION:
+ setDecription(DECRIPTION_EDEFAULT);
+ return;
+ case PropertylifecyclePackage.STRATEGY_ELEMENT__ID:
+ setId(ID_EDEFAULT);
+ return;
+ case PropertylifecyclePackage.STRATEGY_ELEMENT__ELEMENT_CONTAINERS:
+ getElementContainers().clear();
+ return;
+ case PropertylifecyclePackage.STRATEGY_ELEMENT__ELEMENT_PROPERTIES:
+ getElementProperties().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case PropertylifecyclePackage.STRATEGY_ELEMENT__NAME:
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ case PropertylifecyclePackage.STRATEGY_ELEMENT__DECRIPTION:
+ return DECRIPTION_EDEFAULT == null ? decription != null : !DECRIPTION_EDEFAULT.equals(decription);
+ case PropertylifecyclePackage.STRATEGY_ELEMENT__ID:
+ return ID_EDEFAULT == null ? id != null : !ID_EDEFAULT.equals(id);
+ case PropertylifecyclePackage.STRATEGY_ELEMENT__ELEMENT_CONTAINERS:
+ return elementContainers != null && !elementContainers.isEmpty();
+ case PropertylifecyclePackage.STRATEGY_ELEMENT__ELEMENT_PROPERTIES:
+ return elementProperties != null && !elementProperties.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+ if (baseClass == StrategyTemplate.class) {
+ switch (derivedFeatureID) {
+ case PropertylifecyclePackage.STRATEGY_ELEMENT__NAME:
+ return PropertylifecyclePackage.STRATEGY_TEMPLATE__NAME;
+ case PropertylifecyclePackage.STRATEGY_ELEMENT__DECRIPTION:
+ return PropertylifecyclePackage.STRATEGY_TEMPLATE__DECRIPTION;
+ case PropertylifecyclePackage.STRATEGY_ELEMENT__ID:
+ return PropertylifecyclePackage.STRATEGY_TEMPLATE__ID;
+ default:
+ return -1;
+ }
+ }
+ return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
+ if (baseClass == StrategyTemplate.class) {
+ switch (baseFeatureID) {
+ case PropertylifecyclePackage.STRATEGY_TEMPLATE__NAME:
+ return PropertylifecyclePackage.STRATEGY_ELEMENT__NAME;
+ case PropertylifecyclePackage.STRATEGY_TEMPLATE__DECRIPTION:
+ return PropertylifecyclePackage.STRATEGY_ELEMENT__DECRIPTION;
+ case PropertylifecyclePackage.STRATEGY_TEMPLATE__ID:
+ return PropertylifecyclePackage.STRATEGY_ELEMENT__ID;
+ default:
+ return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- 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: "); //$NON-NLS-1$
+ result.append(name);
+ result.append(", decription: "); //$NON-NLS-1$
+ result.append(decription);
+ result.append(", id: "); //$NON-NLS-1$
+ result.append(id);
+ result.append(')');
+ return result.toString();
+ }
+
+} // StrategyElementImpl
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/impl/StrategySetImpl.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/impl/StrategySetImpl.java
new file mode 100755
index 00000000000..bbf1596db53
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/impl/StrategySetImpl.java
@@ -0,0 +1,169 @@
+/**
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *
+ * Quentin Le Menez (CEA LIST) quentin.lemenez@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.propertylifecycle.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.propertylifecycle.PropertylifecyclePackage;
+import org.eclipse.papyrus.propertylifecycle.StrategyElement;
+import org.eclipse.papyrus.propertylifecycle.StrategySet;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Strategy Set</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.propertylifecycle.impl.StrategySetImpl#getStrategies <em>Strategies</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class StrategySetImpl extends StrategyTemplateImpl implements StrategySet {
+ /**
+ * The cached value of the '{@link #getStrategies() <em>Strategies</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @see #getStrategies()
+ * @generated
+ * @ordered
+ */
+ protected EList<StrategyElement> strategies;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected StrategySetImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return PropertylifecyclePackage.Literals.STRATEGY_SET;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public EList<StrategyElement> getStrategies() {
+ if (strategies == null) {
+ strategies = new EObjectContainmentEList<StrategyElement>(StrategyElement.class, this, PropertylifecyclePackage.STRATEGY_SET__STRATEGIES);
+ }
+ return strategies;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case PropertylifecyclePackage.STRATEGY_SET__STRATEGIES:
+ return ((InternalEList<?>) getStrategies()).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 PropertylifecyclePackage.STRATEGY_SET__STRATEGIES:
+ return getStrategies();
+ }
+ 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 PropertylifecyclePackage.STRATEGY_SET__STRATEGIES:
+ getStrategies().clear();
+ getStrategies().addAll((Collection<? extends StrategyElement>) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case PropertylifecyclePackage.STRATEGY_SET__STRATEGIES:
+ getStrategies().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case PropertylifecyclePackage.STRATEGY_SET__STRATEGIES:
+ return strategies != null && !strategies.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+} // StrategySetImpl
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/impl/StrategyTemplateImpl.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/impl/StrategyTemplateImpl.java
new file mode 100755
index 00000000000..267622b8948
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/impl/StrategyTemplateImpl.java
@@ -0,0 +1,310 @@
+/**
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *
+ * Quentin Le Menez (CEA LIST) quentin.lemenez@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.propertylifecycle.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.propertylifecycle.PropertylifecyclePackage;
+import org.eclipse.papyrus.propertylifecycle.StrategyTemplate;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Strategy Template</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.propertylifecycle.impl.StrategyTemplateImpl#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.papyrus.propertylifecycle.impl.StrategyTemplateImpl#getDecription <em>Decription</em>}</li>
+ * <li>{@link org.eclipse.papyrus.propertylifecycle.impl.StrategyTemplateImpl#getId <em>Id</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class StrategyTemplateImpl extends MinimalEObjectImpl.Container implements StrategyTemplate {
+ /**
+ * 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 #getDecription() <em>Decription</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @see #getDecription()
+ * @generated
+ * @ordered
+ */
+ protected static final String DECRIPTION_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getDecription() <em>Decription</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @see #getDecription()
+ * @generated
+ * @ordered
+ */
+ protected String decription = DECRIPTION_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getId() <em>Id</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @see #getId()
+ * @generated
+ * @ordered
+ */
+ protected static final String ID_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getId() <em>Id</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @see #getId()
+ * @generated
+ * @ordered
+ */
+ protected String id = ID_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected StrategyTemplateImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return PropertylifecyclePackage.Literals.STRATEGY_TEMPLATE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void setName(String newName) {
+ String oldName = name;
+ name = newName;
+ if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, PropertylifecyclePackage.STRATEGY_TEMPLATE__NAME, oldName, name));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public String getDecription() {
+ return decription;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void setDecription(String newDecription) {
+ String oldDecription = decription;
+ decription = newDecription;
+ if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, PropertylifecyclePackage.STRATEGY_TEMPLATE__DECRIPTION, oldDecription, decription));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public String getId() {
+ return id;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void setId(String newId) {
+ String oldId = id;
+ id = newId;
+ if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, PropertylifecyclePackage.STRATEGY_TEMPLATE__ID, oldId, id));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case PropertylifecyclePackage.STRATEGY_TEMPLATE__NAME:
+ return getName();
+ case PropertylifecyclePackage.STRATEGY_TEMPLATE__DECRIPTION:
+ return getDecription();
+ case PropertylifecyclePackage.STRATEGY_TEMPLATE__ID:
+ return getId();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case PropertylifecyclePackage.STRATEGY_TEMPLATE__NAME:
+ setName((String) newValue);
+ return;
+ case PropertylifecyclePackage.STRATEGY_TEMPLATE__DECRIPTION:
+ setDecription((String) newValue);
+ return;
+ case PropertylifecyclePackage.STRATEGY_TEMPLATE__ID:
+ setId((String) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case PropertylifecyclePackage.STRATEGY_TEMPLATE__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ case PropertylifecyclePackage.STRATEGY_TEMPLATE__DECRIPTION:
+ setDecription(DECRIPTION_EDEFAULT);
+ return;
+ case PropertylifecyclePackage.STRATEGY_TEMPLATE__ID:
+ setId(ID_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case PropertylifecyclePackage.STRATEGY_TEMPLATE__NAME:
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ case PropertylifecyclePackage.STRATEGY_TEMPLATE__DECRIPTION:
+ return DECRIPTION_EDEFAULT == null ? decription != null : !DECRIPTION_EDEFAULT.equals(decription);
+ case PropertylifecyclePackage.STRATEGY_TEMPLATE__ID:
+ return ID_EDEFAULT == null ? id != null : !ID_EDEFAULT.equals(id);
+ }
+ 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: "); //$NON-NLS-1$
+ result.append(name);
+ result.append(", decription: "); //$NON-NLS-1$
+ result.append(decription);
+ result.append(", id: "); //$NON-NLS-1$
+ result.append(id);
+ result.append(')');
+ return result.toString();
+ }
+
+} // StrategyTemplateImpl
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/util/PropertylifecycleAdapterFactory.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/util/PropertylifecycleAdapterFactory.java
new file mode 100755
index 00000000000..9666a6ca629
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/util/PropertylifecycleAdapterFactory.java
@@ -0,0 +1,318 @@
+/**
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *
+ * Quentin Le Menez (CEA LIST) quentin.lemenez@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.propertylifecycle.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.propertylifecycle.*;
+
+/**
+ * <!-- 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.propertylifecycle.PropertylifecyclePackage
+ * @generated
+ */
+public class PropertylifecycleAdapterFactory extends AdapterFactoryImpl {
+ /**
+ * The cached model package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected static PropertylifecyclePackage modelPackage;
+
+ /**
+ * Creates an instance of the adapter factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public PropertylifecycleAdapterFactory() {
+ if (modelPackage == null) {
+ modelPackage = PropertylifecyclePackage.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 PropertylifecycleSwitch<Adapter> modelSwitch = new PropertylifecycleSwitch<Adapter>() {
+ @Override
+ public Adapter caseStrategyTemplate(StrategyTemplate object) {
+ return createStrategyTemplateAdapter();
+ }
+
+ @Override
+ public Adapter caseStrategySet(StrategySet object) {
+ return createStrategySetAdapter();
+ }
+
+ @Override
+ public Adapter caseStrategyElement(StrategyElement object) {
+ return createStrategyElementAdapter();
+ }
+
+ @Override
+ public Adapter caseElementTemplate(ElementTemplate object) {
+ return createElementTemplateAdapter();
+ }
+
+ @Override
+ public Adapter caseElementContainer(ElementContainer object) {
+ return createElementContainerAdapter();
+ }
+
+ @Override
+ public Adapter caseElementProperty(ElementProperty object) {
+ return createElementPropertyAdapter();
+ }
+
+ @Override
+ public Adapter caseAbstractTrigger(AbstractTrigger object) {
+ return createAbstractTriggerAdapter();
+ }
+
+ @Override
+ public Adapter caseAbstractValueProcessor(AbstractValueProcessor object) {
+ return createAbstractValueProcessorAdapter();
+ }
+
+ @Override
+ public Adapter caseJavaProcessor(JavaProcessor object) {
+ return createJavaProcessorAdapter();
+ }
+
+ @Override
+ public Adapter caseBasicTrigger(BasicTrigger object) {
+ return createBasicTriggerAdapter();
+ }
+
+ @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.propertylifecycle.StrategyTemplate <em>Strategy Template</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.propertylifecycle.StrategyTemplate
+ * @generated
+ */
+ public Adapter createStrategyTemplateAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.propertylifecycle.StrategySet <em>Strategy Set</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.propertylifecycle.StrategySet
+ * @generated
+ */
+ public Adapter createStrategySetAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.propertylifecycle.StrategyElement <em>Strategy 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.propertylifecycle.StrategyElement
+ * @generated
+ */
+ public Adapter createStrategyElementAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.propertylifecycle.ElementTemplate <em>Element Template</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.propertylifecycle.ElementTemplate
+ * @generated
+ */
+ public Adapter createElementTemplateAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.propertylifecycle.ElementContainer <em>Element 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.propertylifecycle.ElementContainer
+ * @generated
+ */
+ public Adapter createElementContainerAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.propertylifecycle.ElementProperty <em>Element 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.propertylifecycle.ElementProperty
+ * @generated
+ */
+ public Adapter createElementPropertyAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.propertylifecycle.AbstractTrigger <em>Abstract Trigger</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.propertylifecycle.AbstractTrigger
+ * @generated
+ */
+ public Adapter createAbstractTriggerAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.propertylifecycle.AbstractValueProcessor <em>Abstract Value Processor</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.propertylifecycle.AbstractValueProcessor
+ * @generated
+ */
+ public Adapter createAbstractValueProcessorAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.propertylifecycle.JavaProcessor <em>Java Processor</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.propertylifecycle.JavaProcessor
+ * @generated
+ */
+ public Adapter createJavaProcessorAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.propertylifecycle.BasicTrigger <em>Basic Trigger</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.propertylifecycle.BasicTrigger
+ * @generated
+ */
+ public Adapter createBasicTriggerAdapter() {
+ 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;
+ }
+
+} // PropertylifecycleAdapterFactory
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/util/PropertylifecycleResourceFactoryImpl.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/util/PropertylifecycleResourceFactoryImpl.java
new file mode 100755
index 00000000000..be2b87b606e
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/util/PropertylifecycleResourceFactoryImpl.java
@@ -0,0 +1,54 @@
+/**
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *
+ * Quentin Le Menez (CEA LIST) quentin.lemenez@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.propertylifecycle.util;
+
+import org.eclipse.emf.common.util.URI;
+
+import org.eclipse.emf.ecore.resource.Resource;
+
+import org.eclipse.emf.ecore.resource.impl.ResourceFactoryImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Resource Factory</b> associated with the package.
+ * <!-- end-user-doc -->
+ *
+ * @see org.eclipse.papyrus.propertylifecycle.util.PropertylifecycleResourceImpl
+ * @generated
+ */
+public class PropertylifecycleResourceFactoryImpl extends ResourceFactoryImpl {
+ /**
+ * Creates an instance of the resource factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public PropertylifecycleResourceFactoryImpl() {
+ super();
+ }
+
+ /**
+ * Creates an instance of the resource.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public Resource createResource(URI uri) {
+ Resource result = new PropertylifecycleResourceImpl(uri);
+ return result;
+ }
+
+} // PropertylifecycleResourceFactoryImpl
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/util/PropertylifecycleResourceImpl.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/util/PropertylifecycleResourceImpl.java
new file mode 100755
index 00000000000..e617600629b
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/util/PropertylifecycleResourceImpl.java
@@ -0,0 +1,41 @@
+/**
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *
+ * Quentin Le Menez (CEA LIST) quentin.lemenez@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.propertylifecycle.util;
+
+import org.eclipse.emf.common.util.URI;
+
+import org.eclipse.emf.ecore.xmi.impl.XMIResourceImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Resource </b> associated with the package.
+ * <!-- end-user-doc -->
+ *
+ * @see org.eclipse.papyrus.propertylifecycle.util.PropertylifecycleResourceFactoryImpl
+ * @generated
+ */
+public class PropertylifecycleResourceImpl extends XMIResourceImpl {
+ /**
+ * Creates an instance of the resource.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @param uri
+ * the URI of the new resource.
+ * @generated
+ */
+ public PropertylifecycleResourceImpl(URI uri) {
+ super(uri);
+ }
+
+} // PropertylifecycleResourceImpl
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/util/PropertylifecycleSwitch.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/util/PropertylifecycleSwitch.java
new file mode 100755
index 00000000000..0937f20e5d4
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src-gen/org/eclipse/papyrus/propertylifecycle/util/PropertylifecycleSwitch.java
@@ -0,0 +1,375 @@
+/**
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *
+ * Quentin Le Menez (CEA LIST) quentin.lemenez@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.propertylifecycle.util;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.util.Switch;
+import org.eclipse.papyrus.propertylifecycle.*;
+
+/**
+ * <!-- 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.propertylifecycle.PropertylifecyclePackage
+ * @generated
+ */
+public class PropertylifecycleSwitch<T> extends Switch<T> {
+ /**
+ * The cached model package
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected static PropertylifecyclePackage modelPackage;
+
+ /**
+ * Creates an instance of the switch.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public PropertylifecycleSwitch() {
+ if (modelPackage == null) {
+ modelPackage = PropertylifecyclePackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Checks whether this is a switch for the given package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @param 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 PropertylifecyclePackage.STRATEGY_TEMPLATE: {
+ StrategyTemplate strategyTemplate = (StrategyTemplate) theEObject;
+ T result = caseStrategyTemplate(strategyTemplate);
+ if (result == null) {
+ result = defaultCase(theEObject);
+ }
+ return result;
+ }
+ case PropertylifecyclePackage.STRATEGY_SET: {
+ StrategySet strategySet = (StrategySet) theEObject;
+ T result = caseStrategySet(strategySet);
+ if (result == null) {
+ result = caseStrategyTemplate(strategySet);
+ }
+ if (result == null) {
+ result = defaultCase(theEObject);
+ }
+ return result;
+ }
+ case PropertylifecyclePackage.STRATEGY_ELEMENT: {
+ StrategyElement strategyElement = (StrategyElement) theEObject;
+ T result = caseStrategyElement(strategyElement);
+ if (result == null) {
+ result = caseElementTemplate(strategyElement);
+ }
+ if (result == null) {
+ result = caseStrategyTemplate(strategyElement);
+ }
+ if (result == null) {
+ result = defaultCase(theEObject);
+ }
+ return result;
+ }
+ case PropertylifecyclePackage.ELEMENT_TEMPLATE: {
+ ElementTemplate elementTemplate = (ElementTemplate) theEObject;
+ T result = caseElementTemplate(elementTemplate);
+ if (result == null) {
+ result = defaultCase(theEObject);
+ }
+ return result;
+ }
+ case PropertylifecyclePackage.ELEMENT_CONTAINER: {
+ ElementContainer elementContainer = (ElementContainer) theEObject;
+ T result = caseElementContainer(elementContainer);
+ if (result == null) {
+ result = caseElementTemplate(elementContainer);
+ }
+ if (result == null) {
+ result = defaultCase(theEObject);
+ }
+ return result;
+ }
+ case PropertylifecyclePackage.ELEMENT_PROPERTY: {
+ ElementProperty elementProperty = (ElementProperty) theEObject;
+ T result = caseElementProperty(elementProperty);
+ if (result == null) {
+ result = defaultCase(theEObject);
+ }
+ return result;
+ }
+ case PropertylifecyclePackage.ABSTRACT_TRIGGER: {
+ AbstractTrigger abstractTrigger = (AbstractTrigger) theEObject;
+ T result = caseAbstractTrigger(abstractTrigger);
+ if (result == null) {
+ result = defaultCase(theEObject);
+ }
+ return result;
+ }
+ case PropertylifecyclePackage.ABSTRACT_VALUE_PROCESSOR: {
+ AbstractValueProcessor abstractValueProcessor = (AbstractValueProcessor) theEObject;
+ T result = caseAbstractValueProcessor(abstractValueProcessor);
+ if (result == null) {
+ result = defaultCase(theEObject);
+ }
+ return result;
+ }
+ case PropertylifecyclePackage.JAVA_PROCESSOR: {
+ JavaProcessor javaProcessor = (JavaProcessor) theEObject;
+ T result = caseJavaProcessor(javaProcessor);
+ if (result == null) {
+ result = caseAbstractValueProcessor(javaProcessor);
+ }
+ if (result == null) {
+ result = defaultCase(theEObject);
+ }
+ return result;
+ }
+ case PropertylifecyclePackage.BASIC_TRIGGER: {
+ BasicTrigger basicTrigger = (BasicTrigger) theEObject;
+ T result = caseBasicTrigger(basicTrigger);
+ if (result == null) {
+ result = caseAbstractTrigger(basicTrigger);
+ }
+ if (result == null) {
+ result = defaultCase(theEObject);
+ }
+ return result;
+ }
+ default:
+ return defaultCase(theEObject);
+ }
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Strategy Template</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>Strategy Template</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseStrategyTemplate(StrategyTemplate object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Strategy Set</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>Strategy Set</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseStrategySet(StrategySet object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Strategy 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>Strategy Element</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseStrategyElement(StrategyElement object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Element Template</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>Element Template</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseElementTemplate(ElementTemplate object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Element 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>Element Container</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseElementContainer(ElementContainer object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Element 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>Element Property</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseElementProperty(ElementProperty object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Abstract Trigger</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 Trigger</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseAbstractTrigger(AbstractTrigger object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Abstract Value Processor</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 Value Processor</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseAbstractValueProcessor(AbstractValueProcessor object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Java Processor</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>Java Processor</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseJavaProcessor(JavaProcessor object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Basic Trigger</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>Basic Trigger</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseBasicTrigger(BasicTrigger 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;
+ }
+
+} // PropertylifecycleSwitch
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src/org/eclipse/papyrus/propertylifecycle/model/Activator.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src/org/eclipse/papyrus/propertylifecycle/model/Activator.java
new file mode 100755
index 00000000000..4bf2a58d70d
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src/org/eclipse/papyrus/propertylifecycle/model/Activator.java
@@ -0,0 +1,73 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Quentin Le Menez (CEA LIST) quentin.lemenez@cea.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.propertylifecycle.model;
+
+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.infra.propertylifecycle.model"; //$NON-NLS-1$
+
+ // The shared instance
+ private static Activator plugin;
+
+ /** Logging helper */
+ public static LogHelper log;
+
+ /**
+ * The constructor
+ */
+ public Activator() {
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+ */
+ @Override
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ plugin = this;
+ log = new LogHelper(this);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+ */
+ @Override
+ public void stop(BundleContext context) throws Exception {
+ log = null;
+ plugin = null;
+ super.stop(context);
+ }
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static Activator getDefault() {
+ return plugin;
+ }
+
+}
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src/org/eclipse/papyrus/propertylifecycle/model/extensionpoints/IStrategySetExtensionPoint.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src/org/eclipse/papyrus/propertylifecycle/model/extensionpoints/IStrategySetExtensionPoint.java
new file mode 100755
index 00000000000..010be1da3da
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src/org/eclipse/papyrus/propertylifecycle/model/extensionpoints/IStrategySetExtensionPoint.java
@@ -0,0 +1,30 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Quentin Le Menez (CEA LIST) quentin.lemenez@cea.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.propertylifecycle.model.extensionpoints;
+
+import org.eclipse.papyrus.propertylifecycle.model.Activator;
+
+/**
+ * The needed informations to identify and declare an extension that will be registered as a StrategySet
+ *
+ */
+public interface IStrategySetExtensionPoint {
+
+ public final static String EXTENSION_POINT_ID = Activator.PLUGIN_ID + ".propertylifecyclestrategyset";
+
+ public static final String PATH = "path";
+
+ public static final String ID = "id";
+
+}
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src/org/eclipse/papyrus/propertylifecycle/model/registries/StrategySetRegistry.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src/org/eclipse/papyrus/propertylifecycle/model/registries/StrategySetRegistry.java
new file mode 100755
index 00000000000..fcc724bea52
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.model/src/org/eclipse/papyrus/propertylifecycle/model/registries/StrategySetRegistry.java
@@ -0,0 +1,172 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Quentin Le Menez (CEA LIST) quentin.lemenez@cea.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.propertylifecycle.model.registries;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Platform;
+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.papyrus.propertylifecycle.StrategySet;
+import org.eclipse.papyrus.propertylifecycle.model.Activator;
+import org.eclipse.papyrus.propertylifecycle.model.extensionpoints.IStrategySetExtensionPoint;
+
+
+/**
+ * Convenience class used to get the informations on the strategy models referenced by extensions
+ *
+ * @author QL238289
+ *
+ */
+public class StrategySetRegistry {
+
+ /** The registry */
+ private static StrategySetRegistry strategySetRegistry;
+
+ /** The models */
+ protected Map<String, StrategySet> strategySets;
+
+ /** ResourceSet hosting the registered strategySets */
+ protected ResourceSet strategySetResourceSet;
+
+ /**
+ * Retrieve the existing instance of the registry or create a new one
+ *
+ * @return
+ * The current strategy registry
+ */
+ public static synchronized StrategySetRegistry getInstance() {
+ if (strategySetRegistry == null) {
+ strategySetRegistry = new StrategySetRegistry();
+ strategySetRegistry.init();
+ }
+
+ return strategySetRegistry;
+ }
+
+ /**
+ * Initialize the contents of the new instance of the registry
+ *
+ */
+ protected void init() {
+ // Resets values
+ strategySetResourceSet = null;
+ strategySets = null;
+ // Creates the resource set
+ strategySetResourceSet = createResourceSet();
+ // Creates the list only when registry is acceded for the first time, (or on reload?)
+ // TODO select the strategies models from the preference page activations, store the ids and retrieve them here
+ strategySets = readStrategySetModels();
+ }
+
+ /**
+ * Create a new {@link #org.eclipse.emf.ecore.resource.ResourceSet resourceSet}
+ *
+ * @return
+ * The resourceSet that will contain the strategy models
+ */
+ protected ResourceSet createResourceSet() {
+ ResourceSet set = new ResourceSetImpl();
+ return set;
+ }
+
+ /**
+ * @return
+ * A non null map containing the models retrieved from {@link #readExtensionsStrategySet() readExtensionsStrategySet()}
+ */
+ protected Map<String, StrategySet> readStrategySetModels() {
+ Map<String, StrategySet> localStrategySet = new HashMap<String, StrategySet>();
+
+ // Retrieves from the platform, e.g. extension points
+ // The localSets argument is used to verify that we do not load the same model twice, i.e. from the local and extension
+ Map<String, StrategySet> registeredSets = readExtensionsStrategySet();
+ if (registeredSets != null && !registeredSets.isEmpty()) {
+ localStrategySet.putAll(registeredSets);
+ }
+
+ return localStrategySet;
+ }
+
+ /**
+ * @see org.eclipse.papyrus.propertylifecycle.model.extensionpoints.IStrategySetExtensionPoint
+ *
+ * @return
+ * A map containing the models referenced by the extensions containing the correct ID
+ */
+ protected Map<String, StrategySet> readExtensionsStrategySet() {
+ Map<String, StrategySet> platformStrategySets = new HashMap<String, StrategySet>();
+ IConfigurationElement[] extensions = Platform.getExtensionRegistry().getConfigurationElementsFor(IStrategySetExtensionPoint.EXTENSION_POINT_ID);
+
+ for (IConfigurationElement extension : extensions) {
+ String modelPath = extension.getAttribute(IStrategySetExtensionPoint.PATH);
+ String renameSetID = extension.getAttribute(IStrategySetExtensionPoint.ID);
+ String contributorID = extension.getContributor().getName();
+ StrategySet set = getStrategySetInBundle(modelPath, contributorID);
+ // Verify if the models are already loaded or not
+ if (set != null) {
+ if (platformStrategySets.containsKey(renameSetID)) {
+ continue;
+ }
+ platformStrategySets.put(renameSetID, set);
+ }
+ }
+
+ return platformStrategySets;
+ }
+
+ /**
+ * Load the resource based on the given parameters
+ *
+ * @param modelPath
+ * The path of the resource from the contained bundle
+ * @param bundleID
+ * The bundle ID used to form the URI
+ * @return
+ * The retrieved {@link #org.eclipse.emf.ecore.resource.ResourceSet resourceSet} or null
+ */
+ protected StrategySet getStrategySetInBundle(String modelPath, String bundleID) {
+ String path = bundleID + IPath.SEPARATOR + modelPath;
+ Resource resource = strategySetResourceSet.createResource(URI.createPlatformPluginURI(path, true));
+ try {
+ resource.load(null);
+ } catch (IOException e) {
+ Activator.log.error(e);
+ }
+
+ EObject content = resource.getContents().get(0);
+ if (content instanceof StrategySet) {
+ return (StrategySet) content;
+ }
+
+ return null;
+ }
+
+ /**
+ * Convenience method
+ *
+ * @return
+ * The Map containing the successfully retrieved models, identified by their extensionPoint's ID
+ */
+ public Map<String, StrategySet> getStrategySets() {
+ return strategySets;
+ }
+
+}
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/.classpath b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/.classpath
new file mode 100755
index 00000000000..eca7bdba8f0
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/.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.8"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/.gitignore b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/.gitignore
new file mode 100755
index 00000000000..ae3c1726048
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/.gitignore
@@ -0,0 +1 @@
+/bin/
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/.options b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/.options
new file mode 100755
index 00000000000..3d16767c9da
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/.options
@@ -0,0 +1,3 @@
+# Tracing options for the org.eclipse.papyrus.infra.propertylifecycle.preferences plug-in
+org.eclipse.papyrus.infra.propertylifecycle.preferences/debug=true
+org.eclipse.papyrus.infra.propertylifecycle.preferences/debug/lifecyclepreferences=true
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/.project b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/.project
new file mode 100755
index 00000000000..69c889ad21c
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.papyrus.propertylifecycle.preferences</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/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/.settings/org.eclipse.jdt.core.prefs b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/.settings/org.eclipse.jdt.core.prefs
new file mode 100755
index 00000000000..0c68a61dca8
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/.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.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/META-INF/MANIFEST.MF b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/META-INF/MANIFEST.MF
new file mode 100755
index 00000000000..a12006b22c6
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/META-INF/MANIFEST.MF
@@ -0,0 +1,14 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: PropertyLifecyclePreferences
+Bundle-SymbolicName: org.eclipse.papyrus.propertylifecycle.preferences;singleton:=true
+Bundle-Version: 0.0.1.qualifier
+Bundle-Activator: org.eclipse.papyrus.propertylifecycle.preferences.Activator
+Require-Bundle: org.eclipse.ui;bundle-version="3.107.0",
+ org.eclipse.core.runtime;bundle-version="3.12.0",
+ org.eclipse.papyrus.infra.core.log;bundle-version="1.2.0",
+ org.eclipse.papyrus.propertylifecycle.model;bundle-version="0.0.1",
+ org.eclipse.papyrus.propertylifecycle.model.editor;bundle-version="0.0.1"
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-ActivationPolicy: lazy
+Export-Package: org.eclipse.papyrus.propertylifecycle.preferences.utils
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/about.html b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/about.html
new file mode 100755
index 00000000000..d35d5aed64c
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/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/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/build.properties b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/build.properties
new file mode 100755
index 00000000000..34d2e4d2dad
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/build.properties
@@ -0,0 +1,4 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/icons/menu/removeStrategyModel_16x16.gif b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/icons/menu/removeStrategyModel_16x16.gif
new file mode 100755
index 00000000000..8995a3057b5
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/icons/menu/removeStrategyModel_16x16.gif
Binary files differ
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/icons/menu/removeStrategy_16x16.gif b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/icons/menu/removeStrategy_16x16.gif
new file mode 100755
index 00000000000..84f0315f2bd
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/icons/menu/removeStrategy_16x16.gif
Binary files differ
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/icons/navigation/arrow_left_16x16.gif b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/icons/navigation/arrow_left_16x16.gif
new file mode 100755
index 00000000000..4fb41501036
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/icons/navigation/arrow_left_16x16.gif
Binary files differ
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/icons/navigation/arrow_left_double_16x16.gif b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/icons/navigation/arrow_left_double_16x16.gif
new file mode 100755
index 00000000000..336b55cf08e
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/icons/navigation/arrow_left_double_16x16.gif
Binary files differ
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/icons/navigation/arrow_right_16x16.gif b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/icons/navigation/arrow_right_16x16.gif
new file mode 100755
index 00000000000..19567890aa8
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/icons/navigation/arrow_right_16x16.gif
Binary files differ
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/icons/navigation/arrow_right_double_16x16.gif b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/icons/navigation/arrow_right_double_16x16.gif
new file mode 100755
index 00000000000..c02db2c9df4
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/icons/navigation/arrow_right_double_16x16.gif
Binary files differ
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/icons/navigation/synced_16x16.gif b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/icons/navigation/synced_16x16.gif
new file mode 100755
index 00000000000..870934b6934
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/icons/navigation/synced_16x16.gif
Binary files differ
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/icons/tableViewer/checked_12x12.gif b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/icons/tableViewer/checked_12x12.gif
new file mode 100755
index 00000000000..a2669a8ea32
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/icons/tableViewer/checked_12x12.gif
Binary files differ
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/icons/tableViewer/unchecked_12x12.gif b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/icons/tableViewer/unchecked_12x12.gif
new file mode 100755
index 00000000000..49094593b40
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/icons/tableViewer/unchecked_12x12.gif
Binary files differ
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/icons/treeViewer/container_16x16.gif b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/icons/treeViewer/container_16x16.gif
new file mode 100755
index 00000000000..7ccc6a70317
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/icons/treeViewer/container_16x16.gif
Binary files differ
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/icons/treeViewer/property_16x16.gif b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/icons/treeViewer/property_16x16.gif
new file mode 100755
index 00000000000..d11c996e570
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/icons/treeViewer/property_16x16.gif
Binary files differ
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/icons/treeViewer/resource_16x16.gif b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/icons/treeViewer/resource_16x16.gif
new file mode 100755
index 00000000000..2e4de3d12a7
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/icons/treeViewer/resource_16x16.gif
Binary files differ
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/icons/treeViewer/strategySet_16x16.gif b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/icons/treeViewer/strategySet_16x16.gif
new file mode 100755
index 00000000000..131c28da405
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/icons/treeViewer/strategySet_16x16.gif
Binary files differ
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/icons/treeViewer/strategy_16x16.gif b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/icons/treeViewer/strategy_16x16.gif
new file mode 100755
index 00000000000..51e703b1b9c
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/icons/treeViewer/strategy_16x16.gif
Binary files differ
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/plugin.xml b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/plugin.xml
new file mode 100755
index 00000000000..1c36b4ad180
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/plugin.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+ <extension
+ point="org.eclipse.ui.preferencePages">
+ <page
+ category="org.eclipse.papyrus.infra.core.sasheditor.preferences.generalcategory"
+ class="org.eclipse.papyrus.propertylifecycle.preferences.pages.PropertyLifecyclePreferencesPage"
+ id="org.eclipse.papyrus.infra.propertylifecycle.preferences.pages.PropertyLifecyclePage"
+ name="Property Lifecycle Page">
+ </page>
+ </extension>
+
+</plugin>
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/pom.xml b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/pom.xml
new file mode 100755
index 00000000000..dd53fbc2439
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/pom.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <artifactId>org.eclipse.papyrus.infra.propertylifecycle.preferences</artifactId>
+ <version>0.0.1.qualifier</version>
+ <groupId>org.eclipse.papyrus</groupId>
+ <packaging>eclipse-plugin</packaging>
+ <parent>
+ <groupId>org.eclipse.papyrus</groupId>
+ <artifactId>org.eclipse.papyrus.infra.propertylifecycle</artifactId>
+ <version>0.0.1.qualifier</version>
+ <relativePath>../org.eclipse.papyrus.infra.propertylifecycle/pom.xml</relativePath>
+ </parent>
+</project>
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/src/org/eclipse/papyrus/propertylifecycle/preferences/Activator.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/src/org/eclipse/papyrus/propertylifecycle/preferences/Activator.java
new file mode 100755
index 00000000000..75258b7f4cf
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/src/org/eclipse/papyrus/propertylifecycle/preferences/Activator.java
@@ -0,0 +1,120 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Quentin Le Menez (CEA LIST) quentin.lemenez@cea.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.propertylifecycle.preferences;
+
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.resource.ImageRegistry;
+import org.eclipse.papyrus.infra.core.log.LogHelper;
+import org.eclipse.swt.graphics.Image;
+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.infra.propertylifecycle.preferences"; //$NON-NLS-1$
+
+ /** The shared instance */
+ private static Activator plugin;
+
+ /** Logging helper */
+ public static LogHelper log;
+
+ /** The tag to identify the trace when activating the messages in the .options file */
+ public static String STRATEGY_PREFERENCES_TRACE = "lifecyclepreferences";
+
+ /**
+ * The constructor
+ */
+ public Activator() {
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+ */
+ @Override
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ plugin = this;
+ log = new LogHelper(this);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+ */
+ @Override
+ public void stop(BundleContext context) throws Exception {
+ plugin = null;
+ log = null;
+ super.stop(context);
+ }
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static Activator getDefault() {
+ return plugin;
+ }
+
+ /**
+ * Get the image from its path in the current plugin
+ *
+ * @param path
+ * @return
+ * The {@link #org.eclipse.swt.graphics.Image image}
+ */
+ public Image getImage(String path) {
+ return getImage(PLUGIN_ID, path);
+ }
+
+ /**
+ * Get the image from its path in the specified plugin
+ *
+ * @param pluginId
+ * @param path
+ * @return
+ * The {@link #org.eclipse.swt.graphics.Image image}
+ */
+ public Image getImage(String pluginId, String path) {
+ final ImageRegistry registry = getImageRegistry();
+ String key = pluginId + "/" + path; //$NON-NLS-1$
+ Image image = registry.get(key);
+ if (image == null) {
+ registry.put(key, AbstractUIPlugin.imageDescriptorFromPlugin(pluginId, path));
+ image = registry.get(key);
+ }
+ return image;
+ }
+
+ /**
+ * Returns an image descriptor for the image file at the given plug-in relative path.
+ *
+ * @param path
+ * @return the image descriptor
+ */
+ public ImageDescriptor getImageDescriptor(String path) {
+ return imageDescriptorFromPlugin(PLUGIN_ID, path);
+ }
+
+}
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/src/org/eclipse/papyrus/propertylifecycle/preferences/messages/Messages.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/src/org/eclipse/papyrus/propertylifecycle/preferences/messages/Messages.java
new file mode 100755
index 00000000000..25b22283fd6
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/src/org/eclipse/papyrus/propertylifecycle/preferences/messages/Messages.java
@@ -0,0 +1,129 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Quentin Le Menez (CEA LIST) quentin.lemenez@cea.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.propertylifecycle.preferences.messages;
+
+import org.eclipse.osgi.util.NLS;
+
+/**
+ * Messages Class
+ *
+ */
+public class Messages extends NLS {
+
+ private static final String BUNDLE_NAME = "org.eclipse.papyrus.infra.propertylifecycle.preferences.messages.messages"; //$NON-NLS-1$
+
+ // Preference page
+ public static String PropertyLifecycle_PreferencePage_Title;
+
+ public static String PropertyLifecycle_PreferencePage_Description;
+
+ public static String Choose_Configuration;
+
+ // ControlsComposite
+ public static String PropertyLifecycleStrategies;
+
+ public static String Sync_Label;
+
+ public static String Sync_IconPath;
+
+ public static String Add_Label;
+
+ public static String Add_IconPath;
+
+ public static String Remove_Label;
+
+ public static String Remove_IconPath;
+
+ public static String RemoveAll_Label;
+
+ public static String RemoveAll_IconPath;
+
+ public static String AddAll_Label;
+
+ public static String AddAll_IconPath;
+
+ // TreeViewer
+ public static String Resource_IconPath;
+
+ public static String StrategySet_IconPath;
+
+ public static String Strategy_IconPath;
+
+ public static String Property_IconPath;
+
+ public static String ElementContainer_IconPath;
+
+ // StrategiesComposite
+ public static String StrategyElement_Label;
+
+ public static String ElementProperty_Label;
+
+ public static String ElementContainer_Label;
+
+ // SystemSelectionDialog
+ public static String SystemSelectionDialog_Title;
+
+ public static String SystemSaveDialog_Title;
+
+ // Menu
+ public static String AddStrategy_Label;
+
+ public static String AddStrategy_IconPath;
+
+ public static String RemoveStrategy_Label;
+
+ public static String RemoveStrategy_IconPath;
+
+ public static String RemoveStrategyModel_Label;
+
+ public static String RemoveStrategyModel_IconPath;
+
+ public static String RemoveAllStrategies_Label;
+
+ public static String RemoveAllStrategies_IconPath;
+
+ // Preferences
+ public static String BasicBrowsedModels_Node;
+
+ public static String BasicSelectedStrategies_Node;
+
+ public static String AdvancedBrowsedModels_Node;
+
+ public static String AdvancedSelectedStrategies_Node;
+
+ // Models buttons
+ public static String SaveButton_Label;
+
+ public static String BrowseButton_Label;
+
+ public static String CustomModel_DefaultName;
+
+ // TableViewer
+ public static String SelectAllButton_Label;
+
+ public static String DeselectAllButton_Label;
+
+ public static String Checked_IconPath;
+
+ public static String Unchecked_IconPath;
+
+
+ static {
+ // initialize resource bundle
+ NLS.initializeMessages(BUNDLE_NAME, Messages.class);
+ }
+
+ private Messages() {
+ }
+}
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/src/org/eclipse/papyrus/propertylifecycle/preferences/messages/messages.properties b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/src/org/eclipse/papyrus/propertylifecycle/preferences/messages/messages.properties
new file mode 100755
index 00000000000..1485d31dabc
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/src/org/eclipse/papyrus/propertylifecycle/preferences/messages/messages.properties
@@ -0,0 +1,52 @@
+PropertyLifecycle_PreferencePage_Title=Papyrus Property LifeCycle Strategies
+PropertyLifecycle_PreferencePage_Description=Select one or more strategies to be applied on subsequent element creations:
+Choose_Configuration=Choose the needed Strategy Configuration:
+
+PropertyLifecycleStrategies=PropertyLifeCycleStrategies
+
+Sync_Label=Link with Registered Models
+Sync_IconPath=/icons/navigation/synced_16x16.gif
+Add_Label=addButton
+Add_IconPath=/icons/navigation/arrow_right_16x16.gif
+Remove_Label=removeButton
+Remove_IconPath=/icons/navigation/arrow_left_16x16.gif
+AddAll_Label=addAllButton
+AddAll_IconPath=/icons/navigation/arrow_right_double_16x16.gif
+RemoveAll_Label=removeAllButton
+RemoveAll_IconPath=/icons/navigation/arrow_left_double_16x16.gif
+
+Resource_IconPath=/icons/treeViewer/resource_16x16.gif
+StrategySet_IconPath=/icons/treeViewer/strategySet_16x16.gif
+Strategy_IconPath=/icons/treeViewer/Strategy_16x16.gif
+Property_IconPath=/icons/treeViewer/property_16x16.gif
+ElementContainer_IconPath=/icons/treeViewer/container_16x16.gif
+
+StrategyElement_Label=Element base type:
+ElementProperty_Label=FeatureLabel:
+ElementContainer_Label=Container base type:
+
+SystemSelectionDialog_Title=Select the models to load
+SystemSaveDialog_Title=Select the directory for the new model
+
+AddStrategy_Label=Add selected Strategies
+AddStrategy_IconPath=/icons/menu/addStrategy_16x16.gif
+RemoveStrategy_Label=Remove selected strategies
+RemoveStrategy_IconPath=/icons/menu/removeStrategy_16x16.gif
+RemoveStrategyModel_Label=Remove selected Model
+RemoveStrategyModel_IconPath=/icons/menu/removeStrategyModel_16x16.gif
+RemoveAllStrategies_Label=Remove All strategies
+RemoveAllStrategies_IconPath=/icons/menu/removeAll_16x16.gif
+
+BasicBrowsedModels_Node=basicBrowsedModelsURI
+BasicSelectedStrategies_Node=basicSelectedStrategies
+AdvancedBrowsedModels_Node=advancedBrowsedModelsURI
+AdvancedSelectedStrategies_Node=advancedSelectedStrategies
+
+SaveButton_Label=Save Strategies
+BrowseButton_Label=Browse Models
+CustomModel_DefaultName=CustomModel
+
+SelectAllButton_Label=Select All
+DeselectAllButton_Label= Deselect All
+Checked_IconPath=/icons/tableViewer/checked_12x12.gif
+Unchecked_IconPath=/icons/tableViewer/unchecked_12x12.gif
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/src/org/eclipse/papyrus/propertylifecycle/preferences/pages/AdvancedTab.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/src/org/eclipse/papyrus/propertylifecycle/preferences/pages/AdvancedTab.java
new file mode 100755
index 00000000000..df03e5caaae
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/src/org/eclipse/papyrus/propertylifecycle/preferences/pages/AdvancedTab.java
@@ -0,0 +1,390 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Quentin Le Menez (CEA LIST) quentin.lemenez@cea.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.propertylifecycle.preferences.pages;
+
+import java.util.Collection;
+import java.util.LinkedList;
+import java.util.List;
+
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.papyrus.propertylifecycle.StrategyElement;
+import org.eclipse.papyrus.propertylifecycle.preferences.Activator;
+import org.eclipse.papyrus.propertylifecycle.preferences.messages.Messages;
+import org.eclipse.papyrus.propertylifecycle.preferences.utils.BrowseButton;
+import org.eclipse.papyrus.propertylifecycle.preferences.utils.SaveButton;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CTabFolder;
+import org.eclipse.swt.custom.CTabItem;
+import org.eclipse.swt.events.FocusEvent;
+import org.eclipse.swt.events.FocusListener;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+
+/**
+ * Handle the creation of the advanced Tab in the preference page
+ *
+ */
+public class AdvancedTab implements SelectionListener {
+
+ /** Composite containing the left viewer representing the resources and strategies available for selection */
+ protected AdvancedTabLeftViewerComposite leftViewerComposite;
+
+ /** Composite containing the right viewer representing the current selection of strategies */
+ protected AdvancedTabRightViewerComposite rightViewerComposite;
+
+ /** Composite containing the middle buttons used to add, delete or sync the strategies between both viewers */
+ private Composite controlComposite;
+
+ /** Button used to synchronize the selection between both viewers */
+ private Button syncButton;
+
+ /** Button used to add a new set of strategies to the selected ones */
+ private Button addButton;
+
+ /** Button used to remove the selection from the selected strategies */
+ private Button removeButton;
+
+ /** Button used to add all the strategies from the left viewer to the right */
+ private Button addAllButton;
+
+ /** Button used to remove all the strategies from the right viewer */
+ private Button removeAllButton;
+
+ /** the selection in the viewer */
+ private List<Object> viewerSelection = new LinkedList<>();
+
+ /** the IDs of the selected strategies to filter during synchronization */
+ private List<String> viewerSelectionIDs = new LinkedList<>();
+
+ /** List containing the strategies found on both viewers */
+ private List<StrategyElement> twinViewerSelection = new LinkedList<>();
+
+
+ /**
+ *
+ * Constructor.
+ *
+ * @param parent
+ * The containing Composite
+ * @param style
+ */
+ public AdvancedTab(CTabFolder parent, int style) {
+ CTabItem advancedTabItem = new CTabItem(parent, SWT.NONE);
+ advancedTabItem.setText("Advanced Selection");
+
+ GridLayout compositeLayout = new GridLayout(3, false);
+ Composite advancedTabComposite = new Composite(parent, style);
+ advancedTabComposite.setLayout(compositeLayout);
+ advancedTabComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 3, 3));
+ advancedTabItem.setControl(advancedTabComposite);
+
+ createStrategiesComposite(advancedTabComposite);
+ createControlsComposite(advancedTabComposite);
+ createSelectionComposite(advancedTabComposite);
+
+ new BrowseButton(advancedTabComposite, leftViewerComposite.getViewer());
+ new SaveButton(advancedTabComposite, getRightViewer());
+ }
+
+
+ /**
+ * Creates the rightViewer containing all the possible choices
+ *
+ * @param parent
+ * this
+ */
+ protected void createStrategiesComposite(Composite parent) {
+ leftViewerComposite = new AdvancedTabLeftViewerComposite(parent, SWT.NONE);
+ ((GridData) leftViewerComposite.getLayoutData()).verticalSpan = 2;
+ ((GridData) leftViewerComposite.getLayoutData()).horizontalSpan = 1;
+ }
+
+ /**
+ * The selection buttons' composite
+ *
+ * @param parent
+ * this
+ */
+ protected void createControlsComposite(Composite parent) {
+ controlComposite = new Composite(parent, SWT.NONE);
+ controlComposite.setLayout(new GridLayout(1, true));
+ GridData controlLayoutData = new GridData(SWT.CENTER, SWT.CENTER, false, true, 1, 3);
+ controlComposite.setLayoutData(controlLayoutData);
+
+ syncButton = new Button(controlComposite, SWT.TOGGLE);
+ syncButton.setImage(Activator.getDefault().getImage(Messages.Sync_IconPath));
+ syncButton.addSelectionListener(this);
+ syncButton.setToolTipText(Messages.Sync_Label);
+
+ addButton = new Button(controlComposite, SWT.PUSH);
+ addButton.setImage(Activator.getDefault().getImage(Messages.Add_IconPath));
+ addButton.addSelectionListener(this);
+ addButton.setToolTipText(Messages.Add_Label);
+
+ removeButton = new Button(controlComposite, SWT.PUSH);
+ removeButton.setImage(Activator.getDefault().getImage(Messages.Remove_IconPath));
+ removeButton.addSelectionListener(this);
+ removeButton.setToolTipText(Messages.Remove_Label);
+
+ addAllButton = new Button(controlComposite, SWT.PUSH);
+ addAllButton.setImage(Activator.getDefault().getImage(Messages.AddAll_IconPath));
+ addAllButton.addSelectionListener(this);
+ addAllButton.setToolTipText(Messages.AddAll_Label);
+
+ removeAllButton = new Button(controlComposite, SWT.PUSH);
+ removeAllButton.setImage(Activator.getDefault().getImage(Messages.RemoveAll_IconPath));
+ removeAllButton.addSelectionListener(this);
+ removeAllButton.setToolTipText(Messages.RemoveAll_Label);
+ }
+
+ /**
+ * Creates the left viewer containing the selected options
+ *
+ * @param parent
+ * this
+ */
+ protected void createSelectionComposite(Composite parent) {
+ rightViewerComposite = new AdvancedTabRightViewerComposite(parent, SWT.NONE);
+ ((GridData) rightViewerComposite.getLayoutData()).horizontalSpan = 1;
+ ((GridData) rightViewerComposite.getLayoutData()).verticalSpan = 2;
+ }
+
+
+ /**
+ * Get the left Viewer
+ *
+ * @return
+ */
+ public TreeViewer getLeftViewer() {
+ return leftViewerComposite.getViewer();
+ }
+
+ /**
+ * Get the right Viewer
+ *
+ * @return
+ */
+ public TreeViewer getRightViewer() {
+ return rightViewerComposite.getViewer();
+ }
+
+ /**
+ * Method forwarding the selected configurations to the right viewer
+ *
+ * @param advancedTabStrategies
+ */
+ public void addStrategies(Collection<StrategyElement> advancedTabStrategies) {
+ rightViewerComposite.addStrategies(advancedTabStrategies);
+ }
+
+ /**
+ * Method removing all the right viewer strategies
+ */
+ public void removeAllSelectionCompositeStrategies() {
+ rightViewerComposite.removeAllStrategies();
+ }
+
+ /**
+ * Method forwarding the resources to populate the left viewer
+ *
+ * @param resourceSet
+ */
+ public void setRegisteredCompositeInput(ResourceSet resourceSet) {
+ leftViewerComposite.getViewer().setInput(resourceSet);
+ }
+
+ /**
+ * Get the addresses of the resources containing the selected strategies
+ *
+ * @return
+ */
+ public Collection<String> getAdvancedParentModels() {
+ return rightViewerComposite.getParentModels();
+ }
+
+ /**
+ * Get the strategies selected in the right viewer
+ *
+ * @return
+ */
+ public Collection<StrategyElement> getAdvancedStrategies() {
+ return rightViewerComposite.getViewerStrategies();
+ }
+
+ /**
+ * Handles the buttons' behavior
+ *
+ * @see org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt.events.SelectionEvent)
+ *
+ * @param e
+ * The selection event
+ */
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ if (e.widget == addButton) {
+ addAction();
+ } else if (e.widget == removeButton) {
+ removeAction();
+ } else if (e.widget == addAllButton) {
+ addAllAction();
+ } else if (e.widget == removeAllButton) {
+ removeAllAction();
+ } else if (e.widget == syncButton) {
+ syncAction();
+ }
+ }
+
+ /**
+ * Add the selected preference(s) to the Viewer
+ */
+ private void addAction() {
+ rightViewerComposite.addStrategies(leftViewerComposite.getStrategiesSelection());
+ }
+
+ /**
+ * Add all the possible preferences to the Viewer
+ */
+ private void addAllAction() {
+ rightViewerComposite.addStrategies(leftViewerComposite.getViewerInput());
+ }
+
+ /**
+ * Remove the selected preference(s) from the Viewer
+ */
+ private void removeAction() {
+ rightViewerComposite.removeSelectedStrategies();
+ }
+
+ /**
+ * Remove all the selected preferences from the Viewer
+ */
+ private void removeAllAction() {
+ rightViewerComposite.removeAllStrategies();
+ }
+
+ /**
+ * Method handling the synchronization between the left and right viewer
+ *
+ * @param selectionViewer
+ * @param twinViewer
+ * @param twinStrategies
+ */
+ private void doSync(TreeViewer selectionViewer, TreeViewer twinViewer, Collection<StrategyElement> twinStrategies) {
+ viewerSelection.clear();
+ viewerSelectionIDs.clear();
+ twinViewerSelection.clear();
+ viewerSelection.addAll(selectionViewer.getStructuredSelection().toList());
+
+ if (viewerSelection.size() < 0) {
+ return;
+ }
+
+ for (Object object : viewerSelection) {
+ if (!(object instanceof StrategyElement)) {
+ continue;
+ }
+ StrategyElement strategy = (StrategyElement) object;
+ viewerSelectionIDs.add(strategy.getId());
+ }
+
+ for (StrategyElement strategy : twinStrategies) {
+ if (viewerSelectionIDs.contains(strategy.getId())) {
+ twinViewerSelection.add(strategy);
+ }
+ }
+
+ twinViewer.setSelection(new StructuredSelection(twinViewerSelection), true);
+ }
+
+ /** Listener used to sync to the right to the left viewer */
+ ISelectionChangedListener syncToRegisteredListener = new ISelectionChangedListener() {
+
+ @Override
+ public void selectionChanged(SelectionChangedEvent event) {
+ doSync(rightViewerComposite.getViewer(), leftViewerComposite.getViewer(), leftViewerComposite.getViewerStrategies());
+ }
+ };
+
+ /** Listener used to sync the left to the right viewer */
+ ISelectionChangedListener syncToSelectedListener = new ISelectionChangedListener() {
+
+ @Override
+ public void selectionChanged(SelectionChangedEvent event) {
+ doSync(leftViewerComposite.getViewer(), rightViewerComposite.getViewer(), rightViewerComposite.getViewerStrategies());
+ }
+ };
+
+ /** @see org.eclipse.swt.events.FocusListener used to detect the synchronization and update the viewer accordingly */
+ FocusListener selectedFocusListener = new FocusListener() {
+
+ @Override
+ public void focusGained(FocusEvent e) {
+ Activator.log.trace(Activator.STRATEGY_PREFERENCES_TRACE, "selectedViewerFocus gained");
+ if (syncButton.getSelection()) {
+ rightViewerComposite.getViewer().addSelectionChangedListener(syncToRegisteredListener);
+ }
+ }
+
+ @Override
+ public void focusLost(FocusEvent e) {
+ Activator.log.trace(Activator.STRATEGY_PREFERENCES_TRACE, "selectedViewerFocus lost");
+ rightViewerComposite.treeViewer.removeSelectionChangedListener(syncToRegisteredListener);
+ }
+ };
+
+ /** @see org.eclipse.swt.events.FocusListener used to detect the synchronization and update the viewer accordingly */
+ FocusListener registeredFocusListener = new FocusListener() {
+
+ @Override
+ public void focusGained(FocusEvent e) {
+ Activator.log.trace(Activator.STRATEGY_PREFERENCES_TRACE, "registeredViewerFocus gained");
+ if (syncButton.getSelection()) {
+ leftViewerComposite.getViewer().addSelectionChangedListener(syncToSelectedListener);
+ }
+ }
+
+ @Override
+ public void focusLost(FocusEvent e) {
+ Activator.log.trace(Activator.STRATEGY_PREFERENCES_TRACE, "registeredViewerFocus lost");
+ leftViewerComposite.getViewer().removeSelectionChangedListener(syncToSelectedListener);
+ }
+ };
+
+ /**
+ * Method enabling the listeners used to detect the selected strategies on the viewers
+ */
+ private void syncAction() {
+ if (syncButton.getSelection()) {
+ rightViewerComposite.getViewer().getTree().addFocusListener(selectedFocusListener);
+ leftViewerComposite.getViewer().getTree().addFocusListener(registeredFocusListener);
+ } else {
+ rightViewerComposite.getViewer().getTree().removeFocusListener(selectedFocusListener);
+ leftViewerComposite.getViewer().getTree().removeFocusListener(registeredFocusListener);
+ }
+ }
+
+
+ @Override
+ public void widgetDefaultSelected(SelectionEvent e) {
+ // nothing
+ }
+}
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/src/org/eclipse/papyrus/propertylifecycle/preferences/pages/AdvancedTabLeftViewerComposite.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/src/org/eclipse/papyrus/propertylifecycle/preferences/pages/AdvancedTabLeftViewerComposite.java
new file mode 100755
index 00000000000..07529e62564
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/src/org/eclipse/papyrus/propertylifecycle/preferences/pages/AdvancedTabLeftViewerComposite.java
@@ -0,0 +1,258 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Quentin Le Menez (CEA LIST) quentin.lemenez@cea.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.propertylifecycle.preferences.pages;
+
+import java.util.Collection;
+import java.util.LinkedList;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.papyrus.propertylifecycle.StrategyElement;
+import org.eclipse.papyrus.propertylifecycle.StrategySet;
+import org.eclipse.papyrus.propertylifecycle.preferences.Activator;
+import org.eclipse.papyrus.propertylifecycle.preferences.messages.Messages;
+import org.eclipse.papyrus.propertylifecycle.preferences.utils.AdvancedTabLabelProvider;
+import org.eclipse.papyrus.propertylifecycle.presentation.PropertylifecycleEditor;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.MenuAdapter;
+import org.eclipse.swt.events.MenuEvent;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.MenuItem;
+import org.eclipse.swt.widgets.Tree;
+import org.eclipse.ui.dialogs.FilteredTree;
+import org.eclipse.ui.dialogs.PatternFilter;
+
+
+/**
+ * Class handling the left viewer of the advanced Tab
+ *
+ */
+public class AdvancedTabLeftViewerComposite extends Composite {
+
+ /** Factory used to get the information on the elements to populate the viewer */
+ protected AdapterFactory adapterFactory;
+
+ /** the viewer showing the available strategies */
+ protected FilteredTree filteredViewer;
+
+ /** Listener used to detect a different selection */
+ protected ISelectionChangedListener selectionChangedListener;
+
+ /** Listener used to identify the selected strategies */
+ protected ISelection viewerSelection = StructuredSelection.EMPTY;
+
+ /** Filter used to... filter the displayed strategies */
+ protected PatternFilter patternFilter;
+
+ // protected String elementFilter;
+
+
+ /**
+ *
+ * Constructor.
+ *
+ * @param parent
+ * The parent composite
+ * @param style
+ */
+ public AdvancedTabLeftViewerComposite(Composite parent, int style) {
+ super(parent, style);
+ this.setLayout(new GridLayout(1, true));
+ this.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+
+ PropertylifecycleEditor contentEditor = new PropertylifecycleEditor();
+ adapterFactory = contentEditor.getAdapterFactory();
+ patternFilter = new PatternFilter();
+ patternFilter.setIncludeLeadingWildcard(true);
+
+ initStrategySelectionListener();
+ createViewer(this);
+ }
+
+ /**
+ * Create the viewer
+ *
+ * @param parent
+ * This composite
+ */
+ protected void createViewer(Composite parent) {
+ filteredViewer = new FilteredTree(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER, patternFilter, true);
+ getViewer().setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+ getViewer().setLabelProvider(new AdvancedTabLabelProvider(adapterFactory));
+
+ getViewer().addSelectionChangedListener(selectionChangedListener);
+
+ // Used to filter the elements in order to display the popup menu
+ Tree tree = getViewer().getTree();
+ final Menu rightClickMenu = new Menu(tree);
+ tree.setMenu(rightClickMenu);
+ rightClickMenu.addMenuListener(new MenuAdapter() {
+
+ @Override
+ public void menuShown(MenuEvent e) {
+ MenuItem[] items = rightClickMenu.getItems();
+ for (int i = 0; i < items.length; i++) {
+ items[i].dispose();
+ }
+
+ if ((((StructuredSelection) viewerSelection).getFirstElement() instanceof Resource)) {
+ strategySetMenu(rightClickMenu);
+ }
+ }
+ });
+
+ }
+
+ /**
+ * Create the menu item used to remove the selected model
+ *
+ * @param associatedMenu
+ */
+ private void strategySetMenu(Menu associatedMenu) {
+ final MenuItem strategySetItem = new MenuItem(associatedMenu, SWT.NONE);
+ strategySetItem.setText(Messages.RemoveStrategyModel_Label);
+ strategySetItem.setImage(Activator.getDefault().getImage(Messages.RemoveStrategyModel_IconPath));
+ strategySetItem.addSelectionListener(new SelectionAdapter() {
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ Collection<Resource> viewerResources = new LinkedList<Resource>();
+ for (Object object : ((StructuredSelection) getViewer().getSelection()).toArray()) {
+ if (object instanceof Resource) {
+ viewerResources.add((Resource) object);
+ }
+ }
+
+ getViewerInput().getResources().removeAll(viewerResources);
+ }
+ });
+ }
+
+ /**
+ * Initialize the SelectionChangedListener
+ */
+ protected void initStrategySelectionListener() {
+ selectionChangedListener = new ISelectionChangedListener() {
+
+ @Override
+ public void selectionChanged(SelectionChangedEvent event) {
+ viewerSelection = event.getSelection();
+ }
+ };
+ }
+
+ /**
+ * Method used to add new models
+ *
+ * @param resource
+ * The resource linked to the model
+ */
+ public void addNewModel(Resource resource) {
+ if (getViewerInput() == null) {
+ getViewer().setInput(resource.getResourceSet());
+ return;
+ }
+
+ getViewerInput().getResources().add(resource);
+ }
+
+ /**
+ * @return
+ * The current strategies selection
+ */
+ public ISelection getStrategiesSelection() {
+ return viewerSelection;
+ }
+
+ /**
+ * @return
+ * The viewer
+ */
+ public TreeViewer getViewer() {
+ return filteredViewer.getViewer();
+ }
+
+ /**
+ * @return
+ * The names of the viewer's models
+ */
+ public Collection<String> getViewerResourcesNames() {
+ ResourceSet viewerInput = getViewerInput();
+ if (viewerInput == null) {
+ return new LinkedList<String>();
+ }
+
+ Collection<String> existingResources = new LinkedList<String>();
+ for (Resource resource : viewerInput.getResources()) {
+ // List used to verify that the user is not adding an existing model in the viewer
+ existingResources.add(resource.getURI().lastSegment());
+ }
+
+ return existingResources;
+ }
+
+ /**
+ * Get the viewer input, i.e. the elements contained in the tree
+ *
+ * @param viewer
+ * @return
+ * The resourceSet containing the models displayed in the viewer
+ */
+ public ResourceSet getViewerInput() {
+ Object viewerInput = getViewer().getInput();
+ if (viewerInput instanceof ResourceSet) {
+ return ((ResourceSet) viewerInput);
+ }
+ return null;
+ }
+
+ /**
+ * Convenience method
+ *
+ * @return
+ * The list of the strategies in all the models present in the viewer
+ */
+ public Collection<StrategyElement> getViewerStrategies() {
+ Collection<StrategyElement> viewerStrategies = new LinkedList<StrategyElement>();
+
+ for (Resource resource : getViewerInput().getResources()) {
+ EObject eObject = resource.getContents().get(0);
+ if (eObject instanceof StrategySet) {
+ StrategySet set = (StrategySet) eObject;
+ for (StrategyElement strategy : set.getStrategies()) {
+ viewerStrategies.add(strategy);
+ }
+ }
+ }
+
+ return viewerStrategies;
+ }
+
+
+ // TODO implement dispose()
+
+}
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/src/org/eclipse/papyrus/propertylifecycle/preferences/pages/AdvancedTabRightViewerComposite.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/src/org/eclipse/papyrus/propertylifecycle/preferences/pages/AdvancedTabRightViewerComposite.java
new file mode 100755
index 00000000000..0856b5f3a56
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/src/org/eclipse/papyrus/propertylifecycle/preferences/pages/AdvancedTabRightViewerComposite.java
@@ -0,0 +1,568 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Quentin Le Menez (CEA LIST) quentin.lemenez@cea.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.propertylifecycle.preferences.pages;
+
+import java.util.ArrayList;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.emf.common.CommonPlugin;
+import org.eclipse.emf.common.notify.AdapterFactory;
+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.resource.impl.ResourceSetImpl;
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.papyrus.propertylifecycle.PropertylifecycleFactory;
+import org.eclipse.papyrus.propertylifecycle.PropertylifecyclePackage;
+import org.eclipse.papyrus.propertylifecycle.StrategyElement;
+import org.eclipse.papyrus.propertylifecycle.StrategySet;
+import org.eclipse.papyrus.propertylifecycle.preferences.Activator;
+import org.eclipse.papyrus.propertylifecycle.preferences.messages.Messages;
+import org.eclipse.papyrus.propertylifecycle.preferences.utils.AdvancedTabLabelProvider;
+import org.eclipse.papyrus.propertylifecycle.preferences.utils.AdvancedTabViewerUtils;
+import org.eclipse.papyrus.propertylifecycle.presentation.PropertylifecycleEditor;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.MenuAdapter;
+import org.eclipse.swt.events.MenuEvent;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.MenuItem;
+import org.eclipse.swt.widgets.Tree;
+
+/**
+ * The Composite containing the right viewer of the advanced tab
+ *
+ */
+public class AdvancedTabRightViewerComposite extends Composite {
+
+ /** The models containing the selected strategies */
+ protected Map<String, String> parentModels;
+
+ /** Factory used to get the information on the elements to populate the viewer */
+ protected AdapterFactory adapterFactory;
+
+ /** The viewer containing the selected strategies */
+ protected TreeViewer treeViewer;
+
+ /** The resourceSet containing the advanced Tab's custom model constructed by the user selected strategies */
+ protected ResourceSet customStrategySetResourceSet;
+
+ /** The set containing the selected strategies */
+ protected StrategySet customStrategySet;
+
+ /** The model containing the selected strategies */
+ protected Resource strategySetResource;
+
+ /** Factory used to construct the new custom model */
+ protected PropertylifecycleFactory newModelFactory = PropertylifecycleFactory.eINSTANCE;
+
+ /** The list of the selected strategies */
+ protected Map<String, StrategyElement> viewerStrategies;
+
+ /** Listener used to detect a different selection */
+ protected ISelectionChangedListener selectionChangedListener;
+
+ /** Listener used to identify the selected strategies */
+ protected ISelection viewerSelection;
+
+
+ /**
+ *
+ * Constructor.
+ *
+ * @param parent
+ * The containing composite
+ * @param style
+ */
+ public AdvancedTabRightViewerComposite(Composite parent, int style) {
+ super(parent, style);
+ this.setLayout(new GridLayout(1, true));
+ // this.setLayout(new GridLayout(2, false));
+ this.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ // parentModels = new LinkedList<String>();
+ parentModels = new HashMap<String, String>();
+
+ PropertylifecycleEditor contentEditor = new PropertylifecycleEditor();
+ adapterFactory = contentEditor.getAdapterFactory();
+ viewerStrategies = new HashMap<String, StrategyElement>();
+
+ initStrategySelectionListener();
+ createViewer(this);
+ initViewer();
+ }
+
+ /**
+ * Create the viewer and its associated popup menus
+ *
+ * @param parent
+ * this
+ */
+ protected void createViewer(Composite parent) {
+ treeViewer = new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER);
+ treeViewer.getControl().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ treeViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+ treeViewer.setLabelProvider(new AdvancedTabLabelProvider(adapterFactory));
+
+ treeViewer.addSelectionChangedListener(selectionChangedListener);
+
+ Tree tree = getViewer().getTree();
+ final Menu rightClickMenu = new Menu(tree);
+ tree.setMenu(rightClickMenu);
+ rightClickMenu.addMenuListener(new MenuAdapter() {
+
+ @Override
+ public void menuShown(MenuEvent e) {
+ MenuItem[] items = rightClickMenu.getItems();
+ for (int i = 0; i < items.length; i++) {
+ items[i].dispose();
+ }
+
+ if (((StructuredSelection) viewerSelection).getFirstElement() instanceof StrategyElement) {
+ strategyMenu(rightClickMenu);
+ }
+
+ if (((StructuredSelection) viewerSelection).getFirstElement() instanceof StrategyElement) {
+ strategySetMenu(rightClickMenu);
+ }
+
+ }
+ });
+
+ }
+
+ /**
+ * Create the menu item controlling the removal of the selected strategies
+ *
+ * @param associatedMenu
+ * The parent menu
+ */
+ private void strategyMenu(Menu associatedMenu) {
+ final MenuItem configurationItem = new MenuItem(associatedMenu, SWT.NONE);
+ configurationItem.setText(Messages.RemoveStrategy_Label);
+ configurationItem.setImage(Activator.getDefault().getImage(Messages.RemoveStrategy_IconPath));
+ configurationItem.addSelectionListener(new SelectionAdapter() {
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ StrategySet customSet = (StrategySet) getViewerInput().getResources().get(0).getContents().get(0);
+ Collection<StrategyElement> strategiesToRemove = new LinkedList<StrategyElement>();
+
+ for (Object object : ((StructuredSelection) viewerSelection).toArray()) {
+ if (object instanceof StrategyElement) {
+ strategiesToRemove.add((StrategyElement) object);
+ }
+ }
+
+ for (StrategyElement strategy : strategiesToRemove) {
+ customSet.getStrategies().remove(strategy);
+ viewerStrategies.remove(strategy.getId());
+ }
+
+ }
+ });
+ }
+
+ /**
+ * Create the menu item controlling the removal of the selected model
+ *
+ * @param associatedMenu
+ * The parent menu
+ */
+ private void strategySetMenu(Menu associatedMenu) {
+ final MenuItem strategySetItem = new MenuItem(associatedMenu, SWT.NONE);
+ strategySetItem.setText(Messages.RemoveAllStrategies_Label);
+ strategySetItem.setImage(Activator.getDefault().getImage(Messages.RemoveAllStrategies_IconPath));
+ strategySetItem.addSelectionListener(new SelectionAdapter() {
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ StrategySet customSet = (StrategySet) getViewerInput().getResources().get(0).getContents().get(0);
+
+ for (StrategyElement strategy : getViewerStrategySet().getStrategies()) {
+ viewerStrategies.remove(strategy.getId());
+ }
+
+ customSet.getStrategies().clear();
+
+ }
+ });
+ }
+
+ /**
+ * @return
+ * The viewer
+ */
+ public TreeViewer getViewer() {
+ return treeViewer;
+ }
+
+ /**
+ * Initialize the listener used to retrieve the selected items
+ */
+ protected void initStrategySelectionListener() {
+ selectionChangedListener = new ISelectionChangedListener() {
+
+ @Override
+ public void selectionChanged(SelectionChangedEvent event) {
+ viewerSelection = event.getSelection();
+ }
+ };
+ }
+
+ /**
+ * Initialize the viewer contents
+ */
+ protected void initViewer() {
+ customStrategySetResourceSet = new ResourceSetImpl();
+ // configurationResourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("*", new XMLResourceFactoryImpl());
+ // configurationResourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("xmi", new XMIResourceFactoryImpl());
+
+ // Default behavior
+ initFromScratch();
+
+ getViewer().refresh();
+ }
+
+ /**
+ * Create the viewer contents if no previous activity/selection existed
+ */
+ private void initFromScratch() {
+ // Only launch if there were no previously constructed resource
+ // Creates the root object for the custom model
+ customStrategySet = newModelFactory.createStrategySet();
+ customStrategySet.setId("CustomConfiguration"); //$NON-NLS-1$
+ // Empty resourceSet to be filled by the custom selection of the user
+ URI fileURI = CommonPlugin.resolve(URI.createFileURI(Platform.getLocation().toOSString() + "/Custom.propertylifecyclestrategyset")); //$NON-NLS-1$
+ // URI fileURI = URI.createFileURI(Platform.getLocation().toOSString() + "/Custom.renamestrategiesconfigurations"); //$NON-NLS-1$
+ strategySetResource = customStrategySetResourceSet.createResource(fileURI, PropertylifecyclePackage.eCONTENT_TYPE);
+ strategySetResource.getContents().add(customStrategySet);
+
+ getViewer().setInput(customStrategySetResourceSet);
+
+ expandToLevel(1);
+ }
+
+ /**
+ * Utility method used to expand the tree
+ *
+ * @param level
+ * The required level
+ */
+ private void expandToLevel(int level) {
+ // Search the tree for the Set and expand from there to reveal the strategies if any exists
+ getViewer().expandToLevel(getViewerInput().getResources().get(0), level);
+ }
+
+ /**
+ * @return
+ * The viewer's contents
+ */
+ public ResourceSet getViewerInput() {
+ Object viewerInput = getViewer().getInput();
+ if (viewerInput instanceof ResourceSet) {
+ return ((ResourceSet) viewerInput);
+ }
+ return null;
+ }
+
+ /**
+ * Add method, pointing to {@link #addStrategies(Collection)}
+ *
+ * @param selection
+ * The selected items from another viewer
+ */
+ public void addStrategies(ISelection selection) {
+ if (!(selection instanceof StructuredSelection)) {
+ return;
+ }
+ Collection<?> selectedElements = ((StructuredSelection) selection).toList();
+
+ addStrategies(selectedElements);
+ }
+
+ /**
+ * Add method, pointing to {@link #addStrategies(Collection)}
+ *
+ * @param resourceSet
+ * The selected items from another source
+ */
+ public void addStrategies(ResourceSet resourceSet) {
+ Collection<Resource> resources = new LinkedList<Resource>();
+ for (Resource resource : resourceSet.getResources()) {
+ resources.add(resource);
+ }
+
+ addStrategies(resources);
+ }
+
+ /**
+ * Main add method
+ *
+ * @param selection
+ * The selected strategies
+ */
+ public void addStrategies(Collection<?> selection) {
+ // Copy of the selection to update as the cases are treated
+ Collection<Object> remainingSelection = new ArrayList<Object>(selection);
+ Collection<StrategyElement> selectedStrategies = new LinkedList<StrategyElement>();
+
+ // First - extract the strategies from the inputed resources and delete these from the remaining selection
+ for (Object object : selection) {
+ if (!(object instanceof Resource)) {
+ continue;
+ }
+
+ for (Object resourceContent : ((Resource) object).getContents()) {
+ if (!(resourceContent instanceof StrategySet)) {
+ continue;
+ }
+
+ // This will only be the case if the user has selected both the resource and the contained set
+ StrategySet strategySet = (StrategySet) resourceContent;
+ if (remainingSelection.contains(strategySet)) {
+ // In this case, the configurations of the set will be revealed by getContentConfigurations
+ remainingSelection.remove(strategySet);
+ }
+
+ List<StrategyElement> newStrategies = getContentStrategies(resourceContent);
+ // This will only be the case if the user has selected both the resource and the contained configuration
+ for (StrategyElement strategy : newStrategies) {
+ if (remainingSelection.contains(strategy)) {
+ remainingSelection.remove(strategy);
+ }
+ }
+
+ selectedStrategies.addAll(newStrategies);
+ }
+
+ if (remainingSelection.contains(object)) {
+ remainingSelection.remove(object);
+ }
+ }
+
+ // Second - extract the strategies from the inputed sets and delete those from the remaining selection
+ List<Object> postResourceSelection = new ArrayList<Object>(remainingSelection);
+ for (Object object : postResourceSelection) {
+ if (!(object instanceof StrategySet)) {
+ continue;
+ }
+
+ List<StrategyElement> newStrategies = getNewStrategySetStrategies((StrategySet) object);
+ // This case will occur if the user has selected a set and some of its contained configurations
+ for (StrategyElement strategy : newStrategies) {
+ if (remainingSelection.contains(strategy)) {
+ remainingSelection.remove(strategy);
+ }
+ }
+
+ selectedStrategies.addAll(newStrategies);
+ }
+
+ // Lastly - extract the remaining strategies to complete the selection
+ for (Object object : remainingSelection) {
+ if (!(object instanceof StrategyElement)) {
+ continue;
+ }
+
+ StrategyElement remainigStrategy = (StrategyElement) object;
+ if (!(viewerStrategies.containsKey(remainigStrategy.getId()))) {
+ viewerStrategies.put(remainigStrategy.getId(), remainigStrategy);
+ selectedStrategies.add(remainigStrategy);
+ }
+ }
+
+ populateViewer(selectedStrategies);
+ }
+
+ /**
+ * Used to extract the strategies from the set @see RenameSetConfiguration
+ *
+ * @param object
+ * The set
+ * @return
+ * The list of the contained strategies or an empty list
+ */
+ private List<StrategyElement> getContentStrategies(Object object) {
+ List<StrategyElement> contentStrategies = new LinkedList<StrategyElement>();
+ if (object instanceof StrategySet) {
+ return getNewStrategySetStrategies((StrategySet) object);
+ }
+
+ return contentStrategies;
+ }
+
+ /**
+ * Used to extract the strategies from the set @see RenameSetConfiguration
+ *
+ * @param strategySet
+ * The set
+ * @return
+ * The list of the contained strategies
+ */
+ private List<StrategyElement> getNewStrategySetStrategies(StrategySet strategySet) {
+ List<StrategyElement> newStrategies = new LinkedList<StrategyElement>();
+ for (StrategyElement strategy : strategySet.getStrategies()) {
+ if (viewerStrategies.containsKey(strategy.getId())) {
+ continue;
+ }
+
+ viewerStrategies.put(strategy.getId(), strategy);
+ newStrategies.add(strategy);
+ }
+
+ return newStrategies;
+ }
+
+ /**
+ * Populates the viewer with the inputed strategies
+ *
+ * @param strategies
+ * The selected strategies
+ */
+ private void populateViewer(Collection<StrategyElement> strategies) {
+
+ for (StrategyElement strategy : strategies) {
+ setParentModelsURI(strategy);
+
+ // This will remove the configuration from the left viewer to add it to the right one
+ // newRenameSetConfiguration.getConfigurations().add((RenameConfiguration) configuration);
+
+ // getViewerStrategySet().getStrategies().add(AdvancedTabViewerUtils.getnewStrategy(strategy));
+ getViewerStrategySet().getStrategies().add(AdvancedTabViewerUtils.cloneStrategy(strategy));
+ viewerStrategies.put(strategy.getId(), strategy);
+ }
+
+ // Search the tree for the Set and expand one more level from there
+ if (!getViewer().getExpandedState(getViewerStrategySet()) || !getViewer().getExpandedState(customStrategySetResourceSet)) {
+ getViewer().expandToLevel(getViewerStrategySet(), 1);
+ }
+ getViewer().refresh();
+ }
+
+ /**
+ * Add the URI of the model containing the added strategy to the list of handled models
+ *
+ * @param renameConfiguration
+ * The added strategy
+ */
+ private void setParentModelsURI(StrategyElement strategy) {
+ StrategySet strategySet = (StrategySet) strategy.eContainer();
+ String setURI = strategySet.eResource().getURI().toString();
+ // if (!parentModels.contains(setURI)) {
+ // parentModels.add(setURI);
+ // }
+ if (!parentModels.containsKey(strategy.getId())) {
+ parentModels.put(strategy.getId(), setURI);
+ }
+ }
+
+ /**
+ * @return
+ * The parent models of the selected strategies
+ */
+ public Collection<String> getParentModels() {
+ HashSet<String> usedModels = new HashSet<String>();
+ for (String key : parentModels.keySet()) {
+ usedModels.add(parentModels.get(key));
+ }
+
+ return usedModels;
+ }
+
+ /**
+ * Remove the selected configurations from the viewer and their associated model from the parent list of necessary
+ */
+ protected void removeSelectedStrategies() {
+ @SuppressWarnings("unchecked")
+ List<StrategyElement> strategiesToRemove = viewerSelection instanceof StructuredSelection ? ((StructuredSelection) viewerSelection).toList() : new LinkedList<StrategyElement>();
+ getViewerStrategySet().getStrategies().removeAll(strategiesToRemove);
+ for (StrategyElement renameConfiguration : strategiesToRemove) {
+ viewerStrategies.remove(renameConfiguration.getId());
+ parentModels.keySet().removeAll(Collections.singleton(renameConfiguration.getId()));
+ }
+
+ getViewer().refresh();
+ }
+
+ /**
+ * @return
+ * The strategy set build inside this viewer
+ */
+ private StrategySet getViewerStrategySet() {
+ if (getViewerInput().getResources().get(0).getContents().get(0) instanceof StrategySet) {
+ return (StrategySet) getViewerInput().getResources().get(0).getContents().get(0);
+ }
+ return null;
+ }
+
+ /**
+ * @return
+ * The strategies selected in this viewer
+ */
+ public Collection<StrategyElement> getViewerStrategies() {
+ return getViewerStrategySet().getStrategies();
+ }
+
+ /**
+ * Clear all the strategies from the viewer and their associated lists
+ */
+ protected void removeAllStrategies() {
+ getViewerStrategies().clear();
+ viewerStrategies.clear();
+ parentModels.clear();
+
+ getViewer().refresh();
+ }
+
+ /**
+ * @return
+ * The resource containing the strategy set build inside this viewer
+ */
+ public Resource getStrategiesModelResource() {
+ return strategySetResource = getViewerInput().getResources().get(0);
+ }
+
+ /**
+ * @return
+ * The state of the viewer
+ */
+ protected boolean isEmpty() {
+ // The second condition can be achieved if the user added an empty selection to an empty tree
+ if (getViewer().getTree().getItems().length > 0 && customStrategySet != null) {
+ return false;
+ }
+ return true;
+ }
+
+
+ // TODO implement dispose()
+
+}
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/src/org/eclipse/papyrus/propertylifecycle/preferences/pages/BasicTab.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/src/org/eclipse/papyrus/propertylifecycle/preferences/pages/BasicTab.java
new file mode 100755
index 00000000000..72864d16d85
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/src/org/eclipse/papyrus/propertylifecycle/preferences/pages/BasicTab.java
@@ -0,0 +1,413 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Quentin Le Menez (CEA LIST) quentin.lemenez@cea.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.propertylifecycle.preferences.pages;
+
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.Map;
+import java.util.Set;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.jface.viewers.ArrayContentProvider;
+import org.eclipse.jface.viewers.CellEditor;
+import org.eclipse.jface.viewers.CheckboxCellEditor;
+import org.eclipse.jface.viewers.ColumnLabelProvider;
+import org.eclipse.jface.viewers.EditingSupport;
+import org.eclipse.jface.viewers.StructuredViewer;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.TableViewerColumn;
+import org.eclipse.papyrus.propertylifecycle.StrategyElement;
+import org.eclipse.papyrus.propertylifecycle.StrategySet;
+import org.eclipse.papyrus.propertylifecycle.preferences.Activator;
+import org.eclipse.papyrus.propertylifecycle.preferences.messages.Messages;
+import org.eclipse.papyrus.propertylifecycle.preferences.utils.BrowseButton;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CTabFolder;
+import org.eclipse.swt.custom.CTabItem;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.swt.widgets.TableItem;
+
+/**
+ * Handle the creation of the basic tab of the preference page
+ *
+ */
+public class BasicTab implements SelectionListener {
+
+ /** Viewer displaying the strategy models declared in the registry by extension or imported by the user */
+ protected TableViewer tableViewer;
+
+ /** The table contained in the viewer */
+ protected Table table;
+
+ /** The composite containing the buttons controlling the selection and browsing */
+ protected Composite controlComposite;
+
+ /** Select all the models */
+ protected Button selectAllButton;
+
+ /** Deselect all the models */
+ protected Button deselectAllButton;
+
+ /** Map of the selected models */
+ protected Map<Resource, String> selectedModels;
+
+ /** Color indicating a selected model or used in the advanced tab */
+ protected Color colorBlack = Display.getDefault().getSystemColor(SWT.COLOR_BLACK);
+
+ /** Color indicating an unselected model */
+ protected Color colorGrey = Display.getDefault().getSystemColor(SWT.COLOR_DARK_GRAY);
+
+ /**
+ *
+ * Constructor.
+ *
+ * @param parent
+ * The parent composite
+ * @param style
+ */
+ public BasicTab(CTabFolder parent, int style) {
+ CTabItem basicTabItem = new CTabItem(parent, SWT.NONE);
+ basicTabItem.setText("Basic Selection");
+
+ selectedModels = new HashMap<Resource, String>();
+ Composite basicTabComposite = new Composite(parent, style);
+ basicTabComposite.setLayout(new GridLayout(2, false));
+ basicTabComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ basicTabItem.setControl(basicTabComposite);
+
+ createTableViewer(basicTabComposite);
+ createControlsComposite(basicTabComposite);
+ }
+
+ /**
+ * Create the viewer
+ *
+ * @param parent
+ * The parent composite
+ */
+ private void createTableViewer(final Composite parent) {
+ table = new Table(parent, SWT.MULTI | SWT.BORDER);
+ tableViewer = new TableViewer(table);
+ table.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ tableViewer.setContentProvider(new ArrayContentProvider() {
+
+ @Override
+ /** Override used to get the list of the displayed resource in order to */
+ public Object[] getElements(Object inputElement) {
+ Collection<Resource> resources = new LinkedList<Resource>();
+ if (inputElement instanceof ResourceSet) {
+ for (Resource resource : ((ResourceSet) inputElement).getResources()) {
+ resources.add(resource);
+ }
+ return resources.toArray();
+ }
+ return super.getElements(inputElement);
+ }
+ });
+
+ table.setHeaderVisible(true);
+ table.setLinesVisible(true);
+
+ TableViewerColumn checkbox = createTableViewerColumn("", 22, tableViewer);
+ checkbox.getColumn().setResizable(false);
+ checkbox.setLabelProvider(new ColumnLabelProvider() {
+ @Override
+ public String getText(Object element) {
+ return ""; //$NON-NLS-1$
+ }
+
+ @Override
+ // Set the toggle boxes
+ public Image getImage(Object element) {
+ if (selectedModels.containsKey(element)) {
+ return Activator.getDefault().getImage(Messages.Checked_IconPath);
+ } else {
+ return Activator.getDefault().getImage(Messages.Unchecked_IconPath);
+ }
+ }
+ });
+ // Set the toggle boxes behavior
+ checkbox.setEditingSupport(new EditingSupport(tableViewer) {
+
+ private CheckboxCellEditor checkboxCellEditor;
+
+ @Override
+ protected CellEditor getCellEditor(Object element) {
+ // The new visual
+ checkboxCellEditor = new CheckboxCellEditor(parent, SWT.CHECK | SWT.READ_ONLY);
+ return checkboxCellEditor;
+ }
+
+ @Override
+ protected boolean canEdit(Object element) {
+ // Always true
+ return true;
+ }
+
+ @Override
+ protected Object getValue(Object element) {
+ // Check if the model is currently selected
+ return selectedModels.containsKey(element);
+ }
+
+ @Override
+ protected void setValue(Object element, Object value) {
+ Resource resource = element instanceof Resource ? ((Resource) element) : null;
+ // This line's object object is not correctly formated
+ if (resource == null) {
+ return;
+ }
+
+ // Update the list of selected models
+ if (checkboxCellEditor.getValue() == Boolean.TRUE) {
+ selectedModels.put(resource, resource.getURI().lastSegment());
+ } else {
+ selectedModels.remove(resource);
+ }
+
+ // Update the visual of the table
+ tableViewer.update(element, null);
+ }
+ });
+
+
+ TableViewerColumn modelColumn = createTableViewerColumn("model", 300, tableViewer);
+ modelColumn.setLabelProvider(new ColumnLabelProvider() {
+ @Override
+ public String getText(Object element) {
+ // Get the name of the file handled
+ return element instanceof Resource ? ((Resource) element).getURI().lastSegment().toString() : super.getText(element);
+ }
+ });
+
+ TableViewerColumn descriptionColumn = createTableViewerColumn("description", 300, tableViewer);
+ descriptionColumn.setLabelProvider(new ColumnLabelProvider() {
+ @Override
+ public String getText(Object element) {
+ // Get the description, if any, of the model
+ Resource resource = element instanceof Resource ? ((Resource) element) : null;
+ Object setResource = resource.getContents().get(0);
+ return setResource instanceof StrategySet ? ((StrategySet) setResource).getDecription() : "N/A";
+ }
+ });
+ }
+
+ /**
+ * Color scheme of the lines
+ *
+ * @param lastSegs
+ * The file names
+ */
+ protected void setItemColor(Set<String> lastSegs) {
+ for (TableItem item : table.getItems()) {
+ String lastSeg = item.getData() instanceof Resource ? ((Resource) item.getData()).getURI().lastSegment() : "NA";
+ if (lastSegs.contains(lastSeg)) {
+ item.setForeground(1, colorBlack);
+ item.setForeground(2, colorBlack);
+ // item.setForeground(null);
+ } else {
+ item.setForeground(1, colorGrey);
+ item.setForeground(2, colorGrey);
+ }
+ }
+ }
+
+ /**
+ * Generic creator of the columns
+ *
+ * @param header
+ * The name of the column
+ * @param width
+ * The width of the column
+ * @param parentViewer
+ * The associated viewer
+ * @return
+ * The new {@link #org.eclipse.jface.viewers.TableViewerColumn column}
+ */
+ protected TableViewerColumn createTableViewerColumn(String header, int width, TableViewer parentViewer) {
+ TableViewerColumn newColumn = new TableViewerColumn(parentViewer, SWT.BORDER);
+ TableColumn column = newColumn.getColumn();
+ column.setWidth(width);
+ column.setText(header);
+ column.setResizable(true);
+ column.setMoveable(false);
+
+ return newColumn;
+ }
+
+ /**
+ * Create the control composite containing the selection and browsing buttons
+ *
+ * @param parent
+ * The parent composite
+ */
+ protected void createControlsComposite(Composite parent) {
+ controlComposite = new Composite(parent, SWT.NONE);
+ controlComposite.setLayout(new GridLayout(1, true));
+ GridData controlLayoutData = new GridData(SWT.FILL, SWT.CENTER, true, false);
+ controlComposite.setLayoutData(controlLayoutData);
+
+ selectAllButton = new Button(controlComposite, SWT.PUSH);
+ selectAllButton.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
+ selectAllButton.addSelectionListener(this);
+ selectAllButton.setToolTipText(Messages.SelectAllButton_Label);
+ selectAllButton.setText(Messages.SelectAllButton_Label);
+
+ deselectAllButton = new Button(controlComposite, SWT.PUSH);
+ deselectAllButton.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
+ deselectAllButton.addSelectionListener(this);
+ deselectAllButton.setToolTipText(Messages.DeselectAllButton_Label);
+ deselectAllButton.setText(Messages.DeselectAllButton_Label);
+
+ new BrowseButton(controlComposite, getViewer());
+ }
+
+ /**
+ * Link the selection events with the correct methods
+ *
+ * @see org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt.events.SelectionEvent)
+ *
+ * @param e
+ * The selection event
+ */
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ if (e.widget == selectAllButton) {
+ selectAllAction();
+ } else if (e.widget == deselectAllButton) {
+ deselectAllAction();
+ }
+ }
+
+ /**
+ * Select all the items present in the viewer
+ */
+ public void selectAllAction() {
+ for (TableItem item : table.getItems()) {
+ Resource resource = (Resource) item.getData();
+ selectedModels.put(resource, resource.getURI().lastSegment());
+ getViewer().update(resource, null);
+ }
+ }
+
+ /**
+ * Deselect all the models present in the viewer
+ */
+ public void deselectAllAction() {
+ for (TableItem item : table.getItems()) {
+ Resource resource = (Resource) item.getData();
+ selectedModels.remove(resource);
+ getViewer().update(resource, null);
+ }
+ }
+
+ /**
+ * Method used to initialize the selection in the viewer based on the current preferences
+ *
+ * @param filePaths
+ * The currently active strategy models' {@link #org.eclipse.emf.common.util.URI URI}
+ */
+ public void initSelection(Collection<String> filePaths) {
+ for (String filePath : filePaths) {
+ String preferenceKey = (URI.createPlatformPluginURI(filePath, true)).lastSegment();
+ for (TableItem item : table.getItems()) {
+ Resource resource = (Resource) item.getData();
+ String resourceKey = resource.getURI().lastSegment();
+
+ if (preferenceKey.equals(resourceKey)) {
+ selectedModels.put(resource, resourceKey);
+ getViewer().update(resource, null);
+ }
+ }
+ }
+ }
+
+ /**
+ * Clear any selected models that are not declared in the registry and reset the selection to the default state
+ *
+ * @param registryResourceSet
+ * The {@link #org.eclipse.emf.ecore.resource.ResourceSet resourceSet} containing the models
+ */
+ public void removeNonRegistryModels(ResourceSet registryResourceSet) {
+ table.clearAll();
+ selectedModels.clear();
+ tableViewer.setInput(registryResourceSet);
+ selectAllAction();
+ }
+
+ /**
+ * Convenience method used to initialize the viewer from the parent Composite
+ */
+ public void defaultSelection() {
+ selectAllAction();
+ }
+
+ /**
+ * @return
+ * The selected models
+ */
+ public Collection<String> getSelectedModels() {
+ Collection<String> selectedModelsURI = new LinkedList<String>();
+ for (Resource resource : selectedModels.keySet()) {
+ selectedModelsURI.add(resource.getURI().toString());
+ }
+
+ return selectedModelsURI;
+ }
+
+ /**
+ * @return
+ * The selected models' strategies
+ */
+ public HashSet<StrategyElement> getSelectedStrategies() {
+ HashSet<StrategyElement> selectedStrategies = new HashSet<StrategyElement>();
+ for (Resource resource : selectedModels.keySet()) {
+ if (resource.getContents().get(0) instanceof StrategySet) {
+ selectedStrategies.addAll(((StrategySet) resource.getContents().get(0)).getStrategies());
+ }
+ }
+
+ return selectedStrategies;
+ }
+
+ /**
+ * Convenience method
+ *
+ * @return
+ * This composite's Viewer
+ */
+ public StructuredViewer getViewer() {
+ return tableViewer;
+ }
+
+ @Override
+ public void widgetDefaultSelected(SelectionEvent e) {
+ // nothing
+ }
+
+}
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/src/org/eclipse/papyrus/propertylifecycle/preferences/pages/PropertyLifecyclePageComposite.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/src/org/eclipse/papyrus/propertylifecycle/preferences/pages/PropertyLifecyclePageComposite.java
new file mode 100755
index 00000000000..5b1546a04aa
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/src/org/eclipse/papyrus/propertylifecycle/preferences/pages/PropertyLifecyclePageComposite.java
@@ -0,0 +1,248 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Quentin Le Menez (CEA LIST) quentin.lemenez@cea.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.propertylifecycle.preferences.pages;
+
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+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.resource.impl.ResourceSetImpl;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.papyrus.propertylifecycle.StrategyElement;
+import org.eclipse.papyrus.propertylifecycle.StrategySet;
+import org.eclipse.papyrus.propertylifecycle.model.registries.StrategySetRegistry;
+import org.eclipse.papyrus.propertylifecycle.preferences.Activator;
+import org.eclipse.papyrus.propertylifecycle.preferences.messages.Messages;
+import org.eclipse.papyrus.propertylifecycle.preferences.utils.BrowserUtils;
+import org.eclipse.papyrus.propertylifecycle.preferences.utils.PropertyLifecyclePreferencesManager;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CTabFolder;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+
+
+/**
+ * This Composite is the root of the Basic and Advanced Tabs showing the selected and possible strategies
+ *
+ */
+public class PropertyLifecyclePageComposite extends CTabFolder {
+
+ /** This collection contains the resources referenced in an extension and retrievable from the registry */
+ private Collection<Resource> registryResources;
+
+ /** This tab will show the entire resources as a whole entity */
+ protected BasicTab basicTab;
+
+ /** In this tab the resources will display all the underlying strategies for the user to choose from */
+ protected AdvancedTab advancedTab;
+
+ // BEGIN TEST-GREYOUT
+ /** This set is used to visualize the currently selected strategies */
+ private Set<String> handledStrategyRepositories = new HashSet<String>();
+ // END TEST-GREYOUT
+
+
+ /**
+ *
+ * Constructor.
+ *
+ * @param parent
+ * The parent composite used to harbor this one
+ * @param style
+ * The border style of this composite
+ */
+ public PropertyLifecyclePageComposite(Composite parent, int style) {
+ super(parent, style);
+ this.setLayout(new GridLayout());
+ this.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+
+ createBasicTab();
+ createAdvancedTab();
+
+ initViewers();
+ this.setSelection(0);
+ }
+
+ /**
+ * Creates the Basic selection tab
+ */
+ private void createBasicTab() {
+ basicTab = new BasicTab(this, SWT.BORDER) {
+ // BEGIN TEST-GREYOUT
+ @Override
+ public void selectAllAction() {
+ super.selectAllAction();
+ getSelectedStrategyRepositories();
+ }
+
+ @Override
+ public void deselectAllAction() {
+ super.deselectAllAction();
+ getSelectedStrategyRepositories();
+ }
+ };
+
+ basicTab.getViewer().addSelectionChangedListener(new ISelectionChangedListener() {
+
+ @Override
+ public void selectionChanged(SelectionChangedEvent event) {
+ getSelectedStrategyRepositories();
+ }
+ });
+ // END TEST-GREYOUT
+ }
+
+ /**
+ * Creates the advanced selection tab
+ */
+ private void createAdvancedTab() {
+ advancedTab = new AdvancedTab(this, SWT.BORDER) {
+ // BEGIN TEST-GREYOUT
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ super.widgetSelected(e);
+ getSelectedStrategyRepositories();
+ }
+ // END TEST-GREYOUT
+ };
+ }
+
+ /**
+ * Call the necessary methods to populate the basic and advanced tabs
+ */
+ private void initViewers() {
+ // clearViewers();
+
+ // Load the Registry strategySet models as a default behavior
+ addRegistryStrategiesToViewers();
+
+ // Retrieve the previous preferences
+ PropertyLifecyclePreferencesManager preferencesManager = new PropertyLifecyclePreferencesManager();
+ BrowserUtils.addBrowsedModel(preferencesManager.retrieveAdvancedTabModelPaths(), advancedTab.getLeftViewer());
+ BrowserUtils.addBrowsedModel(preferencesManager.retrieveBasicTabModelPaths(), basicTab.getViewer());
+
+ // Initialize the viewers' selections
+ basicTab.initSelection(preferencesManager.retrieveBasicTabModelPaths());
+ if (!preferencesManager.nodeExists(Messages.BasicBrowsedModels_Node)) {
+ // The Default behavior, if the user has not deactivated all the models, is to preselect all
+ // basicTab.defaultSelection();
+ }
+ advancedTab.addStrategies(preferencesManager.retrieveAdvancedTabStrategies());
+
+ getSelectedStrategyRepositories();
+ }
+
+ /**
+ * Retrieve the resources referenced in the registry
+ */
+ private void addRegistryStrategiesToViewers() {
+ ResourceSet resourceSet = new ResourceSetImpl();
+ registryResources = new HashSet<Resource>();
+ Map<String, StrategySet> strategySets = StrategySetRegistry.getInstance().getStrategySets();
+ if (strategySets != null) {
+ for (String setKey : strategySets.keySet()) {
+ StrategySet strategySet = strategySets.get(setKey);
+ resourceSet.getResources().add(strategySet.eResource());
+ registryResources.add(strategySet.eResource());
+ }
+ }
+
+ advancedTab.getLeftViewer().setInput(resourceSet);
+ basicTab.getViewer().setInput(resourceSet);
+ }
+
+ /**
+ * Clear the viewers to their default state
+ */
+ public void resetViewers() {
+ ResourceSet resourceSet = new ResourceSetImpl();
+ resourceSet.getResources().addAll(registryResources);
+
+ advancedTab.removeAllSelectionCompositeStrategies();
+ advancedTab.setRegisteredCompositeInput(resourceSet);
+ basicTab.removeNonRegistryModels(resourceSet);
+ }
+
+ /**
+ * Get the adresses of the selected resources from the basic tab
+ *
+ * @return
+ */
+ public Collection<String> getBasicParentModels() {
+ return basicTab.getSelectedModels();
+ }
+
+ /**
+ * Get the resulting selected strategies from the selected resources
+ *
+ * @return
+ */
+ public Collection<StrategyElement> getBasicStrategies() {
+ return basicTab.getSelectedStrategies();
+ }
+
+ /**
+ * Get the adresses of the selected resources from the advanced tab
+ *
+ * @return
+ */
+ public Collection<String> getAdvancedParentModels() {
+ return advancedTab.getAdvancedParentModels();
+ }
+
+ /**
+ * Get the resulting strategies from the selected resources
+ *
+ * @return
+ */
+ public Collection<StrategyElement> getAdvancedStrategies() {
+ return advancedTab.getAdvancedStrategies();
+ }
+
+ /**
+ * Get the currently selected resources and initiate the corresponding visual representation
+ *
+ * @return
+ * The list of the selected addresses
+ */
+ private Set<String> getSelectedStrategyRepositories() {
+ handledStrategyRepositories.clear();
+ if (advancedTab.rightViewerComposite == null || basicTab == null) {
+ return new HashSet<String>();
+ }
+
+ for (String modelName : advancedTab.rightViewerComposite.getParentModels()) {
+ URI test = URI.createFileURI(modelName);
+ handledStrategyRepositories.add(test.lastSegment());
+ }
+ for (String modelName : basicTab.getSelectedModels()) {
+ URI test = URI.createFileURI(modelName);
+ handledStrategyRepositories.add(test.lastSegment());
+ }
+
+ Activator.log.trace(Activator.STRATEGY_PREFERENCES_TRACE, handledStrategyRepositories.toString());
+ basicTab.setItemColor(handledStrategyRepositories);
+ return handledStrategyRepositories;
+ }
+
+ // TODO implement dispose()
+
+}
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/src/org/eclipse/papyrus/propertylifecycle/preferences/pages/PropertyLifecyclePreferencesPage.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/src/org/eclipse/papyrus/propertylifecycle/preferences/pages/PropertyLifecyclePreferencesPage.java
new file mode 100755
index 00000000000..1830ad5d441
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/src/org/eclipse/papyrus/propertylifecycle/preferences/pages/PropertyLifecyclePreferencesPage.java
@@ -0,0 +1,113 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Quentin Le Menez (CEA LIST) quentin.lemenez@cea.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.propertylifecycle.preferences.pages;
+
+
+//import org.eclipse.jface.action.Action;
+//import org.eclipse.papyrus.infra.propertylifecycle.preferences.utils.ConvertEcoreToUML;
+
+import org.eclipse.jface.preference.PreferencePage;
+import org.eclipse.papyrus.propertylifecycle.preferences.Activator;
+import org.eclipse.papyrus.propertylifecycle.preferences.messages.Messages;
+import org.eclipse.papyrus.propertylifecycle.preferences.utils.PropertyLifecyclePreferencesManager;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchPreferencePage;
+
+/**
+ * Preference Page initiating the creation of its contents and the update of the selected preferences
+ *
+ */
+public class PropertyLifecyclePreferencesPage extends PreferencePage implements IWorkbenchPreferencePage {
+
+ /** The preferenceManager used to handle the previous and current preferences on the strategies */
+ private PropertyLifecyclePreferencesManager preferencesManager = new PropertyLifecyclePreferencesManager();
+
+ /** The root composite containing the page's contents */
+ private PropertyLifecyclePageComposite propertyLifecyclePageComposite;
+
+ /**
+ * Constructor.
+ */
+ public PropertyLifecyclePreferencesPage() {
+ super(Messages.PropertyLifecycle_PreferencePage_Title, Activator.getDefault().getImageDescriptor("/icons/papyrus.png")); //$NON-NLS-1$
+ }
+
+ /**
+ * @see org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench)
+ *
+ * @param workbench
+ */
+ @Override
+ public void init(IWorkbench workbench) {
+ setPreferenceStore(Activator.getDefault().getPreferenceStore());
+ setDescription(Messages.Choose_Configuration);
+ }
+
+ /**
+ * Method used to initialize the composite before applying the visual effects linked to the selected strategies
+ *
+ * @see org.eclipse.jface.preference.PreferencePage#createContents(org.eclipse.swt.widgets.Composite)
+ *
+ * @param parent
+ * @return
+ * parent
+ */
+ @Override
+ public Control createContents(Composite parent) {
+ initializeDialogUnits(parent);
+ propertyLifecyclePageComposite = new PropertyLifecyclePageComposite(parent, SWT.NONE);
+ return parent;
+ }
+
+ /**
+ * Get all the selected strategies and register them through the PreferenceManager
+ *
+ * @see org.eclipse.jface.preference.PreferencePage#performApply()
+ *
+ */
+ @Override
+ protected void performApply() {
+ preferencesManager.registerCurrentPreferences(
+ propertyLifecyclePageComposite.getBasicParentModels(),
+ propertyLifecyclePageComposite.getAdvancedParentModels(),
+ propertyLifecyclePageComposite.getBasicStrategies(),
+ propertyLifecyclePageComposite.getAdvancedStrategies());
+
+ // ConvertEcoreToUML convertDialog = new ConvertEcoreToUML();
+ // convertDialog.run(new Action() {
+ // });
+
+ super.performApply();
+ }
+
+ /**
+ * @see org.eclipse.jface.preference.PreferencePage#performDefaults()
+ *
+ */
+ @Override
+ protected void performDefaults() {
+ preferencesManager.clearPreferences();
+ propertyLifecyclePageComposite.resetViewers();
+
+ super.performDefaults();
+ }
+
+ @Override
+ public void performHelp() {
+ // do something ?
+ }
+}
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/src/org/eclipse/papyrus/propertylifecycle/preferences/utils/AdvancedTabLabelProvider.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/src/org/eclipse/papyrus/propertylifecycle/preferences/utils/AdvancedTabLabelProvider.java
new file mode 100755
index 00000000000..1bc58d072be
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/src/org/eclipse/papyrus/propertylifecycle/preferences/utils/AdvancedTabLabelProvider.java
@@ -0,0 +1,109 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Quentin Le Menez (CEA LIST) quentin.lemenez@cea.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.propertylifecycle.preferences.utils;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;
+import org.eclipse.papyrus.propertylifecycle.ElementContainer;
+import org.eclipse.papyrus.propertylifecycle.ElementProperty;
+import org.eclipse.papyrus.propertylifecycle.StrategyElement;
+import org.eclipse.papyrus.propertylifecycle.StrategySet;
+import org.eclipse.papyrus.propertylifecycle.preferences.Activator;
+import org.eclipse.papyrus.propertylifecycle.preferences.messages.Messages;
+import org.eclipse.swt.graphics.Image;
+
+/**
+ * Class used to specialize the label provider of the advanced tab viewers
+ *
+ */
+public class AdvancedTabLabelProvider extends AdapterFactoryLabelProvider {
+
+ /**
+ * Constructor.
+ *
+ * @param adapterFactory
+ * The factory used as a base
+ */
+ public AdvancedTabLabelProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * @see org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider#getText(java.lang.Object)
+ *
+ * @param object
+ * The viewer element
+ * @return
+ * The labels to be displayed
+ */
+ @Override
+ public String getText(Object object) {
+ StringBuilder label = new StringBuilder();
+
+ if (object instanceof Resource) {
+ return ((Resource) object).getURI().lastSegment();
+ }
+ if (object instanceof StrategyElement) {
+ label.append(Messages.StrategyElement_Label);
+ String elementType = ((StrategyElement) object).getBaseType();
+ label.append(elementType);
+ return label.toString();
+ }
+ if (object instanceof ElementProperty) {
+ label.append(Messages.ElementProperty_Label);
+ String featureLabel = ((ElementProperty) object).getFeatureLabel();
+ label.append(featureLabel);
+ return label.toString();
+ }
+ if (object instanceof ElementContainer) {
+ label.append(Messages.ElementContainer_Label);
+ String containerType = ((ElementContainer) object).getBaseType();
+ label.append(containerType);
+ return label.toString();
+ }
+
+ return super.getText(object);
+ }
+
+ /**
+ * @see org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider#getImage(java.lang.Object)
+ *
+ * @param object
+ * The viewer element
+ * @return
+ * The image to be displayed
+ */
+ @Override
+ public Image getImage(Object object) {
+ if (object instanceof Resource) {
+ return Activator.getDefault().getImage(Messages.Resource_IconPath);
+ }
+ if (object instanceof StrategySet) {
+ return Activator.getDefault().getImage(Messages.StrategySet_IconPath);
+ }
+ if (object instanceof StrategyElement) {
+ return Activator.getDefault().getImage(Messages.Strategy_IconPath);
+ }
+ if (object instanceof ElementProperty) {
+ return Activator.getDefault().getImage(Messages.Property_IconPath);
+ }
+ if (object instanceof ElementContainer) {
+ return Activator.getDefault().getImage(Messages.ElementContainer_IconPath);
+ }
+
+ return super.getDefaultImage(object);
+ }
+
+}
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/src/org/eclipse/papyrus/propertylifecycle/preferences/utils/AdvancedTabViewerUtils.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/src/org/eclipse/papyrus/propertylifecycle/preferences/utils/AdvancedTabViewerUtils.java
new file mode 100755
index 00000000000..b56abf13c8d
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/src/org/eclipse/papyrus/propertylifecycle/preferences/utils/AdvancedTabViewerUtils.java
@@ -0,0 +1,43 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Quentin Le Menez (CEA LIST) quentin.lemenez@cea.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.propertylifecycle.preferences.utils;
+
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.papyrus.propertylifecycle.PropertylifecycleFactory;
+import org.eclipse.papyrus.propertylifecycle.StrategyElement;
+
+/**
+ * Convenience class used to create the custom model and its strategies
+ *
+ */
+public class AdvancedTabViewerUtils {
+
+ /** The factory from which all the strategies are spawned */
+ protected static PropertylifecycleFactory newModelFactory = PropertylifecycleFactory.eINSTANCE;
+
+ /**
+ * Clone the selected strategy in the custom model
+ *
+ * @param selectedStrategy
+ * The selected strategy
+ * @return
+ * The cloned strategy
+ */
+ public static StrategyElement cloneStrategy(StrategyElement selectedStrategy) {
+ StrategyElement clonedStrategy = EcoreUtil.copy(selectedStrategy);
+
+ return clonedStrategy;
+ }
+
+}
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/src/org/eclipse/papyrus/propertylifecycle/preferences/utils/BrowseButton.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/src/org/eclipse/papyrus/propertylifecycle/preferences/utils/BrowseButton.java
new file mode 100755
index 00000000000..cb69009f7ac
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/src/org/eclipse/papyrus/propertylifecycle/preferences/utils/BrowseButton.java
@@ -0,0 +1,117 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Quentin Le Menez (CEA LIST) quentin.lemenez@cea.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.propertylifecycle.preferences.utils;
+
+import java.io.File;
+import java.util.Collection;
+import java.util.LinkedList;
+
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.papyrus.propertylifecycle.preferences.messages.Messages;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.FileDialog;
+
+/**
+ * Class used to create the browser button and its associated window
+ *
+ */
+public class BrowseButton {
+
+ /** The file extensions */
+ private static String[] filterExtensions = { "*.propertylifecycle", "*" }; //$NON-NLS-1$ //$NON-NLS-2$
+
+ /** Their associated names in the window's scrolling menu */
+ private static String[] filterExtensionsNames = { "Strategies Sets", "All" }; //$NON-NLS-1$ //$NON-NLS-2$
+
+ /** The button's parent composite */
+ protected Composite parent;
+
+ /** The viewer to receive the fetched model */
+ protected Viewer viewer;
+
+
+ /**
+ * Constructor.
+ *
+ * @param parent
+ * @param viewer
+ */
+ public BrowseButton(final Composite parent, final Viewer viewer) {
+ this.parent = parent;
+ this.viewer = viewer;
+
+ createBrowserButton(this.parent);
+ // TODO implement a link to grey-out the imported model
+ }
+
+ /**
+ * @return
+ * The browser button used to fetch the strategy models from the user's disk and add it is not already loaded
+ */
+ public Button createBrowserButton(Composite parent) {
+ Button browseButton = new Button(parent, SWT.NONE);
+ // browseButton.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false, 1, 1));
+ browseButton.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
+ browseButton.setText(Messages.BrowseButton_Label);
+
+ browseButton.addSelectionListener(new SelectionAdapter() {
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+
+ FileDialog dialog = new FileDialog(parent.getShell(), SWT.MULTI);
+ dialog.setText(Messages.SystemSelectionDialog_Title);
+ dialog.setFilterExtensions(filterExtensions);
+ dialog.setFilterNames(filterExtensionsNames);
+
+ Collection<String> newSystemPaths = new LinkedList<String>();
+ Collection<String> existingResources = BrowserUtils.getViewerResources(viewer);
+
+ String dialogResult = dialog.open();
+ if (dialogResult == null) {
+ return;
+ }
+ // Settings - Store the last folder/directory visited
+ String[] names = dialog.getFileNames();
+
+ // Empty the list to avoid remembering old selections
+ for (int i = 0, n = names.length; i < n; i++) {
+ StringBuffer buf = new StringBuffer(dialog.getFilterPath());
+ if (buf.charAt(buf.length() - 1) != File.separatorChar) {
+ buf.append(File.separatorChar);
+ }
+ buf.append(names[i]);
+
+ if (existingResources.contains(names[i])) {
+ continue;
+ }
+
+ newSystemPaths.add(buf.toString());
+ }
+
+ BrowserUtils.addBrowsedModel(newSystemPaths, viewer);
+ }
+ });
+
+ return browseButton;
+ }
+
+
+
+}
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/src/org/eclipse/papyrus/propertylifecycle/preferences/utils/BrowserUtils.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/src/org/eclipse/papyrus/propertylifecycle/preferences/utils/BrowserUtils.java
new file mode 100755
index 00000000000..bbe897953f0
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/src/org/eclipse/papyrus/propertylifecycle/preferences/utils/BrowserUtils.java
@@ -0,0 +1,156 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Quentin Le Menez (CEA LIST) quentin.lemenez@cea.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.propertylifecycle.preferences.utils;
+
+import java.io.IOException;
+import java.util.Collection;
+import java.util.LinkedList;
+
+import org.eclipse.emf.common.CommonPlugin;
+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.jface.viewers.Viewer;
+import org.eclipse.papyrus.propertylifecycle.StrategySet;
+import org.eclipse.papyrus.propertylifecycle.preferences.Activator;
+
+/**
+ * Convenience class regrouping methods to retrieve model resources
+ *
+ */
+public class BrowserUtils {
+
+ /**
+ * Add the browsed models to the viewer
+ *
+ * @param newSystemPaths
+ * The selected models' paths
+ * @param viewer
+ * The viewer that will receive these new models
+ */
+ public static void addBrowsedModel(Collection<String> newSystemPaths, Viewer viewer) {
+
+ for (String filePath : newSystemPaths) {
+ Resource resource = getModelResource(filePath);
+ if (resource == null || getViewerResources(viewer).contains(resource.getURI().lastSegment())) {
+ continue;
+ }
+
+ EObject content = resource.getContents().get(0);
+ if (content instanceof StrategySet) {
+ // Preferences browsedNode = renamePreferences.node(Messages.BrowsedModels_Node);
+ // browsedNode.putBoolean(filePath, true);
+ addNewModel(resource, viewer);
+ }
+ }
+
+ viewer.refresh();
+ }
+
+ /**
+ * @param filePath
+ * The path of the selected model
+ * @return
+ * The resource associated to this path or null if none can be retrieved
+ */
+ public static Resource getModelResource(String filePath) {
+ URI fileURI = CommonPlugin.resolve(URI.createFileURI(filePath));
+ // URI fileURI = URI.createFileURI(filePath);
+ ResourceSet resourceSet = new ResourceSetImpl();
+ Resource resource = resourceSet.createResource(fileURI);
+
+ try {
+ resource.load(null);
+ return resource;
+ } catch (IOException ioerror) {
+ Activator.log.error(ioerror);
+ }
+ return null;
+ }
+
+ /**
+ * @param filePath
+ * The path of the selected model
+ * @return
+ * The strategy set associated to this path or null if none can be found
+ */
+ public static StrategySet getStrategySet(String filePath) {
+ Resource resource = getModelResource(filePath);
+ if (resource == null) {
+ return null;
+ }
+ EObject eObject = resource.getContents().get(0);
+
+ if (eObject instanceof StrategySet) {
+ return (StrategySet) eObject;
+ }
+
+ return null;
+ }
+
+ /**
+ * @param viewer
+ * The viewer receiving the inputed resource
+ * @return
+ * The viewer's current contents @see org.eclipse.emf.ecore.resource.ResourceSet
+ */
+ public static ResourceSet getViewerInput(Viewer viewer) {
+ Object viewerInput = viewer.getInput();
+ if (viewerInput instanceof ResourceSet) {
+ return ((ResourceSet) viewerInput);
+ }
+ return null;
+ }
+
+ /**
+ * @param viewer
+ * The viewer receiving the inputed resource
+ * @return
+ * The viewer's current contents' identifiers
+ */
+ public static Collection<String> getViewerResources(Viewer viewer) {
+ ResourceSet viewerInput = getViewerInput(viewer);
+ if (viewerInput == null) {
+ return new LinkedList<String>();
+ }
+
+ Collection<String> existingResources = new LinkedList<String>();
+ for (Resource resource : viewerInput.getResources()) {
+ // List used to verify that the user is not adding an existing model in the viewer
+ existingResources.add(resource.getURI().lastSegment());
+ }
+
+ return existingResources;
+ }
+
+ /**
+ * Add the browsed resource to the viewer
+ *
+ * @param resource
+ * The selected resource
+ * @param viewer
+ * The viewer to receive this resource
+ */
+ public static void addNewModel(Resource resource, Viewer viewer) {
+ if (getViewerInput(viewer) == null) {
+ viewer.setInput(resource.getResourceSet());
+ return;
+ }
+
+ getViewerInput(viewer).getResources().add(resource);
+ }
+
+}
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/src/org/eclipse/papyrus/propertylifecycle/preferences/utils/ConvertEcoreToUML.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/src/org/eclipse/papyrus/propertylifecycle/preferences/utils/ConvertEcoreToUML.java
new file mode 100755
index 00000000000..ee8385baf55
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/src/org/eclipse/papyrus/propertylifecycle/preferences/utils/ConvertEcoreToUML.java
@@ -0,0 +1,251 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Quentin Le Menez (CEA LIST) quentin.lemenez@cea.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.propertylifecycle.preferences.utils;
+
+// package org.eclipse.papyrus.rename.strategies.preferences.utils;
+//
+// import java.lang.reflect.InvocationTargetException;
+// import java.util.ArrayList;
+// import java.util.HashMap;
+// import java.util.List;
+// import java.util.Map;
+//
+// import org.eclipse.core.resources.IFile;
+// import org.eclipse.core.runtime.IProgressMonitor;
+// import org.eclipse.emf.common.command.UnexecutableCommand;
+// import org.eclipse.emf.common.util.BasicDiagnostic;
+// import org.eclipse.emf.common.util.Diagnostic;
+// import org.eclipse.emf.common.util.EList;
+// 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.EPackage;
+// import org.eclipse.emf.ecore.InternalEObject;
+// import org.eclipse.emf.ecore.plugin.EcorePlugin;
+// 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.XMIResource;
+// import org.eclipse.jface.action.IAction;
+// import org.eclipse.jface.dialogs.ProgressMonitorDialog;
+// import org.eclipse.jface.operation.IRunnableWithProgress;
+// import org.eclipse.jface.viewers.ISelection;
+// import org.eclipse.jface.viewers.StructuredSelection;
+// import org.eclipse.jface.window.Window;
+// import org.eclipse.swt.widgets.Shell;
+// import org.eclipse.ui.PlatformUI;
+// import org.eclipse.uml2.common.util.UML2Util;
+// import org.eclipse.uml2.examples.uml.ui.UMLExamplesUIPlugin;
+// import org.eclipse.uml2.examples.uml.ui.dialogs.Ecore2UMLConverterOptionsDialog;
+// import org.eclipse.uml2.uml.Element;
+// import org.eclipse.uml2.uml.UMLPlugin;
+// import org.eclipse.uml2.uml.editor.dialogs.OptionsDialog;
+// import org.eclipse.uml2.uml.resource.UMLResource;
+// import org.eclipse.uml2.uml.util.UMLUtil;
+// import org.eclipse.uml2.uml.util.UMLValidator;
+//
+//
+// /**
+// * Need only import org.eclipse.uml2.examples.uml.ui and activate the action in the RenameStrategiesPreferencePage
+// *
+// */
+// public class ConvertEcoreToUML extends org.eclipse.uml2.examples.uml.ui.actions.ConvertToUMLModelAction {
+//
+// @Override
+// public void run(IAction action) {
+//
+// if (command != UnexecutableCommand.INSTANCE) {
+// ISelection selection = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getSelectionService().getSelection();
+//
+// IFile iFile = (IFile) ((StructuredSelection) selection).getFirstElement();
+// ResourceSet resourceSet = new ResourceSetImpl();
+// Resource resource = resourceSet.createResource(URI.createPlatformResourceURI(iFile.getFullPath().toString(), true));
+//
+// EObject content = null;
+// try {
+// resource.load(null);
+// content = resource.getContents().get(0);
+// } catch (Exception e) {
+// // do something
+// }
+//
+// if (!(content instanceof EPackage)) {
+// return;
+// }
+//
+// final EPackage ePackage = (EPackage) content;
+//
+// final Shell shell = PlatformUI.getWorkbench()
+// .getActiveWorkbenchWindow().getShell();
+//
+// final Map<String, String> options = new HashMap<String, String>();
+//
+// final String label = UMLExamplesUIPlugin.INSTANCE.getString(
+// "_UI_ConvertToUMLActionCommand_label", //$NON-NLS-1$
+// new Object[] { getObjectLabel(ePackage) });
+//
+// OptionsDialog optionsDialog = new Ecore2UMLConverterOptionsDialog(
+// shell, label, UMLExamplesUIPlugin.INSTANCE
+// .getString("_UI_OptionsDialog_message"), //$NON-NLS-1$
+// options);
+//
+// if (optionsDialog.open() == Window.OK) {
+// IRunnableWithProgress runnableWithProgress = new IRunnableWithProgress() {
+//
+// @Override
+// public void run(final IProgressMonitor progressMonitor)
+// throws InvocationTargetException,
+// InterruptedException {
+//
+// try {
+// final BasicDiagnostic diagnostics = new BasicDiagnostic(
+// UMLValidator.DIAGNOSTIC_SOURCE, 0,
+// EcorePlugin.INSTANCE.getString(
+// "_UI_DiagnosticRoot_diagnostic", //$NON-NLS-1$
+// new Object[] { getObjectLabel(ePackage) }),
+// new Object[] { ePackage });
+//
+// Map<Object, Object> context = new HashMap<Object, Object>();
+// context.put(UML2Util.QualifiedTextProvider.class,
+// qualifiedTextProvider);
+//
+// progressMonitor.beginTask(
+// UMLExamplesUIPlugin.INSTANCE.getString(
+// "_UI_ConvertingToUML_message", //$NON-NLS-1$
+// new Object[] { getObjectLabel(ePackage) }),
+// IProgressMonitor.UNKNOWN);
+//
+// Resource resource = ePackage.eResource();
+// ResourceSet resourceSet = resource.getResourceSet();
+// URI uri = resourceSet.getURIConverter().normalize(
+// resource.getURI()).trimFileExtension()
+// .trimSegments(1);
+//
+// List<Resource> resources = new ArrayList<Resource>();
+//
+// for (org.eclipse.uml2.uml.Package package_ : UMLUtil
+// .convertFromEcore(ePackage, options,
+// diagnostics, context)) {
+//
+// resources.add(resource = resourceSet
+// .createResource(uri.appendSegment(
+// package_.getName())
+// .appendFileExtension(
+// UMLResource.FILE_EXTENSION)));
+//
+// EList<EObject> contents = resource
+// .getContents();
+//
+// contents.add(package_);
+//
+// for (TreeIterator<EObject> allContents = UML2Util
+// .getAllContents(package_, true, false); allContents
+// .hasNext();) {
+//
+// EObject eObject = allContents.next();
+//
+// if (eObject instanceof Element) {
+// contents.addAll(((Element) eObject)
+// .getStereotypeApplications());
+// }
+// }
+//
+// if (UMLUtil.OPTION__PROCESS
+// .equals(options
+// .get(UMLUtil.Ecore2UMLConverter.OPTION__XMI_IDENTIFIERS))
+// && resource instanceof XMIResource) {
+//
+// XMIResource xmiResource = (XMIResource) resource;
+//
+// for (TreeIterator<EObject> allContents = xmiResource
+// .getAllContents(); allContents
+// .hasNext();) {
+//
+// EObject eObject = allContents.next();
+// String xmiIdentifier = UML2Util
+// .getXMIIdentifier((InternalEObject) eObject);
+//
+// if (diagnostics != null) {
+// diagnostics
+// .add(new BasicDiagnostic(
+// Diagnostic.INFO,
+// UMLValidator.DIAGNOSTIC_SOURCE,
+// UMLUtil.Ecore2UMLConverter.XMI_IDENTIFIER,
+// UMLPlugin.INSTANCE
+// .getString(
+// "_UI_Ecore2UMLConverter_ProcessXMIIdentifier_diagnostic", //$NON-NLS-1$
+// UML2Util
+// .getMessageSubstitutions(
+// context,
+// eObject,
+// xmiIdentifier)),
+// new Object[] { eObject }));
+// }
+//
+// xmiResource.setID(eObject,
+// xmiIdentifier);
+// }
+// }
+// }
+//
+// for (Resource r : resources) {
+//
+// try {
+// r.save(null);
+// } catch (Exception e) {
+// UMLExamplesUIPlugin.INSTANCE.log(e);
+// }
+// }
+//
+// handleDiagnostic(progressMonitor.isCanceled()
+// ? Diagnostic.CANCEL_INSTANCE
+// : diagnostics, label);
+// } finally {
+// progressMonitor.done();
+// }
+// }
+// };
+//
+// if (eclipseResourcesUtil != null) {
+// runnableWithProgress = eclipseResourcesUtil
+// .getWorkspaceModifyOperation(runnableWithProgress);
+// }
+//
+// try {
+// new ProgressMonitorDialog(shell).run(false, true,
+// runnableWithProgress);
+// } catch (Exception e) {
+// UMLExamplesUIPlugin.INSTANCE.log(e);
+// }
+// }
+// }
+// }
+//
+// public String getObjectLabel(EObject eObject) {
+// Resource eResource = eObject.eResource();
+//
+// String text = "";
+// if (eResource != null) {
+// String lastSegment = eResource.getURI()
+// .lastSegment();
+//
+// if (lastSegment != null) {
+// text += " - " + lastSegment; //$NON-NLS-1$
+// }
+// }
+//
+// return text;
+// }
+//
+// }
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/src/org/eclipse/papyrus/propertylifecycle/preferences/utils/PropertyLifecyclePreferencesManager.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/src/org/eclipse/papyrus/propertylifecycle/preferences/utils/PropertyLifecyclePreferencesManager.java
new file mode 100755
index 00000000000..dddfa8613f6
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/src/org/eclipse/papyrus/propertylifecycle/preferences/utils/PropertyLifecyclePreferencesManager.java
@@ -0,0 +1,359 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Quentin Le Menez (CEA LIST) quentin.lemenez@cea.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.propertylifecycle.preferences.utils;
+
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+
+import org.eclipse.core.runtime.preferences.ConfigurationScope;
+import org.eclipse.papyrus.propertylifecycle.StrategyElement;
+import org.eclipse.papyrus.propertylifecycle.StrategySet;
+import org.eclipse.papyrus.propertylifecycle.model.registries.StrategySetRegistry;
+import org.eclipse.papyrus.propertylifecycle.preferences.Activator;
+import org.eclipse.papyrus.propertylifecycle.preferences.messages.Messages;
+import org.osgi.service.prefs.BackingStoreException;
+import org.osgi.service.prefs.Preferences;
+
+/**
+ * Convenience class used to handle the preferences in one place
+ *
+ */
+public class PropertyLifecyclePreferencesManager {
+
+ /** Preference node containing the strategies informations */
+ // private Preferences renamePreferences = InstanceScope.INSTANCE.getNode(Messages.PreferenceRenameStrategies);
+ // We need to retain the preferences through multiple restarts
+ private Preferences propertyLifecyclePreferences = ConfigurationScope.INSTANCE.getNode(Messages.PropertyLifecycleStrategies);
+
+ // Basic Tab
+ /** Set containing the selected models in the basic tab viewer */
+ private HashSet<StrategySet> basicTabParentModels;
+
+ /** Ids of the strategies contained in the selected models */
+ private HashSet<String> basicTabStrategiesIDs;
+
+ /** Addresses of the selected models */
+ private HashSet<String> basicTabBrowsedModelsURI;
+
+ /** strategies and their ids used to filter duplicates */
+ private HashMap<String, StrategyElement> basicTabStrategies;
+
+ // Advanced Tab
+ /** Set containing the selected models in the advanced tab viewer */
+ private HashSet<StrategySet> advancedTabParentModels;
+
+ /** Ids of the selected strategies */
+ private HashSet<String> advancedTabStrategiesIDs;
+
+ /** Addresses of the models containing the selected strategies */
+ private HashSet<String> advancedTabBrowsedModelsURI;
+
+ /** Strategies and their ids used to filter duplicates */
+ private HashMap<String, StrategyElement> advancedTabStrategies;
+
+
+ /**
+ * Build the skeleton of the future preference Node
+ *
+ * Constructor.
+ */
+ public PropertyLifecyclePreferencesManager() {
+ basicTabParentModels = new HashSet<StrategySet>();
+ basicTabStrategiesIDs = new HashSet<String>();
+ basicTabBrowsedModelsURI = new HashSet<String>();
+ browseRegisteredPreferences(basicTabParentModels, basicTabStrategiesIDs,
+ basicTabBrowsedModelsURI, Messages.BasicBrowsedModels_Node, Messages.BasicSelectedStrategies_Node);
+
+ advancedTabParentModels = new HashSet<StrategySet>();
+ advancedTabStrategiesIDs = new HashSet<String>();
+ advancedTabBrowsedModelsURI = new HashSet<String>();
+ browseRegisteredPreferences(advancedTabParentModels, advancedTabStrategiesIDs,
+ advancedTabBrowsedModelsURI, Messages.AdvancedBrowsedModels_Node, Messages.AdvancedSelectedStrategies_Node);
+ }
+
+ /**
+ *
+ * @return
+ * The strategies preferences
+ */
+ public Preferences getRenamePreferences() {
+ return propertyLifecyclePreferences;
+ }
+
+ /**
+ * Parse the current preference Node and retrieve the associated informations on the models and their strategies
+ *
+ * @param parentModels
+ * The current models
+ * @param strategiesIDs
+ * The current strategies IDs
+ * @param browsedModelsURI
+ * The current models' URis
+ * @param modelNodePath
+ * The model node to parse
+ * @param strategiesNodePath
+ * The strategy node to parse
+ */
+ private void browseRegisteredPreferences(HashSet<StrategySet> parentModels, HashSet<String> strategiesIDs,
+ HashSet<String> browsedModelsURI, String modelNodePath, String strategiesNodePath) {
+
+ try {
+ for (String childName : propertyLifecyclePreferences.childrenNames()) {
+ Preferences childNode = propertyLifecyclePreferences.node(childName);
+ if (childName.equalsIgnoreCase(modelNodePath)) {
+ for (String modelURI : childNode.keys()) {
+ browsedModelsURI.add(modelURI);
+ StrategySet model = BrowserUtils.getStrategySet(modelURI);
+ if (model != null) {
+ parentModels.add(model);
+ }
+ }
+ }
+
+ if (childName.equalsIgnoreCase(strategiesNodePath)) {
+ for (String strategyID : childNode.keys()) {
+ strategiesIDs.add(strategyID);
+ }
+ }
+
+ }
+ } catch (BackingStoreException bse) {
+ Activator.log.error(bse);
+ }
+ }
+
+ /**
+ * Retrieve the strategy corresponding to an ID from the selected models
+ *
+ * @param strategyID
+ * The unique ID
+ * @param parentModels
+ * The selected models
+ * @param strategies
+ * The set containing the newly found pair
+ */
+ private void getCorrespondigStrategy(String strategyID, HashSet<StrategySet> parentModels,
+ HashMap<String, StrategyElement> strategies) {
+ for (StrategySet model : parentModels) {
+ for (StrategyElement strategy : model.getStrategies()) {
+ if (strategyID.equals(strategy.getId())) {
+ strategies.put(strategyID, strategy);
+ }
+ }
+ }
+ }
+
+ /**
+ * @return
+ * The strategies from the basic tab
+ */
+ public Collection<StrategyElement> retrieveBasicTabStrategies() {
+ basicTabStrategies = new HashMap<String, StrategyElement>();
+ basicTabStrategiesIDs = new HashSet<String>();
+ basicTabBrowsedModelsURI = new HashSet<String>();
+ basicTabParentModels = new HashSet<StrategySet>();
+
+ browseRegisteredPreferences(basicTabParentModels, basicTabStrategiesIDs,
+ basicTabBrowsedModelsURI, Messages.BasicBrowsedModels_Node, Messages.BasicSelectedStrategies_Node);
+
+ for (String strategyID : basicTabStrategiesIDs) {
+ getCorrespondigStrategy(strategyID, basicTabParentModels, basicTabStrategies);
+ }
+
+ // Activator.log.trace(Activator.RENAMING_PREFERENCES_TRACE, "basicTabStrategies.values(): " + basicTabStrategies.values().size());
+ return basicTabStrategies.values();
+ }
+
+ /**
+ * @return
+ * The models' URI
+ */
+ public Collection<String> retrieveBasicTabModelPaths() {
+ return basicTabBrowsedModelsURI;
+ }
+
+ /**
+ * @return
+ * The strategies from the advanced tab
+ */
+ public Collection<StrategyElement> retrieveAdvancedTabStrategies() {
+ advancedTabStrategies = new HashMap<String, StrategyElement>();
+ advancedTabStrategiesIDs = new HashSet<String>();
+ advancedTabBrowsedModelsURI = new HashSet<String>();
+ advancedTabParentModels = new HashSet<StrategySet>();
+
+ browseRegisteredPreferences(advancedTabParentModels, advancedTabStrategiesIDs,
+ advancedTabBrowsedModelsURI, Messages.AdvancedBrowsedModels_Node, Messages.AdvancedSelectedStrategies_Node);
+
+ for (String strategyID : advancedTabStrategiesIDs) {
+ getCorrespondigStrategy(strategyID, advancedTabParentModels, advancedTabStrategies);
+ }
+
+ // Activator.log.trace(Activator.RENAMING_PREFERENCES_TRACE, "advancedTabStrategies.values(): " + advancedTabStrategies.values().size());
+ return advancedTabStrategies.values();
+ }
+
+ /**
+ * @return
+ * All the strategies from the preference node and the selected strategies from both tabs
+ */
+ public Collection<StrategyElement> retrieveAllStrategies() {
+ Map<String, StrategyElement> allStrategies = new HashMap<>();
+ try {
+ Activator.log.trace(Activator.STRATEGY_PREFERENCES_TRACE, "childrenNodes: " + propertyLifecyclePreferences.childrenNames().length);
+ if (propertyLifecyclePreferences.childrenNames().length == 0) {
+ // The User still hasn't selected anything in the preference page
+ // Populate the preferences with the default models
+ Map<String, StrategySet> renameSets = StrategySetRegistry.getInstance().getStrategySets();
+ if (renameSets != null) {
+ for (String setKey : renameSets.keySet()) {
+ StrategySet renameSetConfiguration = renameSets.get(setKey);
+ String modelURI = renameSetConfiguration.eResource().getURI().toString();
+ // Activator.log.trace(Activator.RENAMING_PREFERENCES_TRACE, "modelURI: " + modelURI);
+
+ Preferences basicModelNode = propertyLifecyclePreferences.node(Messages.BasicBrowsedModels_Node);
+ basicModelNode.putBoolean(modelURI, true);
+ Preferences basicConfigurationNode = propertyLifecyclePreferences.node(Messages.BasicSelectedStrategies_Node);
+ for (StrategyElement configuration : renameSetConfiguration.getStrategies()) {
+ basicConfigurationNode.putBoolean(configuration.getId(), true);
+ }
+ }
+ }
+
+ savePreferences();
+ }
+ } catch (BackingStoreException e) {
+ Activator.log.error(e);
+ }
+
+ // Get the preferences selected by the user
+ for (StrategyElement strategy : retrieveBasicTabStrategies()) {
+ allStrategies.put(strategy.getId(), strategy);
+ }
+ for (StrategyElement strategy : retrieveAdvancedTabStrategies()) {
+ allStrategies.put(strategy.getId(), strategy);
+ }
+
+ Activator.log.trace(Activator.STRATEGY_PREFERENCES_TRACE, "allStrategies.size(): " + allStrategies.values().size());
+ return allStrategies.values();
+ }
+
+ /**
+ * @return
+ * The models' URI
+ */
+ public Collection<String> retrieveAdvancedTabModelPaths() {
+ return advancedTabBrowsedModelsURI;
+ }
+
+ /**
+ * Register the selected strategies and their models in the preference node
+ *
+ * @param basicModelsURIs
+ * {@link #retrieveBasicTabModelPaths() retieveBasicTabModelPaths()}
+ * @param advancedModelsURIs
+ * {@link #retrieveAdvancedTabModelPaths() retieveAdvancedTabModelPaths()}
+ * @param basicConfigurations
+ * {@link #retrieveBasicTabStrategies() retrieveBasicTabStrategies()}
+ * @param advancedConfigurations
+ * {@link #retrieveAdvancedTabStrategies() retrieveAdvancedTabStrategies()}
+ */
+ public void registerCurrentPreferences(Collection<String> basicModelsURIs, Collection<String> advancedModelsURIs,
+ Collection<StrategyElement> basicConfigurations, Collection<StrategyElement> advancedConfigurations) {
+
+ clearPreferences();
+ // Create the Nodes to house the preferences
+ Preferences basicModelNode = propertyLifecyclePreferences.node(Messages.BasicBrowsedModels_Node);
+ Preferences basicConfigurationNode = propertyLifecyclePreferences.node(Messages.BasicSelectedStrategies_Node);
+ Preferences advancedModelNode = propertyLifecyclePreferences.node(Messages.AdvancedBrowsedModels_Node);
+ Preferences advancedConfigurationNode = propertyLifecyclePreferences.node(Messages.AdvancedSelectedStrategies_Node);
+
+ // Save all the models (URIs) used to get the current configuration
+ if (basicModelsURIs != null) {
+ for (String modelURI : basicModelsURIs) {
+ basicModelNode.putBoolean(modelURI, true);
+ }
+ }
+ if (advancedModelsURIs != null) {
+ for (String modelURI : advancedModelsURIs) {
+ advancedModelNode.putBoolean(modelURI, true);
+ }
+ }
+
+ // Save all the strategies (IDs) used in the current configuration
+ if (basicConfigurations != null) {
+ for (StrategyElement strategy : basicConfigurations) {
+ basicConfigurationNode.putBoolean(strategy.getId(), true);
+ }
+
+ }
+ if (advancedConfigurations != null) {
+ for (StrategyElement strategy : advancedConfigurations) {
+ advancedConfigurationNode.putBoolean(strategy.getId(), true);
+ }
+ }
+
+ savePreferences();
+ }
+
+ /**
+ * Clear the preference node completely
+ */
+ public void clearPreferences() {
+ try {
+ // Deletes all the preference's children nodes
+ String[] childrenNames = propertyLifecyclePreferences.childrenNames();
+ for (String childName : childrenNames) {
+ Preferences childNode = propertyLifecyclePreferences.node(childName);
+ childNode.removeNode();
+ }
+
+ savePreferences();
+ } catch (BackingStoreException e) {
+ Activator.log.error(e);
+ }
+ }
+
+ /**
+ * Save the amended preference node
+ */
+ private void savePreferences() {
+ try {
+ // Save the current strategies model's informations
+ propertyLifecyclePreferences.flush();
+ } catch (BackingStoreException e) {
+ Activator.log.error(e);
+ }
+ }
+
+ /**
+ * Verify that the node exists
+ *
+ * @param pathName
+ * The node's name
+ * @return
+ * true or false
+ */
+ public boolean nodeExists(String pathName) {
+ try {
+ return propertyLifecyclePreferences.nodeExists(pathName);
+ } catch (BackingStoreException e) {
+ Activator.log.error(e);
+ }
+ return false;
+ }
+
+}
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/src/org/eclipse/papyrus/propertylifecycle/preferences/utils/SaveButton.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/src/org/eclipse/papyrus/propertylifecycle/preferences/utils/SaveButton.java
new file mode 100755
index 00000000000..327e0fd1c38
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle.preferences/src/org/eclipse/papyrus/propertylifecycle/preferences/utils/SaveButton.java
@@ -0,0 +1,140 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Quentin Le Menez (CEA LIST) quentin.lemenez@cea.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.propertylifecycle.preferences.utils;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.emf.common.CommonPlugin;
+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.xmi.XMIResource;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.papyrus.propertylifecycle.preferences.Activator;
+import org.eclipse.papyrus.propertylifecycle.preferences.messages.Messages;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.FileDialog;
+
+
+/**
+ * Class used to create the saver button, for the custom model in the advanced selection window, and its associated window
+ *
+ */
+public class SaveButton {
+
+ private Composite parent;
+
+ private TreeViewer parentViewer;
+
+ public SaveButton(Composite parent, TreeViewer parentViewer) {
+ this.parent = parent;
+ this.parentViewer = parentViewer;
+
+ createSaverButton(this.parent);
+ }
+
+ /**
+ * Create a button that can be used to save the currently selected strategies as a new @see org.eclipse.emf.ecore.resource.Resource
+ *
+ * @param parent
+ * The parent Composite containing the button
+ */
+ protected void createSaverButton(Composite parent) {
+ Button saveButton = new Button(parent, SWT.NONE);
+ saveButton.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, 1, 1));
+ saveButton.setText(Messages.SaveButton_Label);
+
+ saveButton.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ // Initialize the default variable
+ saveModelResource(Messages.CustomModel_DefaultName);
+ }
+ });
+ }
+
+ /**
+ * Save the strategies inside a new @see org.eclipse.emf.ecore.resource.Resource
+ */
+ private void saveModelResource(String modelName) {
+ FileDialog dialog = new FileDialog(parent.getShell(), SWT.SAVE);
+ dialog.setText(Messages.SystemSaveDialog_Title);
+ // String filterPath = "/";
+ // String platform = SWT.getPlatform();
+ // if (platform.equals("win32")) {
+ // filterPath = "c:\\";
+ // }
+
+ // ConvertEcoreToUML convertDialog = new ConvertEcoreToUML();
+ // convertDialog.run(new Action() {
+ // });
+
+ String[] filterExtensions = { "*.propertylifecycle" }; //$NON-NLS-1$
+ String[] filterExtensionsNames = { "Strategies Models" }; //$NON-NLS-1$
+ dialog.setFilterNames(filterExtensionsNames);
+ dialog.setFilterExtensions(filterExtensions);
+ // dialog.setFilterPath(filterPath);
+ dialog.setFileName(modelName);
+
+ String dialogResult = dialog.open();
+ if (dialogResult == null) {
+ return;
+ }
+
+ Resource resource = getViewerModel();
+ if (resource == null) {
+ return;
+ }
+
+ URI resourceURI = CommonPlugin.resolve(URI.createFileURI(dialogResult));
+ // URI resourceURI = URI.createFileURI(dialogResult);
+ resource.setURI(resourceURI);
+
+ try {
+ Map<Object, Object> options = new HashMap<Object, Object>();
+ options.put(XMIResource.OPTION_ENCODING, getEncoding());
+ resource.save(options);
+ } catch (IOException e) {
+ // TODO display an error message in the preference window
+ Activator.log.error(e);
+ }
+ }
+
+ public Resource getViewerModel() {
+ Object viewerInput = parentViewer.getInput();
+ if (viewerInput != null && viewerInput instanceof ResourceSet) {
+ return ((ResourceSet) viewerInput).getResources().get(0);
+ }
+
+ return null;
+ }
+
+ /**
+ * The encoding used for the file
+ *
+ * @return
+ * UTF-8
+ */
+ public String getEncoding() {
+ return "UTF-8"; //$NON-NLS-1$
+ }
+
+}
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle/.classpath b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle/.classpath
new file mode 100755
index 00000000000..eca7bdba8f0
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle/.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.8"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle/.gitignore b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle/.gitignore
new file mode 100755
index 00000000000..ae3c1726048
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle/.gitignore
@@ -0,0 +1 @@
+/bin/
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle/.options b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle/.options
new file mode 100755
index 00000000000..e986ef44417
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle/.options
@@ -0,0 +1,7 @@
+# Tracing options for the org.eclipse.paprus.infra.propertylifecycle plug-in
+org.eclipse.papyrus.infra.propertylifecycle/debug=true
+org.eclipse.papyrus.infra.propertylifecycle/debug/PLCStrategy_Reorient=true
+org.eclipse.papyrus.infra.propertylifecycle/debug/PLCStrategy_Configure=true
+org.eclipse.papyrus.infra.propertylifecycle/debug/PLCStrategy=true
+org.eclipse.papyrus.infra.propertylifecycle/debug/PLCStrategy_Supertypes=true
+org.eclipse.papyrus.infra.propertylifecycle/debug/PLCStrategy_Types=false
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle/.project b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle/.project
new file mode 100755
index 00000000000..01d404f369a
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.papyrus.propertylifecycle</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/propertylifecycle/org.eclipse.papyrus.propertylifecycle/.settings/org.eclipse.jdt.core.prefs b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle/.settings/org.eclipse.jdt.core.prefs
new file mode 100755
index 00000000000..0c68a61dca8
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle/.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.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle/META-INF/MANIFEST.MF b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle/META-INF/MANIFEST.MF
new file mode 100755
index 00000000000..b3a839cf739
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle/META-INF/MANIFEST.MF
@@ -0,0 +1,19 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Propertylifecycle
+Bundle-SymbolicName: org.eclipse.papyrus.propertylifecycle;singleton:=true
+Bundle-Version: 0.0.1.qualifier
+Bundle-Activator: org.eclipse.papyrus.propertylifecycle.Activator
+Require-Bundle: org.eclipse.ui;bundle-version="3.107.0",
+ org.eclipse.core.runtime;bundle-version="3.12.0",
+ org.eclipse.papyrus.infra.core.log;bundle-version="1.2.0",
+ org.eclipse.papyrus.propertylifecycle.model;bundle-version="0.0.1",
+ org.eclipse.papyrus.propertylifecycle.preferences;bundle-version="0.0.1",
+ org.eclipse.papyrus.infra.types.core;bundle-version="2.0.0",
+ org.eclipse.papyrus.infra.emf.gmf;bundle-version="1.2.0"
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-ActivationPolicy: lazy
+Export-Package: org.eclipse.papyrus.propertylifecycle.commands,
+ org.eclipse.papyrus.propertylifecycle.helper.advice,
+ org.eclipse.papyrus.propertylifecycle.messages,
+ org.eclipse.papyrus.propertylifecycle.utils
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle/about.html b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle/about.html
new file mode 100755
index 00000000000..d35d5aed64c
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle/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/propertylifecycle/org.eclipse.papyrus.propertylifecycle/build.properties b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle/build.properties
new file mode 100755
index 00000000000..c07aeb74d35
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle/build.properties
@@ -0,0 +1,7 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml,\
+ about.html,\
+ model/
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle/model/PropertyLifecycle.elementtypesconfigurations b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle/model/PropertyLifecycle.elementtypesconfigurations
new file mode 100644
index 00000000000..5a3089e7c2a
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle/model/PropertyLifecycle.elementtypesconfigurations
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="ASCII"?>
+<elementtypesconfigurations:ElementTypeSetConfiguration
+ xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:elementtypesconfigurations="http://www.eclipse.org/papyrus/infra/elementtypesconfigurations/1.1"
+ xmi:id="_fy_UkDxBEeW7COAmy3tOJw"
+ description="PropertyLifeCycle overrides"
+ identifier="org.eclipse.papyrus.infra.propertylifecycle.PropertyLifecycle"
+ name="PropertyLifeCycle"
+ metamodelNsURI="http://www.eclipse.org/uml2/5.0.0/UML">
+ <adviceBindingsConfigurations
+ xsi:type="elementtypesconfigurations:AdviceBindingConfiguration"
+ xmi:id="_mqX8YMHdEeSpuJnfbRdiWQ"
+ description=""
+ identifier="org.eclipse.papyrus.infra.propertylifecycle.helper.advice.PropertyLifecycleHelperAdvice"
+ inheritance="all"
+ editHelperAdviceClassName="org.eclipse.papyrus.infra.propertylifecycle.helper.advice.PropertyLifecycleHelperAdvice">
+ <target
+ xsi:type="elementtypesconfigurations:MetamodelTypeConfiguration"
+ href="../../org.eclipse.papyrus.uml.service.types/model/uml.elementtypesconfigurations#_ScgUUFYCEeS0WsAAtVmToA"/>
+ </adviceBindingsConfigurations>
+</elementtypesconfigurations:ElementTypeSetConfiguration>
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle/plugin.xml b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle/plugin.xml
new file mode 100755
index 00000000000..3d0efbd5892
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle/plugin.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+ <extension
+ point="org.eclipse.papyrus.infra.types.core.elementTypeSetConfiguration">
+ <elementTypeSet
+ clientContextID="org.eclipse.papyrus.infra.services.edit.TypeContext"
+ path="model/PropertyLifecycle.elementtypesconfigurations">
+ </elementTypeSet>
+ </extension>
+
+</plugin>
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle/pom.xml b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle/pom.xml
new file mode 100755
index 00000000000..8a60252dfe4
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle/pom.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <artifactId>org.eclipse.papyrus.infra.propertylifecycle</artifactId>
+ <version>0.0.1.qualifier</version>
+ <groupId>org.eclipse.papyrus</groupId>
+ <packaging>eclipse-plugin</packaging>
+</project>
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle/src/org/eclipse/papyrus/propertylifecycle/Activator.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle/src/org/eclipse/papyrus/propertylifecycle/Activator.java
new file mode 100755
index 00000000000..906b423896a
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle/src/org/eclipse/papyrus/propertylifecycle/Activator.java
@@ -0,0 +1,82 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.propertylifecycle;
+
+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.infra.papyrus.propertylifecycle"; //$NON-NLS-1$
+
+ // The shared instance
+ private static Activator plugin;
+
+ // The Log service
+ public static LogHelper log;
+
+ public static String PLCSTRATEGY_TRACE = "PLCStrategy";
+
+ public static String PLCSTRATEGY_TYPES_TRACE = "PLCStrategy_Types";
+
+ public static String PLCSTRATEGY_SUPERTYPES_TRACE = "PLCStrategy_Supertypes";
+
+ public static String PLCSTRATEGY_REORIENT_TRACE = "PLCStrategy_Reorient";
+
+ public static String PLCSTRATEGY_CONFIGURE_TRACE = "PLCStrategy_Configure";
+
+ /**
+ * The constructor
+ */
+ public Activator() {
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+ */
+ @Override
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ plugin = this;
+ log = new LogHelper(plugin);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+ */
+ @Override
+ public void stop(BundleContext context) throws Exception {
+ plugin = null;
+ super.stop(context);
+ }
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static Activator getDefault() {
+ return plugin;
+ }
+
+}
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle/src/org/eclipse/papyrus/propertylifecycle/commands/LifeCycleEditElementCommand.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle/src/org/eclipse/papyrus/propertylifecycle/commands/LifeCycleEditElementCommand.java
new file mode 100755
index 00000000000..04f976f876e
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle/src/org/eclipse/papyrus/propertylifecycle/commands/LifeCycleEditElementCommand.java
@@ -0,0 +1,155 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.propertylifecycle.commands;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.OperationCanceledException;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.gmf.runtime.common.core.command.CommandResult;
+import org.eclipse.gmf.runtime.common.core.command.ICommand;
+import org.eclipse.gmf.runtime.common.core.command.UnexecutableCommand;
+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;
+import org.eclipse.gmf.runtime.emf.type.core.requests.AbstractEditCommandRequest;
+import org.eclipse.papyrus.infra.tools.util.ClassLoaderHelper;
+import org.eclipse.papyrus.propertylifecycle.AbstractValueProcessor;
+import org.eclipse.papyrus.propertylifecycle.ElementProperty;
+import org.eclipse.papyrus.propertylifecycle.JavaProcessor;
+import org.eclipse.papyrus.propertylifecycle.utils.CommandValueProcessor;
+
+/**
+ * The command retrieved from the applicable strategies
+ */
+public class LifeCycleEditElementCommand extends EditElementCommand {
+
+ private String featureLabel;
+ private ElementProperty featureStrategy;
+ // private Map<String, Object> accessedProcessors;
+ private AbstractEditCommandRequest request;
+ // private EObject elementToEdit;
+
+ /**
+ * Constructor.
+ *
+ * @param commandLabel
+ * The label of the command
+ * @param elementToEdit
+ * The element to edit
+ * @param request
+ * The request to edit the element
+ * @param featureLabel
+ * The key used to sort through the possible strategies (the feature to edit)
+ * @param featureStrategy
+ * The {@link org.eclipse.papyrus.propertylifecycle.ElementProperty informations} used to calculate the new value
+ * @param accessedProcessors
+ * The accessed processors
+ */
+ public LifeCycleEditElementCommand(String commandLabel, EObject elementToEdit, AbstractEditCommandRequest request,
+ String featureLabel, ElementProperty featureStrategy, Map<String, Object> accessedProcessors) {
+ super(commandLabel, elementToEdit, request);
+ // this.elementToEdit = elementToEdit;
+ this.request = request;
+ this.featureLabel = featureLabel;
+ this.featureStrategy = featureStrategy;
+ // this.accessedProcessors = accessedProcessors == null ? new HashMap<String, Object>() : accessedProcessors;
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param commandLabel
+ * The label of the command
+ * @param elementToEdit
+ * The element to edit
+ * @param request
+ * The request to edit the element
+ * @param featureLabel
+ * The key used to sort through the possible strategies (the feature to edit)
+ * @param featureStrategy
+ * The {@link org.eclipse.papyrus.propertylifecycle.ElementProperty informations} used to calculate the new value
+ */
+ public LifeCycleEditElementCommand(String commandLabel, EObject elementToEdit, AbstractEditCommandRequest request,
+ String featureLabel, ElementProperty featureStrategy) {
+ this(commandLabel, elementToEdit, request, featureLabel, featureStrategy, null);
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param commandLabel
+ * The label of the command
+ * @param request
+ * The request to edit the element
+ * @param featureLabel
+ * The key used to sort through the possible strategies (the feature to edit)
+ * @param featureStrategy
+ * The {@link org.eclipse.papyrus.propertylifecycle.ElementProperty informations} used to calculate the new value
+ */
+ public LifeCycleEditElementCommand(String commandLabel, AbstractEditCommandRequest request,
+ String featureLabel, ElementProperty featureStrategy) {
+ this(commandLabel, (EObject) request.getElementsToEdit().get(0), request, featureLabel, featureStrategy, null);
+ }
+
+ @Override
+ protected CommandResult doExecuteWithResult(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
+
+ // Get the ICommand built in the processor and execute them in order to build the CommandResult
+ ICommand cmd = setProcessorValue(featureLabel, featureStrategy);
+ if (cmd == null || cmd instanceof UnexecutableCommand) {
+ throw new OperationCanceledException();
+ }
+
+ cmd.execute(monitor, info);
+
+ return cmd.getCommandResult();
+ }
+
+ /**
+ * Filter the processors to return the correct {@link org.eclipse.gmf.runtime.common.core.command.Commandresult}
+ *
+ * @param property
+ * The {@link org.eclipse.papyrus.propertylifecycle.ElementProperty property} of the strategy
+ * @param elementType
+ * The element type of the element
+ * @return
+ * The {@link org.eclipse.gmf.runtime.common.core.command.Commandresult} of the element's edition
+ */
+ private ICommand setProcessorValue(String featureLabel, ElementProperty property) {
+ AbstractValueProcessor propertyProcessor = property.getValueProcessor();
+
+ if (propertyProcessor instanceof JavaProcessor) {
+ // Cache the processor in order to limit the number of calls to the loader
+ Object processor;
+ String className = ((JavaProcessor) (property.getValueProcessor())).getClassName();
+ // if (!accessedProcessors.containsKey(className)) {
+ processor = ClassLoaderHelper.newInstance(className);
+ // accessedProcessors.put(className, processor);
+ // } else {
+ // processor = accessedProcessors.get(className);
+ // }
+
+ if (processor instanceof CommandValueProcessor) {
+ boolean isImmutable = property.getPriority() < 0 ? true : false;
+ return ((CommandValueProcessor) processor).setValueFromRequest(featureLabel, isImmutable, request);
+ }
+ }
+
+ return null;
+ }
+
+}
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle/src/org/eclipse/papyrus/propertylifecycle/commands/LifecycleSetCommand.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle/src/org/eclipse/papyrus/propertylifecycle/commands/LifecycleSetCommand.java
new file mode 100755
index 00000000000..2b9ca0bd6be
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle/src/org/eclipse/papyrus/propertylifecycle/commands/LifecycleSetCommand.java
@@ -0,0 +1,130 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.propertylifecycle.commands;
+
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.OperationCanceledException;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.gmf.runtime.common.core.command.AbstractCommand;
+import org.eclipse.gmf.runtime.common.core.command.CommandResult;
+import org.eclipse.gmf.runtime.common.core.command.ICommand;
+import org.eclipse.gmf.runtime.common.core.command.UnexecutableCommand;
+import org.eclipse.gmf.runtime.emf.type.core.commands.SetValueCommand;
+import org.eclipse.gmf.runtime.emf.type.core.requests.SetRequest;
+import org.eclipse.papyrus.infra.emf.gmf.command.GMFtoEMFCommandWrapper;
+
+/**
+ * End command used to set the value of the edited element through the propertylifecycle strategies
+ */
+public class LifecycleSetCommand extends AbstractCommand {
+
+ private TransactionalEditingDomain editingDomain;
+ private EObject eObject;
+ private EStructuralFeature feature;
+ private Object value;
+
+ private SetRequest setRequest;
+ private GMFtoEMFCommandWrapper emfCommand;
+
+ /**
+ * Constructor.
+ *
+ * @param editingDomain
+ * The editing domain
+ * @param label
+ * The label of the command
+ * @param eObject
+ * The object to edit
+ * @param feature
+ * The feature to edit
+ * @param value
+ * The new value to set
+ */
+ public LifecycleSetCommand(TransactionalEditingDomain editingDomain, String label,
+ EObject eObject, EStructuralFeature feature, Object value) {
+ super(label);
+ this.editingDomain = editingDomain;
+ this.eObject = eObject;
+ this.feature = feature;
+ this.value = value;
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param label
+ * The label of the command
+ * @param eObject
+ * The object to edit
+ * @param feature
+ * The feature to edit
+ * @param value
+ * The new value to set
+ */
+ public LifecycleSetCommand(String label, EObject eObject, EStructuralFeature feature, Object value) {
+ this(null, label, eObject, feature, value);
+ }
+
+
+ @Override
+ protected CommandResult doExecuteWithResult(IProgressMonitor progressMonitor, IAdaptable info) throws ExecutionException {
+ if (editingDomain != null) {
+ setRequest = new SetRequest(editingDomain, eObject, feature, value);
+ } else {
+ setRequest = new SetRequest(eObject, feature, value);
+ }
+
+ /** Final ! Should never call the service edit again or else risk a StackOverflow because of it will loop on itself */
+ // IElementEditService provider = ElementEditServiceUtils.getCommandProvider(eObject);
+ // ICommand createGMFCommand = provider.getEditCommand(setRequest);
+
+ ICommand gmfCommand = new SetValueCommand(setRequest);
+ if (gmfCommand == null || gmfCommand instanceof UnexecutableCommand) {
+ throw new OperationCanceledException();
+ }
+
+ emfCommand = new GMFtoEMFCommandWrapper(gmfCommand);
+ emfCommand.execute();
+
+ return gmfCommand.getCommandResult();
+ }
+
+
+ @Override
+ protected CommandResult doRedoWithResult(IProgressMonitor progressMonitor, IAdaptable info) throws ExecutionException {
+ emfCommand.redo();
+ return null;
+ }
+
+ @Override
+ protected CommandResult doUndoWithResult(IProgressMonitor progressMonitor, IAdaptable info) throws ExecutionException {
+ emfCommand.undo();
+ return null;
+ }
+
+ @Override
+ public boolean canRedo() {
+ return emfCommand != null;
+ }
+
+ @Override
+ public boolean canUndo() {
+ return emfCommand != null;
+ }
+
+}
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle/src/org/eclipse/papyrus/propertylifecycle/helper/advice/PropertyLifecycleHelperAdvice.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle/src/org/eclipse/papyrus/propertylifecycle/helper/advice/PropertyLifecycleHelperAdvice.java
new file mode 100755
index 00000000000..c45342b696c
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle/src/org/eclipse/papyrus/propertylifecycle/helper/advice/PropertyLifecycleHelperAdvice.java
@@ -0,0 +1,249 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.propertylifecycle.helper.advice;
+
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.gmf.runtime.common.core.command.CommandResult;
+import org.eclipse.gmf.runtime.common.core.command.CompositeCommand;
+import org.eclipse.gmf.runtime.common.core.command.ICommand;
+import org.eclipse.gmf.runtime.emf.type.core.commands.ConfigureElementCommand;
+import org.eclipse.gmf.runtime.emf.type.core.commands.CreateElementCommand;
+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;
+import org.eclipse.gmf.runtime.emf.type.core.commands.SetValueCommand;
+import org.eclipse.gmf.runtime.emf.type.core.edithelper.AbstractEditHelperAdvice;
+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;
+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;
+import org.eclipse.gmf.runtime.emf.type.core.requests.MoveRequest;
+import org.eclipse.gmf.runtime.emf.type.core.requests.ReorientRelationshipRequest;
+import org.eclipse.gmf.runtime.emf.type.core.requests.SetRequest;
+import org.eclipse.papyrus.propertylifecycle.Activator;
+import org.eclipse.papyrus.propertylifecycle.utils.PropertyLifecycleManager;
+
+/**
+ * Advice used to handle the calls for the applications of the {@link org.eclipse.papyrus.propertylifecycle.StrategyElement strategies}
+ *
+ */
+public class PropertyLifecycleHelperAdvice extends AbstractEditHelperAdvice {
+
+ // private HashMap nameMap;
+
+ /**
+ * Access used to edit the contained elements in case of a new container
+ *
+ * @see org.eclipse.gmf.runtime.emf.type.core.edithelper.AbstractEditHelperAdvice#getAfterMoveCommand(org.eclipse.gmf.runtime.emf.type.core.requests.MoveRequest)
+ *
+ * @param request
+ * The move request
+ * @return
+ * new IStatus.OK command result.
+ */
+ @Override
+ protected ICommand getAfterMoveCommand(final MoveRequest request) {
+ return super.getAfterMoveCommand(request);
+ // return new MoveElementsCommand(request) {
+ //
+ // @Override
+ // protected CommandResult doExecuteWithResult(IProgressMonitor progressMonitor, IAdaptable info) throws ExecutionException {
+ // Activator.log.trace(Activator.PLCSTRATEGY_TRACE, "moveElements: " + request.getElementsToMove().keySet()
+ // + ", in: " + request.getElementsToEdit());
+ //
+ // for (Object object : request.getElementsToMove().keySet()) {
+ // if (!(object instanceof EObject)) {
+ // return CommandResult.newOKCommandResult();
+ // }
+ // EObject element = (EObject) object;
+ //
+ // if (!(element instanceof NamedElement)) {
+ // return CommandResult.newOKCommandResult();
+ // }
+ // Activator.log.trace(Activator.PLCSTRATEGY_TRACE, "ElementPreviousName: "
+ // + element.eGet(element.eClass().getEStructuralFeature("name"), true).toString());
+ //
+ // NamedElement namedElement = (NamedElement) element;
+ // String name = PropertyLifecycleHelper.getAssociatedCreationName(request, element, null);
+ //
+ // if (name != null) {
+ // String initializedName = NamedElementUtil.getDefaultNameWithIncrementFromBase(name, element.eContainer().eContents(), element, "");
+ // namedElement.setName(initializedName);
+ // Activator.log.trace(Activator.PLCSTRATEGY_TRACE, "ElementNewName: "
+ // + element.eGet(element.eClass().getEStructuralFeature("name"), true).toString());
+ // } else {
+ // Retrieves the default name in case there are no strategy for this (element, container) couple
+ // String initializedName = NamedElementUtil.getDefaultNameWithIncrementFromBase(element.eClass().getName(), element.eContainer().eContents());
+ // namedElement.setName(initializedName);
+ // IElementType umlET = ElementTypeRegistry.getInstance().getType("org.eclipse.papyrus.uml." + element.eClass().getName());
+ // }
+ //
+ // }
+ //
+ // return super.doExecuteWithResult(progressMonitor, info);
+ //// return CommandResult.newOKCommandResult();
+ // }
+ // };
+ }
+
+
+ /**
+ * Access used to edit the values of a reoriented association
+ *
+ * @see org.eclipse.gmf.runtime.emf.type.core.edithelper.AbstractEditHelperAdvice#getAfterReorientRelationshipCommand(org.eclipse.gmf.runtime.emf.type.core.requests.ReorientRelationshipRequest)
+ *
+ * @param request
+ * The reorient request
+ * @return
+ * new IStatus.OK command result.
+ */
+ @Override
+ protected ICommand getAfterReorientRelationshipCommand(ReorientRelationshipRequest request) {
+
+ return new EditElementCommand("Lifecycle Reorient Relashionship", request.getRelationship(), request) {
+
+ @Override
+ protected CommandResult doExecuteWithResult(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
+ PropertyLifecycleManager lifecycleManager = new PropertyLifecycleManager(request, 0);
+ ICommand lifecycleStrategyCommand = lifecycleManager.setAssociatedPropertyValues();
+ if (lifecycleStrategyCommand != null) {
+ if (lifecycleStrategyCommand.canExecute()) {
+ lifecycleStrategyCommand.execute(monitor, info);
+ }
+ }
+ return CommandResult.newOKCommandResult(request.getRelationship());
+ }
+ };
+
+ // ICommand compositeCommand = super.getAfterReorientRelationshipCommand(request);
+ // PropertyLifecycleManager lifecycleManager = new PropertyLifecycleManager(request, 0);
+ // ICommand lifecycleStrategyCommand = lifecycleManager.setAssociatedPropertyValues();
+ // if (lifecycleStrategyCommand != null) {
+ // compositeCommand = CompositeCommand.compose(compositeCommand, lifecycleStrategyCommand);
+ // }
+ //
+ // return compositeCommand;
+ }
+
+
+ /**
+ * Access used to edit the values of the currently edited/created element
+ *
+ * @see org.eclipse.gmf.runtime.emf.type.core.edithelper.AbstractEditHelperAdvice#getAfterConfigureCommand(org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest)
+ *
+ * @param request
+ * The configure request
+ * @return
+ * new IStatus.OK command result.
+ */
+ @Override
+ protected ICommand getAfterConfigureCommand(final ConfigureRequest request) {
+ // // TEST1 - BEGIN
+ // if (element.eResource() instanceof XMIResource) {
+ // String xmiID = ((XMIResource) element.eResource()).getID(element);
+ // System.err.println(xmiID);
+ // }
+ // // TEST1 - END
+
+ // The stereotypes are not yet applied at this stage, i.e. wait until execution to filter based on the matchers
+ return new ConfigureElementCommand(request) {
+
+ @Override
+ protected CommandResult doExecuteWithResult(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
+ PropertyLifecycleManager lifecycleManager = new PropertyLifecycleManager(request, 0);
+ ICommand lifecycleStrategyCommand = lifecycleManager.setAssociatedPropertyValues();
+ if (lifecycleStrategyCommand != null) {
+ if (lifecycleStrategyCommand.canExecute()) {
+ lifecycleStrategyCommand.execute(monitor, info);
+ }
+ }
+ return CommandResult.newOKCommandResult(request.getElementToConfigure());
+ }
+ };
+ }
+
+
+ /**
+ * Access used to edit the values of the currently edited/created element
+ *
+ * @see org.eclipse.gmf.runtime.emf.type.core.edithelper.AbstractEditHelperAdvice#getAfterCreateCommand(org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest)
+ *
+ * @param request
+ * The creation request
+ * @return
+ * new IStatus.OK command result.
+ */
+ @Override
+ protected ICommand getAfterCreateCommand(final CreateElementRequest request) {
+
+ // The stereotypes are not yet applied at this stage, i.e. wait until execution to filter based on the matchers
+ return new CreateElementCommand(request) {
+
+ @Override
+ protected CommandResult doExecuteWithResult(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
+ PropertyLifecycleManager lifecycleManager = new PropertyLifecycleManager(request, 0);
+ ICommand lifecycleStrategyCommand = lifecycleManager.setAssociatedPropertyValues();
+ if (lifecycleStrategyCommand != null) {
+ if (lifecycleStrategyCommand.canExecute()) {
+ lifecycleStrategyCommand.execute(monitor, info);
+ }
+ }
+ return CommandResult.newOKCommandResult(request.getNewElement());
+ }
+ };
+ }
+
+
+ /**
+ * Access used to edit the contained elements in case of a modified value of the container
+ *
+ * @see org.eclipse.gmf.runtime.emf.type.core.edithelper.AbstractEditHelperAdvice#getAfterSetCommand(org.eclipse.gmf.runtime.emf.type.core.requests.SetRequest)
+ *
+ * @param request
+ * The editing request
+ * @return
+ * The Command wrapping the strategy commands
+ */
+ @Override
+ protected ICommand getAfterSetCommand(SetRequest request) {
+ // EObject element = request.getElementToEdit();
+ // if (element instanceof NamedElement) {
+ // Activator.log.trace(Activator.PLCSTRATEGY_TRACE, ", name: " + ((NamedElement) element).getName());
+ // };
+
+ return new SetValueCommand(request) {
+
+ @Override
+ protected CommandResult doExecuteWithResult(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
+ PropertyLifecycleManager lifecycleManager = new PropertyLifecycleManager(request, 0);
+ ICommand lifecycleStrategyCommand = lifecycleManager.setAssociatedPropertyValues();
+ if (lifecycleStrategyCommand != null) {
+ if (lifecycleStrategyCommand.canExecute()) {
+ lifecycleStrategyCommand.execute(monitor, info);
+ }
+ }
+ return CommandResult.newOKCommandResult(request.getElementToEdit());
+ };
+ };
+
+ // ICommand compositeCommand = super.getAfterSetCommand(request);
+ // PropertyLifecycleManager lifecycleManager = new PropertyLifecycleManager(request, 0);
+ // ICommand lifecycleStrategyCommand = lifecycleManager.setAssociatedPropertyValues();
+ // compositeCommand = CompositeCommand.compose(compositeCommand, lifecycleStrategyCommand);
+ // if (lifecycleStrategyCommand != null) {
+ // compositeCommand = CompositeCommand.compose(compositeCommand, lifecycleStrategyCommand);
+ // }
+ //
+ // return compositeCommand;
+ }
+
+}
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle/src/org/eclipse/papyrus/propertylifecycle/messages/Messages.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle/src/org/eclipse/papyrus/propertylifecycle/messages/Messages.java
new file mode 100755
index 00000000000..bf9c7a351e6
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle/src/org/eclipse/papyrus/propertylifecycle/messages/Messages.java
@@ -0,0 +1,35 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.propertylifecycle.messages;
+
+import org.eclipse.osgi.util.NLS;
+
+/**
+ *
+ */
+public class Messages extends NLS {
+
+ private static final String BUNDLE_NAME = "org.eclipse.papyrus.infra.propertylifecycle.messages.messages"; //$NON-NLS-1$
+
+ public static String FEATURELABEL_NAME;
+
+ static {
+ // initialize resource bundle
+ NLS.initializeMessages(BUNDLE_NAME, Messages.class);
+ }
+
+ private Messages() {
+ }
+
+}
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle/src/org/eclipse/papyrus/propertylifecycle/messages/messages.properties b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle/src/org/eclipse/papyrus/propertylifecycle/messages/messages.properties
new file mode 100755
index 00000000000..974799064a2
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle/src/org/eclipse/papyrus/propertylifecycle/messages/messages.properties
@@ -0,0 +1 @@
+FEATURELABEL_NAME=name \ No newline at end of file
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle/src/org/eclipse/papyrus/propertylifecycle/utils/CommandValueProcessor.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle/src/org/eclipse/papyrus/propertylifecycle/utils/CommandValueProcessor.java
new file mode 100755
index 00000000000..de14bfc7c6e
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle/src/org/eclipse/papyrus/propertylifecycle/utils/CommandValueProcessor.java
@@ -0,0 +1,26 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.propertylifecycle.utils;
+
+import org.eclipse.gmf.runtime.common.core.command.ICommand;
+import org.eclipse.gmf.runtime.emf.type.core.requests.AbstractEditCommandRequest;
+
+/**
+ *
+ */
+public interface CommandValueProcessor {
+
+ public ICommand setValueFromRequest(String featureLabel, boolean isImmutable, AbstractEditCommandRequest request);
+
+}
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle/src/org/eclipse/papyrus/propertylifecycle/utils/PropertyLifecycleManager.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle/src/org/eclipse/papyrus/propertylifecycle/utils/PropertyLifecycleManager.java
new file mode 100755
index 00000000000..9a71489714b
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.propertylifecycle/src/org/eclipse/papyrus/propertylifecycle/utils/PropertyLifecycleManager.java
@@ -0,0 +1,575 @@
+/*****************************************************************************
+ * Copyright (c) 2015 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.propertylifecycle.utils;
+
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.Map;
+import java.util.Set;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.gmf.runtime.common.core.command.CompositeCommand;
+import org.eclipse.gmf.runtime.common.core.command.ICommand;
+import org.eclipse.gmf.runtime.emf.type.core.ElementTypeRegistry;
+import org.eclipse.gmf.runtime.emf.type.core.IElementType;
+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;
+import org.eclipse.gmf.runtime.emf.type.core.requests.AbstractEditCommandRequest;
+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;
+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;
+import org.eclipse.gmf.runtime.emf.type.core.requests.ReorientRelationshipRequest;
+import org.eclipse.gmf.runtime.emf.type.core.requests.SetRequest;
+import org.eclipse.papyrus.infra.types.core.impl.ConfiguredHintedMetamodelElementType;
+import org.eclipse.papyrus.infra.types.core.impl.ConfiguredHintedSpecializationElementType;
+import org.eclipse.papyrus.propertylifecycle.Activator;
+import org.eclipse.papyrus.propertylifecycle.ElementContainer;
+import org.eclipse.papyrus.propertylifecycle.ElementProperty;
+import org.eclipse.papyrus.propertylifecycle.StrategyElement;
+import org.eclipse.papyrus.propertylifecycle.commands.LifeCycleEditElementCommand;
+import org.eclipse.papyrus.propertylifecycle.preferences.utils.PropertyLifecyclePreferencesManager;
+
+
+/**
+ * Used to match the handled element against the selected strategies
+ *
+ */
+public class PropertyLifecycleManager {
+
+ /** The manager containing all the strategies informations */
+ private PropertyLifecyclePreferencesManager preferencesManager = new PropertyLifecyclePreferencesManager();
+
+ /** The element's type */
+ private IElementType elementType;
+
+ /** The handled element */
+ private EObject element;
+
+ /** The list of all loaded processors (reflexively accessed) */
+ private Map<String, Object> accessedProcessors = new HashMap<String, Object>();
+
+ /** The command encompassing the changes to the handled element */
+ private ICommand command;
+
+ /** The request used to extract the element's contextual informations */
+ private AbstractEditCommandRequest request;
+
+ /** The depth to which the strategies will be matched against the handled element's contents */
+ private int depth;
+
+
+ /**
+ *
+ * Constructor. Default depth set to -1
+ *
+ * @param request
+ * The {@link org.eclipse.gmf.runtime.emf.type.core.requests.AbstractEditCommandRequest} of the edited element
+ */
+ public PropertyLifecycleManager(AbstractEditCommandRequest request) {
+ this(request, -1);
+ }
+
+ /**
+ *
+ * Constructor.
+ *
+ * @param request
+ * The {@link org.eclipse.gmf.runtime.emf.type.core.requests.AbstractEditCommandRequest} of the edited element
+ * @param depth
+ * The depth to which the strategies will be matched against the handled element's contents. Negative numbers for infinite depth.
+ */
+ public PropertyLifecycleManager(AbstractEditCommandRequest request, int depth) {
+ this.request = request;
+ setElementsVariables(this.request);
+ this.depth = depth;
+ }
+
+ /**
+ * Set the variables {@link #element} and {@link #elementType} used to filter the strategies
+ *
+ * @param request
+ * The manipulated {@link org.eclipse.gmf.runtime.emf.type.core.requests.AbstractEditCommandRequest}
+ */
+ private void setElementsVariables(AbstractEditCommandRequest request) {
+ if (request instanceof CreateElementRequest) {
+ CreateElementRequest createRequest = (CreateElementRequest) request;
+ elementType = createRequest.getElementType();
+ // TODO do a better job at fishing out the created element
+ // Object object = createRequest.getElementsToEdit().get(0);
+ // element = object instanceof EObject ? (EObject) object : null;
+ element = ((CreateElementRequest) request).getNewElement();
+ }
+
+ if (request instanceof ConfigureRequest) {
+ ConfigureRequest confRequest = ((ConfigureRequest) request);
+ elementType = confRequest.getTypeToConfigure();
+ element = confRequest.getElementToConfigure();
+ }
+
+ if (request instanceof ReorientRelationshipRequest) {
+ ReorientRelationshipRequest reorientRequest = (ReorientRelationshipRequest) request;
+ element = reorientRequest.getRelationship();
+ String testString = element.eClass().getInstanceClassName();
+ // TODO find an alternative to this placeholder element type
+ IElementType papyrusType = ElementTypeRegistry.getInstance().getType(testString.replace("org.eclipse.uml2", "org.eclipse.papyrus"));
+ elementType = papyrusType != null ? papyrusType : ElementTypeRegistry.getInstance().getElementType(element.eClass());
+ }
+
+ if (request instanceof SetRequest) {
+ SetRequest setRequest = (SetRequest) request;
+ element = setRequest.getElementToEdit();
+ String testString = element.eClass().getInstanceClassName();
+ // TODO find an alternative to this placeholder element type
+ IElementType papyrusType = ElementTypeRegistry.getInstance().getType(testString.replace("org.eclipse.uml2", "org.eclipse.papyrus"));
+ elementType = papyrusType != null ? papyrusType : ElementTypeRegistry.getInstance().getElementType(element.eClass());
+ }
+
+ }
+
+
+ /**
+ * Construct the {@link org.eclipse.gmf.runtime.common.core.command.ICommand} of the edition
+ *
+ * @return
+ * The {@link org.eclipse.gmf.runtime.common.core.command.CompositeCommand} from the different changes brought by the current strategies
+ */
+ public ICommand setAssociatedPropertyValues() {
+
+ // This will avoid an NPE later and indicates that there is not yet a way to deal with the given request
+ if (elementType == null || element == null) {
+ return command;
+ }
+
+ Collection<StrategyElement> matchingStrategies = new LinkedList<StrategyElement>();
+ matchingStrategies.addAll(preferencesManager.retrieveAllStrategies());
+
+ matchingStrategies = filterOnContext(matchingStrategies, elementType, element);
+ Activator.log.trace(Activator.PLCSTRATEGY_TRACE, matchingStrategies.size() + ": " + matchingStrategies);
+
+ if (matchingStrategies.size() > 0) {
+ Set<String> modifiableFeatures = getAllModifiableFeatures(matchingStrategies);
+
+ if (modifiableFeatures.size() > 0) {
+ HashMap<String, ElementProperty> newFeatureValues = getNewFeatureValues(matchingStrategies, modifiableFeatures);
+
+ for (EStructuralFeature elementFeature : element.eClass().getEAllStructuralFeatures()) {
+ String featureLabel = elementFeature.getName();
+ if (newFeatureValues.keySet().contains(featureLabel)) {
+ ElementProperty featureStrategy = newFeatureValues.get(featureLabel);
+ if (command == null) {
+ command = getAssociatedCommand(featureLabel, featureStrategy, request);
+ } else {
+ command = CompositeCommand.compose(command, getAssociatedCommand(featureLabel, featureStrategy, request));
+ }
+ }
+ }
+ }
+ }
+
+ // Iterate on all the nested elements, if any, to match them against the current strategies
+ applyStrategiesToContents(element);
+
+ return command;
+ }
+
+
+ /**
+ * Filter regrouping all the contextual information in which the element is created
+ *
+ * @param strategies
+ * The possible strategies
+ * @param elementType
+ * The element type of the element
+ * @param element
+ * The element
+ * @return
+ * The list of Strategies matching the element
+ */
+ private Collection<StrategyElement> filterOnContext(Collection<StrategyElement> strategies, IElementType elementType, EObject element) {
+ Map<String, StrategyElement> matchingStrategies = new HashMap<String, StrategyElement>();
+ // LinkedList<IElementType> elementSuperTypes = new LinkedList<IElementType>(Arrays.asList(elementType.getAllSuperTypes()));
+ String trimmedID = getTrimmedID(elementType);
+ if (elementType != null) {
+ Activator.log.trace(Activator.PLCSTRATEGY_TRACE, "IElementType_ID: " + elementType.getId());
+ Activator.log.trace(Activator.PLCSTRATEGY_TRACE, "IElementType_trimmedID: " + trimmedID);
+ }
+
+ for (StrategyElement strategy : strategies) {
+
+ if (trimmedID == null) {
+ continue;
+ }
+
+ // Filter on the specified element specializedType
+ if (!filterOnElement(elementType, element, strategy)) {
+ continue;
+ }
+
+ // Verify that the user specified a container to the strategy element
+ if (!filterOnContainer(element, strategy)) {
+ continue;
+ }
+
+ // Filtered list
+ matchingStrategies.put(strategy.getId(), strategy);
+ }
+
+ return matchingStrategies.values();
+
+ }
+
+
+ /**
+ * Filter based on the element's {@link org.eclipse.gmf.runtime.emf.type.core.ElementType}
+ * and its possible {@link org.eclipse.gmf.runtime.emf.type.core.SpecializationType}
+ *
+ * @param elementType
+ * The element type of the element
+ * @param element
+ * The element's EObject
+ * @param strategy
+ * The strategy the element is being matched against
+ * @return
+ * If the element is a match to the strategy or not
+ */
+ private boolean filterOnElement(IElementType elementType, EObject element, StrategyElement strategy) {
+ IElementType strategyBaseType = ElementTypeRegistry.getInstance().getType(strategy.getBaseType());
+ IElementType strategySpeType = ElementTypeRegistry.getInstance().getType(strategy.getSpecializedType());
+
+ // 1- Filter on the element baseType
+ if (strategyBaseType == null) {
+ return false;
+ }
+ // TEST1 - BEGIN
+ if (strategyBaseType instanceof ConfiguredHintedMetamodelElementType) {
+ ConfiguredHintedMetamodelElementType metatype = (ConfiguredHintedMetamodelElementType) strategyBaseType;
+ Activator.log.trace(Activator.PLCSTRATEGY_TYPES_TRACE, "ConfiguredHintedMetamodelElementType: " + metatype);
+ }
+ if (strategyBaseType instanceof ConfiguredHintedSpecializationElementType) {
+ ConfiguredHintedSpecializationElementType spetype = (ConfiguredHintedSpecializationElementType) strategyBaseType;
+ Activator.log.trace(Activator.PLCSTRATEGY_TYPES_TRACE, "ConfiguredHintedSpecializationElementType: " + spetype);
+ }
+ // TEST1 - END
+
+ if (strategyBaseType.equals(ElementTypeRegistry.getInstance().getType("org.eclipse.papyrus.uml.Element"))) {
+ return true;
+ }
+ // If the base type is a metamodel type, there are no matchers to use
+ if (strategyBaseType instanceof ConfiguredHintedMetamodelElementType) {
+ ConfiguredHintedMetamodelElementType metaType = (ConfiguredHintedMetamodelElementType) strategyBaseType;
+ Activator.log.trace(Activator.PLCSTRATEGY_TYPES_TRACE, "element: " + metaType.getEClass());
+ Activator.log.trace(Activator.PLCSTRATEGY_TYPES_TRACE, "element: " + element.eClass());
+
+ if (!metaType.getEClass().equals(element.eClass())) {
+ return false;
+ }
+ }
+ // If the base type is a specialization type as the base type, there is a matcher available
+ if (strategyBaseType instanceof ConfiguredHintedSpecializationElementType) {
+ ConfiguredHintedSpecializationElementType speType = (ConfiguredHintedSpecializationElementType) strategyBaseType;
+
+ if (speType.getMatcher() == null) {
+ // FIXME there are no matchers for: Extend(UseCase),
+ Activator.log.trace(Activator.PLCSTRATEGY_TRACE, speType.getId() + ", hasNoMatcher");
+ return false;
+ } else {
+ Activator.log.trace(Activator.PLCSTRATEGY_TRACE, speType.getId());
+ if (!speType.getMatcher().matches(element)) {
+ return false;
+ }
+ }
+ }
+
+ // 2- Filter on the element specializedType
+ if (strategySpeType != null && elementType != null && !Arrays.asList(elementType.getAllSuperTypes()).contains(strategySpeType)) {
+ return false;
+ }
+
+
+ // All the previous conditions are met
+ return true;
+ }
+
+
+ /**
+ * Go through all the specified strategy's containers
+ *
+ * @param element
+ * The element
+ * @param strategy
+ * The strategy
+ * @return
+ * If the element's container is a match or not
+ */
+ private boolean filterOnContainer(EObject element, StrategyElement strategy) {
+ Collection<ElementContainer> strategyContainers = strategy.getElementContainers();
+ Boolean skip = true;
+
+ // There were no specified containers hence the condition is always verified
+ if (strategyContainers == null || strategyContainers.size() < 1) {
+ return true;
+ }
+
+ for (ElementContainer container : strategyContainers) {
+ // Filter on the possible element's container
+ skip = matchContainers(element.eContainer(), container);
+ if (skip) {
+ return true;
+ }
+ }
+
+ // All the previous conditions are met
+ return false;
+ }
+
+
+ /**
+ * Go through all the specified strategy's container and its containers
+ *
+ * @param element
+ * The element
+ * @param container
+ * The {@link org.eclipse.papyrus.propertylifecycle.ElementContainer container} specified in the strategy
+ * @return
+ * If the element's container is a match or not
+ */
+ private boolean matchContainers(EObject element, ElementContainer container) {
+ IElementType containerBaseType = ElementTypeRegistry.getInstance().getType(container.getBaseType());
+ IElementType containerSpeType = ElementTypeRegistry.getInstance().getType(container.getSpecializedType());
+
+ // 1- Filter on the element baseType
+ if (containerBaseType == null) {
+ return false;
+ }
+
+ // If the base type is a metamodel type, there are no matchers to use
+ if (containerBaseType instanceof ConfiguredHintedMetamodelElementType) {
+ ConfiguredHintedMetamodelElementType metaType = (ConfiguredHintedMetamodelElementType) containerBaseType;
+ Activator.log.trace(Activator.PLCSTRATEGY_TYPES_TRACE, "container: " + metaType.getEClass());
+ Activator.log.trace(Activator.PLCSTRATEGY_TYPES_TRACE, "container: " + element.eClass());
+
+ if (!metaType.getEClass().equals(element.eClass())) {
+ return false;
+ }
+ }
+ // If the base type is a specialization type as the base type, there is a matcher available
+ if (containerBaseType instanceof ConfiguredHintedSpecializationElementType) {
+ ConfiguredHintedSpecializationElementType speType = (ConfiguredHintedSpecializationElementType) containerBaseType;
+
+ if (!speType.getMatcher().matches(element)) {
+ return false;
+ }
+ }
+
+ // 2- Filter on the element specializedType
+ // As there are no way to link an eObject to a specific elementType we only verify that the specialized type is contained by the baseType
+ if (containerSpeType != null && !Arrays.asList(containerBaseType.getAllSuperTypes()).contains(containerSpeType)) {
+ return false;
+ }
+
+ // 3- Filter on the possible element's container
+ if (container.getContainersContainer() != null) {
+ if (!matchContainers(element.eContainer(), container.getContainersContainer())) {
+ return false;
+ }
+ }
+
+
+ // All the previous conditions are met
+ return true;
+ }
+
+
+ /**
+ * The possible changes brought by the current strategies
+ *
+ * @param strategies
+ * The strategies applicable to the element
+ * @return
+ * The list containing all the features affected by the applicable strategies
+ */
+ private Set<String> getAllModifiableFeatures(Collection<StrategyElement> strategies) {
+ Set<String> modifiableFeatures = new HashSet<String>();
+
+ for (StrategyElement strategy : strategies) {
+ for (ElementProperty property : strategy.getElementProperties()) {
+ // The user did not set a label
+ if (property.getFeatureLabel() == null) {
+ continue;
+ }
+ modifiableFeatures.add(property.getFeatureLabel());
+ }
+ }
+
+ return modifiableFeatures;
+ }
+
+
+ /**
+ * filter the possible strategies applicable to the features of the element and selecting them by their associated priorities
+ *
+ * @param strategies
+ * The strategies applicable to the element
+ * @param modifiableFeatures
+ * The features that can be modified by them
+ * @return
+ * The map detailing which changes will be applied to the modifiable features of the element
+ */
+ private HashMap<String, ElementProperty> getNewFeatureValues(Collection<StrategyElement> strategies, Set<String> modifiableFeatures) {
+ HashMap<String, ElementProperty> newFeatureValues = new HashMap<String, ElementProperty>();
+
+ for (String featureLabel : modifiableFeatures) {
+ ElementProperty priorityProperty = filterOnPriority(featureLabel, strategies);
+ newFeatureValues.put(featureLabel, priorityProperty);
+ }
+
+ return newFeatureValues;
+ }
+
+
+ /**
+ * Filter the possible changes based on their priority
+ *
+ * @param featureLabel
+ * The label of the element's feature to change
+ * @param strategies
+ * The strategies applicable to the element
+ * @return
+ * The selected behavior
+ */
+ private ElementProperty filterOnPriority(String featureLabel, Collection<StrategyElement> strategies) {
+ HashMap<Integer, ElementProperty> weightedStrategies = new HashMap<Integer, ElementProperty>();
+ int priority = 0;
+
+ for (StrategyElement strategy : strategies) {
+ for (ElementProperty property : strategy.getElementProperties()) {
+ if (featureLabel.equals(property.getFeatureLabel())) {
+ // The user did not set a priority
+ if (property.getPriority() == null) {
+ weightedStrategies.put(0, property);
+ continue;
+ }
+
+ // The user defined this property value to be immutable
+ if (property.getPriority() < 0) {
+ Activator.log.trace(Activator.PLCSTRATEGY_TRACE, "Immutable priority: " + property.getPriority());
+ return property;
+ }
+
+ weightedStrategies.put(property.getPriority(), property);
+ priority = priority < property.getPriority() ? property.getPriority() : priority;
+ }
+ }
+ }
+
+ Activator.log.trace(Activator.PLCSTRATEGY_TRACE, "Highest priority: " + priority);
+ return weightedStrategies.get(priority);
+ }
+
+
+ /**
+ * Get the associated {@link org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand} corresponding to the modifications on the element
+ *
+ * @param featureLabel
+ * The label of the feature to edit
+ * @param featureStrategy
+ * The strategy applied to this feature
+ * @return
+ * The {@link org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand}
+ * with its associated {@link org.eclipse.gmf.runtime.common.core.command.CommandResult}
+ */
+ private EditElementCommand getAssociatedCommand(String featureLabel, ElementProperty featureStrategy, AbstractEditCommandRequest request) {
+ return new LifeCycleEditElementCommand("LifecycleEditCommand", element, request, featureLabel, featureStrategy, accessedProcessors);
+ }
+
+
+ /**
+ * This method calls on the {@link #setAssociatedPropertyValues()} for the contents of the edited element
+ * It will do so until the maximum depth has been reached (set in the constructor)
+ *
+ * @param element
+ * The edited element
+ */
+ private void applyStrategiesToContents(EObject element) {
+ // The max depth has been reached
+ if (depth == 0) {
+ return;
+ }
+
+ if (element.eContents().size() > 0) {
+ // Increase the depth of the matching
+ depth -= 1;
+ for (EObject eObject : element.eContents()) {
+ // Reinitialize the element to test against the current strategies
+ this.element = eObject;
+ // TODO find an alternative (more precise) to this default value
+ this.elementType = ElementTypeRegistry.getInstance().getElementType(eObject.eClass());
+ setAssociatedPropertyValues();
+ }
+ }
+ }
+
+
+ /**
+ * @param elementType
+ * The element's type
+ * @return
+ * The element type ID trimmed of any graphical extension
+ */
+ private String getTrimmedID(IElementType elementType) {
+ if (elementType == null) {
+ return null;
+ }
+
+ if (!graphicalIDMatcher(elementType.getId())) {
+ // The ID is already not a graphical one
+ return elementType.getId();
+ }
+
+ IElementType[] elementSuperTypes = elementType.getAllSuperTypes();
+ LinkedList<IElementType> superTypes = new LinkedList<IElementType>(Arrays.asList(elementSuperTypes));
+ for (int i = elementSuperTypes.length - 1; i > 0; i--) {
+ String typeID = superTypes.get(i).getId();
+ Activator.log.trace(Activator.PLCSTRATEGY_TRACE, "typeID: " + typeID);
+
+ if (!graphicalIDMatcher(typeID)) {
+ return typeID;
+ }
+ }
+
+ // A chain of graphical IDs, albeit nigh impossible, could lead to this case
+ return null;
+ }
+
+
+ /**
+ * Detect the presence of a graphical extension in the element type ID
+ *
+ * @param typeID
+ * The element type ID
+ * @return
+ * isGraphical or not
+ */
+ private boolean graphicalIDMatcher(String typeID) {
+ if (typeID.matches("[A-Za-z].+_[0-9]+")) { // $NON-NLS-1$
+ // The type ID is graphical
+ return true;
+ }
+
+ return false;
+ }
+
+}
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/.classpath b/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/.classpath
new file mode 100755
index 00000000000..eca7bdba8f0
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/.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.8"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/.gitignore b/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/.gitignore
new file mode 100755
index 00000000000..ae3c1726048
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/.gitignore
@@ -0,0 +1 @@
+/bin/
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/.options b/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/.options
new file mode 100755
index 00000000000..7e6399d8f73
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/.options
@@ -0,0 +1,3 @@
+# Tracing options for the org.eclipse.paprus.sysml.propertylifecycle plug-in
+org.eclipse.papyrus.sysml.propertylifecycle/debug=true
+org.eclipse.papyrus.sysml.propertylifecycle/debug/PLCStrategy_SYSMLproperty=true
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/.project b/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/.project
new file mode 100755
index 00000000000..87e7fb0ea85
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.papyrus.sysml.propertylifecycle</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/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/.settings/org.eclipse.jdt.core.prefs b/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/.settings/org.eclipse.jdt.core.prefs
new file mode 100755
index 00000000000..0c68a61dca8
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/.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.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/META-INF/MANIFEST.MF b/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/META-INF/MANIFEST.MF
new file mode 100755
index 00000000000..95c197e9742
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/META-INF/MANIFEST.MF
@@ -0,0 +1,16 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Propertylifecycle
+Bundle-SymbolicName: org.eclipse.papyrus.sysml.propertylifecycle
+Bundle-Version: 0.0.1.qualifier
+Bundle-Activator: org.eclipse.papyrus.sysml.propertylifecycle.Activator
+Require-Bundle: org.eclipse.ui;bundle-version="3.107.0",
+ org.eclipse.core.runtime;bundle-version="3.12.0",
+ org.eclipse.papyrus.infra.core.log;bundle-version="1.2.0",
+ org.eclipse.papyrus.propertylifecycle;bundle-version="0.0.1",
+ org.eclipse.gmf.runtime.emf.type.core;bundle-version="1.9.0",
+ org.eclipse.uml2.uml;bundle-version="5.2.0",
+ org.eclipse.papyrus.uml.tools.utils;bundle-version="1.2.0",
+ org.eclipse.papyrus.sysml
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-ActivationPolicy: lazy
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/about.html b/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/about.html
new file mode 100755
index 00000000000..d35d5aed64c
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/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/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/build.properties b/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/build.properties
new file mode 100755
index 00000000000..17daa5b49ca
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/build.properties
@@ -0,0 +1,5 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ about.html
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/pom.xml b/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/pom.xml
new file mode 100755
index 00000000000..840663ba8aa
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/pom.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <artifactId>org.eclipse.papyrus.sysml.propertylifecycle</artifactId>
+ <version>0.0.1.qualifier</version>
+ <groupId>org.eclipse.papyrus</groupId>
+ <packaging>eclipse-plugin</packaging>
+ <parent>
+ <groupId>org.eclipse.papyrus</groupId>
+ <artifactId>org.eclipse.papyrus.infra.propertylifecycle</artifactId>
+ <version>0.0.1.qualifier</version>
+ <relativePath>../../../infra/propertylifecycle/org.eclipse.papyrus.infra.propertylifecycle/pom.xml</relativePath>
+ </parent>
+</project>
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/Activator.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/Activator.java
new file mode 100755
index 00000000000..d6a4e567c78
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/Activator.java
@@ -0,0 +1,76 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.sysml.propertylifecycle;
+
+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.sysml.propertylifecycle"; //$NON-NLS-1$
+
+ // The shared instance
+ private static Activator plugin;
+
+ /** Logging helper */
+ public static LogHelper log;
+
+ /** The tag to identify the trace when activating the messages in the .options file */
+ public static String PLCSTRATEGY_TRACE = "PLCStrategy_SYSMLproperty";
+
+ /**
+ * The constructor
+ */
+ public Activator() {
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+ */
+ @Override
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ plugin = this;
+ log = new LogHelper(this);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+ */
+ @Override
+ public void stop(BundleContext context) throws Exception {
+ plugin = null;
+ log = null;
+ super.stop(context);
+ }
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static Activator getDefault() {
+ return plugin;
+ }
+
+}
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/ActorPartPropertyProcessor.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/ActorPartPropertyProcessor.java
new file mode 100755
index 00000000000..7a5b96740e4
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/ActorPartPropertyProcessor.java
@@ -0,0 +1,61 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.sysml.propertylifecycle.processors;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.gmf.runtime.common.core.command.CompositeCommand;
+import org.eclipse.gmf.runtime.common.core.command.ICommand;
+import org.eclipse.gmf.runtime.emf.type.core.requests.AbstractEditCommandRequest;
+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;
+import org.eclipse.papyrus.propertylifecycle.commands.LifecycleSetCommand;
+import org.eclipse.papyrus.propertylifecycle.messages.Messages;
+import org.eclipse.papyrus.propertylifecycle.utils.CommandValueProcessor;
+import org.eclipse.papyrus.uml.tools.utils.NamedElementUtil;
+import org.eclipse.uml2.uml.NamedElement;
+
+/**
+ *
+ */
+public class ActorPartPropertyProcessor implements CommandValueProcessor {
+
+ @Override
+ public ICommand setValueFromRequest(String featureLabel, boolean isImmutable, AbstractEditCommandRequest request) {
+ return setName(request);
+ }
+
+ public ActorPartPropertyProcessor() {
+
+ }
+
+ public ICommand setName(AbstractEditCommandRequest request) {
+ ICommand gmfCommand = null;
+
+ if (request instanceof ConfigureRequest) {
+ ConfigureRequest confRequest = (ConfigureRequest) request;
+
+ NamedElement element = (NamedElement) confRequest.getElementToConfigure();
+ EStructuralFeature feature = element.eClass().getEStructuralFeature(Messages.FEATURELABEL_NAME);
+ if (element != null && feature != null) {
+
+ // Set default name
+ String initializedName = NamedElementUtil.getDefaultNameWithIncrementFromBase("actorPart", element.eContainer().eContents()); //$NON-NLS-1$
+ LifecycleSetCommand setCommand = new LifecycleSetCommand("ActorPartProperty_SetName", element, feature, initializedName);
+ gmfCommand = CompositeCommand.compose(gmfCommand, setCommand);
+ }
+ }
+
+ return gmfCommand;
+ }
+
+}
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/AllocateProcessor.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/AllocateProcessor.java
new file mode 100755
index 00000000000..d0cb3974167
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/AllocateProcessor.java
@@ -0,0 +1,62 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.sysml.propertylifecycle.processors;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.gmf.runtime.common.core.command.CompositeCommand;
+import org.eclipse.gmf.runtime.common.core.command.ICommand;
+import org.eclipse.gmf.runtime.emf.type.core.requests.AbstractEditCommandRequest;
+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;
+import org.eclipse.papyrus.propertylifecycle.commands.LifecycleSetCommand;
+import org.eclipse.papyrus.propertylifecycle.messages.Messages;
+import org.eclipse.papyrus.propertylifecycle.utils.CommandValueProcessor;
+import org.eclipse.papyrus.sysml.allocations.AllocationsPackage;
+import org.eclipse.papyrus.uml.tools.utils.NamedElementUtil;
+import org.eclipse.uml2.uml.NamedElement;
+
+/**
+ *
+ */
+public class AllocateProcessor implements CommandValueProcessor {
+
+ @Override
+ public ICommand setValueFromRequest(String featureLabel, boolean isImmutable, AbstractEditCommandRequest request) {
+ return setName(request);
+ }
+
+ public AllocateProcessor() {
+
+ }
+
+ public ICommand setName(AbstractEditCommandRequest request) {
+ ICommand gmfCommand = null;
+
+ if (request instanceof ConfigureRequest) {
+ ConfigureRequest confRequest = (ConfigureRequest) request;
+
+ NamedElement element = (NamedElement) confRequest.getElementToConfigure();
+ EStructuralFeature feature = element.eClass().getEStructuralFeature(Messages.FEATURELABEL_NAME);
+ if (element != null && feature != null) {
+
+ // Set default name
+ String initializedName = NamedElementUtil.getDefaultNameWithIncrementFromBase(AllocationsPackage.eINSTANCE.getAllocate().getName(), element.eContainer().eContents());
+ LifecycleSetCommand setCommand = new LifecycleSetCommand("Allocate_SetName", element, feature, initializedName);
+ gmfCommand = CompositeCommand.compose(gmfCommand, setCommand);
+ }
+ }
+
+ return gmfCommand;
+ }
+
+}
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/BlockProcessor.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/BlockProcessor.java
new file mode 100755
index 00000000000..d5a6f362f11
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/BlockProcessor.java
@@ -0,0 +1,62 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.sysml.propertylifecycle.processors;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.gmf.runtime.common.core.command.CompositeCommand;
+import org.eclipse.gmf.runtime.common.core.command.ICommand;
+import org.eclipse.gmf.runtime.emf.type.core.requests.AbstractEditCommandRequest;
+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;
+import org.eclipse.papyrus.propertylifecycle.commands.LifecycleSetCommand;
+import org.eclipse.papyrus.propertylifecycle.messages.Messages;
+import org.eclipse.papyrus.propertylifecycle.utils.CommandValueProcessor;
+import org.eclipse.papyrus.sysml.blocks.BlocksPackage;
+import org.eclipse.papyrus.uml.tools.utils.NamedElementUtil;
+import org.eclipse.uml2.uml.NamedElement;
+
+/**
+ *
+ */
+public class BlockProcessor implements CommandValueProcessor {
+
+ @Override
+ public ICommand setValueFromRequest(String featureLabel, boolean isImmutable, AbstractEditCommandRequest request) {
+ return setName(request);
+ }
+
+ public BlockProcessor() {
+
+ }
+
+ public ICommand setName(AbstractEditCommandRequest request) {
+ ICommand gmfCommand = null;
+
+ if (request instanceof ConfigureRequest) {
+ ConfigureRequest confRequest = (ConfigureRequest) request;
+
+ NamedElement element = (NamedElement) confRequest.getElementToConfigure();
+ EStructuralFeature feature = element.eClass().getEStructuralFeature(Messages.FEATURELABEL_NAME);
+ if (element != null && feature != null) {
+
+ // Set default name
+ String initializedName = NamedElementUtil.getDefaultNameWithIncrementFromBase(BlocksPackage.eINSTANCE.getBlock().getName(), element.eContainer().eContents());
+ LifecycleSetCommand setCommand = new LifecycleSetCommand("Block_SetName", element, feature, initializedName);
+ gmfCommand = CompositeCommand.compose(gmfCommand, setCommand);
+ }
+ }
+
+ return gmfCommand;
+ }
+
+}
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/ConformProcessor.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/ConformProcessor.java
new file mode 100755
index 00000000000..b5ed7f98409
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/ConformProcessor.java
@@ -0,0 +1,62 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.sysml.propertylifecycle.processors;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.gmf.runtime.common.core.command.CompositeCommand;
+import org.eclipse.gmf.runtime.common.core.command.ICommand;
+import org.eclipse.gmf.runtime.emf.type.core.requests.AbstractEditCommandRequest;
+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;
+import org.eclipse.papyrus.propertylifecycle.commands.LifecycleSetCommand;
+import org.eclipse.papyrus.propertylifecycle.messages.Messages;
+import org.eclipse.papyrus.propertylifecycle.utils.CommandValueProcessor;
+import org.eclipse.papyrus.sysml.modelelements.ModelelementsPackage;
+import org.eclipse.papyrus.uml.tools.utils.NamedElementUtil;
+import org.eclipse.uml2.uml.NamedElement;
+
+/**
+ *
+ */
+public class ConformProcessor implements CommandValueProcessor {
+
+ @Override
+ public ICommand setValueFromRequest(String featureLabel, boolean isImmutable, AbstractEditCommandRequest request) {
+ return setName(request);
+ }
+
+ public ConformProcessor() {
+
+ }
+
+ public ICommand setName(AbstractEditCommandRequest request) {
+ ICommand gmfCommand = null;
+
+ if (request instanceof ConfigureRequest) {
+ ConfigureRequest confRequest = (ConfigureRequest) request;
+
+ NamedElement element = (NamedElement) confRequest.getElementToConfigure();
+ EStructuralFeature feature = element.eClass().getEStructuralFeature(Messages.FEATURELABEL_NAME);
+ if (element != null && feature != null) {
+
+ // Set default name
+ String initializedName = NamedElementUtil.getDefaultNameWithIncrementFromBase(ModelelementsPackage.eINSTANCE.getConform().getName(), element.eContainer().eContents());
+ LifecycleSetCommand setCommand = new LifecycleSetCommand("Conform_SetName", element, feature, initializedName);
+ gmfCommand = CompositeCommand.compose(gmfCommand, setCommand);
+ }
+ }
+
+ return gmfCommand;
+ }
+
+}
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/ConstraintBlockParameterProcessor.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/ConstraintBlockParameterProcessor.java
new file mode 100755
index 00000000000..40275d05319
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/ConstraintBlockParameterProcessor.java
@@ -0,0 +1,61 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.sysml.propertylifecycle.processors;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.gmf.runtime.common.core.command.CompositeCommand;
+import org.eclipse.gmf.runtime.common.core.command.ICommand;
+import org.eclipse.gmf.runtime.emf.type.core.requests.AbstractEditCommandRequest;
+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;
+import org.eclipse.papyrus.propertylifecycle.commands.LifecycleSetCommand;
+import org.eclipse.papyrus.propertylifecycle.messages.Messages;
+import org.eclipse.papyrus.propertylifecycle.utils.CommandValueProcessor;
+import org.eclipse.papyrus.uml.tools.utils.NamedElementUtil;
+import org.eclipse.uml2.uml.NamedElement;
+
+/**
+ *
+ */
+public class ConstraintBlockParameterProcessor implements CommandValueProcessor {
+
+ @Override
+ public ICommand setValueFromRequest(String featureLabel, boolean isImmutable, AbstractEditCommandRequest request) {
+ return setName(request);
+ }
+
+ public ConstraintBlockParameterProcessor() {
+
+ }
+
+ public ICommand setName(AbstractEditCommandRequest request) {
+ ICommand gmfCommand = null;
+
+ if (request instanceof ConfigureRequest) {
+ ConfigureRequest confRequest = (ConfigureRequest) request;
+
+ NamedElement element = (NamedElement) confRequest.getElementToConfigure();
+ EStructuralFeature feature = element.eClass().getEStructuralFeature(Messages.FEATURELABEL_NAME);
+ if (element != null && feature != null) {
+
+ // Set default name
+ String initializedName = NamedElementUtil.getDefaultNameWithIncrementFromBase("parameter", element.eContainer().eContents());
+ LifecycleSetCommand setCommand = new LifecycleSetCommand("ConstraintBlockParameter_SetName", element, feature, initializedName);
+ gmfCommand = CompositeCommand.compose(gmfCommand, setCommand);
+ }
+ }
+
+ return gmfCommand;
+ }
+
+}
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/ConstraintBlockProcessor.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/ConstraintBlockProcessor.java
new file mode 100755
index 00000000000..af48c7914cb
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/ConstraintBlockProcessor.java
@@ -0,0 +1,62 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.sysml.propertylifecycle.processors;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.gmf.runtime.common.core.command.CompositeCommand;
+import org.eclipse.gmf.runtime.common.core.command.ICommand;
+import org.eclipse.gmf.runtime.emf.type.core.requests.AbstractEditCommandRequest;
+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;
+import org.eclipse.papyrus.propertylifecycle.commands.LifecycleSetCommand;
+import org.eclipse.papyrus.propertylifecycle.messages.Messages;
+import org.eclipse.papyrus.propertylifecycle.utils.CommandValueProcessor;
+import org.eclipse.papyrus.sysml.constraints.ConstraintsPackage;
+import org.eclipse.papyrus.uml.tools.utils.NamedElementUtil;
+import org.eclipse.uml2.uml.NamedElement;
+
+/**
+ *
+ */
+public class ConstraintBlockProcessor implements CommandValueProcessor {
+
+ @Override
+ public ICommand setValueFromRequest(String featureLabel, boolean isImmutable, AbstractEditCommandRequest request) {
+ return setName(request);
+ }
+
+ public ConstraintBlockProcessor() {
+
+ }
+
+ public ICommand setName(AbstractEditCommandRequest request) {
+ ICommand gmfCommand = null;
+
+ if (request instanceof ConfigureRequest) {
+ ConfigureRequest confRequest = (ConfigureRequest) request;
+
+ NamedElement element = (NamedElement) confRequest.getElementToConfigure();
+ EStructuralFeature feature = element.eClass().getEStructuralFeature(Messages.FEATURELABEL_NAME);
+ if (element != null && feature != null) {
+
+ // Set default name
+ String initializedName = NamedElementUtil.getDefaultNameWithIncrementFromBase(ConstraintsPackage.eINSTANCE.getConstraintBlock().getName(), element.eContainer().eContents());
+ LifecycleSetCommand setCommand = new LifecycleSetCommand("ConstraintBlock_SetName", element, feature, initializedName);
+ gmfCommand = CompositeCommand.compose(gmfCommand, setCommand);
+ }
+ }
+
+ return gmfCommand;
+ }
+
+}
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/ConstraintPropertyProcessor.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/ConstraintPropertyProcessor.java
new file mode 100755
index 00000000000..0e428f51989
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/ConstraintPropertyProcessor.java
@@ -0,0 +1,62 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.sysml.propertylifecycle.processors;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.gmf.runtime.common.core.command.CompositeCommand;
+import org.eclipse.gmf.runtime.common.core.command.ICommand;
+import org.eclipse.gmf.runtime.emf.type.core.requests.AbstractEditCommandRequest;
+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;
+import org.eclipse.papyrus.propertylifecycle.commands.LifecycleSetCommand;
+import org.eclipse.papyrus.propertylifecycle.messages.Messages;
+import org.eclipse.papyrus.propertylifecycle.utils.CommandValueProcessor;
+import org.eclipse.papyrus.sysml.constraints.ConstraintsPackage;
+import org.eclipse.papyrus.uml.tools.utils.NamedElementUtil;
+import org.eclipse.uml2.uml.NamedElement;
+
+/**
+ *
+ */
+public class ConstraintPropertyProcessor implements CommandValueProcessor {
+
+ @Override
+ public ICommand setValueFromRequest(String featureLabel, boolean isImmutable, AbstractEditCommandRequest request) {
+ return setName(request);
+ }
+
+ public ConstraintPropertyProcessor() {
+
+ }
+
+ public ICommand setName(AbstractEditCommandRequest request) {
+ ICommand gmfCommand = null;
+
+ if (request instanceof ConfigureRequest) {
+ ConfigureRequest confRequest = (ConfigureRequest) request;
+
+ NamedElement element = (NamedElement) confRequest.getElementToConfigure();
+ EStructuralFeature feature = element.eClass().getEStructuralFeature(Messages.FEATURELABEL_NAME);
+ if (element != null && feature != null) {
+
+ // Set default name
+ String initializedName = NamedElementUtil.getDefaultNameWithIncrementFromBase(ConstraintsPackage.eINSTANCE.getConstraintProperty().getName().toLowerCase(), element.eContainer().eContents());
+ LifecycleSetCommand setCommand = new LifecycleSetCommand("ConstraintProperty_SetName", element, feature, initializedName);
+ gmfCommand = CompositeCommand.compose(gmfCommand, setCommand);
+ }
+ }
+
+ return gmfCommand;
+ }
+
+}
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/CopyProcessor.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/CopyProcessor.java
new file mode 100755
index 00000000000..524b97cf174
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/CopyProcessor.java
@@ -0,0 +1,62 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.sysml.propertylifecycle.processors;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.gmf.runtime.common.core.command.CompositeCommand;
+import org.eclipse.gmf.runtime.common.core.command.ICommand;
+import org.eclipse.gmf.runtime.emf.type.core.requests.AbstractEditCommandRequest;
+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;
+import org.eclipse.papyrus.propertylifecycle.commands.LifecycleSetCommand;
+import org.eclipse.papyrus.propertylifecycle.messages.Messages;
+import org.eclipse.papyrus.propertylifecycle.utils.CommandValueProcessor;
+import org.eclipse.papyrus.sysml.requirements.RequirementsPackage;
+import org.eclipse.papyrus.uml.tools.utils.NamedElementUtil;
+import org.eclipse.uml2.uml.NamedElement;
+
+/**
+ *
+ */
+public class CopyProcessor implements CommandValueProcessor {
+
+ @Override
+ public ICommand setValueFromRequest(String featureLabel, boolean isImmutable, AbstractEditCommandRequest request) {
+ return setName(request);
+ }
+
+ public CopyProcessor() {
+
+ }
+
+ public ICommand setName(AbstractEditCommandRequest request) {
+ ICommand gmfCommand = null;
+
+ if (request instanceof ConfigureRequest) {
+ ConfigureRequest confRequest = (ConfigureRequest) request;
+
+ NamedElement element = (NamedElement) confRequest.getElementToConfigure();
+ EStructuralFeature feature = element.eClass().getEStructuralFeature(Messages.FEATURELABEL_NAME);
+ if (element != null && feature != null) {
+
+ // Set default name
+ String initializedName = NamedElementUtil.getDefaultNameWithIncrementFromBase(RequirementsPackage.eINSTANCE.getCopy().getName(), element.eContainer().eContents());
+ LifecycleSetCommand setCommand = new LifecycleSetCommand("Copy_SetName", element, feature, initializedName);
+ gmfCommand = CompositeCommand.compose(gmfCommand, setCommand);
+ }
+ }
+
+ return gmfCommand;
+ }
+
+}
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/DimensionProcessor.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/DimensionProcessor.java
new file mode 100755
index 00000000000..90464ba4a24
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/DimensionProcessor.java
@@ -0,0 +1,62 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.sysml.propertylifecycle.processors;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.gmf.runtime.common.core.command.CompositeCommand;
+import org.eclipse.gmf.runtime.common.core.command.ICommand;
+import org.eclipse.gmf.runtime.emf.type.core.requests.AbstractEditCommandRequest;
+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;
+import org.eclipse.papyrus.propertylifecycle.commands.LifecycleSetCommand;
+import org.eclipse.papyrus.propertylifecycle.messages.Messages;
+import org.eclipse.papyrus.propertylifecycle.utils.CommandValueProcessor;
+import org.eclipse.papyrus.sysml.blocks.BlocksPackage;
+import org.eclipse.papyrus.uml.tools.utils.NamedElementUtil;
+import org.eclipse.uml2.uml.NamedElement;
+
+/**
+ *
+ */
+public class DimensionProcessor implements CommandValueProcessor {
+
+ @Override
+ public ICommand setValueFromRequest(String featureLabel, boolean isImmutable, AbstractEditCommandRequest request) {
+ return setName(request);
+ }
+
+ public DimensionProcessor() {
+
+ }
+
+ public ICommand setName(AbstractEditCommandRequest request) {
+ ICommand gmfCommand = null;
+
+ if (request instanceof ConfigureRequest) {
+ ConfigureRequest confRequest = (ConfigureRequest) request;
+
+ NamedElement element = (NamedElement) confRequest.getElementToConfigure();
+ EStructuralFeature feature = element.eClass().getEStructuralFeature(Messages.FEATURELABEL_NAME);
+ if (element != null && feature != null) {
+
+ // Set default name
+ String initializedName = NamedElementUtil.getDefaultNameWithIncrementFromBase(BlocksPackage.eINSTANCE.getDimension().getName(), element.eContainer().eContents());
+ LifecycleSetCommand setCommand = new LifecycleSetCommand("Dimension_ConfR", element, feature, initializedName);
+ gmfCommand = CompositeCommand.compose(gmfCommand, setCommand);
+ }
+ }
+
+ return gmfCommand;
+ }
+
+}
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/FlowPortProcessor.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/FlowPortProcessor.java
new file mode 100755
index 00000000000..776c0bcd66b
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/FlowPortProcessor.java
@@ -0,0 +1,61 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.sysml.propertylifecycle.processors;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.gmf.runtime.common.core.command.CompositeCommand;
+import org.eclipse.gmf.runtime.common.core.command.ICommand;
+import org.eclipse.gmf.runtime.emf.type.core.requests.AbstractEditCommandRequest;
+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;
+import org.eclipse.papyrus.propertylifecycle.commands.LifecycleSetCommand;
+import org.eclipse.papyrus.propertylifecycle.messages.Messages;
+import org.eclipse.papyrus.propertylifecycle.utils.CommandValueProcessor;
+import org.eclipse.papyrus.sysml.portandflows.PortandflowsPackage;
+import org.eclipse.papyrus.uml.tools.utils.NamedElementUtil;
+import org.eclipse.uml2.uml.NamedElement;
+
+/**
+ *
+ */
+public class FlowPortProcessor implements CommandValueProcessor {
+
+ @Override
+ public ICommand setValueFromRequest(String featureLabel, boolean isImmutable, AbstractEditCommandRequest request) {
+ return setName(request);
+ }
+
+ public FlowPortProcessor() {
+
+ }
+
+ public ICommand setName(AbstractEditCommandRequest request) {
+ ICommand gmfCommand = null;
+
+ if (request instanceof ConfigureRequest) {
+ ConfigureRequest confRequest = (ConfigureRequest) request;
+
+ NamedElement element = (NamedElement) confRequest.getElementToConfigure();
+ EStructuralFeature feature = element.eClass().getEStructuralFeature(Messages.FEATURELABEL_NAME);
+ if (element != null && feature != null) {
+
+ // Set default name
+ String initializedName = NamedElementUtil.getDefaultNameWithIncrementFromBase(PortandflowsPackage.eINSTANCE.getFlowPort().getName().toLowerCase(), element.eContainer().eContents());
+ LifecycleSetCommand setCommand = new LifecycleSetCommand("FlowPort_SetName", element, feature, initializedName);
+ gmfCommand = CompositeCommand.compose(gmfCommand, setCommand);
+ }
+ }
+
+ return gmfCommand;
+ }
+}
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/FlowPropertyProcessor.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/FlowPropertyProcessor.java
new file mode 100755
index 00000000000..6026500a4fc
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/FlowPropertyProcessor.java
@@ -0,0 +1,61 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.sysml.propertylifecycle.processors;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.gmf.runtime.common.core.command.CompositeCommand;
+import org.eclipse.gmf.runtime.common.core.command.ICommand;
+import org.eclipse.gmf.runtime.emf.type.core.requests.AbstractEditCommandRequest;
+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;
+import org.eclipse.papyrus.propertylifecycle.commands.LifecycleSetCommand;
+import org.eclipse.papyrus.propertylifecycle.messages.Messages;
+import org.eclipse.papyrus.propertylifecycle.utils.CommandValueProcessor;
+import org.eclipse.papyrus.sysml.portandflows.PortandflowsPackage;
+import org.eclipse.papyrus.uml.tools.utils.NamedElementUtil;
+import org.eclipse.uml2.uml.NamedElement;
+
+/**
+ *
+ */
+public class FlowPropertyProcessor implements CommandValueProcessor {
+
+ @Override
+ public ICommand setValueFromRequest(String featureLabel, boolean isImmutable, AbstractEditCommandRequest request) {
+ return setName(request);
+ }
+
+ public FlowPropertyProcessor() {
+
+ }
+
+ public ICommand setName(AbstractEditCommandRequest request) {
+ ICommand gmfCommand = null;
+
+ if (request instanceof ConfigureRequest) {
+ ConfigureRequest confRequest = (ConfigureRequest) request;
+
+ NamedElement element = (NamedElement) confRequest.getElementToConfigure();
+ EStructuralFeature feature = element.eClass().getEStructuralFeature(Messages.FEATURELABEL_NAME);
+ if (element != null && feature != null) {
+
+ // Set default name
+ String initializedName = NamedElementUtil.getDefaultNameWithIncrementFromBase(PortandflowsPackage.eINSTANCE.getFlowProperty().getName().toLowerCase(), element.eContainer().eContents());
+ LifecycleSetCommand setCommand = new LifecycleSetCommand("FlowProperty_SetName", element, feature, initializedName);
+ gmfCommand = CompositeCommand.compose(gmfCommand, setCommand);
+ }
+ }
+
+ return gmfCommand;
+ }
+}
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/FlowSpecificationprocessor.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/FlowSpecificationprocessor.java
new file mode 100755
index 00000000000..bfc47f6cf8b
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/FlowSpecificationprocessor.java
@@ -0,0 +1,61 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.sysml.propertylifecycle.processors;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.gmf.runtime.common.core.command.CompositeCommand;
+import org.eclipse.gmf.runtime.common.core.command.ICommand;
+import org.eclipse.gmf.runtime.emf.type.core.requests.AbstractEditCommandRequest;
+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;
+import org.eclipse.papyrus.propertylifecycle.commands.LifecycleSetCommand;
+import org.eclipse.papyrus.propertylifecycle.messages.Messages;
+import org.eclipse.papyrus.propertylifecycle.utils.CommandValueProcessor;
+import org.eclipse.papyrus.sysml.portandflows.PortandflowsPackage;
+import org.eclipse.papyrus.uml.tools.utils.NamedElementUtil;
+import org.eclipse.uml2.uml.NamedElement;
+
+/**
+ *
+ */
+public class FlowSpecificationprocessor implements CommandValueProcessor {
+
+ @Override
+ public ICommand setValueFromRequest(String featureLabel, boolean isImmutable, AbstractEditCommandRequest request) {
+ return setName(request);
+ }
+
+ public FlowSpecificationprocessor() {
+
+ }
+
+ public ICommand setName(AbstractEditCommandRequest request) {
+ ICommand gmfCommand = null;
+
+ if (request instanceof ConfigureRequest) {
+ ConfigureRequest confRequest = (ConfigureRequest) request;
+
+ NamedElement element = (NamedElement) confRequest.getElementToConfigure();
+ EStructuralFeature feature = element.eClass().getEStructuralFeature(Messages.FEATURELABEL_NAME);
+ if (element != null && feature != null) {
+
+ // Set default name
+ String initializedName = NamedElementUtil.getDefaultNameWithIncrementFromBase(PortandflowsPackage.eINSTANCE.getFlowSpecification().getName(), element.eContainer().eContents());
+ LifecycleSetCommand setCommand = new LifecycleSetCommand("FlowSpecification_SetName", element, feature, initializedName);
+ gmfCommand = CompositeCommand.compose(gmfCommand, setCommand);
+ }
+ }
+
+ return gmfCommand;
+ }
+}
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/ItemFlowProcessor.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/ItemFlowProcessor.java
new file mode 100755
index 00000000000..06ab7963676
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/ItemFlowProcessor.java
@@ -0,0 +1,61 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.sysml.propertylifecycle.processors;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.gmf.runtime.common.core.command.CompositeCommand;
+import org.eclipse.gmf.runtime.common.core.command.ICommand;
+import org.eclipse.gmf.runtime.emf.type.core.requests.AbstractEditCommandRequest;
+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;
+import org.eclipse.papyrus.propertylifecycle.commands.LifecycleSetCommand;
+import org.eclipse.papyrus.propertylifecycle.messages.Messages;
+import org.eclipse.papyrus.propertylifecycle.utils.CommandValueProcessor;
+import org.eclipse.papyrus.sysml.portandflows.PortandflowsPackage;
+import org.eclipse.papyrus.uml.tools.utils.NamedElementUtil;
+import org.eclipse.uml2.uml.NamedElement;
+
+/**
+ *
+ */
+public class ItemFlowProcessor implements CommandValueProcessor {
+
+ @Override
+ public ICommand setValueFromRequest(String featureLabel, boolean isImmutable, AbstractEditCommandRequest request) {
+ return setName(request);
+ }
+
+ public ItemFlowProcessor() {
+
+ }
+
+ public ICommand setName(AbstractEditCommandRequest request) {
+ ICommand gmfCommand = null;
+
+ if (request instanceof ConfigureRequest) {
+ ConfigureRequest confRequest = (ConfigureRequest) request;
+
+ NamedElement element = (NamedElement) confRequest.getElementToConfigure();
+ EStructuralFeature feature = element.eClass().getEStructuralFeature(Messages.FEATURELABEL_NAME);
+ if (element != null && feature != null) {
+
+ // Set default name
+ String initializedName = NamedElementUtil.getDefaultNameWithIncrementFromBase(PortandflowsPackage.eINSTANCE.getItemFlow().getName(), element.eContainer().eContents());
+ LifecycleSetCommand setCommand = new LifecycleSetCommand("ItemFlow_SetName", element, feature, initializedName);
+ gmfCommand = CompositeCommand.compose(gmfCommand, setCommand);
+ }
+ }
+
+ return gmfCommand;
+ }
+}
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/PartPropertyProcessor.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/PartPropertyProcessor.java
new file mode 100755
index 00000000000..0970ea6b0c4
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/PartPropertyProcessor.java
@@ -0,0 +1,61 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.sysml.propertylifecycle.processors;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.gmf.runtime.common.core.command.CompositeCommand;
+import org.eclipse.gmf.runtime.common.core.command.ICommand;
+import org.eclipse.gmf.runtime.emf.type.core.requests.AbstractEditCommandRequest;
+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;
+import org.eclipse.papyrus.propertylifecycle.commands.LifecycleSetCommand;
+import org.eclipse.papyrus.propertylifecycle.messages.Messages;
+import org.eclipse.papyrus.propertylifecycle.utils.CommandValueProcessor;
+import org.eclipse.papyrus.uml.tools.utils.NamedElementUtil;
+import org.eclipse.uml2.uml.NamedElement;
+
+/**
+ *
+ */
+public class PartPropertyProcessor implements CommandValueProcessor {
+
+ @Override
+ public ICommand setValueFromRequest(String featureLabel, boolean isImmutable, AbstractEditCommandRequest request) {
+ return setName(request);
+ }
+
+ public PartPropertyProcessor() {
+
+ }
+
+ public ICommand setName(AbstractEditCommandRequest request) {
+ ICommand gmfCommand = null;
+
+ if (request instanceof ConfigureRequest) {
+ ConfigureRequest confRequest = (ConfigureRequest) request;
+
+ NamedElement element = (NamedElement) confRequest.getElementToConfigure();
+ EStructuralFeature feature = element.eClass().getEStructuralFeature(Messages.FEATURELABEL_NAME);
+ if (element != null && feature != null) {
+
+ // Set default name
+ String initializedName = NamedElementUtil.getDefaultNameWithIncrementFromBase("part", element.eContainer().eContents()); //$NON-NLS-1$
+ LifecycleSetCommand setCommand = new LifecycleSetCommand("PartProperty_SetName", element, feature, initializedName);
+ gmfCommand = CompositeCommand.compose(gmfCommand, setCommand);
+ }
+ }
+
+ return gmfCommand;
+ }
+
+}
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/ReferencePropertyProcessor.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/ReferencePropertyProcessor.java
new file mode 100755
index 00000000000..91ad8adb0d0
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/ReferencePropertyProcessor.java
@@ -0,0 +1,61 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.sysml.propertylifecycle.processors;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.gmf.runtime.common.core.command.CompositeCommand;
+import org.eclipse.gmf.runtime.common.core.command.ICommand;
+import org.eclipse.gmf.runtime.emf.type.core.requests.AbstractEditCommandRequest;
+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;
+import org.eclipse.papyrus.propertylifecycle.commands.LifecycleSetCommand;
+import org.eclipse.papyrus.propertylifecycle.messages.Messages;
+import org.eclipse.papyrus.propertylifecycle.utils.CommandValueProcessor;
+import org.eclipse.papyrus.uml.tools.utils.NamedElementUtil;
+import org.eclipse.uml2.uml.NamedElement;
+
+/**
+ *
+ */
+public class ReferencePropertyProcessor implements CommandValueProcessor {
+
+ @Override
+ public ICommand setValueFromRequest(String featureLabel, boolean isImmutable, AbstractEditCommandRequest request) {
+ return setName(request);
+ }
+
+ public ReferencePropertyProcessor() {
+
+ }
+
+ public ICommand setName(AbstractEditCommandRequest request) {
+ ICommand gmfCommand = null;
+
+ if (request instanceof ConfigureRequest) {
+ ConfigureRequest confRequest = (ConfigureRequest) request;
+
+ NamedElement element = (NamedElement) confRequest.getElementToConfigure();
+ EStructuralFeature feature = element.eClass().getEStructuralFeature(Messages.FEATURELABEL_NAME);
+ if (element != null && feature != null) {
+
+ // Set default name
+ String initializedName = NamedElementUtil.getDefaultNameWithIncrementFromBase("reference", element.eContainer().eContents());
+ LifecycleSetCommand setCommand = new LifecycleSetCommand("ReferenceProperty_SetName", element, feature, initializedName);
+ gmfCommand = CompositeCommand.compose(gmfCommand, setCommand);
+ }
+ }
+
+ return gmfCommand;
+ }
+
+}
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/RequirementProcessor.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/RequirementProcessor.java
new file mode 100755
index 00000000000..6115c79a3fc
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/RequirementProcessor.java
@@ -0,0 +1,62 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.sysml.propertylifecycle.processors;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.gmf.runtime.common.core.command.CompositeCommand;
+import org.eclipse.gmf.runtime.common.core.command.ICommand;
+import org.eclipse.gmf.runtime.emf.type.core.requests.AbstractEditCommandRequest;
+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;
+import org.eclipse.papyrus.propertylifecycle.commands.LifecycleSetCommand;
+import org.eclipse.papyrus.propertylifecycle.messages.Messages;
+import org.eclipse.papyrus.propertylifecycle.utils.CommandValueProcessor;
+import org.eclipse.papyrus.sysml.requirements.RequirementsPackage;
+import org.eclipse.papyrus.uml.tools.utils.NamedElementUtil;
+import org.eclipse.uml2.uml.NamedElement;
+
+/**
+ *
+ */
+public class RequirementProcessor implements CommandValueProcessor {
+
+ @Override
+ public ICommand setValueFromRequest(String featureLabel, boolean isImmutable, AbstractEditCommandRequest request) {
+ return setName(request);
+ }
+
+ public RequirementProcessor() {
+
+ }
+
+ public ICommand setName(AbstractEditCommandRequest request) {
+ ICommand gmfCommand = null;
+
+ if (request instanceof ConfigureRequest) {
+ ConfigureRequest confRequest = (ConfigureRequest) request;
+
+ NamedElement element = (NamedElement) confRequest.getElementToConfigure();
+ EStructuralFeature feature = element.eClass().getEStructuralFeature(Messages.FEATURELABEL_NAME);
+ if (element != null && feature != null) {
+
+ // Set default name
+ String initializedName = NamedElementUtil.getDefaultNameWithIncrementFromBase(RequirementsPackage.eINSTANCE.getRequirement().getName(), element.eContainer().eContents());
+ LifecycleSetCommand setCommand = new LifecycleSetCommand("Requirement_SetName", element, feature, initializedName);
+ gmfCommand = CompositeCommand.compose(gmfCommand, setCommand);
+ }
+ }
+
+ return gmfCommand;
+ }
+
+}
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/SatisfyProcessor.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/SatisfyProcessor.java
new file mode 100755
index 00000000000..33f7a0aebe2
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/SatisfyProcessor.java
@@ -0,0 +1,63 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.sysml.propertylifecycle.processors;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.gmf.runtime.common.core.command.CompositeCommand;
+import org.eclipse.gmf.runtime.common.core.command.ICommand;
+import org.eclipse.gmf.runtime.emf.type.core.requests.AbstractEditCommandRequest;
+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;
+import org.eclipse.papyrus.propertylifecycle.commands.LifecycleSetCommand;
+import org.eclipse.papyrus.propertylifecycle.messages.Messages;
+import org.eclipse.papyrus.propertylifecycle.utils.CommandValueProcessor;
+import org.eclipse.papyrus.sysml.requirements.RequirementsPackage;
+import org.eclipse.papyrus.uml.tools.utils.NamedElementUtil;
+import org.eclipse.uml2.uml.NamedElement;
+
+/**
+ *
+ */
+public class SatisfyProcessor implements CommandValueProcessor {
+
+ @Override
+ public ICommand setValueFromRequest(String featureLabel, boolean isImmutable, AbstractEditCommandRequest request) {
+ return setName(request);
+ }
+
+ public SatisfyProcessor() {
+
+ }
+
+ public ICommand setName(AbstractEditCommandRequest request) {
+ ICommand gmfCommand = null;
+
+ if (!(request instanceof ConfigureRequest)) {
+ ConfigureRequest confRequest = (ConfigureRequest) request;
+
+ NamedElement element = (NamedElement) confRequest.getElementToConfigure();
+ EStructuralFeature feature = element.eClass().getEStructuralFeature(Messages.FEATURELABEL_NAME);
+ if (element != null && feature != null) {
+
+ // Set default name
+ // Initialize the element name based on the created IElementType
+ String initializedName = NamedElementUtil.getDefaultNameWithIncrementFromBase(RequirementsPackage.eINSTANCE.getSatisfy().getName(), element.eContainer().eContents());
+ LifecycleSetCommand setCommand = new LifecycleSetCommand("Satisfy_SetName", element, feature, initializedName);
+ gmfCommand = CompositeCommand.compose(gmfCommand, setCommand);
+ }
+ }
+
+ return gmfCommand;
+ }
+
+}
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/UnitProcessor.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/UnitProcessor.java
new file mode 100755
index 00000000000..1d1c88082da
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/UnitProcessor.java
@@ -0,0 +1,63 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.sysml.propertylifecycle.processors;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.gmf.runtime.common.core.command.CompositeCommand;
+import org.eclipse.gmf.runtime.common.core.command.ICommand;
+import org.eclipse.gmf.runtime.emf.type.core.requests.AbstractEditCommandRequest;
+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;
+import org.eclipse.papyrus.propertylifecycle.commands.LifecycleSetCommand;
+import org.eclipse.papyrus.propertylifecycle.messages.Messages;
+import org.eclipse.papyrus.propertylifecycle.utils.CommandValueProcessor;
+import org.eclipse.papyrus.sysml.blocks.BlocksPackage;
+import org.eclipse.papyrus.uml.tools.utils.NamedElementUtil;
+import org.eclipse.uml2.uml.NamedElement;
+
+/**
+ *
+ */
+public class UnitProcessor implements CommandValueProcessor {
+
+ @Override
+ public ICommand setValueFromRequest(String featureLabel, boolean isImmutable, AbstractEditCommandRequest request) {
+ return setName(request);
+ }
+
+ public UnitProcessor() {
+
+ }
+
+ public ICommand setName(AbstractEditCommandRequest request) {
+ ICommand gmfCommand = null;
+
+ if (request instanceof ConfigureRequest) {
+ ConfigureRequest confRequest = (ConfigureRequest) request;
+
+ NamedElement element = (NamedElement) confRequest.getElementToConfigure();
+ EStructuralFeature feature = element.eClass().getEStructuralFeature(Messages.FEATURELABEL_NAME);
+ if (element != null && feature != null) {
+
+ // Set default name
+ // Initialize the element name based on the created IElementType
+ String initializedName = NamedElementUtil.getDefaultNameWithIncrementFromBase(BlocksPackage.eINSTANCE.getUnit().getName(), element.eContainer().eContents());
+ LifecycleSetCommand setCommand = new LifecycleSetCommand("UnitProcessor_SetName", element, feature, initializedName);
+ gmfCommand = CompositeCommand.compose(gmfCommand, setCommand);
+ }
+ }
+
+ return gmfCommand;
+ }
+
+}
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/ValuePropertyProcessor.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/ValuePropertyProcessor.java
new file mode 100755
index 00000000000..1e69fdb51f1
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/ValuePropertyProcessor.java
@@ -0,0 +1,61 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.sysml.propertylifecycle.processors;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.gmf.runtime.common.core.command.CompositeCommand;
+import org.eclipse.gmf.runtime.common.core.command.ICommand;
+import org.eclipse.gmf.runtime.emf.type.core.requests.AbstractEditCommandRequest;
+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;
+import org.eclipse.papyrus.propertylifecycle.commands.LifecycleSetCommand;
+import org.eclipse.papyrus.propertylifecycle.messages.Messages;
+import org.eclipse.papyrus.propertylifecycle.utils.CommandValueProcessor;
+import org.eclipse.papyrus.uml.tools.utils.NamedElementUtil;
+import org.eclipse.uml2.uml.NamedElement;
+
+/**
+ *
+ */
+public class ValuePropertyProcessor implements CommandValueProcessor {
+
+ @Override
+ public ICommand setValueFromRequest(String featureLabel, boolean isImmutable, AbstractEditCommandRequest request) {
+ return setName(request);
+ }
+
+ public ValuePropertyProcessor() {
+
+ }
+
+ public ICommand setName(AbstractEditCommandRequest request) {
+ ICommand gmfCommand = null;
+
+ if (request instanceof ConfigureRequest) {
+ ConfigureRequest confRequest = (ConfigureRequest) request;
+
+ NamedElement element = (NamedElement) confRequest.getElementToConfigure();
+ EStructuralFeature feature = element.eClass().getEStructuralFeature(Messages.FEATURELABEL_NAME);
+ if (element != null && feature != null) {
+
+ // Set default name
+ String initializedName = NamedElementUtil.getDefaultNameWithIncrementFromBase("value", element.eContainer().eContents());
+ LifecycleSetCommand setCommand = new LifecycleSetCommand("ValueProperty_SetName", element, feature, initializedName);
+ gmfCommand = CompositeCommand.compose(gmfCommand, setCommand);
+ }
+ }
+
+ return gmfCommand;
+ }
+
+}
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/ValueTypeProcessor.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/ValueTypeProcessor.java
new file mode 100755
index 00000000000..2161e56752b
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/ValueTypeProcessor.java
@@ -0,0 +1,62 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.sysml.propertylifecycle.processors;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.gmf.runtime.common.core.command.CompositeCommand;
+import org.eclipse.gmf.runtime.common.core.command.ICommand;
+import org.eclipse.gmf.runtime.emf.type.core.requests.AbstractEditCommandRequest;
+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;
+import org.eclipse.papyrus.propertylifecycle.commands.LifecycleSetCommand;
+import org.eclipse.papyrus.propertylifecycle.messages.Messages;
+import org.eclipse.papyrus.propertylifecycle.utils.CommandValueProcessor;
+import org.eclipse.papyrus.sysml.blocks.BlocksPackage;
+import org.eclipse.papyrus.uml.tools.utils.NamedElementUtil;
+import org.eclipse.uml2.uml.NamedElement;
+
+/**
+ *
+ */
+public class ValueTypeProcessor implements CommandValueProcessor {
+
+ @Override
+ public ICommand setValueFromRequest(String featureLabel, boolean isImmutable, AbstractEditCommandRequest request) {
+ return setName(request);
+ }
+
+ public ValueTypeProcessor() {
+
+ }
+
+ public ICommand setName(AbstractEditCommandRequest request) {
+ ICommand gmfCommand = null;
+
+ if (request instanceof ConfigureRequest) {
+ ConfigureRequest confRequest = (ConfigureRequest) request;
+
+ NamedElement element = (NamedElement) confRequest.getElementToConfigure();
+ EStructuralFeature feature = element.eClass().getEStructuralFeature(Messages.FEATURELABEL_NAME);
+ if (element != null && feature != null) {
+
+ // Set default name
+ String initializedName = NamedElementUtil.getDefaultNameWithIncrementFromBase(BlocksPackage.eINSTANCE.getValueType().getName(), element.eContainer().eContents());
+ LifecycleSetCommand setCommand = new LifecycleSetCommand("ValueType_SetName", element, feature, initializedName);
+ gmfCommand = CompositeCommand.compose(gmfCommand, setCommand);
+ }
+ }
+
+ return gmfCommand;
+ }
+
+}
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/VerifyProcessor.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/VerifyProcessor.java
new file mode 100755
index 00000000000..213579ac754
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/VerifyProcessor.java
@@ -0,0 +1,62 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.sysml.propertylifecycle.processors;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.gmf.runtime.common.core.command.CompositeCommand;
+import org.eclipse.gmf.runtime.common.core.command.ICommand;
+import org.eclipse.gmf.runtime.emf.type.core.requests.AbstractEditCommandRequest;
+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;
+import org.eclipse.papyrus.propertylifecycle.commands.LifecycleSetCommand;
+import org.eclipse.papyrus.propertylifecycle.messages.Messages;
+import org.eclipse.papyrus.propertylifecycle.utils.CommandValueProcessor;
+import org.eclipse.papyrus.sysml.requirements.RequirementsPackage;
+import org.eclipse.papyrus.uml.tools.utils.NamedElementUtil;
+import org.eclipse.uml2.uml.NamedElement;
+
+/**
+ *
+ */
+public class VerifyProcessor implements CommandValueProcessor {
+
+ @Override
+ public ICommand setValueFromRequest(String featureLabel, boolean isImmutable, AbstractEditCommandRequest request) {
+ return setName(request);
+ }
+
+ public VerifyProcessor() {
+
+ }
+
+ public ICommand setName(AbstractEditCommandRequest request) {
+ ICommand gmfCommand = null;
+
+ if (request instanceof ConfigureRequest) {
+ ConfigureRequest confRequest = (ConfigureRequest) request;
+
+ NamedElement element = (NamedElement) confRequest.getElementToConfigure();
+ EStructuralFeature feature = element.eClass().getEStructuralFeature(Messages.FEATURELABEL_NAME);
+ if (element != null && feature != null) {
+
+ // Set default name
+ String initializedName = NamedElementUtil.getDefaultNameWithIncrementFromBase(RequirementsPackage.eINSTANCE.getVerify().getName(), element.eContainer().eContents());
+ LifecycleSetCommand setCommand = new LifecycleSetCommand("VerifyProcessor_SetName", element, feature, initializedName);
+ gmfCommand = CompositeCommand.compose(gmfCommand, setCommand);
+ }
+ }
+
+ return gmfCommand;
+ }
+
+}
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/ViewPointProcessor.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/ViewPointProcessor.java
new file mode 100755
index 00000000000..412da66abd0
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/ViewPointProcessor.java
@@ -0,0 +1,62 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.sysml.propertylifecycle.processors;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.gmf.runtime.common.core.command.CompositeCommand;
+import org.eclipse.gmf.runtime.common.core.command.ICommand;
+import org.eclipse.gmf.runtime.emf.type.core.requests.AbstractEditCommandRequest;
+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;
+import org.eclipse.papyrus.propertylifecycle.commands.LifecycleSetCommand;
+import org.eclipse.papyrus.propertylifecycle.messages.Messages;
+import org.eclipse.papyrus.propertylifecycle.utils.CommandValueProcessor;
+import org.eclipse.papyrus.sysml.modelelements.ModelelementsPackage;
+import org.eclipse.papyrus.uml.tools.utils.NamedElementUtil;
+import org.eclipse.uml2.uml.NamedElement;
+
+/**
+ *
+ */
+public class ViewPointProcessor implements CommandValueProcessor {
+
+ @Override
+ public ICommand setValueFromRequest(String featureLabel, boolean isImmutable, AbstractEditCommandRequest request) {
+ return setName(request);
+ }
+
+ public ViewPointProcessor() {
+
+ }
+
+ public ICommand setName(AbstractEditCommandRequest request) {
+ ICommand gmfCommand = null;
+
+ if (request instanceof ConfigureRequest) {
+ ConfigureRequest confRequest = (ConfigureRequest) request;
+
+ NamedElement element = (NamedElement) confRequest.getElementToConfigure();
+ EStructuralFeature feature = element.eClass().getEStructuralFeature(Messages.FEATURELABEL_NAME);
+ if (element != null && feature != null) {
+
+ // Set default name
+ String initializedName = NamedElementUtil.getDefaultNameWithIncrementFromBase(ModelelementsPackage.eINSTANCE.getViewPoint().getName(), element.eContainer().eContents());
+ LifecycleSetCommand setCommand = new LifecycleSetCommand("ViewPointProcessor_SetName", element, feature, initializedName);
+ gmfCommand = CompositeCommand.compose(gmfCommand, setCommand);
+ }
+ }
+
+ return gmfCommand;
+ }
+
+}
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/ViewProcessor.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/ViewProcessor.java
new file mode 100755
index 00000000000..4bebed37eb8
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.sysml.propertylifecycle/src/org/eclipse/papyrus/sysml/propertylifecycle/processors/ViewProcessor.java
@@ -0,0 +1,61 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.sysml.propertylifecycle.processors;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.gmf.runtime.common.core.command.CompositeCommand;
+import org.eclipse.gmf.runtime.common.core.command.ICommand;
+import org.eclipse.gmf.runtime.emf.type.core.requests.AbstractEditCommandRequest;
+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;
+import org.eclipse.papyrus.propertylifecycle.commands.LifecycleSetCommand;
+import org.eclipse.papyrus.propertylifecycle.utils.CommandValueProcessor;
+import org.eclipse.papyrus.sysml.modelelements.ModelelementsPackage;
+import org.eclipse.papyrus.uml.tools.utils.NamedElementUtil;
+import org.eclipse.uml2.uml.NamedElement;
+
+/**
+ *
+ */
+public class ViewProcessor implements CommandValueProcessor {
+
+ @Override
+ public ICommand setValueFromRequest(String featureLabel, boolean isImmutable, AbstractEditCommandRequest request) {
+ return setName(request);
+ }
+
+ public ViewProcessor() {
+
+ }
+
+ public ICommand setName(AbstractEditCommandRequest request) {
+ ICommand gmfCommand = null;
+
+ if (request instanceof ConfigureRequest) {
+ ConfigureRequest confRequest = (ConfigureRequest) request;
+
+ NamedElement element = (NamedElement) confRequest.getElementToConfigure();
+ EStructuralFeature feature = element.eClass().getEStructuralFeature("name");
+ if (element != null && feature != null) {
+
+ // Set default name
+ String initializedName = NamedElementUtil.getDefaultNameWithIncrementFromBase(ModelelementsPackage.eINSTANCE.getView().getName(), element.eContainer().eContents());
+ LifecycleSetCommand setCommand = new LifecycleSetCommand("ViewProcessor_SetName", element, feature, initializedName);
+ gmfCommand = CompositeCommand.compose(gmfCommand, setCommand);
+ }
+ }
+
+ return gmfCommand;
+ }
+
+}
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.uml.propertylifecycle/.classpath b/extraplugins/propertylifecycle/org.eclipse.papyrus.uml.propertylifecycle/.classpath
new file mode 100755
index 00000000000..eca7bdba8f0
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.uml.propertylifecycle/.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.8"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.uml.propertylifecycle/.gitignore b/extraplugins/propertylifecycle/org.eclipse.papyrus.uml.propertylifecycle/.gitignore
new file mode 100755
index 00000000000..ae3c1726048
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.uml.propertylifecycle/.gitignore
@@ -0,0 +1 @@
+/bin/
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.uml.propertylifecycle/.options b/extraplugins/propertylifecycle/org.eclipse.papyrus.uml.propertylifecycle/.options
new file mode 100755
index 00000000000..2eaa5a2221a
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.uml.propertylifecycle/.options
@@ -0,0 +1,3 @@
+# Tracing options for the org.eclipse.paprus.uml.propertylifecycle plug-in
+org.eclipse.papyrus.uml.propertylifecycle/debug=true
+org.eclipse.papyrus.uml.propertylifecycle/debug/PLCStrategy_UMLproperty=true
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.uml.propertylifecycle/.project b/extraplugins/propertylifecycle/org.eclipse.papyrus.uml.propertylifecycle/.project
new file mode 100755
index 00000000000..5a352e16884
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.uml.propertylifecycle/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.papyrus.uml.propertylifecycle</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/propertylifecycle/org.eclipse.papyrus.uml.propertylifecycle/.settings/org.eclipse.jdt.core.prefs b/extraplugins/propertylifecycle/org.eclipse.papyrus.uml.propertylifecycle/.settings/org.eclipse.jdt.core.prefs
new file mode 100755
index 00000000000..0c68a61dca8
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.uml.propertylifecycle/.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.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.uml.propertylifecycle/META-INF/MANIFEST.MF b/extraplugins/propertylifecycle/org.eclipse.papyrus.uml.propertylifecycle/META-INF/MANIFEST.MF
new file mode 100755
index 00000000000..964982501af
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.uml.propertylifecycle/META-INF/MANIFEST.MF
@@ -0,0 +1,15 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Propertylifecycle
+Bundle-SymbolicName: org.eclipse.papyrus.uml.propertylifecycle
+Bundle-Version: 0.0.1.qualifier
+Bundle-Activator: org.eclipse.papyrus.uml.propertylifecycle.Activator
+Require-Bundle: org.eclipse.ui;bundle-version="3.107.0",
+ org.eclipse.core.runtime;bundle-version="3.12.0",
+ org.eclipse.papyrus.propertylifecycle;bundle-version="0.0.1",
+ org.eclipse.gmf.runtime.emf.type.core;bundle-version="1.9.0",
+ org.eclipse.uml2.uml;bundle-version="5.2.0",
+ org.eclipse.papyrus.infra.core.log;bundle-version="1.2.0",
+ org.eclipse.papyrus.uml.tools.utils;bundle-version="1.2.0"
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-ActivationPolicy: lazy
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.uml.propertylifecycle/about.html b/extraplugins/propertylifecycle/org.eclipse.papyrus.uml.propertylifecycle/about.html
new file mode 100755
index 00000000000..d35d5aed64c
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.uml.propertylifecycle/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/propertylifecycle/org.eclipse.papyrus.uml.propertylifecycle/build.properties b/extraplugins/propertylifecycle/org.eclipse.papyrus.uml.propertylifecycle/build.properties
new file mode 100755
index 00000000000..17daa5b49ca
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.uml.propertylifecycle/build.properties
@@ -0,0 +1,5 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ about.html
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.uml.propertylifecycle/pom.xml b/extraplugins/propertylifecycle/org.eclipse.papyrus.uml.propertylifecycle/pom.xml
new file mode 100755
index 00000000000..e634972ac9a
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.uml.propertylifecycle/pom.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <artifactId>org.eclipse.papyrus.uml.propertylifecycle</artifactId>
+ <version>0.0.1.qualifier</version>
+ <groupId>org.eclipse.papyrus</groupId>
+ <packaging>eclipse-plugin</packaging>
+ <parent>
+ <groupId>org.eclipse.papyrus</groupId>
+ <artifactId>org.eclipse.papyrus.infra.propertylifecycle</artifactId>
+ <version>0.0.1.qualifier</version>
+ <relativePath>../../../infra/propertylifecycle/org.eclipse.papyrus.infra.propertylifecycle/pom.xml</relativePath>
+ </parent>
+</project>
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.uml.propertylifecycle/src/org/eclipse/papyrus/uml/propertylifecycle/Activator.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.uml.propertylifecycle/src/org/eclipse/papyrus/uml/propertylifecycle/Activator.java
new file mode 100755
index 00000000000..848ddd031d6
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.uml.propertylifecycle/src/org/eclipse/papyrus/uml/propertylifecycle/Activator.java
@@ -0,0 +1,76 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.uml.propertylifecycle;
+
+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.uml.propertylifecycle"; //$NON-NLS-1$
+
+ // The shared instance
+ private static Activator plugin;
+
+ /** Logging helper */
+ public static LogHelper log;
+
+ /** The tag to identify the trace when activating the messages in the .options file */
+ public static String PLCSTRATEGY_TRACE = "PLCStrategy_UMLproperty";
+
+ /**
+ * The constructor
+ */
+ public Activator() {
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+ */
+ @Override
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ plugin = this;
+ log = new LogHelper(this);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+ */
+ @Override
+ public void stop(BundleContext context) throws Exception {
+ plugin = null;
+ log = null;
+ super.stop(context);
+ }
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static Activator getDefault() {
+ return plugin;
+ }
+
+}
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.uml.propertylifecycle/src/org/eclipse/papyrus/uml/propertylifecycle/processors/AssociationProcessor.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.uml.propertylifecycle/src/org/eclipse/papyrus/uml/propertylifecycle/processors/AssociationProcessor.java
new file mode 100755
index 00000000000..2b58fc63f94
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.uml.propertylifecycle/src/org/eclipse/papyrus/uml/propertylifecycle/processors/AssociationProcessor.java
@@ -0,0 +1,150 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.uml.propertylifecycle.processors;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.gmf.runtime.common.core.command.CompositeCommand;
+import org.eclipse.gmf.runtime.common.core.command.ICommand;
+import org.eclipse.gmf.runtime.emf.type.core.requests.AbstractEditCommandRequest;
+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;
+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest;
+import org.eclipse.gmf.runtime.emf.type.core.requests.ReorientRelationshipRequest;
+import org.eclipse.papyrus.propertylifecycle.commands.LifecycleSetCommand;
+import org.eclipse.papyrus.propertylifecycle.utils.CommandValueProcessor;
+import org.eclipse.papyrus.uml.propertylifecycle.Activator;
+import org.eclipse.uml2.uml.Association;
+import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.Property;
+
+/**
+ *
+ */
+public class AssociationProcessor implements CommandValueProcessor {
+
+ Association association;
+
+ @Override
+ public ICommand setValueFromRequest(String featureLabel, boolean isImmutable, AbstractEditCommandRequest request) {
+ return setName(request, isImmutable);
+ }
+
+ public AssociationProcessor() {
+
+ }
+
+ public ICommand setName(AbstractEditCommandRequest request, boolean isImmutable) {
+ if (isImmutable) {
+ Activator.log.trace(Activator.PLCSTRATEGY_TRACE, "isJambon: " + isImmutable);
+ } else {
+ Activator.log.trace(Activator.PLCSTRATEGY_TRACE, "isJambon: " + isImmutable);
+ }
+ ICommand gmfCommand = null;
+
+ if (request instanceof ConfigureRequest) {
+ ConfigureRequest confRequest = (ConfigureRequest) request;
+
+ association = (Association) confRequest.getElementToConfigure();
+ Classifier sourceType = getSourceOwnerType(confRequest);
+ Classifier targetType = getTargetOwnerType(confRequest);
+
+ String initializedName = "A_" + sourceType.getName() + "_" + targetType.getName();//$NON-NLS-1$ //$NON-NLS-2$
+ EStructuralFeature feature = association.eClass().getEStructuralFeature("name");
+
+ ICommand setCommand = new LifecycleSetCommand("AssociationConfigure", association, feature, initializedName);
+ gmfCommand = CompositeCommand.compose(gmfCommand, setCommand);
+ }
+
+ if (request instanceof ReorientRelationshipRequest) {
+ ReorientRelationshipRequest reorientRequest = (ReorientRelationshipRequest) request;
+
+ association = (Association) reorientRequest.getRelationship();
+ EStructuralFeature feature = association.eClass().getEStructuralFeature("name");
+ if (association == null || feature == null) {
+ return gmfCommand;
+ }
+
+ Property sourceProperty = association.getMemberEnds().get(1);
+ Property targetProperty = association.getMemberEnds().get(0);
+ String initializedName = null;
+
+ if (reorientRequest.getDirection() == ReorientRelationshipRequest.REORIENT_SOURCE) {
+ sourceProperty.setName(getReorientOwnerType(reorientRequest).getName().toLowerCase());
+ initializedName = "A_" + getReorientOwnerType(reorientRequest).getName() + "_" + targetProperty.getType().getName();
+ }
+ if (reorientRequest.getDirection() == ReorientRelationshipRequest.REORIENT_TARGET) {
+ targetProperty.setName(getReorientOwnerType(reorientRequest).getName().toLowerCase());
+ initializedName = "A_" + sourceProperty.getType().getName() + "_" + getReorientOwnerType(reorientRequest).getName();
+ }
+
+ // The strategies will be browsed by this setRequest and a command will be constructed in the PropertyProcessor if any match
+ ICommand setCommand = new LifecycleSetCommand("AssociationReorient", association, feature, initializedName);
+ gmfCommand = CompositeCommand.compose(gmfCommand, setCommand);
+ }
+
+ return gmfCommand;
+ }
+
+
+ /**
+ * This method provides the new owner type
+ *
+ * @param request
+ * The {@link ConfigureRequest}
+ * @return
+ * The Classifier owning the new end or null if none exists
+ */
+ protected Classifier getReorientOwnerType(ReorientRelationshipRequest request) {
+ Object paramObject = request.getNewRelationshipEnd();
+ if (paramObject instanceof Classifier) {
+ return (Classifier) paramObject;
+ }
+
+ return null;
+ }
+
+ /**
+ * This method provides the source type
+ *
+ * @param request
+ * The {@link ConfigureRequest}
+ * @return
+ * The Classifier owning the new end or null if none exists
+ */
+ protected Classifier getSourceOwnerType(ConfigureRequest request) {
+ Object paramObject = request.getParameter(CreateRelationshipRequest.SOURCE);
+ if (paramObject instanceof Classifier) {
+ return (Classifier) paramObject;
+ }
+
+ return null;
+ }
+
+ /**
+ * This method provides the target type
+ *
+ * @param request
+ * The {@link ConfigureRequest}
+ * @return
+ * The Classifier owning the new end or null if none exists
+ */
+ protected Classifier getTargetOwnerType(ConfigureRequest request) {
+ Object paramObject = request.getParameter(CreateRelationshipRequest.TARGET);
+ if (paramObject instanceof Classifier) {
+ return (Classifier) paramObject;
+ }
+
+ return null;
+ }
+
+}
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.uml.propertylifecycle/src/org/eclipse/papyrus/uml/propertylifecycle/processors/ExtendProcessor.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.uml.propertylifecycle/src/org/eclipse/papyrus/uml/propertylifecycle/processors/ExtendProcessor.java
new file mode 100755
index 00000000000..d8014a95dba
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.uml.propertylifecycle/src/org/eclipse/papyrus/uml/propertylifecycle/processors/ExtendProcessor.java
@@ -0,0 +1,86 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.uml.propertylifecycle.processors;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.gmf.runtime.common.core.command.CompositeCommand;
+import org.eclipse.gmf.runtime.common.core.command.ICommand;
+import org.eclipse.gmf.runtime.emf.type.core.requests.AbstractEditCommandRequest;
+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;
+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest;
+import org.eclipse.papyrus.propertylifecycle.commands.LifecycleSetCommand;
+import org.eclipse.papyrus.propertylifecycle.utils.CommandValueProcessor;
+import org.eclipse.papyrus.uml.tools.utils.NamedElementUtil;
+import org.eclipse.uml2.uml.Extend;
+import org.eclipse.uml2.uml.ExtensionPoint;
+import org.eclipse.uml2.uml.UMLFactory;
+import org.eclipse.uml2.uml.UseCase;
+
+/**
+ *
+ */
+public class ExtendProcessor implements CommandValueProcessor {
+
+ @Override
+ public ICommand setValueFromRequest(String featureLabel, boolean isImmutable, AbstractEditCommandRequest request) {
+ return setName(request);
+ }
+
+ public ExtendProcessor() {
+
+ }
+
+ public ICommand setName(AbstractEditCommandRequest request) {
+ ICommand gmfCommand = null;
+
+ if (request instanceof ConfigureRequest) {
+ ConfigureRequest confRequest = (ConfigureRequest) request;
+
+ Extend extend = (Extend) confRequest.getElementToConfigure();
+ UseCase target = getTarget(confRequest);
+ if ((target == null)) {
+ return gmfCommand;
+ }
+
+ ExtensionPoint targetEnd = UMLFactory.eINSTANCE.createExtensionPoint();
+ // Add extensionLocations references
+ extend.getExtensionLocations().add(targetEnd);
+ // Add end in the model
+ target.getExtensionPoints().add(targetEnd);
+
+ EStructuralFeature feature = targetEnd.eClass().getEStructuralFeature("name");
+ String nameValue = NamedElementUtil.getDefaultNameWithIncrement(targetEnd, targetEnd.getOwner().eContents());
+ LifecycleSetCommand setCommand = new LifecycleSetCommand("Extend_Set",
+ targetEnd, feature, nameValue);
+
+ gmfCommand = CompositeCommand.compose(gmfCommand, setCommand);
+ }
+
+ return gmfCommand;
+ }
+
+ /**
+ * This method provides the target type provided as {@link ConfigureRequest} parameter.
+ *
+ * @return the target role
+ */
+ protected UseCase getTarget(ConfigureRequest req) {
+ UseCase result = null;
+ Object paramObject = req.getParameter(CreateRelationshipRequest.TARGET);
+ if (paramObject instanceof UseCase) {
+ result = (UseCase) paramObject;
+ }
+ return result;
+ }
+}
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.uml.propertylifecycle/src/org/eclipse/papyrus/uml/propertylifecycle/processors/PropertyProcessor.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.uml.propertylifecycle/src/org/eclipse/papyrus/uml/propertylifecycle/processors/PropertyProcessor.java
new file mode 100755
index 00000000000..82bcd3ea9fd
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.uml.propertylifecycle/src/org/eclipse/papyrus/uml/propertylifecycle/processors/PropertyProcessor.java
@@ -0,0 +1,85 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.uml.propertylifecycle.processors;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.gmf.runtime.common.core.command.CompositeCommand;
+import org.eclipse.gmf.runtime.common.core.command.ICommand;
+import org.eclipse.gmf.runtime.emf.type.core.requests.AbstractEditCommandRequest;
+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;
+import org.eclipse.gmf.runtime.emf.type.core.requests.SetRequest;
+import org.eclipse.papyrus.propertylifecycle.commands.LifecycleSetCommand;
+import org.eclipse.papyrus.propertylifecycle.messages.Messages;
+import org.eclipse.papyrus.propertylifecycle.utils.CommandValueProcessor;
+import org.eclipse.papyrus.uml.tools.utils.NamedElementUtil;
+import org.eclipse.uml2.uml.NamedElement;
+
+/**
+ *
+ */
+public class PropertyProcessor implements CommandValueProcessor {
+
+ NamedElement element;
+
+ @Override
+ public ICommand setValueFromRequest(String featureLabel, boolean isImmutable, AbstractEditCommandRequest request) {
+ return setName(request, isImmutable);
+ }
+
+ public PropertyProcessor() {
+
+ }
+
+ public ICommand setName(AbstractEditCommandRequest request, boolean isImmutable) {
+ ICommand gmfCommand = null;
+
+ if (request instanceof SetRequest) {
+ SetRequest setRequest = (SetRequest) request;
+ Object nameValue;
+ // TransactionalEditingDomain domain = request.getEditingDomain();
+
+ element = (NamedElement) setRequest.getElementToEdit();
+ EStructuralFeature feature = element.eClass().getEStructuralFeature("name");
+ if (element != null && feature != null && !isImmutable) {
+ // EStructuralFeature setFeature = setRequest.getFeature();
+ Object newValue = setRequest.getValue();
+ nameValue = newValue;
+
+ // LifecycleSetCommand setCommand = new LifecycleSetCommand(domain, "Property_Set",
+ // element, feature, nameValue);
+ LifecycleSetCommand setCommand = new LifecycleSetCommand("Property_Set",
+ element, feature, nameValue);
+
+ gmfCommand = CompositeCommand.compose(gmfCommand, setCommand);
+ }
+
+ }
+
+ if (request instanceof ConfigureRequest) {
+ ConfigureRequest confRequest = (ConfigureRequest) request;
+ element = (NamedElement) confRequest.getElementToConfigure();
+ EStructuralFeature feature = element.eClass().getEStructuralFeature(Messages.FEATURELABEL_NAME);
+
+ if (element != null && feature != null && !isImmutable) {
+ // Set default name
+ String initializedName = NamedElementUtil.getDefaultNameWithIncrementFromBase("Attribute", element.eContainer().eContents());
+ LifecycleSetCommand setCommand = new LifecycleSetCommand("Property_SetName", element, feature, initializedName);
+ gmfCommand = CompositeCommand.compose(gmfCommand, setCommand);
+ }
+ }
+
+ return gmfCommand;
+ }
+
+}
diff --git a/extraplugins/propertylifecycle/org.eclipse.papyrus.uml.propertylifecycle/src/org/eclipse/papyrus/uml/propertylifecycle/processors/RoleBindingProcessor.java b/extraplugins/propertylifecycle/org.eclipse.papyrus.uml.propertylifecycle/src/org/eclipse/papyrus/uml/propertylifecycle/processors/RoleBindingProcessor.java
new file mode 100755
index 00000000000..b7b762fbe4e
--- /dev/null
+++ b/extraplugins/propertylifecycle/org.eclipse.papyrus.uml.propertylifecycle/src/org/eclipse/papyrus/uml/propertylifecycle/processors/RoleBindingProcessor.java
@@ -0,0 +1,52 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.uml.propertylifecycle.processors;
+
+import org.eclipse.gmf.runtime.common.core.command.ICommand;
+import org.eclipse.gmf.runtime.emf.type.core.requests.AbstractEditCommandRequest;
+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest;
+import org.eclipse.papyrus.propertylifecycle.utils.CommandValueProcessor;
+import org.eclipse.uml2.uml.Dependency;
+
+/**
+ *
+ */
+public class RoleBindingProcessor implements CommandValueProcessor {
+
+ @Override
+ public ICommand setValueFromRequest(String featureLabel, boolean isImmutable, AbstractEditCommandRequest request) {
+ return setName(request);
+ }
+
+ public RoleBindingProcessor() {
+
+ }
+
+ public ICommand setName(final AbstractEditCommandRequest request) {
+ if (!(request instanceof CreateRelationshipRequest)) {
+ }
+
+ CreateRelationshipRequest relRequest = (CreateRelationshipRequest) request;
+
+ Dependency dependency = (Dependency) (relRequest).getNewElement();
+ // NamedElement target = (NamedElement) request.getTarget();
+ // ConnectableElement roleToBind = (ConnectableElement) dialog.getFirstResult();
+ // // Create a Dependency (the binding) between selected role and a ConnectableElement (the target)
+ // dependency.setName("binding_" + roleToBind.getName() + "_" + target.getName());
+
+
+ return null;
+ }
+
+}

Back to the top