Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian W. Damus2015-12-04 13:52:01 +0000
committerChristian W. Damus2015-12-08 13:58:31 +0000
commit49bd194639354cde35b15717e4ead156f4613754 (patch)
tree2f3b4a83815186201eb39fbcb058d07d8880f6d4
parented54bfa4c258ade68f0c9a4eb1263bb8aa37a92e (diff)
downloadorg.eclipse.papyrus-49bd194639354cde35b15717e4ead156f4613754.tar.gz
org.eclipse.papyrus-49bd194639354cde35b15717e4ead156f4613754.tar.xz
org.eclipse.papyrus-49bd194639354cde35b15717e4ead156f4613754.zip
Bug 469188: [Editor] Page management improvements in the Papyrus multi-editor
https://bugs.eclipse.org/bugs/show_bug.cgi?id=469188 This is a squashed commit comprising all of the changes on the committers/cdamus/469188-editor-welcome branch for the introduction of a Welcome Page in the Papyrus Editor. commit 51d64a198c2069b208b5231212a5514441514c54 Implement drag-and-drop rearrangement of the sections in the simple grid-wise layout of the Welcome Page. Persist the user's customization in the sash/di resource with the sash model, using new classes in the Welcome package. commit b59f057cf1e08b51942aac1f45226a304c48039e Fix enablement condition for Show Welcome Page action which has been broken since the page was changed from an editor to a plain composite. commit 69cee20b44c699c6a078e66bf9b16a83c1de7315 Remove the databinding properties APIs for Forms widgets that are no longer needed since the NatTable refactoring of the Diagrams table in the welcome page. commit 00cfdd106421c0b1366c2a7deade819b4a3041ef Add table of languages to the General section in the welcome page. Add section of hyperlinks to related views to the welcome page. Implement ordering of the contents of the welcome page according to tab 'afterTab' relationships and priorities. Overall the layout is still two rows with a variable number of columns. commit a7d739b8e03bea5d4cf5e4d0d3663adbc62f5018 Let the SashModel report to listeners when its storage mode changes so that the two different UI presentations of that mode can remain up-to- date at all times. commit 7fc4f8bf1f0fcee31f84b976e29cd7b3848ec47d Ensure that new models initially track the active page of each tab folder because they store their layout privately by default. commit 6d5dbf27a4428645655bcf6ff9a99d4a3c77dcb8 Implement optional tracking of the active page in the private sash model and switching between private and shared storage of the layout. Includes: * enhancement of the Sash DI model to include a currently selected page for each tab folder and a boolean flag whether to restore the last selection in each tab folder * a new editor lifecycle event for "pre display" to provide a hook to set up the page activation before the SWT controls are rendered, so that the editor doesn't open up and then change page selections while the user watches * expose the SaveLayoutBeforeClose behaviour for re-use when changing layout options in the welcome page * update enablement from editable-ness for Properties widgets that force refresh commit 97897b3d0d295a71a7173a584ceda3ac24c5c6ea Factor out some more common bits into core plug-ins (e.g., the IsWelcomeElement constraint in the properties environment). Create the list of tables in the welcome page. This requires some renaming of properties model content in the diagrams list for disambiguation. commit f73fe34e87c915cc603ec12c608c020406ea7d73 Refactor the Diagrams table as a reusable NatTable of hyperlinks. commit a6308f25a8c6e6c129174e9c418cb90e6f025e16 Move the column headers of the diagrams table out into a separate composite that does not scroll vertically with the table of hyperlinks (though it does track the table's horizontal scroll position). commit 0425bf34630e4420db3674fa8d4641820a305478 Add a separate preference page for Welcome Page Content. This depends on a new extension in the context registry for association of contexts with preferences pages (by default, associating legacy contexts with the Properties View preference page). commit 06719c107a3f323be53ca6ada4f820f2d4ef10cb Rework the contribution of welcome-page content to: * eliminate the custom extension point for section providers * use the Properties View framework to obtain welcome-page sections for the Welcome model element Update the Diagrams table provider as a property section for the Welcome model. This involves implementation of a custom table-of- hyperlinks widget. Several reusable data-bindings classes are added to the appropriate Papyrus infra-layer bundles. commit 4069f62cc89413b8739cc6c33211ac5a11942bc4 Welcome page content for diagrams. commit 8599ee6bdf7b2c7423811fee3e2441a618621ce4 The Welcome Page doesn't need to be an editor, just a composite. So, let any page part (including simple composites) be optionally closeable and change the WelcomePage into a simple composite part instead of a nested workbench editor-part. commit 83b581ea9aadb5b852b36b2fa0524ca7df60b255 Initial definition of an extension point for welcome section providers. commit f949eaf6cf131449f4584b71072033b22cd1cea2 Initial implementation of a (so far, empty) Welcome page that is always open when no other Papyrus editor pages are open. Change-Id: I351118dc0b6a0dea505719a8c62ef430c273c7cf
-rw-r--r--features/papyrus-main-features/org.eclipse.papyrus.infra.core.feature/feature.xml4
-rw-r--r--features/papyrus-main-features/org.eclipse.papyrus.infra.gmfdiag.feature/feature.xml2
-rw-r--r--features/papyrus-main-features/org.eclipse.papyrus.infra.nattable.feature/feature.xml2
-rw-r--r--plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/META-INF/MANIFEST.MF1
-rw-r--r--plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/custom-src/org/eclipse/papyrus/infra/core/sasheditor/di/contentprovider/DiSashModelManager.java13
-rw-r--r--plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/custom-src/org/eclipse/papyrus/infra/core/sasheditor/di/contentprovider/DiSashModelMngr.java13
-rw-r--r--plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/custom-src/org/eclipse/papyrus/infra/core/sasheditor/di/contentprovider/commands/CloseAllDiagramsCommand.java55
-rw-r--r--plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/custom-src/org/eclipse/papyrus/infra/core/sasheditor/di/contentprovider/commands/CloseDiagramCommand.java26
-rw-r--r--plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/custom-src/org/eclipse/papyrus/infra/core/sasheditor/di/contentprovider/commands/CloseOtherDiagramsCommand.java47
-rw-r--r--plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/custom-src/org/eclipse/papyrus/infra/core/sasheditor/di/contentprovider/commands/PageContext.java98
-rw-r--r--plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/custom-src/org/eclipse/papyrus/infra/core/sasheditor/di/contentprovider/utils/IPageUtils.java23
-rw-r--r--plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/model/di.ecore6
-rw-r--r--plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/model/sashwindowsdi.genmodel16
-rw-r--r--plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/model/sashwindowsdi.notation2447
-rw-r--r--plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/model/sashwindowsdi.uml1210
-rw-r--r--plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/src/org/eclipse/papyrus/infra/core/sashwindows/di/DiPackage.java83
-rw-r--r--plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/src/org/eclipse/papyrus/infra/core/sashwindows/di/SashModel.java47
-rw-r--r--plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/src/org/eclipse/papyrus/infra/core/sashwindows/di/TabFolder.java53
-rw-r--r--plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/src/org/eclipse/papyrus/infra/core/sashwindows/di/impl/DiFactoryImpl.java33
-rw-r--r--plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/src/org/eclipse/papyrus/infra/core/sashwindows/di/impl/DiPackageImpl.java65
-rw-r--r--plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/src/org/eclipse/papyrus/infra/core/sashwindows/di/impl/SashModelImpl.java95
-rw-r--r--plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/src/org/eclipse/papyrus/infra/core/sashwindows/di/impl/TabFolderImpl.java114
-rw-r--r--plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor/src/org/eclipse/papyrus/infra/core/sasheditor/editor/ICloseablePart.java60
-rw-r--r--plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor/src/org/eclipse/papyrus/infra/core/sasheditor/internal/ComponentPart.java10
-rw-r--r--plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor/src/org/eclipse/papyrus/infra/core/sasheditor/internal/EditorPart.java27
-rw-r--r--plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor/src/org/eclipse/papyrus/infra/core/sasheditor/internal/PTabFolder.java8
-rw-r--r--plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor/src/org/eclipse/papyrus/infra/core/sasheditor/internal/PagePart.java25
-rw-r--r--plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor/src/org/eclipse/papyrus/infra/core/sasheditor/internal/TabFolderPart.java28
-rw-r--r--plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor/src/org/eclipse/papyrus/infra/core/sasheditor/internal/TabItemPart.java4
-rw-r--r--plugins/infra/core/org.eclipse.papyrus.infra.core/src/org/eclipse/papyrus/infra/core/editor/CoreMultiDiagramEditor.java5
-rw-r--r--plugins/infra/core/org.eclipse.papyrus.infra.core/src/org/eclipse/papyrus/infra/core/editor/MultiDiagramPropertySheetPage.java58
-rw-r--r--plugins/infra/core/org.eclipse.papyrus.infra.core/src/org/eclipse/papyrus/infra/core/internal/commands/PageLayoutStorageState.java46
-rw-r--r--plugins/infra/core/org.eclipse.papyrus.infra.core/src/org/eclipse/papyrus/infra/core/resource/sasheditor/SashLayoutCommandFactory.java108
-rw-r--r--plugins/infra/core/org.eclipse.papyrus.infra.core/src/org/eclipse/papyrus/infra/core/resource/sasheditor/SashModel.java118
-rw-r--r--plugins/infra/core/org.eclipse.papyrus.infra.core/src/org/eclipse/papyrus/infra/core/services/EditorLifecycleEventListener.java12
-rw-r--r--plugins/infra/core/org.eclipse.papyrus.infra.core/src/org/eclipse/papyrus/infra/core/services/internal/EditorLifecycleManagerImpl.java21
-rw-r--r--plugins/infra/core/org.eclipse.papyrus.infra.core/src/org/eclipse/papyrus/infra/core/services/internal/InternalEditorLifecycleManager.java10
-rw-r--r--plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/.classpath7
-rw-r--r--plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/.project28
-rw-r--r--plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/.settings/org.eclipse.jdt.core.prefs296
-rw-r--r--plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/.settings/org.eclipse.jdt.ui.prefs68
-rw-r--r--plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/META-INF/MANIFEST.MF32
-rw-r--r--plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/about.html28
-rw-r--r--plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/build.properties22
-rw-r--r--plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/model/environment.xmi9
-rw-r--r--plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/model/general/languages.ctx20
-rw-r--r--plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/model/general/ui/SingleLanguages.xwt12
-rw-r--r--plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/plugin.properties13
-rw-r--r--plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/plugin.xml31
-rw-r--r--plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/pom.xml14
-rw-r--r--plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/src/org/eclipse/papyrus/infra/editor/welcome/nattable/ServiceConfigAttributes.java132
-rw-r--r--plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/src/org/eclipse/papyrus/infra/editor/welcome/nattable/hyperlink/HyperlinkNavigationAction.java62
-rw-r--r--plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/src/org/eclipse/papyrus/infra/editor/welcome/nattable/hyperlink/HyperlinkNavigationConfiguration.java160
-rw-r--r--plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/src/org/eclipse/papyrus/infra/editor/welcome/nattable/internal/Activator.java60
-rw-r--r--plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/src/org/eclipse/papyrus/infra/editor/welcome/nattable/internal/widgets/LanguagesTable.java91
-rw-r--r--plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/src/org/eclipse/papyrus/infra/editor/welcome/nattable/painter/LabelPainter.java119
-rw-r--r--plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/src/org/eclipse/papyrus/infra/editor/welcome/nattable/painter/LabelProviderImagePainter.java52
-rw-r--r--plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/src/org/eclipse/papyrus/infra/editor/welcome/nattable/painter/LabelProviderTextPainter.java77
-rw-r--r--plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/src/org/eclipse/papyrus/infra/editor/welcome/nattable/sorting/ColumnHeaderHelper.java157
-rw-r--r--plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/src/org/eclipse/papyrus/infra/editor/welcome/nattable/sorting/EventListObservableAdapter.java198
-rw-r--r--plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/src/org/eclipse/papyrus/infra/editor/welcome/nattable/sorting/PapyrusGlazedListEventsLayer.java159
-rw-r--r--plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/src/org/eclipse/papyrus/infra/editor/welcome/nattable/widgets/FormTable.java230
-rw-r--r--plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/src/org/eclipse/papyrus/infra/editor/welcome/nattable/widgets/HyperlinkTable.java53
-rw-r--r--plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/.classpath8
-rw-r--r--plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/.project28
-rw-r--r--plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/.settings/org.eclipse.jdt.core.prefs296
-rw-r--r--plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/.settings/org.eclipse.jdt.ui.prefs68
-rw-r--r--plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/META-INF/MANIFEST.MF38
-rw-r--r--plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/about.html28
-rw-r--r--plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/build.properties24
-rw-r--r--plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/icons/full/editor16/welcome16.gifbin0 -> 254 bytes
-rw-r--r--plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/icons/full/obj16/layout.pngbin0 -> 378 bytes
-rw-r--r--plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/model/environment.xmi19
-rw-r--r--plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/model/general/general.ctx32
-rw-r--r--plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/model/general/ui/SinglePageLayout.xwt12
-rw-r--r--plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/model/general/ui/SingleViewLinks.xwt13
-rw-r--r--plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/model/welcome.di2
-rw-r--r--plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/model/welcome.ecore36
-rw-r--r--plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/model/welcome.genmodel66
-rw-r--r--plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/model/welcome.notation218
-rw-r--r--plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/model/welcome.uml90
-rw-r--r--plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/plugin.properties21
-rw-r--r--plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/plugin.xml163
-rw-r--r--plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/pom.xml14
-rw-r--r--plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/src-gen/org/eclipse/papyrus/infra/editor/welcome/Welcome.java74
-rw-r--r--plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/src-gen/org/eclipse/papyrus/infra/editor/welcome/WelcomeFactory.java76
-rw-r--r--plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/src-gen/org/eclipse/papyrus/infra/editor/welcome/WelcomePackage.java528
-rw-r--r--plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/src-gen/org/eclipse/papyrus/infra/editor/welcome/WelcomePage.java110
-rw-r--r--plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/src-gen/org/eclipse/papyrus/infra/editor/welcome/WelcomeSection.java123
-rw-r--r--plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/src-gen/org/eclipse/papyrus/infra/editor/welcome/internal/impl/WelcomeFactoryImpl.java142
-rw-r--r--plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/src-gen/org/eclipse/papyrus/infra/editor/welcome/internal/impl/WelcomeImpl.java250
-rw-r--r--plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/src-gen/org/eclipse/papyrus/infra/editor/welcome/internal/impl/WelcomePackageImpl.java401
-rw-r--r--plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/src-gen/org/eclipse/papyrus/infra/editor/welcome/internal/impl/WelcomePageImpl.java315
-rw-r--r--plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/src-gen/org/eclipse/papyrus/infra/editor/welcome/internal/impl/WelcomeSectionImpl.java410
-rw-r--r--plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/src-gen/org/eclipse/papyrus/infra/editor/welcome/internal/operations/WelcomePageOperations.java120
-rw-r--r--plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/src-gen/org/eclipse/papyrus/infra/editor/welcome/internal/operations/WelcomeSectionOperations.java52
-rw-r--r--plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/src-gen/org/eclipse/papyrus/infra/editor/welcome/util/WelcomeAdapterFactory.java179
-rw-r--r--plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/src-gen/org/eclipse/papyrus/infra/editor/welcome/util/WelcomeSwitch.java183
-rw-r--r--plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/src/org/eclipse/papyrus/infra/editor/welcome/IWelcomePageService.java54
-rw-r--r--plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/src/org/eclipse/papyrus/infra/editor/welcome/internal/Activator.java80
-rw-r--r--plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/src/org/eclipse/papyrus/infra/editor/welcome/internal/WelcomeAdapterFactory.java48
-rw-r--r--plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/src/org/eclipse/papyrus/infra/editor/welcome/internal/WelcomeLayout.java366
-rw-r--r--plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/src/org/eclipse/papyrus/infra/editor/welcome/internal/WelcomePage.java218
-rw-r--r--plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/src/org/eclipse/papyrus/infra/editor/welcome/internal/WelcomePageFactory.java135
-rw-r--r--plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/src/org/eclipse/papyrus/infra/editor/welcome/internal/WelcomePageService.java417
-rw-r--r--plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/src/org/eclipse/papyrus/infra/editor/welcome/internal/WelcomeTab.java133
-rw-r--r--plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/src/org/eclipse/papyrus/infra/editor/welcome/internal/commands/ResetWelcomePageHandler.java71
-rw-r--r--plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/src/org/eclipse/papyrus/infra/editor/welcome/internal/commands/ShowWelcomePageHandler.java71
-rw-r--r--plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/src/org/eclipse/papyrus/infra/editor/welcome/internal/constraints/IsWelcomeElement.java50
-rw-r--r--plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/src/org/eclipse/papyrus/infra/editor/welcome/internal/dnd/WelcomeSectionTransfer.java32
-rw-r--r--plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/src/org/eclipse/papyrus/infra/editor/welcome/internal/modelelements/AbstractPageLayoutToggleValue.java106
-rw-r--r--plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/src/org/eclipse/papyrus/infra/editor/welcome/internal/modelelements/LanguageObservable.java82
-rw-r--r--plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/src/org/eclipse/papyrus/infra/editor/welcome/internal/modelelements/LanguagesObservableList.java81
-rw-r--r--plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/src/org/eclipse/papyrus/infra/editor/welcome/internal/modelelements/PrivateLayoutValue.java78
-rw-r--r--plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/src/org/eclipse/papyrus/infra/editor/welcome/internal/modelelements/RestoreActivePageValue.java52
-rw-r--r--plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/src/org/eclipse/papyrus/infra/editor/welcome/internal/modelelements/WelcomeModelElement.java100
-rw-r--r--plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/src/org/eclipse/papyrus/infra/editor/welcome/internal/modelelements/WelcomeModelElementFactory.java45
-rw-r--r--plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/src/org/eclipse/papyrus/infra/editor/welcome/internal/widgets/OpenViewLink.java171
-rw-r--r--plugins/infra/emf/org.eclipse.papyrus.infra.emf/src/org/eclipse/papyrus/infra/emf/utils/EMFHelper.java104
-rw-r--r--plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.welcome/.classpath7
-rw-r--r--plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.welcome/.project28
-rw-r--r--plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.welcome/.settings/org.eclipse.jdt.core.prefs296
-rw-r--r--plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.welcome/.settings/org.eclipse.jdt.ui.prefs68
-rw-r--r--plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.welcome/META-INF/MANIFEST.MF40
-rw-r--r--plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.welcome/about.html28
-rw-r--r--plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.welcome/build.properties22
-rw-r--r--plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.welcome/model/diagrams/diagrams.ctx20
-rw-r--r--plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.welcome/model/diagrams/ui/SingleDiagrams.xwt13
-rw-r--r--plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.welcome/model/environment.xmi20
-rw-r--r--plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.welcome/plugin.properties13
-rw-r--r--plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.welcome/plugin.xml31
-rw-r--r--plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.welcome/pom.xml14
-rw-r--r--plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.welcome/src/org/eclipse/papyrus/infra/gmfdiag/welcome/internal/Activator.java60
-rw-r--r--plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.welcome/src/org/eclipse/papyrus/infra/gmfdiag/welcome/internal/modelelements/DiagramObservable.java187
-rw-r--r--plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.welcome/src/org/eclipse/papyrus/infra/gmfdiag/welcome/internal/modelelements/DiagramsObservableList.java87
-rw-r--r--plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.welcome/src/org/eclipse/papyrus/infra/gmfdiag/welcome/internal/modelelements/WelcomeModelElement.java68
-rw-r--r--plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.welcome/src/org/eclipse/papyrus/infra/gmfdiag/welcome/internal/modelelements/WelcomeModelElementFactory.java45
-rw-r--r--plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.welcome/src/org/eclipse/papyrus/infra/gmfdiag/welcome/internal/widgets/CreateNewDiagramButton.java179
-rw-r--r--plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.welcome/src/org/eclipse/papyrus/infra/gmfdiag/welcome/internal/widgets/DiagramsTable.java92
-rw-r--r--plugins/infra/nattable/org.eclipse.papyrus.infra.nattable.welcome/.classpath7
-rw-r--r--plugins/infra/nattable/org.eclipse.papyrus.infra.nattable.welcome/.project28
-rw-r--r--plugins/infra/nattable/org.eclipse.papyrus.infra.nattable.welcome/.settings/org.eclipse.jdt.core.prefs296
-rw-r--r--plugins/infra/nattable/org.eclipse.papyrus.infra.nattable.welcome/.settings/org.eclipse.jdt.ui.prefs68
-rw-r--r--plugins/infra/nattable/org.eclipse.papyrus.infra.nattable.welcome/META-INF/MANIFEST.MF39
-rw-r--r--plugins/infra/nattable/org.eclipse.papyrus.infra.nattable.welcome/about.html28
-rw-r--r--plugins/infra/nattable/org.eclipse.papyrus.infra.nattable.welcome/build.properties22
-rw-r--r--plugins/infra/nattable/org.eclipse.papyrus.infra.nattable.welcome/model/environment.xmi20
-rw-r--r--plugins/infra/nattable/org.eclipse.papyrus.infra.nattable.welcome/model/tables/tables.ctx21
-rw-r--r--plugins/infra/nattable/org.eclipse.papyrus.infra.nattable.welcome/model/tables/ui/SingleTables.xwt13
-rw-r--r--plugins/infra/nattable/org.eclipse.papyrus.infra.nattable.welcome/plugin.properties13
-rw-r--r--plugins/infra/nattable/org.eclipse.papyrus.infra.nattable.welcome/plugin.xml31
-rw-r--r--plugins/infra/nattable/org.eclipse.papyrus.infra.nattable.welcome/pom.xml14
-rw-r--r--plugins/infra/nattable/org.eclipse.papyrus.infra.nattable.welcome/src/org/eclipse/papyrus/infra/nattable/welcome/internal/Activator.java60
-rw-r--r--plugins/infra/nattable/org.eclipse.papyrus.infra.nattable.welcome/src/org/eclipse/papyrus/infra/nattable/welcome/internal/modelelements/TableObservable.java187
-rw-r--r--plugins/infra/nattable/org.eclipse.papyrus.infra.nattable.welcome/src/org/eclipse/papyrus/infra/nattable/welcome/internal/modelelements/TablesObservableList.java87
-rw-r--r--plugins/infra/nattable/org.eclipse.papyrus.infra.nattable.welcome/src/org/eclipse/papyrus/infra/nattable/welcome/internal/modelelements/WelcomeModelElement.java68
-rw-r--r--plugins/infra/nattable/org.eclipse.papyrus.infra.nattable.welcome/src/org/eclipse/papyrus/infra/nattable/welcome/internal/modelelements/WelcomeModelElementFactory.java45
-rw-r--r--plugins/infra/nattable/org.eclipse.papyrus.infra.nattable.welcome/src/org/eclipse/papyrus/infra/nattable/welcome/internal/widgets/CreateNewTableButton.java180
-rw-r--r--plugins/infra/nattable/org.eclipse.papyrus.infra.nattable.welcome/src/org/eclipse/papyrus/infra/nattable/welcome/internal/widgets/TablesTable.java92
-rwxr-xr-xplugins/infra/nattable/pom.xml3
-rw-r--r--plugins/infra/org.eclipse.papyrus.infra.tools/.classpath4
-rw-r--r--plugins/infra/org.eclipse.papyrus.infra.tools/.settings/org.eclipse.jdt.core.prefs6
-rw-r--r--plugins/infra/org.eclipse.papyrus.infra.tools/META-INF/MANIFEST.MF3
-rw-r--r--plugins/infra/org.eclipse.papyrus.infra.tools/src/org/eclipse/papyrus/infra/tools/databinding/TouchableValue.java74
-rw-r--r--plugins/infra/org.eclipse.papyrus.infra.tools/src/org/eclipse/papyrus/infra/tools/databinding/WritableListWithIterator.java179
-rw-r--r--plugins/infra/org.eclipse.papyrus.infra.tools/src/org/eclipse/papyrus/infra/tools/dnd/PapyrusTransfer.java105
-rw-r--r--plugins/infra/org.eclipse.papyrus.infra.tools/src/org/eclipse/papyrus/infra/tools/util/PlatformHelper.java29
-rw-r--r--plugins/infra/widget/org.eclipse.papyrus.infra.widgets/.classpath14
-rwxr-xr-xplugins/infra/widget/org.eclipse.papyrus.infra.widgets/.settings/org.eclipse.jdt.core.prefs6
-rw-r--r--plugins/infra/widget/org.eclipse.papyrus.infra.widgets/META-INF/MANIFEST.MF2
-rw-r--r--plugins/infra/widget/org.eclipse.papyrus.infra.widgets/src/org/eclipse/papyrus/infra/widgets/providers/WorkbenchFilteredLabelProvider.java28
-rw-r--r--plugins/views/properties/org.eclipse.papyrus.views.properties/schema/context.exsd306
-rw-r--r--plugins/views/properties/org.eclipse.papyrus.views.properties/src/org/eclipse/papyrus/views/properties/extensions/ContextExtensionPoint.java78
-rw-r--r--plugins/views/properties/org.eclipse.papyrus.views.properties/src/org/eclipse/papyrus/views/properties/preferences/Preferences.java39
-rw-r--r--plugins/views/properties/org.eclipse.papyrus.views.properties/src/org/eclipse/papyrus/views/properties/runtime/ConfigurationManager.java66
-rw-r--r--plugins/views/properties/org.eclipse.papyrus.views.properties/src/org/eclipse/papyrus/views/properties/widgets/AbstractPropertyEditor.java7
-rwxr-xr-xreleng/main/pom.xml3
177 files changed, 15121 insertions, 2224 deletions
diff --git a/features/papyrus-main-features/org.eclipse.papyrus.infra.core.feature/feature.xml b/features/papyrus-main-features/org.eclipse.papyrus.infra.core.feature/feature.xml
index c4ca6b8d4a6..d609c50bf7b 100644
--- a/features/papyrus-main-features/org.eclipse.papyrus.infra.core.feature/feature.xml
+++ b/features/papyrus-main-features/org.eclipse.papyrus.infra.core.feature/feature.xml
@@ -23,4 +23,8 @@ http://www.eclipse.org/legal/epl-v10.html
<plugin download-size="0" id="org.eclipse.papyrus.infra.core.pluginexplorer" install-size="0" unpack="false" version="0.0.0"/>
+ <plugin download-size="0" id="org.eclipse.papyrus.infra.editor.welcome" install-size="0" unpack="false" version="0.0.0"/>
+
+ <plugin download-size="0" id="org.eclipse.papyrus.infra.editor.welcome.nattable" install-size="0" unpack="false" version="0.0.0"/>
+
</feature> \ No newline at end of file
diff --git a/features/papyrus-main-features/org.eclipse.papyrus.infra.gmfdiag.feature/feature.xml b/features/papyrus-main-features/org.eclipse.papyrus.infra.gmfdiag.feature/feature.xml
index 67f43e65692..2780c94cf0e 100644
--- a/features/papyrus-main-features/org.eclipse.papyrus.infra.gmfdiag.feature/feature.xml
+++ b/features/papyrus-main-features/org.eclipse.papyrus.infra.gmfdiag.feature/feature.xml
@@ -59,4 +59,6 @@ http://www.eclipse.org/legal/epl-v10.html
<plugin download-size="0" id="org.eclipse.papyrus.infra.gmfdiag.canonical" install-size="0" version="0.0.0"/>
+ <plugin download-size="0" id="org.eclipse.papyrus.infra.gmfdiag.welcome" install-size="0" version="0.0.0"/>
+
</feature> \ No newline at end of file
diff --git a/features/papyrus-main-features/org.eclipse.papyrus.infra.nattable.feature/feature.xml b/features/papyrus-main-features/org.eclipse.papyrus.infra.nattable.feature/feature.xml
index b729a0f7e0d..2d59c9ea22c 100644
--- a/features/papyrus-main-features/org.eclipse.papyrus.infra.nattable.feature/feature.xml
+++ b/features/papyrus-main-features/org.eclipse.papyrus.infra.nattable.feature/feature.xml
@@ -35,6 +35,8 @@ http://www.eclipse.org/legal/epl-v10.html
<plugin download-size="0" id="org.eclipse.papyrus.infra.nattable.properties" install-size="0" unpack="false" version="0.0.0"/>
+ <plugin download-size="0" id="org.eclipse.papyrus.infra.nattable.welcome" install-size="0" unpack="false" version="0.0.0"/>
+
<plugin download-size="0" id="org.eclipse.nebula.widgets.nattable.core" install-size="0" unpack="false" version="0.0.0"/>
<plugin download-size="0" id="ca.odell.glazedlists" install-size="0" unpack="false" version="0.0.0"/>
diff --git a/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/META-INF/MANIFEST.MF b/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/META-INF/MANIFEST.MF
index 666b0fc893c..ae5263cb498 100644
--- a/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/META-INF/MANIFEST.MF
+++ b/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/META-INF/MANIFEST.MF
@@ -19,6 +19,7 @@ Require-Bundle: org.eclipse.swt;bundle-version="3.5.0",
org.eclipse.emf.ecore;visibility:=reexport,
org.eclipse.emf.ecore.xmi;bundle-version="2.5.0";visibility:=reexport,
org.eclipse.uml2.types;visibility:=reexport,
+ org.eclipse.uml2.common;visibility:=reexport,
org.eclipse.emf.transaction;bundle-version="1.4.0",
org.eclipse.papyrus.infra.core.log;bundle-version="1.2.0"
Bundle-Vendor: %providerName
diff --git a/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/custom-src/org/eclipse/papyrus/infra/core/sasheditor/di/contentprovider/DiSashModelManager.java b/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/custom-src/org/eclipse/papyrus/infra/core/sasheditor/di/contentprovider/DiSashModelManager.java
index 205f47d2ed4..5737b1ff72a 100644
--- a/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/custom-src/org/eclipse/papyrus/infra/core/sasheditor/di/contentprovider/DiSashModelManager.java
+++ b/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/custom-src/org/eclipse/papyrus/infra/core/sasheditor/di/contentprovider/DiSashModelManager.java
@@ -1,5 +1,5 @@
/*****************************************************************************
- * Copyright (c) 2013 Cedric Dumoulin.
+ * Copyright (c) 2013, 2015 Cedric Dumoulin, Christian W. Damus, and others.
*
*
* All rights reserved. This program and the accompanying materials
@@ -9,6 +9,7 @@
*
* Contributors:
* Cedric Dumoulin Cedric.dumoulin@lifl.fr - Initial API and implementation
+ * Christian W. Damus - bug 469188
*
*****************************************************************************/
@@ -290,7 +291,15 @@ public class DiSashModelManager {
* @return
*/
protected SashWindowsMngr createDefaultSashModel() {
- return DiUtils.createDefaultSashWindowsMngr();
+ SashWindowsMngr result = DiUtils.createDefaultSashWindowsMngr();
+
+ if (result.getSashModel() != null) {
+ // Default this to true for new models, which store the sash model
+ // in the workspace private area by default
+ result.getSashModel().setRestoreActivePage(true);
+ }
+
+ return result;
}
/**
diff --git a/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/custom-src/org/eclipse/papyrus/infra/core/sasheditor/di/contentprovider/DiSashModelMngr.java b/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/custom-src/org/eclipse/papyrus/infra/core/sasheditor/di/contentprovider/DiSashModelMngr.java
index 960ac65849e..9fb452b4a0e 100644
--- a/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/custom-src/org/eclipse/papyrus/infra/core/sasheditor/di/contentprovider/DiSashModelMngr.java
+++ b/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/custom-src/org/eclipse/papyrus/infra/core/sasheditor/di/contentprovider/DiSashModelMngr.java
@@ -1,5 +1,5 @@
/*****************************************************************************
- * Copyright (c) 2009 CEA LIST & LIFL
+ * Copyright (c) 2009, 2015 CEA LIST & LIFL, Christian W. Damus, and others
*
*
* All rights reserved. This program and the accompanying materials
@@ -9,6 +9,7 @@
*
* Contributors:
* Cedric Dumoulin Cedric.dumoulin@lifl.fr - Initial API and implementation
+ * Christian W. Damus - bug 469188
*
*****************************************************************************/
@@ -209,7 +210,15 @@ public class DiSashModelMngr {
* @return
*/
protected SashWindowsMngr createDefaultSashModel() {
- return DiUtils.createDefaultSashWindowsMngr();
+ SashWindowsMngr result = DiUtils.createDefaultSashWindowsMngr();
+
+ if (result.getSashModel() != null) {
+ // Default this to true for new models, which store the sash model
+ // in the workspace private area by default
+ result.getSashModel().setRestoreActivePage(true);
+ }
+
+ return result;
}
/**
diff --git a/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/custom-src/org/eclipse/papyrus/infra/core/sasheditor/di/contentprovider/commands/CloseAllDiagramsCommand.java b/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/custom-src/org/eclipse/papyrus/infra/core/sasheditor/di/contentprovider/commands/CloseAllDiagramsCommand.java
index deab4ff85f4..300ab5f75ac 100644
--- a/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/custom-src/org/eclipse/papyrus/infra/core/sasheditor/di/contentprovider/commands/CloseAllDiagramsCommand.java
+++ b/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/custom-src/org/eclipse/papyrus/infra/core/sasheditor/di/contentprovider/commands/CloseAllDiagramsCommand.java
@@ -3,9 +3,7 @@ package org.eclipse.papyrus.infra.core.sasheditor.di.contentprovider.commands;
import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.papyrus.infra.core.sasheditor.contentprovider.IPageManager;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.handlers.HandlerUtil;
+import org.eclipse.papyrus.infra.core.sasheditor.di.contentprovider.utils.IPageUtils;
/**
* A command to be used with the Eclipse Commands Framework.
@@ -22,7 +20,9 @@ public class CloseAllDiagramsCommand extends AbstractHandler {
*/
@Override
public void setEnabled(Object evaluationContext) {
- // System.out.println("call to CloseAllDiagramsCommand.setEnable(" + evaluationContext + ")");
+ PageContext context = new PageContext(evaluationContext);
+ setBaseEnabled((context.getOpenPageCount() > 0)
+ && context.getOpenPages().stream().allMatch(IPageUtils::canClose));
}
/**
@@ -31,53 +31,12 @@ public class CloseAllDiagramsCommand extends AbstractHandler {
*/
@Override
public Object execute(ExecutionEvent event) throws ExecutionException {
-
- IPageManager pageManager;
- try {
- pageManager = getPageManager(event);
- } catch (NullPointerException e) {
- // PageMngr or Editing Domain can't be found
- return null;
+ PageContext context = new PageContext(event);
+ if ((context.getOpenPageCount() > 0) && context.getOpenPages().stream().allMatch(IPageUtils::canClose)) {
+ context.pageManager.closeAllOpenedPages();
}
- execute(pageManager);
return null;
}
- /**
- * Get the PageMngr used to interact with the content provider.
- *
- * @param event
- * @return
- * @throws NullPointerException
- * if the PageMngr can't be found.
- */
- private IPageManager getPageManager(ExecutionEvent event) {
- IEditorPart part = HandlerUtil.getActiveEditor(event);
- IPageManager pageManager = (IPageManager) part.getAdapter(IPageManager.class);
-
- return pageManager;
- }
-
- /**
- * Close all the diagrams.
- *
- * @param pageManager
- */
- public void execute(final IPageManager pageManager) throws ExecutionException {
- boolean atLeastOneOpenPage = false;
- for (Object pageIdentifier : pageManager.allPages()) {
- if (pageManager.isOpen(pageIdentifier)) {
- atLeastOneOpenPage = true;
- break;
- }
- }
-
- if (!atLeastOneOpenPage) {
- return;
- }
-
- pageManager.closeAllOpenedPages();
- }
-
}
diff --git a/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/custom-src/org/eclipse/papyrus/infra/core/sasheditor/di/contentprovider/commands/CloseDiagramCommand.java b/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/custom-src/org/eclipse/papyrus/infra/core/sasheditor/di/contentprovider/commands/CloseDiagramCommand.java
index 360a7076edc..a6fc28a9a8b 100644
--- a/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/custom-src/org/eclipse/papyrus/infra/core/sasheditor/di/contentprovider/commands/CloseDiagramCommand.java
+++ b/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/custom-src/org/eclipse/papyrus/infra/core/sasheditor/di/contentprovider/commands/CloseDiagramCommand.java
@@ -3,12 +3,8 @@ package org.eclipse.papyrus.infra.core.sasheditor.di.contentprovider.commands;
import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.papyrus.infra.core.sasheditor.contentprovider.IPageManager;
-import org.eclipse.papyrus.infra.core.sasheditor.editor.ISashWindowsContainer;
+import org.eclipse.papyrus.infra.core.sasheditor.di.contentprovider.utils.IPageUtils;
import org.eclipse.papyrus.infra.core.sasheditor.internal.SashWindowsContainer;
-import org.eclipse.papyrus.infra.core.sashwindows.di.PageRef;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.handlers.HandlerUtil;
/**
* A command to be used with the Eclipse Commands Framework.
@@ -25,7 +21,7 @@ public class CloseDiagramCommand extends AbstractHandler {
*/
@Override
public void setEnabled(Object evaluationContext) {
- // System.out.println("call to CloseDiagramCommand.setEnable(" + evaluationContext + ")");
+ setBaseEnabled(IPageUtils.canClose(new PageContext(evaluationContext).currentPage));
}
/**
@@ -34,22 +30,10 @@ public class CloseDiagramCommand extends AbstractHandler {
*/
@Override
public Object execute(ExecutionEvent event) throws ExecutionException {
+ PageContext context = new PageContext(event);
- try {
- IEditorPart part = HandlerUtil.getActiveEditor(event);
- IPageManager pageManager = (IPageManager) part.getAdapter(IPageManager.class);
- ISashWindowsContainer container = (ISashWindowsContainer) part.getAdapter(ISashWindowsContainer.class);
- Object pageIdentifier = container.getActiveSashWindowsPage().getRawModel();
- // FIXME Bug from sash Di to be corrected
- if (pageIdentifier instanceof PageRef) {
- pageIdentifier = ((PageRef) pageIdentifier).getPageIdentifier();
- }
-
- pageManager.closePage(pageIdentifier);
-
- } catch (NullPointerException e) {
- // PageMngr can't be found
- return null;
+ if (context.isValid() && IPageUtils.canClose(context.currentPage)) {
+ context.pageManager.closePage(context.currentPageIdentifier);
}
return null;
diff --git a/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/custom-src/org/eclipse/papyrus/infra/core/sasheditor/di/contentprovider/commands/CloseOtherDiagramsCommand.java b/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/custom-src/org/eclipse/papyrus/infra/core/sasheditor/di/contentprovider/commands/CloseOtherDiagramsCommand.java
index 4e7361ed378..9b3ead1b029 100644
--- a/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/custom-src/org/eclipse/papyrus/infra/core/sasheditor/di/contentprovider/commands/CloseOtherDiagramsCommand.java
+++ b/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/custom-src/org/eclipse/papyrus/infra/core/sasheditor/di/contentprovider/commands/CloseOtherDiagramsCommand.java
@@ -3,12 +3,7 @@ package org.eclipse.papyrus.infra.core.sasheditor.di.contentprovider.commands;
import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.papyrus.infra.core.sasheditor.contentprovider.IPageManager;
-import org.eclipse.papyrus.infra.core.sasheditor.editor.ISashWindowsContainer;
import org.eclipse.papyrus.infra.core.sasheditor.internal.SashWindowsContainer;
-import org.eclipse.papyrus.infra.core.sashwindows.di.PageRef;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.handlers.HandlerUtil;
/**
* A command to be used with the Eclipse Commands Framework.
@@ -25,7 +20,7 @@ public class CloseOtherDiagramsCommand extends AbstractHandler {
*/
@Override
public void setEnabled(Object evaluationContext) {
- // System.out.println("call to CloseDiagramCommand.setEnable(" + evaluationContext + ")");
+ setBaseEnabled(new PageContext(evaluationContext).getOpenPageCount() > 1);
}
/**
@@ -34,47 +29,13 @@ public class CloseOtherDiagramsCommand extends AbstractHandler {
*/
@Override
public Object execute(ExecutionEvent event) throws ExecutionException {
+ PageContext context = new PageContext(event);
- try {
- IEditorPart part = HandlerUtil.getActiveEditor(event);
- IPageManager pageManager = (IPageManager) part.getAdapter(IPageManager.class);
- ISashWindowsContainer container = (ISashWindowsContainer) part.getAdapter(ISashWindowsContainer.class);
- Object pageIdentifier = container.getActiveSashWindowsPage().getRawModel();
- // FIXME Bug from sash Di to be corrected
- if (pageIdentifier instanceof PageRef) {
- pageIdentifier = ((PageRef) pageIdentifier).getPageIdentifier();
- }
- execute(pageManager, pageIdentifier);
-
- } catch (NullPointerException e) {
- // PageMngr can't be found
- return null;
+ if (context.isValid() && (context.getOpenPageCount() > 1)) {
+ context.pageManager.closeOtherPages(context.currentPageIdentifier);
}
-
-
return null;
}
- /**
- * Close selected page.
- *
- * @param pageManager
- */
- public void execute(final IPageManager pageManager, final Object pageIdentifier) {
- boolean atLeastOneDifferentPageOpen = false;
- for (Object page : pageManager.allPages()) {
- if (page != pageIdentifier && pageManager.isOpen(page)) {
- atLeastOneDifferentPageOpen = true;
- break;
- }
- }
-
- if (!atLeastOneDifferentPageOpen) {
- return; // Nothing to do
- }
-
- pageManager.closeOtherPages(pageIdentifier);
- }
-
}
diff --git a/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/custom-src/org/eclipse/papyrus/infra/core/sasheditor/di/contentprovider/commands/PageContext.java b/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/custom-src/org/eclipse/papyrus/infra/core/sasheditor/di/contentprovider/commands/PageContext.java
new file mode 100644
index 00000000000..e64c3890932
--- /dev/null
+++ b/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/custom-src/org/eclipse/papyrus/infra/core/sasheditor/di/contentprovider/commands/PageContext.java
@@ -0,0 +1,98 @@
+/*****************************************************************************
+ * Copyright (c) 2015 Christian W. Damus 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:
+ * Christian W. Damus - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.infra.core.sasheditor.di.contentprovider.commands;
+
+import java.util.Collection;
+import java.util.Collections;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.papyrus.infra.core.sasheditor.contentprovider.IPageManager;
+import org.eclipse.papyrus.infra.core.sasheditor.di.contentprovider.utils.IPageUtils;
+import org.eclipse.papyrus.infra.core.sasheditor.editor.IComponentPage;
+import org.eclipse.papyrus.infra.core.sasheditor.editor.IEditorPage;
+import org.eclipse.papyrus.infra.core.sasheditor.editor.IPage;
+import org.eclipse.papyrus.infra.core.sasheditor.editor.IPageVisitor;
+import org.eclipse.papyrus.infra.core.sasheditor.editor.ISashWindowsContainer;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.ISources;
+import org.eclipse.ui.handlers.HandlerUtil;
+
+/**
+ * A convenient aggregation of objects needed for processing page management commands
+ * in the context of the Papyrus multi-diagram editor.
+ */
+class PageContext {
+ final IEditorPart editor;
+ final IPageManager pageManager;
+ final ISashWindowsContainer sashContainer;
+ final Object currentPageIdentifier;
+ final IPage currentPage;
+
+ PageContext(ExecutionEvent event) {
+ this(HandlerUtil.getActiveEditor(event));
+ }
+
+ PageContext(Object evaluationContext) {
+ this((IEditorPart) HandlerUtil.getVariable(evaluationContext, ISources.ACTIVE_EDITOR_NAME));
+ }
+
+ PageContext(IEditorPart activeEditor) {
+ super();
+
+ editor = activeEditor;
+ sashContainer = (activeEditor == null) ? null : activeEditor.getAdapter(ISashWindowsContainer.class);
+
+ if ((sashContainer == null) || sashContainer.isDisposed()) {
+ pageManager = null;
+ currentPage = null;
+ currentPageIdentifier = null;
+ } else {
+ pageManager = activeEditor.getAdapter(IPageManager.class);
+ currentPage = sashContainer.getActiveSashWindowsPage();
+ currentPageIdentifier = (currentPage == null) ? null : IPageUtils.getRawModel(currentPage);
+ }
+ }
+
+ boolean isValid() {
+ return (pageManager != null) && (currentPageIdentifier != null) && (sashContainer != null);
+ }
+
+ int getOpenPageCount() {
+ return getOpenPages().size();
+ }
+
+ Collection<IPage> getOpenPages() {
+ Collection<IPage> result;
+
+ if (!isValid()) {
+ result = Collections.emptyList();
+ } else {
+ result = new java.util.ArrayList<>();
+ sashContainer.visit(new IPageVisitor() {
+
+ @Override
+ public void accept(IEditorPage page) {
+ result.add(page);
+ }
+
+ @Override
+ public void accept(IComponentPage page) {
+ result.add(page);
+ }
+ });
+ }
+
+ return result;
+ }
+}
diff --git a/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/custom-src/org/eclipse/papyrus/infra/core/sasheditor/di/contentprovider/utils/IPageUtils.java b/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/custom-src/org/eclipse/papyrus/infra/core/sasheditor/di/contentprovider/utils/IPageUtils.java
index b0e607df076..cac86d97047 100644
--- a/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/custom-src/org/eclipse/papyrus/infra/core/sasheditor/di/contentprovider/utils/IPageUtils.java
+++ b/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/custom-src/org/eclipse/papyrus/infra/core/sasheditor/di/contentprovider/utils/IPageUtils.java
@@ -1,5 +1,5 @@
/*****************************************************************************
- * Copyright (c) 2010, 2014 LIFL, CEA LIST, and others.
+ * Copyright (c) 2010, 2015 LIFL, CEA LIST, Christian W. Damus, and others.
*
*
* All rights reserved. This program and the accompanying materials
@@ -10,6 +10,7 @@
* Contributors:
* Cedric Dumoulin (LIFL) cedric.dumoulin@lifl.fr - Initial API and implementation
* Christian W. Damus (CEA) - bug 433371
+ * Christian W. Damus - bug 469188
*
*****************************************************************************/
@@ -18,6 +19,7 @@ package org.eclipse.papyrus.infra.core.sasheditor.di.contentprovider.utils;
import java.util.HashMap;
import java.util.Map;
+import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.emf.common.command.Command;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.transaction.RecordingCommand;
@@ -25,6 +27,7 @@ import org.eclipse.emf.transaction.TransactionalEditingDomain;
import org.eclipse.papyrus.infra.core.sasheditor.contentprovider.IPageManager;
import org.eclipse.papyrus.infra.core.sasheditor.di.contentprovider.internal.PageManagerImpl;
import org.eclipse.papyrus.infra.core.sasheditor.di.contentprovider.internal.PageManagerImpl.SashModelOperation;
+import org.eclipse.papyrus.infra.core.sasheditor.editor.ICloseablePart;
import org.eclipse.papyrus.infra.core.sasheditor.editor.IPage;
import org.eclipse.papyrus.infra.core.sasheditor.editor.ISashWindowsContainer;
import org.eclipse.papyrus.infra.core.sashwindows.di.PageRef;
@@ -57,8 +60,7 @@ public class IPageUtils {
Object pageModel = page.getRawModel();
// Get the real model because of bug
- if (pageModel instanceof PageRef)
- {
+ if (pageModel instanceof PageRef) {
return ((PageRef) pageModel).getPageIdentifier();
}
// do not use trick
@@ -164,4 +166,19 @@ public class IPageUtils {
throw new IllegalAccessError(e.getLocalizedMessage());
}
}
+
+ /**
+ * Queries whether the user should be permitted to close a {@code page}.
+ *
+ * @param page
+ * a page
+ * @return whether it can be closed
+ */
+ public static boolean canClose(IPage page) {
+ ICloseablePart closeable = (page instanceof IAdaptable)
+ ? ((IAdaptable) page).getAdapter(ICloseablePart.class)
+ : null;
+
+ return (closeable == null) || closeable.canClose();
+ }
}
diff --git a/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/model/di.ecore b/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/model/di.ecore
index 1b572ac2299..42cbafe650a 100644
--- a/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/model/di.ecore
+++ b/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/model/di.ecore
@@ -76,6 +76,8 @@
upperBound="-1" eType="#//Window" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="currentSelection" ordered="false"
unique="false" lowerBound="1" eType="#//TabFolder"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="restoreActivePage" ordered="false"
+ lowerBound="1" eType="#//boolean"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Window" eSuperTypes="#//PanelParent">
<eStructuralFeatures xsi:type="ecore:EReference" name="position" ordered="false"
@@ -143,6 +145,10 @@
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="children" ordered="false"
upperBound="-1" eType="#//PageRef" containment="true" eOpposite="#//PageRef/parent"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="currentSelection" ordered="false"
+ eType="#//PageRef">
+ <eAnnotations source="subsets" references="#//TabFolder/children"/>
+ </eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="PageRef">
<eOperations name="isForIdentifier" ordered="false" lowerBound="1" eType="#//boolean">
diff --git a/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/model/sashwindowsdi.genmodel b/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/model/sashwindowsdi.genmodel
index 2b4d21d3967..1673dbb947d 100644
--- a/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/model/sashwindowsdi.genmodel
+++ b/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/model/sashwindowsdi.genmodel
@@ -3,21 +3,22 @@
xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:genmodel="http://www.eclipse.org/uml2/2.2.0/GenModel"
modelDirectory="/org.eclipse.papyrus.infra.core.sasheditor.di/src"
modelPluginID="org.eclipse.papyrus.infra.core.sasheditor.di" modelName="Sashwindowsdi"
- importerID="org.eclipse.uml2.uml.ecore.importer" complianceLevel="5.0" copyrightFields="false"
- usedGenPackages="platform:/plugin/org.eclipse.emf.ecore/model/Ecore.genmodel#//ecore ../../org.eclipse.uml2.types/model/Types.genmodel#//types">
+ codeFormatting="true" commentFormatting="true" importerID="org.eclipse.uml2.uml.ecore.importer"
+ complianceLevel="5.0" copyrightFields="false" usedGenPackages="platform:/plugin/org.eclipse.emf.ecore/model/Ecore.genmodel#//ecore ../../org.eclipse.uml2.types/model/Types.genmodel#//types"
+ cleanup="true">
<genAnnotations source="http://www.eclipse.org/emf/2002/GenModel/importer/org.eclipse.uml2.uml.ecore.importer">
<details key="ECORE_TAGGED_VALUES" value="PROCESS"/>
- <details key="UNION_PROPERTIES" value="REPORT"/>
+ <details key="UNION_PROPERTIES" value="PROCESS"/>
<details key="DUPLICATE_FEATURES" value="DISCARD"/>
- <details key="SUBSETTING_PROPERTIES" value="REPORT"/>
+ <details key="SUBSETTING_PROPERTIES" value="PROCESS"/>
<details key="COMMENTS" value="PROCESS"/>
<details key="DUPLICATE_FEATURE_INHERITANCE" value="DISCARD"/>
<details key="DUPLICATE_OPERATIONS" value="DISCARD"/>
<details key="INVARIANT_CONSTRAINTS" value="PROCESS"/>
- <details key="REDEFINING_PROPERTIES" value="REPORT"/>
+ <details key="REDEFINING_PROPERTIES" value="PROCESS"/>
<details key="ANNOTATION_DETAILS" value="PROCESS"/>
<details key="DUPLICATE_OPERATION_INHERITANCE" value="DISCARD"/>
- <details key="REDEFINING_OPERATIONS" value="REPORT"/>
+ <details key="REDEFINING_OPERATIONS" value="PROCESS"/>
<details key="DERIVED_FEATURES" value="PROCESS"/>
<details key="OPERATION_BODIES" value="IGNORE"/>
<details key="CAMEL_CASE_NAMES" value="IGNORE"/>
@@ -41,6 +42,7 @@
createChild="true" ecoreFeature="ecore:EReference di.ecore#//SashModel/windows"/>
<genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
propertySortChoices="true" ecoreFeature="ecore:EReference di.ecore#//SashModel/currentSelection"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute di.ecore#//SashModel/restoreActivePage"/>
<genOperations xsi:type="genmodel:GenOperation" ecoreOperation="di.ecore#//SashModel/addPage">
<genParameters xsi:type="genmodel:GenParameter" ecoreParameter="di.ecore#//SashModel/addPage/pageIdentifier"/>
</genOperations>
@@ -121,6 +123,8 @@
<genClasses xsi:type="genmodel:GenClass" ecoreClass="di.ecore#//TabFolder">
<genFeatures xsi:type="genmodel:GenFeature" property="None" children="true"
createChild="true" ecoreFeature="ecore:EReference di.ecore#//TabFolder/children"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="true" propertySortChoices="true"
+ ecoreFeature="ecore:EReference di.ecore#//TabFolder/currentSelection"/>
<genOperations xsi:type="genmodel:GenOperation" ecoreOperation="di.ecore#//TabFolder/movePage">
<genParameters xsi:type="genmodel:GenParameter" ecoreParameter="di.ecore#//TabFolder/movePage/oldIndex"/>
<genParameters xsi:type="genmodel:GenParameter" ecoreParameter="di.ecore#//TabFolder/movePage/newIndex"/>
diff --git a/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/model/sashwindowsdi.notation b/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/model/sashwindowsdi.notation
index 54eb7fe90d0..a2058c1d7fc 100644
--- a/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/model/sashwindowsdi.notation
+++ b/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/model/sashwindowsdi.notation
@@ -1,1191 +1,1256 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML">
- <notation:Diagram xmi:id="_xRNpEGyFEeKx9Kegn5X27A" type="PapyrusUMLClassDiagram" name="overview" measurementUnit="Pixel">
- <children xmi:type="notation:Shape" xmi:id="_z0HqsGyFEeKx9Kegn5X27A" type="2008" fontName="Segoe UI" lineColor="0">
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_z0RbsGyFEeKx9Kegn5X27A" source="ShadowFigure">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_z0RbsWyFEeKx9Kegn5X27A" key="ShadowFigure_Value" value="false"/>
- </eAnnotations>
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_z0RbsmyFEeKx9Kegn5X27A" source="displayNameLabelIcon">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_z0Rbs2yFEeKx9Kegn5X27A" key="displayNameLabelIcon_value" value="false"/>
- </eAnnotations>
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_z0RbtGyFEeKx9Kegn5X27A" source="QualifiedName">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_z0RbtWyFEeKx9Kegn5X27A" key="QualifiedNameDepth" value="1000"/>
- </eAnnotations>
- <children xmi:type="notation:DecorationNode" xmi:id="_z0RbtmyFEeKx9Kegn5X27A" type="5029"/>
- <children xmi:type="notation:BasicCompartment" xmi:id="_z0Rbt2yFEeKx9Kegn5X27A" type="7017">
- <styles xmi:type="notation:TitleStyle" xmi:id="_z0RbuGyFEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:SortingStyle" xmi:id="_z0RbuWyFEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:FilteringStyle" xmi:id="_z0RbumyFEeKx9Kegn5X27A"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_z0Rbu2yFEeKx9Kegn5X27A"/>
- </children>
- <children xmi:type="notation:BasicCompartment" xmi:id="_z0RbvGyFEeKx9Kegn5X27A" type="7018">
- <styles xmi:type="notation:TitleStyle" xmi:id="_z0RbvWyFEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:SortingStyle" xmi:id="_z0RbvmyFEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:FilteringStyle" xmi:id="_z0Rbv2yFEeKx9Kegn5X27A"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_z0RbwGyFEeKx9Kegn5X27A"/>
- </children>
- <children xmi:type="notation:BasicCompartment" xmi:id="_z0RbwWyFEeKx9Kegn5X27A" type="7019">
- <styles xmi:type="notation:TitleStyle" xmi:id="_z0RbwmyFEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:SortingStyle" xmi:id="_z0Rbw2yFEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:FilteringStyle" xmi:id="_z0RbxGyFEeKx9Kegn5X27A"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_z0RbxWyFEeKx9Kegn5X27A"/>
- </children>
- <children xmi:type="notation:DecorationNode" xmi:id="_Dd9EgFViEeWe8LyZrqaAug" type="8510">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_Dd9EgVViEeWe8LyZrqaAug" y="5"/>
- </children>
- <element xmi:type="uml:Class" href="sashwindowsdi.uml#_Xa5wIEJVEd6kIY39uis5Uw"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_z0HqsWyFEeKx9Kegn5X27A" x="498" y="216"/>
- </children>
- <children xmi:type="notation:Shape" xmi:id="_z1T9gGyFEeKx9Kegn5X27A" type="2008" fontName="Segoe UI" lineColor="0">
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_z1T9gmyFEeKx9Kegn5X27A" source="ShadowFigure">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_z1T9g2yFEeKx9Kegn5X27A" key="ShadowFigure_Value" value="false"/>
- </eAnnotations>
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_z1T9hGyFEeKx9Kegn5X27A" source="displayNameLabelIcon">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_z1T9hWyFEeKx9Kegn5X27A" key="displayNameLabelIcon_value" value="false"/>
- </eAnnotations>
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_z1T9hmyFEeKx9Kegn5X27A" source="QualifiedName">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_z1T9h2yFEeKx9Kegn5X27A" key="QualifiedNameDepth" value="1000"/>
- </eAnnotations>
- <children xmi:type="notation:DecorationNode" xmi:id="_z1T9iGyFEeKx9Kegn5X27A" type="5029"/>
- <children xmi:type="notation:BasicCompartment" xmi:id="_z1T9iWyFEeKx9Kegn5X27A" type="7017">
- <styles xmi:type="notation:TitleStyle" xmi:id="_z1T9imyFEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:SortingStyle" xmi:id="_z1T9i2yFEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:FilteringStyle" xmi:id="_z1T9jGyFEeKx9Kegn5X27A"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_z1T9jWyFEeKx9Kegn5X27A"/>
- </children>
- <children xmi:type="notation:BasicCompartment" xmi:id="_z1T9jmyFEeKx9Kegn5X27A" type="7018">
- <styles xmi:type="notation:TitleStyle" xmi:id="_z1T9j2yFEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:SortingStyle" xmi:id="_z1T9kGyFEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:FilteringStyle" xmi:id="_z1T9kWyFEeKx9Kegn5X27A"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_z1T9kmyFEeKx9Kegn5X27A"/>
- </children>
- <children xmi:type="notation:BasicCompartment" xmi:id="_z1T9k2yFEeKx9Kegn5X27A" type="7019">
- <styles xmi:type="notation:TitleStyle" xmi:id="_z1T9lGyFEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:SortingStyle" xmi:id="_z1T9lWyFEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:FilteringStyle" xmi:id="_z1T9lmyFEeKx9Kegn5X27A"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_z1T9l2yFEeKx9Kegn5X27A"/>
- </children>
- <children xmi:type="notation:DecorationNode" xmi:id="_Dd9EglViEeWe8LyZrqaAug" type="8510">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_Dd9Eg1ViEeWe8LyZrqaAug" y="5"/>
- </children>
- <element xmi:type="uml:Class" href="sashwindowsdi.uml#_UiIMMEJVEd6kIY39uis5Uw"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_z1T9gWyFEeKx9Kegn5X27A" x="276" y="216"/>
- </children>
- <children xmi:type="notation:Shape" xmi:id="_4bTRMGyFEeKx9Kegn5X27A" type="2008" fontName="Segoe UI" lineColor="0">
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_4bTRMmyFEeKx9Kegn5X27A" source="ShadowFigure">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4bTRM2yFEeKx9Kegn5X27A" key="ShadowFigure_Value" value="false"/>
- </eAnnotations>
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_4bcbIGyFEeKx9Kegn5X27A" source="displayNameLabelIcon">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4bcbIWyFEeKx9Kegn5X27A" key="displayNameLabelIcon_value" value="false"/>
- </eAnnotations>
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_4bcbImyFEeKx9Kegn5X27A" source="QualifiedName">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4bcbI2yFEeKx9Kegn5X27A" key="QualifiedNameDepth" value="1000"/>
- </eAnnotations>
- <children xmi:type="notation:DecorationNode" xmi:id="_4bcbJGyFEeKx9Kegn5X27A" type="5029"/>
- <children xmi:type="notation:BasicCompartment" xmi:id="_4bcbJWyFEeKx9Kegn5X27A" type="7017">
- <styles xmi:type="notation:TitleStyle" xmi:id="_4bcbJmyFEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:SortingStyle" xmi:id="_4bcbJ2yFEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:FilteringStyle" xmi:id="_4bcbKGyFEeKx9Kegn5X27A"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_4bcbKWyFEeKx9Kegn5X27A"/>
- </children>
- <children xmi:type="notation:BasicCompartment" xmi:id="_4bcbKmyFEeKx9Kegn5X27A" type="7018">
- <styles xmi:type="notation:TitleStyle" xmi:id="_4bcbK2yFEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:SortingStyle" xmi:id="_4bcbLGyFEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:FilteringStyle" xmi:id="_4bcbLWyFEeKx9Kegn5X27A"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_4bcbLmyFEeKx9Kegn5X27A"/>
- </children>
- <children xmi:type="notation:BasicCompartment" xmi:id="_4bcbL2yFEeKx9Kegn5X27A" type="7019">
- <styles xmi:type="notation:TitleStyle" xmi:id="_4bcbMGyFEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:SortingStyle" xmi:id="_4bcbMWyFEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:FilteringStyle" xmi:id="_4bcbMmyFEeKx9Kegn5X27A"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_4bcbM2yFEeKx9Kegn5X27A"/>
- </children>
- <children xmi:type="notation:DecorationNode" xmi:id="_Dd9EhFViEeWe8LyZrqaAug" type="8510">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_Dd9EhVViEeWe8LyZrqaAug" y="5"/>
- </children>
- <element xmi:type="uml:Class" href="sashwindowsdi.uml#_fbWYgEJVEd6kIY39uis5Uw"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_4bTRMWyFEeKx9Kegn5X27A" x="936" y="222"/>
- </children>
- <children xmi:type="notation:Shape" xmi:id="_6BzU8GyFEeKx9Kegn5X27A" type="2008" fontName="Segoe UI" lineColor="0">
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6BzU8myFEeKx9Kegn5X27A" source="ShadowFigure">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6BzU82yFEeKx9Kegn5X27A" key="ShadowFigure_Value" value="false"/>
- </eAnnotations>
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6BzU9GyFEeKx9Kegn5X27A" source="displayNameLabelIcon">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6BzU9WyFEeKx9Kegn5X27A" key="displayNameLabelIcon_value" value="false"/>
- </eAnnotations>
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6BzU9myFEeKx9Kegn5X27A" source="QualifiedName">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6BzU92yFEeKx9Kegn5X27A" key="QualifiedNameDepth" value="1000"/>
- </eAnnotations>
- <children xmi:type="notation:DecorationNode" xmi:id="_6BzU-GyFEeKx9Kegn5X27A" type="5029"/>
- <children xmi:type="notation:BasicCompartment" xmi:id="_6BzU-WyFEeKx9Kegn5X27A" type="7017">
- <styles xmi:type="notation:TitleStyle" xmi:id="_6BzU-myFEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:SortingStyle" xmi:id="_6BzU-2yFEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:FilteringStyle" xmi:id="_6BzU_GyFEeKx9Kegn5X27A"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6BzU_WyFEeKx9Kegn5X27A"/>
- </children>
- <children xmi:type="notation:BasicCompartment" xmi:id="_6BzU_myFEeKx9Kegn5X27A" type="7018">
- <styles xmi:type="notation:TitleStyle" xmi:id="_6BzU_2yFEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:SortingStyle" xmi:id="_6BzVAGyFEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:FilteringStyle" xmi:id="_6BzVAWyFEeKx9Kegn5X27A"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6BzVAmyFEeKx9Kegn5X27A"/>
- </children>
- <children xmi:type="notation:BasicCompartment" xmi:id="_6BzVA2yFEeKx9Kegn5X27A" type="7019">
- <styles xmi:type="notation:TitleStyle" xmi:id="_6BzVBGyFEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:SortingStyle" xmi:id="_6BzVBWyFEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:FilteringStyle" xmi:id="_6BzVBmyFEeKx9Kegn5X27A"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6BzVB2yFEeKx9Kegn5X27A"/>
- </children>
- <children xmi:type="notation:DecorationNode" xmi:id="_Dd9EhlViEeWe8LyZrqaAug" type="8510">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_Dd9Eh1ViEeWe8LyZrqaAug" y="5"/>
- </children>
- <element xmi:type="uml:Class" href="sashwindowsdi.uml#_Zx2ZYEJVEd6kIY39uis5Uw"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6BzU8WyFEeKx9Kegn5X27A" x="936" y="48"/>
- </children>
- <children xmi:type="notation:Shape" xmi:id="_6Ci70GyFEeKx9Kegn5X27A" type="2008" fontName="Segoe UI" lineColor="0">
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6Ci70myFEeKx9Kegn5X27A" source="ShadowFigure">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6Ci702yFEeKx9Kegn5X27A" key="ShadowFigure_Value" value="false"/>
- </eAnnotations>
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6Ci71GyFEeKx9Kegn5X27A" source="displayNameLabelIcon">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6Ci71WyFEeKx9Kegn5X27A" key="displayNameLabelIcon_value" value="false"/>
- </eAnnotations>
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6Ci71myFEeKx9Kegn5X27A" source="QualifiedName">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6Ci712yFEeKx9Kegn5X27A" key="QualifiedNameDepth" value="1000"/>
- </eAnnotations>
- <children xmi:type="notation:DecorationNode" xmi:id="_6Ci72GyFEeKx9Kegn5X27A" type="5029"/>
- <children xmi:type="notation:BasicCompartment" xmi:id="_6Ci72WyFEeKx9Kegn5X27A" type="7017">
- <styles xmi:type="notation:TitleStyle" xmi:id="_6Ci72myFEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:SortingStyle" xmi:id="_6Ci722yFEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:FilteringStyle" xmi:id="_6Ci73GyFEeKx9Kegn5X27A"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6Ci73WyFEeKx9Kegn5X27A"/>
- </children>
- <children xmi:type="notation:BasicCompartment" xmi:id="_6Ci73myFEeKx9Kegn5X27A" type="7018">
- <styles xmi:type="notation:TitleStyle" xmi:id="_6Ci732yFEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:SortingStyle" xmi:id="_6Ci74GyFEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:FilteringStyle" xmi:id="_6Ci74WyFEeKx9Kegn5X27A"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6Ci74myFEeKx9Kegn5X27A"/>
- </children>
- <children xmi:type="notation:BasicCompartment" xmi:id="_6Ci742yFEeKx9Kegn5X27A" type="7019">
- <styles xmi:type="notation:TitleStyle" xmi:id="_6Ci75GyFEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:SortingStyle" xmi:id="_6Ci75WyFEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:FilteringStyle" xmi:id="_6Ci75myFEeKx9Kegn5X27A"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6Ci752yFEeKx9Kegn5X27A"/>
- </children>
- <children xmi:type="notation:DecorationNode" xmi:id="_Dd9EiFViEeWe8LyZrqaAug" type="8510">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_Dd9EiVViEeWe8LyZrqaAug" y="5"/>
- </children>
- <element xmi:type="uml:Class" href="sashwindowsdi.uml#_86BAgEJWEd6kIY39uis5Uw"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6Ci70WyFEeKx9Kegn5X27A" x="726" y="48"/>
- </children>
- <children xmi:type="notation:Shape" xmi:id="_6knuIGyFEeKx9Kegn5X27A" type="2008" fontName="Segoe UI" lineColor="0">
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6knuImyFEeKx9Kegn5X27A" source="ShadowFigure">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6knuI2yFEeKx9Kegn5X27A" key="ShadowFigure_Value" value="false"/>
- </eAnnotations>
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6knuJGyFEeKx9Kegn5X27A" source="displayNameLabelIcon">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6knuJWyFEeKx9Kegn5X27A" key="displayNameLabelIcon_value" value="false"/>
- </eAnnotations>
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6knuJmyFEeKx9Kegn5X27A" source="QualifiedName">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6knuJ2yFEeKx9Kegn5X27A" key="QualifiedNameDepth" value="1000"/>
- </eAnnotations>
- <children xmi:type="notation:DecorationNode" xmi:id="_6knuKGyFEeKx9Kegn5X27A" type="5029"/>
- <children xmi:type="notation:BasicCompartment" xmi:id="_6knuKWyFEeKx9Kegn5X27A" type="7017">
- <children xmi:type="notation:Shape" xmi:id="_RHjtwFViEeWe8LyZrqaAug" type="3012">
- <element xmi:type="uml:Property" href="sashwindowsdi.uml#_RGhL8FViEeWe8LyZrqaAug"/>
- <layoutConstraint xmi:type="notation:Location" xmi:id="_RHjtwVViEeWe8LyZrqaAug"/>
- </children>
- <styles xmi:type="notation:TitleStyle" xmi:id="_6knuKmyFEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:SortingStyle" xmi:id="_6knuK2yFEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:FilteringStyle" xmi:id="_6knuLGyFEeKx9Kegn5X27A"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6knuLWyFEeKx9Kegn5X27A"/>
- </children>
- <children xmi:type="notation:BasicCompartment" xmi:id="_6knuLmyFEeKx9Kegn5X27A" type="7018">
- <styles xmi:type="notation:TitleStyle" xmi:id="_6knuL2yFEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:SortingStyle" xmi:id="_6knuMGyFEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:FilteringStyle" xmi:id="_6knuMWyFEeKx9Kegn5X27A"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6knuMmyFEeKx9Kegn5X27A"/>
- </children>
- <children xmi:type="notation:BasicCompartment" xmi:id="_6knuM2yFEeKx9Kegn5X27A" type="7019">
- <styles xmi:type="notation:TitleStyle" xmi:id="_6knuNGyFEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:SortingStyle" xmi:id="_6knuNWyFEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:FilteringStyle" xmi:id="_6knuNmyFEeKx9Kegn5X27A"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6knuN2yFEeKx9Kegn5X27A"/>
- </children>
- <children xmi:type="notation:DecorationNode" xmi:id="_Dd9EilViEeWe8LyZrqaAug" type="8510">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_Dd9Ei1ViEeWe8LyZrqaAug" y="5"/>
- </children>
- <element xmi:type="uml:Class" href="sashwindowsdi.uml#_h_HVwEJVEd6kIY39uis5Uw"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6knuIWyFEeKx9Kegn5X27A" x="909" y="522"/>
- </children>
- <children xmi:type="notation:Shape" xmi:id="_CZQIEGyGEeKx9Kegn5X27A" type="2008" fontName="Segoe UI" lineColor="0">
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_CZQIEmyGEeKx9Kegn5X27A" source="ShadowFigure">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_CZQIE2yGEeKx9Kegn5X27A" key="ShadowFigure_Value" value="false"/>
- </eAnnotations>
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_CZQIFGyGEeKx9Kegn5X27A" source="displayNameLabelIcon">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_CZQIFWyGEeKx9Kegn5X27A" key="displayNameLabelIcon_value" value="false"/>
- </eAnnotations>
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_CZQIFmyGEeKx9Kegn5X27A" source="QualifiedName">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_CZQIF2yGEeKx9Kegn5X27A" key="QualifiedNameDepth" value="1000"/>
- </eAnnotations>
- <children xmi:type="notation:DecorationNode" xmi:id="_CZQIGGyGEeKx9Kegn5X27A" type="5029"/>
- <children xmi:type="notation:BasicCompartment" xmi:id="_CZQIGWyGEeKx9Kegn5X27A" type="7017">
- <styles xmi:type="notation:TitleStyle" xmi:id="_CZQIGmyGEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:SortingStyle" xmi:id="_CZQIG2yGEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:FilteringStyle" xmi:id="_CZQIHGyGEeKx9Kegn5X27A"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CZQIHWyGEeKx9Kegn5X27A"/>
- </children>
- <children xmi:type="notation:BasicCompartment" xmi:id="_CZQIHmyGEeKx9Kegn5X27A" type="7018">
- <styles xmi:type="notation:TitleStyle" xmi:id="_CZQIH2yGEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:SortingStyle" xmi:id="_CZQIIGyGEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:FilteringStyle" xmi:id="_CZQIIWyGEeKx9Kegn5X27A"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CZQIImyGEeKx9Kegn5X27A"/>
- </children>
- <children xmi:type="notation:BasicCompartment" xmi:id="_CZQII2yGEeKx9Kegn5X27A" type="7019">
- <styles xmi:type="notation:TitleStyle" xmi:id="_CZQIJGyGEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:SortingStyle" xmi:id="_CZQIJWyGEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:FilteringStyle" xmi:id="_CZQIJmyGEeKx9Kegn5X27A"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CZQIJ2yGEeKx9Kegn5X27A"/>
- </children>
- <children xmi:type="notation:DecorationNode" xmi:id="_Dd9EjFViEeWe8LyZrqaAug" type="8510">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_Dd9EjVViEeWe8LyZrqaAug" y="5"/>
- </children>
- <element xmi:type="uml:Class" href="sashwindowsdi.uml#_eE7YIEJVEd6kIY39uis5Uw"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CZQIEWyGEeKx9Kegn5X27A" x="732" y="216"/>
- </children>
- <children xmi:type="notation:Shape" xmi:id="_QHBfoGyGEeKx9Kegn5X27A" type="2008" fontName="Segoe UI" lineColor="0">
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_QHBfomyGEeKx9Kegn5X27A" source="ShadowFigure">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_QHBfo2yGEeKx9Kegn5X27A" key="ShadowFigure_Value" value="false"/>
- </eAnnotations>
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_QHBfpGyGEeKx9Kegn5X27A" source="displayNameLabelIcon">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_QHBfpWyGEeKx9Kegn5X27A" key="displayNameLabelIcon_value" value="false"/>
- </eAnnotations>
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_QHBfpmyGEeKx9Kegn5X27A" source="QualifiedName">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_QHBfp2yGEeKx9Kegn5X27A" key="QualifiedNameDepth" value="1000"/>
- </eAnnotations>
- <children xmi:type="notation:DecorationNode" xmi:id="_QHKpkGyGEeKx9Kegn5X27A" type="5029"/>
- <children xmi:type="notation:BasicCompartment" xmi:id="_QHKpkWyGEeKx9Kegn5X27A" type="7017">
- <styles xmi:type="notation:TitleStyle" xmi:id="_QHKpkmyGEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:SortingStyle" xmi:id="_QHKpk2yGEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:FilteringStyle" xmi:id="_QHKplGyGEeKx9Kegn5X27A"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QHKplWyGEeKx9Kegn5X27A"/>
- </children>
- <children xmi:type="notation:BasicCompartment" xmi:id="_QHKplmyGEeKx9Kegn5X27A" type="7018">
- <styles xmi:type="notation:TitleStyle" xmi:id="_QHKpl2yGEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:SortingStyle" xmi:id="_QHKpmGyGEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:FilteringStyle" xmi:id="_QHKpmWyGEeKx9Kegn5X27A"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QHKpmmyGEeKx9Kegn5X27A"/>
- </children>
- <children xmi:type="notation:BasicCompartment" xmi:id="_QHKpm2yGEeKx9Kegn5X27A" type="7019">
- <styles xmi:type="notation:TitleStyle" xmi:id="_QHKpnGyGEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:SortingStyle" xmi:id="_QHKpnWyGEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:FilteringStyle" xmi:id="_QHKpnmyGEeKx9Kegn5X27A"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QHKpn2yGEeKx9Kegn5X27A"/>
- </children>
- <children xmi:type="notation:DecorationNode" xmi:id="_Dd9EjlViEeWe8LyZrqaAug" type="8510">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_Dd9Ej1ViEeWe8LyZrqaAug" y="5"/>
- </children>
- <element xmi:type="uml:Class" href="sashwindowsdi.uml#_b7a4cEMaEd6kIY39uis5Uw"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QHBfoWyGEeKx9Kegn5X27A" x="294" y="516"/>
- </children>
- <children xmi:type="notation:Shape" xmi:id="_eHZDEGyGEeKx9Kegn5X27A" type="2008" fontName="Segoe UI" lineColor="0">
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_eHZDEmyGEeKx9Kegn5X27A" source="ShadowFigure">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_eHZDE2yGEeKx9Kegn5X27A" key="ShadowFigure_Value" value="false"/>
- </eAnnotations>
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_eHZDFGyGEeKx9Kegn5X27A" source="displayNameLabelIcon">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_eHZDFWyGEeKx9Kegn5X27A" key="displayNameLabelIcon_value" value="false"/>
- </eAnnotations>
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_eHZDFmyGEeKx9Kegn5X27A" source="QualifiedName">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_eHZDF2yGEeKx9Kegn5X27A" key="QualifiedNameDepth" value="1000"/>
- </eAnnotations>
- <children xmi:type="notation:DecorationNode" xmi:id="_eHZDGGyGEeKx9Kegn5X27A" type="5029"/>
- <children xmi:type="notation:BasicCompartment" xmi:id="_eHZDGWyGEeKx9Kegn5X27A" type="7017">
- <styles xmi:type="notation:TitleStyle" xmi:id="_eHZDGmyGEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:SortingStyle" xmi:id="_eHZDG2yGEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:FilteringStyle" xmi:id="_eHZDHGyGEeKx9Kegn5X27A"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_eHZDHWyGEeKx9Kegn5X27A"/>
- </children>
- <children xmi:type="notation:BasicCompartment" xmi:id="_eHZDHmyGEeKx9Kegn5X27A" type="7018">
- <styles xmi:type="notation:TitleStyle" xmi:id="_eHZDH2yGEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:SortingStyle" xmi:id="_eHZDIGyGEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:FilteringStyle" xmi:id="_eHZDIWyGEeKx9Kegn5X27A"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_eHZDImyGEeKx9Kegn5X27A"/>
- </children>
- <children xmi:type="notation:BasicCompartment" xmi:id="_eHZDI2yGEeKx9Kegn5X27A" type="7019">
- <styles xmi:type="notation:TitleStyle" xmi:id="_eHZDJGyGEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:SortingStyle" xmi:id="_eHZDJWyGEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:FilteringStyle" xmi:id="_eHZDJmyGEeKx9Kegn5X27A"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_eHZDJ2yGEeKx9Kegn5X27A"/>
- </children>
- <children xmi:type="notation:DecorationNode" xmi:id="_Dd9EkFViEeWe8LyZrqaAug" type="8510">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_Dd9EkVViEeWe8LyZrqaAug" y="5"/>
- </children>
- <element xmi:type="uml:Class" href="sashwindowsdi.uml#_-9vywEMaEd6kIY39uis5Uw"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_eHZDEWyGEeKx9Kegn5X27A" x="24" y="222"/>
- </children>
- <children xmi:type="notation:Shape" xmi:id="__nlxYGyIEeKx9Kegn5X27A" type="2008" fontName="Segoe UI" lineColor="0">
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__nlxYmyIEeKx9Kegn5X27A" source="ShadowFigure">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__nlxY2yIEeKx9Kegn5X27A" key="ShadowFigure_Value" value="false"/>
- </eAnnotations>
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__nlxZGyIEeKx9Kegn5X27A" source="displayNameLabelIcon">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__nlxZWyIEeKx9Kegn5X27A" key="displayNameLabelIcon_value" value="false"/>
- </eAnnotations>
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__nlxZmyIEeKx9Kegn5X27A" source="QualifiedName">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__nlxZ2yIEeKx9Kegn5X27A" key="QualifiedNameDepth" value="1000"/>
- </eAnnotations>
- <children xmi:type="notation:DecorationNode" xmi:id="__nlxaGyIEeKx9Kegn5X27A" type="5029"/>
- <children xmi:type="notation:BasicCompartment" xmi:id="__nlxaWyIEeKx9Kegn5X27A" type="7017">
- <styles xmi:type="notation:TitleStyle" xmi:id="__nlxamyIEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:SortingStyle" xmi:id="__nlxa2yIEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:FilteringStyle" xmi:id="__nlxbGyIEeKx9Kegn5X27A"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="__nlxbWyIEeKx9Kegn5X27A"/>
- </children>
- <children xmi:type="notation:BasicCompartment" xmi:id="__nlxbmyIEeKx9Kegn5X27A" type="7018">
- <styles xmi:type="notation:TitleStyle" xmi:id="__nlxb2yIEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:SortingStyle" xmi:id="__nlxcGyIEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:FilteringStyle" xmi:id="__nlxcWyIEeKx9Kegn5X27A"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="__nlxcmyIEeKx9Kegn5X27A"/>
- </children>
- <children xmi:type="notation:BasicCompartment" xmi:id="__nlxc2yIEeKx9Kegn5X27A" type="7019">
- <styles xmi:type="notation:TitleStyle" xmi:id="__nlxdGyIEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:SortingStyle" xmi:id="__nlxdWyIEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:FilteringStyle" xmi:id="__nlxdmyIEeKx9Kegn5X27A"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="__nlxd2yIEeKx9Kegn5X27A"/>
- </children>
- <children xmi:type="notation:DecorationNode" xmi:id="_Dd9EklViEeWe8LyZrqaAug" type="8510">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_Dd9Ek1ViEeWe8LyZrqaAug" y="5"/>
- </children>
- <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/Ecore.metamodel.uml#EObject"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="__nlxYWyIEeKx9Kegn5X27A" x="1216" y="522"/>
- </children>
- <children xmi:type="notation:Shape" xmi:id="_D03IoFViEeWe8LyZrqaAug" type="StereotypeComment">
- <styles xmi:type="notation:TitleStyle" xmi:id="_D03IoVViEeWe8LyZrqaAug" showTitle="true"/>
- <styles xmi:type="notation:EObjectValueStyle" xmi:id="_D03Io1ViEeWe8LyZrqaAug" name="BASE_ELEMENT">
- <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/Ecore.metamodel.uml#EObject"/>
- </styles>
- <element xsi:nil="true"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_D03IolViEeWe8LyZrqaAug" x="1334" y="522"/>
- </children>
- <styles xmi:type="notation:DiagramStyle" xmi:id="_xRNpEWyFEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:StringValueStyle" xmi:id="_Dd9ElFViEeWe8LyZrqaAug" name="diagram_compatibility_version" stringValue="1.1.0"/>
- <element xmi:type="uml:Model" href="sashwindowsdi.uml#_NuHhwEJVEd6kIY39uis5Uw"/>
- <edges xmi:type="notation:Connector" xmi:id="_z3ZoMGyFEeKx9Kegn5X27A" type="4001" source="_z0HqsGyFEeKx9Kegn5X27A" target="_z1T9gGyFEeKx9Kegn5X27A" lineColor="0">
- <children xmi:type="notation:DecorationNode" xmi:id="_z3iyIGyFEeKx9Kegn5X27A" type="6001">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_z3iyIWyFEeKx9Kegn5X27A" y="-20"/>
- </children>
- <children xmi:type="notation:DecorationNode" xmi:id="_z3iyImyFEeKx9Kegn5X27A" visible="false" type="6002">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_z3iyI2yFEeKx9Kegn5X27A" y="20"/>
- </children>
- <children xmi:type="notation:DecorationNode" xmi:id="_z3iyJGyFEeKx9Kegn5X27A" type="6003">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_z3iyJWyFEeKx9Kegn5X27A" x="22" y="-20"/>
- </children>
- <children xmi:type="notation:DecorationNode" xmi:id="_z3iyJmyFEeKx9Kegn5X27A" visible="false" type="6005">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_z3iyJ2yFEeKx9Kegn5X27A" y="20"/>
- </children>
- <children xmi:type="notation:DecorationNode" xmi:id="_z3iyKGyFEeKx9Kegn5X27A" type="6033">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_z3iyKWyFEeKx9Kegn5X27A" y="20"/>
- </children>
- <children xmi:type="notation:DecorationNode" xmi:id="_z3iyKmyFEeKx9Kegn5X27A" type="6034">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_z3iyK2yFEeKx9Kegn5X27A" y="-20"/>
- </children>
- <styles xmi:type="notation:FontStyle" xmi:id="_z3ZoMWyFEeKx9Kegn5X27A" fontName="Segoe UI"/>
- <element xmi:type="uml:Association" href="sashwindowsdi.uml#_9JomUEJVEd6kIY39uis5Uw"/>
- <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_z3ZoMmyFEeKx9Kegn5X27A" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
- </edges>
- <edges xmi:type="notation:Connector" xmi:id="_4cfkAGyFEeKx9Kegn5X27A" type="4001" source="_4bTRMGyFEeKx9Kegn5X27A" target="_z1T9gGyFEeKx9Kegn5X27A" lineColor="0">
- <children xmi:type="notation:DecorationNode" xmi:id="_4cfkA2yFEeKx9Kegn5X27A" type="6001">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_4cfkBGyFEeKx9Kegn5X27A" y="-20"/>
- </children>
- <children xmi:type="notation:DecorationNode" xmi:id="_4cfkBWyFEeKx9Kegn5X27A" visible="false" type="6002">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_4cfkBmyFEeKx9Kegn5X27A" y="20"/>
- </children>
- <children xmi:type="notation:DecorationNode" xmi:id="_4cfkB2yFEeKx9Kegn5X27A" type="6003">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_4cfkCGyFEeKx9Kegn5X27A" x="-28" y="-48"/>
- </children>
- <children xmi:type="notation:DecorationNode" xmi:id="_4cfkCWyFEeKx9Kegn5X27A" visible="false" type="6005">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_4cfkCmyFEeKx9Kegn5X27A" y="20"/>
- </children>
- <children xmi:type="notation:DecorationNode" xmi:id="_4cfkC2yFEeKx9Kegn5X27A" type="6033">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_4cfkDGyFEeKx9Kegn5X27A" y="20"/>
- </children>
- <children xmi:type="notation:DecorationNode" xmi:id="_4cfkDWyFEeKx9Kegn5X27A" type="6034">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_4cfkDmyFEeKx9Kegn5X27A" y="-20"/>
- </children>
- <styles xmi:type="notation:FontStyle" xmi:id="_4cfkAWyFEeKx9Kegn5X27A" fontName="Segoe UI"/>
- <element xmi:type="uml:Association" href="sashwindowsdi.uml#_mT2jkEJkEd6kIY39uis5Uw"/>
- <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_4cfkAmyFEeKx9Kegn5X27A" points="[-50, 34, 610, 40]$[-194, 133, 466, 139]$[-655, 133, 5, 139]$[-655, 44, 5, 50]"/>
- </edges>
- <edges xmi:type="notation:Connector" xmi:id="_6DldoGyFEeKx9Kegn5X27A" type="4001" source="_6BzU8GyFEeKx9Kegn5X27A" target="_6Ci70GyFEeKx9Kegn5X27A" lineColor="0">
- <children xmi:type="notation:DecorationNode" xmi:id="_6DvOoGyFEeKx9Kegn5X27A" type="6001">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_6DvOoWyFEeKx9Kegn5X27A" y="-20"/>
- </children>
- <children xmi:type="notation:DecorationNode" xmi:id="_6DvOomyFEeKx9Kegn5X27A" visible="false" type="6002">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_6DvOo2yFEeKx9Kegn5X27A" y="20"/>
- </children>
- <children xmi:type="notation:DecorationNode" xmi:id="_6DvOpGyFEeKx9Kegn5X27A" type="6003">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_6DvOpWyFEeKx9Kegn5X27A" x="25" y="-20"/>
- </children>
- <children xmi:type="notation:DecorationNode" xmi:id="_6DvOpmyFEeKx9Kegn5X27A" type="6005">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_6DvOp2yFEeKx9Kegn5X27A" y="20"/>
- </children>
- <children xmi:type="notation:DecorationNode" xmi:id="_6DvOqGyFEeKx9Kegn5X27A" type="6033">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_6DvOqWyFEeKx9Kegn5X27A" y="20"/>
- </children>
- <children xmi:type="notation:DecorationNode" xmi:id="_6DvOqmyFEeKx9Kegn5X27A" type="6034">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_6DvOq2yFEeKx9Kegn5X27A" y="-20"/>
- </children>
- <styles xmi:type="notation:FontStyle" xmi:id="_6DldoWyFEeKx9Kegn5X27A" fontName="Segoe UI"/>
- <element xmi:type="uml:Association" href="sashwindowsdi.uml#__CVNUEJVEd6kIY39uis5Uw"/>
- <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_6DldomyFEeKx9Kegn5X27A" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
- </edges>
- <edges xmi:type="notation:Connector" xmi:id="_6lXVAGyFEeKx9Kegn5X27A" type="4001" source="_6knuIGyFEeKx9Kegn5X27A" target="_4bTRMGyFEeKx9Kegn5X27A" lineColor="0">
- <children xmi:type="notation:DecorationNode" xmi:id="_6lXVA2yFEeKx9Kegn5X27A" type="6001">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_6lXVBGyFEeKx9Kegn5X27A" y="-20"/>
- </children>
- <children xmi:type="notation:DecorationNode" xmi:id="_6lXVBWyFEeKx9Kegn5X27A" visible="false" type="6002">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_6lXVBmyFEeKx9Kegn5X27A" y="20"/>
- </children>
- <children xmi:type="notation:DecorationNode" xmi:id="_6lXVB2yFEeKx9Kegn5X27A" type="6003">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_6lXVCGyFEeKx9Kegn5X27A" x="-16" y="-50"/>
- </children>
- <children xmi:type="notation:DecorationNode" xmi:id="_6lXVCWyFEeKx9Kegn5X27A" type="6005">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_6lXVCmyFEeKx9Kegn5X27A" x="12" y="47"/>
- </children>
- <children xmi:type="notation:DecorationNode" xmi:id="_6lXVC2yFEeKx9Kegn5X27A" type="6033">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_6lXVDGyFEeKx9Kegn5X27A" y="20"/>
- </children>
- <children xmi:type="notation:DecorationNode" xmi:id="_6lXVDWyFEeKx9Kegn5X27A" type="6034">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_6lXVDmyFEeKx9Kegn5X27A" x="6" y="-30"/>
- </children>
- <styles xmi:type="notation:FontStyle" xmi:id="_6lXVAWyFEeKx9Kegn5X27A" fontName="Segoe UI"/>
- <element xmi:type="uml:Association" href="sashwindowsdi.uml#_AM_CkEJWEd6kIY39uis5Uw"/>
- <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_6lXVAmyFEeKx9Kegn5X27A" points="[4, -50, -20, 250]$[20, -250, -4, 50]"/>
- <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_bn3q0FViEeWe8LyZrqaAug" id="(0.4583333333333333,0.0)"/>
- <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_bn3q0VViEeWe8LyZrqaAug" id="(0.5,1.0)"/>
- </edges>
- <edges xmi:type="notation:Connector" xmi:id="_-YK4QGyFEeKx9Kegn5X27A" type="4002" source="_z0HqsGyFEeKx9Kegn5X27A" target="_6Ci70GyFEeKx9Kegn5X27A" lineColor="0">
- <children xmi:type="notation:DecorationNode" xmi:id="_-YK4Q2yFEeKx9Kegn5X27A" type="6007">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_-YK4RGyFEeKx9Kegn5X27A" y="40"/>
- </children>
- <styles xmi:type="notation:FontStyle" xmi:id="_-YK4QWyFEeKx9Kegn5X27A" fontName="Segoe UI"/>
- <element xmi:type="uml:Generalization" href="sashwindowsdi.uml#_95DboEJWEd6kIY39uis5Uw"/>
- <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_-YK4QmyFEeKx9Kegn5X27A" points="[50, 12, -365, -90]$[365, 89, -50, -13]"/>
- </edges>
- <edges xmi:type="notation:Connector" xmi:id="_CaI44GyGEeKx9Kegn5X27A" type="4002" source="_CZQIEGyGEeKx9Kegn5X27A" target="_6BzU8GyFEeKx9Kegn5X27A" lineColor="0">
- <children xmi:type="notation:DecorationNode" xmi:id="_CaI442yGEeKx9Kegn5X27A" type="6007">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_CaI45GyGEeKx9Kegn5X27A" y="40"/>
- </children>
- <styles xmi:type="notation:FontStyle" xmi:id="_CaI44WyGEeKx9Kegn5X27A" fontName="Segoe UI"/>
- <element xmi:type="uml:Generalization" href="sashwindowsdi.uml#_7VZokEJVEd6kIY39uis5Uw"/>
- <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_CaI44myGEeKx9Kegn5X27A" points="[0, 0, -753, -562]$[703, 524, -50, -38]"/>
- </edges>
- <edges xmi:type="notation:Connector" xmi:id="_C8qXIGyGEeKx9Kegn5X27A" type="4002" source="_CZQIEGyGEeKx9Kegn5X27A" target="_6Ci70GyFEeKx9Kegn5X27A" lineColor="0">
- <children xmi:type="notation:DecorationNode" xmi:id="_C8qXI2yGEeKx9Kegn5X27A" type="6007">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_C8qXJGyGEeKx9Kegn5X27A" y="40"/>
- </children>
- <styles xmi:type="notation:FontStyle" xmi:id="_C8qXIWyGEeKx9Kegn5X27A" fontName="Segoe UI"/>
- <element xmi:type="uml:Generalization" href="sashwindowsdi.uml#_UH6OsEsDEd6MxdnlcgT3eA"/>
- <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_C8qXImyGEeKx9Kegn5X27A" points="[36, -50, -315, 432]$[314, -432, -37, 50]"/>
- </edges>
- <edges xmi:type="notation:Connector" xmi:id="_HSH7gGyGEeKx9Kegn5X27A" type="4002" source="_4bTRMGyFEeKx9Kegn5X27A" target="_6BzU8GyFEeKx9Kegn5X27A" lineColor="0">
- <children xmi:type="notation:DecorationNode" xmi:id="_HSRFcGyGEeKx9Kegn5X27A" type="6007">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_HSRFcWyGEeKx9Kegn5X27A" y="40"/>
- </children>
- <styles xmi:type="notation:FontStyle" xmi:id="_HSH7gWyGEeKx9Kegn5X27A" fontName="Segoe UI"/>
- <element xmi:type="uml:Generalization" href="sashwindowsdi.uml#_71vVgEJVEd6kIY39uis5Uw"/>
- <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_HSH7gmyGEeKx9Kegn5X27A" points="[26, -50, -166, 310]$[165, -310, -27, 50]"/>
- </edges>
- <edges xmi:type="notation:Connector" xmi:id="_QH6QcGyGEeKx9Kegn5X27A" type="4001" source="_6knuIGyFEeKx9Kegn5X27A" target="_QHBfoGyGEeKx9Kegn5X27A" lineColor="0">
- <children xmi:type="notation:DecorationNode" xmi:id="_QH6Qc2yGEeKx9Kegn5X27A" type="6001">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_QH6QdGyGEeKx9Kegn5X27A" y="-20"/>
- </children>
- <children xmi:type="notation:DecorationNode" xmi:id="_QH6QdWyGEeKx9Kegn5X27A" visible="false" type="6002">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_QH6QdmyGEeKx9Kegn5X27A" y="20"/>
- </children>
- <children xmi:type="notation:DecorationNode" xmi:id="_QH6Qd2yGEeKx9Kegn5X27A" type="6003">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_QH6QeGyGEeKx9Kegn5X27A" y="-20"/>
- </children>
- <children xmi:type="notation:DecorationNode" xmi:id="_QH6QeWyGEeKx9Kegn5X27A" type="6005">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_QH6QemyGEeKx9Kegn5X27A" y="20"/>
- </children>
- <children xmi:type="notation:DecorationNode" xmi:id="_QH6Qe2yGEeKx9Kegn5X27A" type="6033">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_QH6QfGyGEeKx9Kegn5X27A" y="20"/>
- </children>
- <children xmi:type="notation:DecorationNode" xmi:id="_QH6QfWyGEeKx9Kegn5X27A" type="6034">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_QH6QfmyGEeKx9Kegn5X27A" y="-20"/>
- </children>
- <styles xmi:type="notation:FontStyle" xmi:id="_QH6QcWyGEeKx9Kegn5X27A" fontName="Segoe UI"/>
- <element xmi:type="uml:Association" href="sashwindowsdi.uml#_viyZUEJZEd6kIY39uis5Uw"/>
- <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_QH6QcmyGEeKx9Kegn5X27A" points="[-50, -45, 600, 533]$[-650, -578, 0, 0]"/>
- <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_bn3q0lViEeWe8LyZrqaAug" id="(0.0,0.44)"/>
- <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_bn3q01ViEeWe8LyZrqaAug" id="(1.0,0.5)"/>
- </edges>
- <edges xmi:type="notation:Connector" xmi:id="_eIIp8GyGEeKx9Kegn5X27A" type="4001" source="_QHBfoGyGEeKx9Kegn5X27A" target="_eHZDEGyGEeKx9Kegn5X27A" lineColor="0">
- <children xmi:type="notation:DecorationNode" xmi:id="_eIIp82yGEeKx9Kegn5X27A" type="6001">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_eIIp9GyGEeKx9Kegn5X27A" y="-20"/>
- </children>
- <children xmi:type="notation:DecorationNode" xmi:id="_eIIp9WyGEeKx9Kegn5X27A" visible="false" type="6002">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_eIIp9myGEeKx9Kegn5X27A" y="20"/>
- </children>
- <children xmi:type="notation:DecorationNode" xmi:id="_eIIp92yGEeKx9Kegn5X27A" type="6003">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_eIIp-GyGEeKx9Kegn5X27A" x="-33" y="-26"/>
- </children>
- <children xmi:type="notation:DecorationNode" xmi:id="_eIIp-WyGEeKx9Kegn5X27A" visible="false" type="6005">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_eIIp-myGEeKx9Kegn5X27A" x="56" y="72"/>
- </children>
- <children xmi:type="notation:DecorationNode" xmi:id="_eIIp-2yGEeKx9Kegn5X27A" type="6033">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_eIIp_GyGEeKx9Kegn5X27A" y="20"/>
- </children>
- <children xmi:type="notation:DecorationNode" xmi:id="_eIIp_WyGEeKx9Kegn5X27A" type="6034">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_eIIp_myGEeKx9Kegn5X27A" x="56" y="-31"/>
- </children>
- <styles xmi:type="notation:FontStyle" xmi:id="_eIIp8WyGEeKx9Kegn5X27A" fontName="Segoe UI"/>
- <element xmi:type="uml:Association" href="sashwindowsdi.uml#_9k0bgEMbEd6kIY39uis5Uw"/>
- <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_eIIp8myGEeKx9Kegn5X27A" points="[-50, 0, 207, 294]$[-248, 0, 9, 294]$[-248, -244, 9, 50]"/>
- </edges>
- <edges xmi:type="notation:Connector" xmi:id="_fLY2sGyGEeKx9Kegn5X27A" type="4001" source="_z1T9gGyFEeKx9Kegn5X27A" target="_eHZDEGyGEeKx9Kegn5X27A" lineColor="0">
- <children xmi:type="notation:DecorationNode" xmi:id="_fLY2s2yGEeKx9Kegn5X27A" type="6001">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_fLY2tGyGEeKx9Kegn5X27A" y="-20"/>
- </children>
- <children xmi:type="notation:DecorationNode" xmi:id="_fLY2tWyGEeKx9Kegn5X27A" visible="false" type="6002">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_fLY2tmyGEeKx9Kegn5X27A" y="20"/>
- </children>
- <children xmi:type="notation:DecorationNode" xmi:id="_fLY2t2yGEeKx9Kegn5X27A" type="6003">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_fLY2uGyGEeKx9Kegn5X27A" x="33" y="22"/>
- </children>
- <children xmi:type="notation:DecorationNode" xmi:id="_fLY2uWyGEeKx9Kegn5X27A" visible="false" type="6005">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_fLY2umyGEeKx9Kegn5X27A" y="20"/>
- </children>
- <children xmi:type="notation:DecorationNode" xmi:id="_fLY2u2yGEeKx9Kegn5X27A" type="6033">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_fLY2vGyGEeKx9Kegn5X27A" y="20"/>
- </children>
- <children xmi:type="notation:DecorationNode" xmi:id="_fLiAoGyGEeKx9Kegn5X27A" type="6034">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_fLiAoWyGEeKx9Kegn5X27A" y="-20"/>
- </children>
- <styles xmi:type="notation:FontStyle" xmi:id="_fLY2sWyGEeKx9Kegn5X27A" fontName="Segoe UI"/>
- <element xmi:type="uml:Association" href="sashwindowsdi.uml#_-EQwkEMbEd6kIY39uis5Uw"/>
- <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_fLY2smyGEeKx9Kegn5X27A" points="[-21, 50, 92, -220]$[-92, 220, 21, -50]"/>
- </edges>
- <edges xmi:type="notation:Connector" xmi:id="__ofJQGyIEeKx9Kegn5X27A" type="4001" source="__nlxYGyIEeKx9Kegn5X27A" target="_6knuIGyFEeKx9Kegn5X27A" lineColor="0">
- <children xmi:type="notation:DecorationNode" xmi:id="__ooTMGyIEeKx9Kegn5X27A" type="6001">
- <layoutConstraint xmi:type="notation:Location" xmi:id="__ooTMWyIEeKx9Kegn5X27A" y="-20"/>
- </children>
- <children xmi:type="notation:DecorationNode" xmi:id="__ooTMmyIEeKx9Kegn5X27A" visible="false" type="6002">
- <layoutConstraint xmi:type="notation:Location" xmi:id="__ooTM2yIEeKx9Kegn5X27A" y="20"/>
- </children>
- <children xmi:type="notation:DecorationNode" xmi:id="__ooTNGyIEeKx9Kegn5X27A" type="6003">
- <layoutConstraint xmi:type="notation:Location" xmi:id="__ooTNWyIEeKx9Kegn5X27A" y="-20"/>
- </children>
- <children xmi:type="notation:DecorationNode" xmi:id="__ooTNmyIEeKx9Kegn5X27A" visible="false" type="6005">
- <layoutConstraint xmi:type="notation:Location" xmi:id="__ooTN2yIEeKx9Kegn5X27A" y="20"/>
- </children>
- <children xmi:type="notation:DecorationNode" xmi:id="__ooTOGyIEeKx9Kegn5X27A" type="6033">
- <layoutConstraint xmi:type="notation:Location" xmi:id="__ooTOWyIEeKx9Kegn5X27A" y="20"/>
- </children>
- <children xmi:type="notation:DecorationNode" xmi:id="__ooTOmyIEeKx9Kegn5X27A" type="6034">
- <layoutConstraint xmi:type="notation:Location" xmi:id="__ooTO2yIEeKx9Kegn5X27A" y="-20"/>
- </children>
- <styles xmi:type="notation:FontStyle" xmi:id="__ofJQWyIEeKx9Kegn5X27A" fontName="Segoe UI"/>
- <element xmi:type="uml:Association" href="sashwindowsdi.uml#_b3enUEnjEd6ussMWxXGeXg"/>
- <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="__ofJQmyIEeKx9Kegn5X27A" points="[0, 0, -986, -572]$[936, 542, -50, -30]"/>
- <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_a3Xa8FViEeWe8LyZrqaAug" id="(0.0,0.4854368932038835)"/>
- <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_a3Xa8VViEeWe8LyZrqaAug" id="(1.0,0.5)"/>
- </edges>
- <edges xmi:type="notation:Connector" xmi:id="_D03IpFViEeWe8LyZrqaAug" type="StereotypeCommentLink" source="__nlxYGyIEeKx9Kegn5X27A" target="_D03IoFViEeWe8LyZrqaAug">
- <styles xmi:type="notation:FontStyle" xmi:id="_D03IpVViEeWe8LyZrqaAug"/>
- <styles xmi:type="notation:EObjectValueStyle" xmi:id="_D03IqVViEeWe8LyZrqaAug" name="BASE_ELEMENT">
- <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/Ecore.metamodel.uml#EObject"/>
- </styles>
- <element xsi:nil="true"/>
- <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_D03IplViEeWe8LyZrqaAug" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
- <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_D03Ip1ViEeWe8LyZrqaAug"/>
- <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_D03IqFViEeWe8LyZrqaAug"/>
- </edges>
- </notation:Diagram>
- <notation:Diagram xmi:id="_CCrlsGyHEeKx9Kegn5X27A" type="PapyrusUMLClassDiagram" name="ClassDiagram" measurementUnit="Pixel">
- <children xmi:type="notation:Shape" xmi:id="_CnIWkGyHEeKx9Kegn5X27A" type="2008" fontName="Segoe UI" lineColor="0">
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_CnIWkWyHEeKx9Kegn5X27A" source="ShadowFigure">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_CnIWkmyHEeKx9Kegn5X27A" key="ShadowFigure_Value" value="false"/>
- </eAnnotations>
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_CnIWk2yHEeKx9Kegn5X27A" source="displayNameLabelIcon">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_CnIWlGyHEeKx9Kegn5X27A" key="displayNameLabelIcon_value" value="false"/>
- </eAnnotations>
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_CnIWlWyHEeKx9Kegn5X27A" source="QualifiedName">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_CnIWlmyHEeKx9Kegn5X27A" key="QualifiedNameDepth" value="1000"/>
- </eAnnotations>
- <children xmi:type="notation:DecorationNode" xmi:id="_CnIWl2yHEeKx9Kegn5X27A" type="5029"/>
- <children xmi:type="notation:BasicCompartment" xmi:id="_CnIWmGyHEeKx9Kegn5X27A" type="7017">
- <styles xmi:type="notation:TitleStyle" xmi:id="_CnIWmWyHEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:SortingStyle" xmi:id="_CnIWmmyHEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:FilteringStyle" xmi:id="_CnIWm2yHEeKx9Kegn5X27A"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CnIWnGyHEeKx9Kegn5X27A"/>
- </children>
- <children xmi:type="notation:BasicCompartment" xmi:id="_CnIWnWyHEeKx9Kegn5X27A" type="7018">
- <styles xmi:type="notation:TitleStyle" xmi:id="_CnIWnmyHEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:SortingStyle" xmi:id="_CnIWn2yHEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:FilteringStyle" xmi:id="_CnIWoGyHEeKx9Kegn5X27A"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CnIWoWyHEeKx9Kegn5X27A"/>
- </children>
- <children xmi:type="notation:BasicCompartment" xmi:id="_CnIWomyHEeKx9Kegn5X27A" type="7019">
- <styles xmi:type="notation:TitleStyle" xmi:id="_CnIWo2yHEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:SortingStyle" xmi:id="_CnIWpGyHEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:FilteringStyle" xmi:id="_CnIWpWyHEeKx9Kegn5X27A"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CnIWpmyHEeKx9Kegn5X27A"/>
- </children>
- <children xmi:type="notation:DecorationNode" xmi:id="_D-iCAFViEeWe8LyZrqaAug" type="8510">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_D-iCAVViEeWe8LyZrqaAug" y="5"/>
- </children>
- <element xmi:type="uml:Class" href="sashwindowsdi.uml#_-9vywEMaEd6kIY39uis5Uw"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CnIWp2yHEeKx9Kegn5X27A" x="34" y="232"/>
- </children>
- <children xmi:type="notation:Shape" xmi:id="_CnSHmGyHEeKx9Kegn5X27A" type="2008" fontName="Segoe UI" lineColor="0">
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_CnSHmWyHEeKx9Kegn5X27A" source="ShadowFigure">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_CnSHmmyHEeKx9Kegn5X27A" key="ShadowFigure_Value" value="false"/>
- </eAnnotations>
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_CnSHm2yHEeKx9Kegn5X27A" source="displayNameLabelIcon">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_CnSHnGyHEeKx9Kegn5X27A" key="displayNameLabelIcon_value" value="false"/>
- </eAnnotations>
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_CnSHnWyHEeKx9Kegn5X27A" source="QualifiedName">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_CnSHnmyHEeKx9Kegn5X27A" key="QualifiedNameDepth" value="1000"/>
- </eAnnotations>
- <children xmi:type="notation:DecorationNode" xmi:id="_CnSHn2yHEeKx9Kegn5X27A" type="5029"/>
- <children xmi:type="notation:BasicCompartment" xmi:id="_CnSHoGyHEeKx9Kegn5X27A" type="7017">
- <styles xmi:type="notation:TitleStyle" xmi:id="_CnSHoWyHEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:SortingStyle" xmi:id="_CnSHomyHEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:FilteringStyle" xmi:id="_CnSHo2yHEeKx9Kegn5X27A"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CnSHpGyHEeKx9Kegn5X27A"/>
- </children>
- <children xmi:type="notation:BasicCompartment" xmi:id="_CnSHpWyHEeKx9Kegn5X27A" type="7018">
- <children xmi:type="notation:Shape" xmi:id="_F9OIoGyHEeKx9Kegn5X27A" type="3013" fontName="Segoe UI" lineColor="0">
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_RjPwkGyHEeKx9Kegn5X27A" source="CustomAppearance_Annotation">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_TjMPEGyHEeKx9Kegn5X27A" key="CustomAppearance_MaskValue" value="21258"/>
- </eAnnotations>
- <element xmi:type="uml:Operation" href="sashwindowsdi.uml#_wdFgUEV4Ed6g-YgfS2DHrA"/>
- <layoutConstraint xmi:type="notation:Location" xmi:id="_F9OIoWyHEeKx9Kegn5X27A" x="32" y="15"/>
- </children>
- <children xmi:type="notation:Shape" xmi:id="_F-G5cGyHEeKx9Kegn5X27A" type="3013" fontName="Segoe UI" lineColor="0">
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_RjZhkWyHEeKx9Kegn5X27A" source="CustomAppearance_Annotation">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_TjMPEWyHEeKx9Kegn5X27A" key="CustomAppearance_MaskValue" value="21258"/>
- </eAnnotations>
- <element xmi:type="uml:Operation" href="sashwindowsdi.uml#_m7xPsEa4Ed6g-YgfS2DHrA"/>
- <layoutConstraint xmi:type="notation:Location" xmi:id="_F-G5cWyHEeKx9Kegn5X27A" x="32" y="15"/>
- </children>
- <children xmi:type="notation:Shape" xmi:id="_F-2gUGyHEeKx9Kegn5X27A" type="3013" fontName="Segoe UI" lineColor="0">
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_WgzPsGyHEeKx9Kegn5X27A" source="CustomAppearance_Annotation">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Xvt54GyHEeKx9Kegn5X27A" key="CustomAppearance_MaskValue" value="21258"/>
- </eAnnotations>
- <element xmi:type="uml:Operation" href="sashwindowsdi.uml#_e9ojYEbXEd6g-YgfS2DHrA"/>
- <layoutConstraint xmi:type="notation:Location" xmi:id="_F-2gUWyHEeKx9Kegn5X27A" x="32" y="15"/>
- </children>
- <children xmi:type="notation:Shape" xmi:id="_F_mHMGyHEeKx9Kegn5X27A" type="3013" fontName="Segoe UI" lineColor="0">
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_WgzPsmyHEeKx9Kegn5X27A" source="CustomAppearance_Annotation">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Xvt54WyHEeKx9Kegn5X27A" key="CustomAppearance_MaskValue" value="21258"/>
- </eAnnotations>
- <element xmi:type="uml:Operation" href="sashwindowsdi.uml#_q8zekEbsEd6g-YgfS2DHrA"/>
- <layoutConstraint xmi:type="notation:Location" xmi:id="_F_mHMWyHEeKx9Kegn5X27A" x="32" y="15"/>
- </children>
- <children xmi:type="notation:Shape" xmi:id="_GAffEGyHEeKx9Kegn5X27A" type="3013" fontName="Segoe UI" lineColor="0">
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_WgzPtGyHEeKx9Kegn5X27A" source="CustomAppearance_Annotation">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Xvt54myHEeKx9Kegn5X27A" key="CustomAppearance_MaskValue" value="21258"/>
- </eAnnotations>
- <element xmi:type="uml:Operation" href="sashwindowsdi.uml#_vnqNcEoIEd6ussMWxXGeXg"/>
- <layoutConstraint xmi:type="notation:Location" xmi:id="_GAffEWyHEeKx9Kegn5X27A" x="32" y="15"/>
- </children>
- <children xmi:type="notation:Shape" xmi:id="_GBYP4GyHEeKx9Kegn5X27A" type="3013" fontName="Segoe UI" lineColor="0">
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_WgzPtmyHEeKx9Kegn5X27A" source="CustomAppearance_Annotation">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Xvt542yHEeKx9Kegn5X27A" key="CustomAppearance_MaskValue" value="21258"/>
- </eAnnotations>
- <element xmi:type="uml:Operation" href="sashwindowsdi.uml#_Kvf9cEoJEd6ussMWxXGeXg"/>
- <layoutConstraint xmi:type="notation:Location" xmi:id="_GBYP4WyHEeKx9Kegn5X27A" x="32" y="15"/>
- </children>
- <children xmi:type="notation:Shape" xmi:id="_GCRnwGyHEeKx9Kegn5X27A" type="3013" fontName="Segoe UI" lineColor="0">
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_WgzPuGyHEeKx9Kegn5X27A" source="CustomAppearance_Annotation">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Xvt55GyHEeKx9Kegn5X27A" key="CustomAppearance_MaskValue" value="21258"/>
- </eAnnotations>
- <element xmi:type="uml:Operation" href="sashwindowsdi.uml#_OoMtUEoJEd6ussMWxXGeXg"/>
- <layoutConstraint xmi:type="notation:Location" xmi:id="_GCRnwWyHEeKx9Kegn5X27A" x="32" y="15"/>
- </children>
- <children xmi:type="notation:Shape" xmi:id="_GDBOoGyHEeKx9Kegn5X27A" type="3013" fontName="Segoe UI" lineColor="0">
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_WgzPumyHEeKx9Kegn5X27A" source="CustomAppearance_Annotation">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Xvt55WyHEeKx9Kegn5X27A" key="CustomAppearance_MaskValue" value="21258"/>
- </eAnnotations>
- <element xmi:type="uml:Operation" href="sashwindowsdi.uml#_vaMqoE4OEd-B2uXHu4qMXg"/>
- <layoutConstraint xmi:type="notation:Location" xmi:id="_GDBOoWyHEeKx9Kegn5X27A" x="32" y="15"/>
- </children>
- <children xmi:type="notation:Shape" xmi:id="_GDw1gGyHEeKx9Kegn5X27A" type="3013" fontName="Segoe UI" lineColor="0">
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_WgzPvGyHEeKx9Kegn5X27A" source="CustomAppearance_Annotation">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Xv3q4GyHEeKx9Kegn5X27A" key="CustomAppearance_MaskValue" value="21258"/>
- </eAnnotations>
- <element xmi:type="uml:Operation" href="sashwindowsdi.uml#_-TkSoE4OEd-B2uXHu4qMXg"/>
- <layoutConstraint xmi:type="notation:Location" xmi:id="_GDw1gWyHEeKx9Kegn5X27A" x="32" y="15"/>
- </children>
- <children xmi:type="notation:Shape" xmi:id="_GEgcYGyHEeKx9Kegn5X27A" type="3013" fontName="Segoe UI" lineColor="0">
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_WgzPvmyHEeKx9Kegn5X27A" source="CustomAppearance_Annotation">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Xv3q4WyHEeKx9Kegn5X27A" key="CustomAppearance_MaskValue" value="21258"/>
- </eAnnotations>
- <element xmi:type="uml:Operation" href="sashwindowsdi.uml#_1jUIgE4PEd-B2uXHu4qMXg"/>
- <layoutConstraint xmi:type="notation:Location" xmi:id="_GEgcYWyHEeKx9Kegn5X27A" x="32" y="15"/>
- </children>
- <children xmi:type="notation:Shape" xmi:id="_GFQDQGyHEeKx9Kegn5X27A" type="3013" fontName="Segoe UI" lineColor="0">
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_WgzPwGyHEeKx9Kegn5X27A" source="CustomAppearance_Annotation">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Xv3q4myHEeKx9Kegn5X27A" key="CustomAppearance_MaskValue" value="21258"/>
- </eAnnotations>
- <element xmi:type="uml:Operation" href="sashwindowsdi.uml#_4qi_ME4PEd-B2uXHu4qMXg"/>
- <layoutConstraint xmi:type="notation:Location" xmi:id="_GFQDQWyHEeKx9Kegn5X27A" x="32" y="15"/>
- </children>
- <children xmi:type="notation:Shape" xmi:id="_GGJbIGyHEeKx9Kegn5X27A" type="3013" fontName="Segoe UI" lineColor="0">
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_WgzPwmyHEeKx9Kegn5X27A" source="CustomAppearance_Annotation">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Xv3q42yHEeKx9Kegn5X27A" key="CustomAppearance_MaskValue" value="21258"/>
- </eAnnotations>
- <element xmi:type="uml:Operation" href="sashwindowsdi.uml#_fPvj8FgxEeGNKLzLkykmJw"/>
- <layoutConstraint xmi:type="notation:Location" xmi:id="_GGJbIWyHEeKx9Kegn5X27A" x="32" y="15"/>
- </children>
- <children xmi:type="notation:Shape" xmi:id="_zeIgsGySEeKx9Kegn5X27A" type="3013" fontName="Segoe UI" lineColor="0">
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_68TicGySEeKx9Kegn5X27A" source="CustomAppearance_Annotation">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7ttKMGySEeKx9Kegn5X27A" key="CustomAppearance_MaskValue" value="21258"/>
- </eAnnotations>
- <element xmi:type="uml:Operation" href="sashwindowsdi.uml#_zdr0wGySEeKx9Kegn5X27A"/>
- <layoutConstraint xmi:type="notation:Location" xmi:id="_zeIgsWySEeKx9Kegn5X27A"/>
- </children>
- <styles xmi:type="notation:TitleStyle" xmi:id="_CnSHpmyHEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:SortingStyle" xmi:id="_CnSHp2yHEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:FilteringStyle" xmi:id="_CnSHqGyHEeKx9Kegn5X27A"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CnSHqWyHEeKx9Kegn5X27A"/>
- </children>
- <children xmi:type="notation:BasicCompartment" xmi:id="_CnSHqmyHEeKx9Kegn5X27A" type="7019">
- <styles xmi:type="notation:TitleStyle" xmi:id="_CnSHq2yHEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:SortingStyle" xmi:id="_CnSHrGyHEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:FilteringStyle" xmi:id="_CnSHrWyHEeKx9Kegn5X27A"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CnSHrmyHEeKx9Kegn5X27A"/>
- </children>
- <children xmi:type="notation:DecorationNode" xmi:id="_D-iCAlViEeWe8LyZrqaAug" type="8510">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_D-iCA1ViEeWe8LyZrqaAug" y="5"/>
- </children>
- <element xmi:type="uml:Class" href="sashwindowsdi.uml#_UiIMMEJVEd6kIY39uis5Uw"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CnSHr2yHEeKx9Kegn5X27A" x="288" y="150"/>
- </children>
- <children xmi:type="notation:Shape" xmi:id="_CnSH4WyHEeKx9Kegn5X27A" type="2008" fontName="Segoe UI" lineColor="0">
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_CnSH4myHEeKx9Kegn5X27A" source="ShadowFigure">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_CnSH42yHEeKx9Kegn5X27A" key="ShadowFigure_Value" value="false"/>
- </eAnnotations>
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_CnSH5GyHEeKx9Kegn5X27A" source="displayNameLabelIcon">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_CnSH5WyHEeKx9Kegn5X27A" key="displayNameLabelIcon_value" value="false"/>
- </eAnnotations>
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_CnSH5myHEeKx9Kegn5X27A" source="QualifiedName">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_CnSH52yHEeKx9Kegn5X27A" key="QualifiedNameDepth" value="1000"/>
- </eAnnotations>
- <children xmi:type="notation:DecorationNode" xmi:id="_CnSH6GyHEeKx9Kegn5X27A" type="5029"/>
- <children xmi:type="notation:BasicCompartment" xmi:id="_CnSH6WyHEeKx9Kegn5X27A" type="7017">
- <styles xmi:type="notation:TitleStyle" xmi:id="_CnSH6myHEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:SortingStyle" xmi:id="_CnSH62yHEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:FilteringStyle" xmi:id="_CnSH7GyHEeKx9Kegn5X27A"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CnSH7WyHEeKx9Kegn5X27A"/>
- </children>
- <children xmi:type="notation:BasicCompartment" xmi:id="_CnSH7myHEeKx9Kegn5X27A" type="7018">
- <styles xmi:type="notation:TitleStyle" xmi:id="_CnSH72yHEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:SortingStyle" xmi:id="_CnSH8GyHEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:FilteringStyle" xmi:id="_CnSH8WyHEeKx9Kegn5X27A"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CnSH8myHEeKx9Kegn5X27A"/>
- </children>
- <children xmi:type="notation:BasicCompartment" xmi:id="_CnSH82yHEeKx9Kegn5X27A" type="7019">
- <styles xmi:type="notation:TitleStyle" xmi:id="_CnSH9GyHEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:SortingStyle" xmi:id="_CnSH9WyHEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:FilteringStyle" xmi:id="_CnSH9myHEeKx9Kegn5X27A"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CnSH92yHEeKx9Kegn5X27A"/>
- </children>
- <children xmi:type="notation:DecorationNode" xmi:id="_D-iCBFViEeWe8LyZrqaAug" type="8510">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_D-iCBVViEeWe8LyZrqaAug" y="5"/>
- </children>
- <element xmi:type="uml:Class" href="sashwindowsdi.uml#_h_HVwEJVEd6kIY39uis5Uw"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CnSH-GyHEeKx9Kegn5X27A" x="948" y="654"/>
- </children>
- <children xmi:type="notation:Shape" xmi:id="_CnbRv2yHEeKx9Kegn5X27A" type="2008" fontName="Segoe UI" lineColor="0">
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_CnbRwGyHEeKx9Kegn5X27A" source="ShadowFigure">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_CnbRwWyHEeKx9Kegn5X27A" key="ShadowFigure_Value" value="false"/>
- </eAnnotations>
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_CnbRwmyHEeKx9Kegn5X27A" source="displayNameLabelIcon">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_CnbRw2yHEeKx9Kegn5X27A" key="displayNameLabelIcon_value" value="false"/>
- </eAnnotations>
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_CnbRxGyHEeKx9Kegn5X27A" source="QualifiedName">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_CnbRxWyHEeKx9Kegn5X27A" key="QualifiedNameDepth" value="1000"/>
- </eAnnotations>
- <children xmi:type="notation:DecorationNode" xmi:id="_CnbRxmyHEeKx9Kegn5X27A" type="5029"/>
- <children xmi:type="notation:BasicCompartment" xmi:id="_CnbRx2yHEeKx9Kegn5X27A" type="7017">
- <styles xmi:type="notation:TitleStyle" xmi:id="_CnbRyGyHEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:SortingStyle" xmi:id="_CnbRyWyHEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:FilteringStyle" xmi:id="_CnbRymyHEeKx9Kegn5X27A"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CnbRy2yHEeKx9Kegn5X27A"/>
- </children>
- <children xmi:type="notation:BasicCompartment" xmi:id="_CnbRzGyHEeKx9Kegn5X27A" type="7018">
- <styles xmi:type="notation:TitleStyle" xmi:id="_CnbRzWyHEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:SortingStyle" xmi:id="_CnbRzmyHEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:FilteringStyle" xmi:id="_CnbRz2yHEeKx9Kegn5X27A"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CnbR0GyHEeKx9Kegn5X27A"/>
- </children>
- <children xmi:type="notation:BasicCompartment" xmi:id="_CnbR0WyHEeKx9Kegn5X27A" type="7019">
- <styles xmi:type="notation:TitleStyle" xmi:id="_CnbR0myHEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:SortingStyle" xmi:id="_CnbR02yHEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:FilteringStyle" xmi:id="_CnbR1GyHEeKx9Kegn5X27A"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CnbR1WyHEeKx9Kegn5X27A"/>
- </children>
- <children xmi:type="notation:DecorationNode" xmi:id="_D-iCBlViEeWe8LyZrqaAug" type="8510">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_D-iCB1ViEeWe8LyZrqaAug" y="5"/>
- </children>
- <element xmi:type="uml:Class" href="sashwindowsdi.uml#_b7a4cEMaEd6kIY39uis5Uw"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CnbR1myHEeKx9Kegn5X27A" x="306" y="648"/>
- </children>
- <children xmi:type="notation:Shape" xmi:id="_rFD98GyHEeKx9Kegn5X27A" type="2008" fontName="Segoe UI" lineColor="0">
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_rFD98myHEeKx9Kegn5X27A" source="ShadowFigure">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_rFD982yHEeKx9Kegn5X27A" key="ShadowFigure_Value" value="false"/>
- </eAnnotations>
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_rFD99GyHEeKx9Kegn5X27A" source="displayNameLabelIcon">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_rFD99WyHEeKx9Kegn5X27A" key="displayNameLabelIcon_value" value="false"/>
- </eAnnotations>
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_rFD99myHEeKx9Kegn5X27A" source="QualifiedName">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_rFD992yHEeKx9Kegn5X27A" key="QualifiedNameDepth" value="1000"/>
- </eAnnotations>
- <children xmi:type="notation:DecorationNode" xmi:id="_rFD9-GyHEeKx9Kegn5X27A" type="5029"/>
- <children xmi:type="notation:BasicCompartment" xmi:id="_rFD9-WyHEeKx9Kegn5X27A" type="7017">
- <styles xmi:type="notation:TitleStyle" xmi:id="_rFD9-myHEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:SortingStyle" xmi:id="_rFD9-2yHEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:FilteringStyle" xmi:id="_rFD9_GyHEeKx9Kegn5X27A"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rFD9_WyHEeKx9Kegn5X27A"/>
- </children>
- <children xmi:type="notation:BasicCompartment" xmi:id="_rFD9_myHEeKx9Kegn5X27A" type="7018">
- <styles xmi:type="notation:TitleStyle" xmi:id="_rFD9_2yHEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:SortingStyle" xmi:id="_rFD-AGyHEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:FilteringStyle" xmi:id="_rFD-AWyHEeKx9Kegn5X27A"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rFD-AmyHEeKx9Kegn5X27A"/>
- </children>
- <children xmi:type="notation:BasicCompartment" xmi:id="_rFD-A2yHEeKx9Kegn5X27A" type="7019">
- <styles xmi:type="notation:TitleStyle" xmi:id="_rFD-BGyHEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:SortingStyle" xmi:id="_rFD-BWyHEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:FilteringStyle" xmi:id="_rFD-BmyHEeKx9Kegn5X27A"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rFD-B2yHEeKx9Kegn5X27A"/>
- </children>
- <children xmi:type="notation:DecorationNode" xmi:id="_D-iCCFViEeWe8LyZrqaAug" type="8510">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_D-iCCVViEeWe8LyZrqaAug" y="5"/>
- </children>
- <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/Ecore.metamodel.uml#EObject"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rFD98WyHEeKx9Kegn5X27A" x="740" y="794"/>
- </children>
- <children xmi:type="notation:Shape" xmi:id="_0mKgwGyHEeKx9Kegn5X27A" type="2008" fontName="Segoe UI" lineColor="0">
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_0mKgwmyHEeKx9Kegn5X27A" source="ShadowFigure">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0mKgw2yHEeKx9Kegn5X27A" key="ShadowFigure_Value" value="false"/>
- </eAnnotations>
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_0mKgxGyHEeKx9Kegn5X27A" source="displayNameLabelIcon">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0mKgxWyHEeKx9Kegn5X27A" key="displayNameLabelIcon_value" value="false"/>
- </eAnnotations>
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_0mKgxmyHEeKx9Kegn5X27A" source="QualifiedName">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0mKgx2yHEeKx9Kegn5X27A" key="QualifiedNameDepth" value="1000"/>
- </eAnnotations>
- <children xmi:type="notation:DecorationNode" xmi:id="_0mKgyGyHEeKx9Kegn5X27A" type="5029"/>
- <children xmi:type="notation:BasicCompartment" xmi:id="_0mKgyWyHEeKx9Kegn5X27A" type="7017">
- <styles xmi:type="notation:TitleStyle" xmi:id="_0mKgymyHEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:SortingStyle" xmi:id="_0mKgy2yHEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:FilteringStyle" xmi:id="_0mKgzGyHEeKx9Kegn5X27A"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0mKgzWyHEeKx9Kegn5X27A"/>
- </children>
- <children xmi:type="notation:BasicCompartment" xmi:id="_0mKgzmyHEeKx9Kegn5X27A" type="7018">
- <styles xmi:type="notation:TitleStyle" xmi:id="_0mKgz2yHEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:SortingStyle" xmi:id="_0mKg0GyHEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:FilteringStyle" xmi:id="_0mKg0WyHEeKx9Kegn5X27A"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0mKg0myHEeKx9Kegn5X27A"/>
- </children>
- <children xmi:type="notation:BasicCompartment" xmi:id="_0mKg02yHEeKx9Kegn5X27A" type="7019">
- <styles xmi:type="notation:TitleStyle" xmi:id="_0mKg1GyHEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:SortingStyle" xmi:id="_0mKg1WyHEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:FilteringStyle" xmi:id="_0mKg1myHEeKx9Kegn5X27A"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0mKg12yHEeKx9Kegn5X27A"/>
- </children>
- <children xmi:type="notation:DecorationNode" xmi:id="_D-iCClViEeWe8LyZrqaAug" type="8510">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_D-iCC1ViEeWe8LyZrqaAug" y="5"/>
- </children>
- <element xmi:type="uml:Class" href="sashwindowsdi.uml#_fbWYgEJVEd6kIY39uis5Uw"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0mKgwWyHEeKx9Kegn5X27A" x="780" y="534"/>
- </children>
- <children xmi:type="notation:Shape" xmi:id="_ED5DIFViEeWe8LyZrqaAug" type="StereotypeComment">
- <styles xmi:type="notation:TitleStyle" xmi:id="_ED5DIVViEeWe8LyZrqaAug" showTitle="true"/>
- <styles xmi:type="notation:EObjectValueStyle" xmi:id="_ED5DI1ViEeWe8LyZrqaAug" name="BASE_ELEMENT">
- <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/Ecore.metamodel.uml#EObject"/>
- </styles>
- <element xsi:nil="true"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ED5DIlViEeWe8LyZrqaAug" x="940" y="794"/>
- </children>
- <styles xmi:type="notation:DiagramStyle" xmi:id="_CCrlsWyHEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:StringValueStyle" xmi:id="_D-iCDFViEeWe8LyZrqaAug" name="diagram_compatibility_version" stringValue="1.1.0"/>
- <element xmi:type="uml:Model" href="sashwindowsdi.uml#_NuHhwEJVEd6kIY39uis5Uw"/>
- <edges xmi:type="notation:Connector" xmi:id="_CnIWt2yHEeKx9Kegn5X27A" type="4001" source="_CnSHmGyHEeKx9Kegn5X27A" target="_CnIWkGyHEeKx9Kegn5X27A" lineColor="0">
- <children xmi:type="notation:DecorationNode" xmi:id="_CnIWuGyHEeKx9Kegn5X27A" type="6001">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_CnIWuWyHEeKx9Kegn5X27A" y="-20"/>
- </children>
- <children xmi:type="notation:DecorationNode" xmi:id="_CnIWumyHEeKx9Kegn5X27A" visible="false" type="6002">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_CnIWu2yHEeKx9Kegn5X27A" y="20"/>
- </children>
- <children xmi:type="notation:DecorationNode" xmi:id="_CnIWvGyHEeKx9Kegn5X27A" type="6003">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_CnIWvWyHEeKx9Kegn5X27A" x="33" y="22"/>
- </children>
- <children xmi:type="notation:DecorationNode" xmi:id="_CnIWvmyHEeKx9Kegn5X27A" visible="false" type="6005">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_CnIWv2yHEeKx9Kegn5X27A" y="20"/>
- </children>
- <children xmi:type="notation:DecorationNode" xmi:id="_CnIWwGyHEeKx9Kegn5X27A" type="6033">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_CnIWwWyHEeKx9Kegn5X27A" y="20"/>
- </children>
- <children xmi:type="notation:DecorationNode" xmi:id="_CnIWwmyHEeKx9Kegn5X27A" type="6034">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_CnIWw2yHEeKx9Kegn5X27A" y="-20"/>
- </children>
- <styles xmi:type="notation:FontStyle" xmi:id="_CnIWxGyHEeKx9Kegn5X27A" fontName="Segoe UI"/>
- <element xmi:type="uml:Association" href="sashwindowsdi.uml#_-EQwkEMbEd6kIY39uis5Uw"/>
- <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_CnIWxWyHEeKx9Kegn5X27A" points="[-21, 50, 92, -220]$[-92, 220, 21, -50]"/>
- </edges>
- <edges xmi:type="notation:Connector" xmi:id="_CnIWxmyHEeKx9Kegn5X27A" type="4001" source="_CnbRv2yHEeKx9Kegn5X27A" target="_CnIWkGyHEeKx9Kegn5X27A" lineColor="0">
- <children xmi:type="notation:DecorationNode" xmi:id="_CnIWx2yHEeKx9Kegn5X27A" type="6001">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_CnIWyGyHEeKx9Kegn5X27A" y="-20"/>
- </children>
- <children xmi:type="notation:DecorationNode" xmi:id="_CnIWyWyHEeKx9Kegn5X27A" visible="false" type="6002">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_CnIWymyHEeKx9Kegn5X27A" y="20"/>
- </children>
- <children xmi:type="notation:DecorationNode" xmi:id="_CnIWy2yHEeKx9Kegn5X27A" type="6003">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_CnIWzGyHEeKx9Kegn5X27A" x="-33" y="-26"/>
- </children>
- <children xmi:type="notation:DecorationNode" xmi:id="_CnIWzWyHEeKx9Kegn5X27A" visible="false" type="6005">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_CnIWzmyHEeKx9Kegn5X27A" x="56" y="72"/>
- </children>
- <children xmi:type="notation:DecorationNode" xmi:id="_CnIWz2yHEeKx9Kegn5X27A" type="6033">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_CnIW0GyHEeKx9Kegn5X27A" y="20"/>
- </children>
- <children xmi:type="notation:DecorationNode" xmi:id="_CnIW0WyHEeKx9Kegn5X27A" type="6034">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_CnIW0myHEeKx9Kegn5X27A" x="56" y="-31"/>
- </children>
- <styles xmi:type="notation:FontStyle" xmi:id="_CnIW02yHEeKx9Kegn5X27A" fontName="Segoe UI"/>
- <element xmi:type="uml:Association" href="sashwindowsdi.uml#_9k0bgEMbEd6kIY39uis5Uw"/>
- <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_CnIW1GyHEeKx9Kegn5X27A" points="[-50, 0, 207, 294]$[-248, 0, 9, 294]$[-248, -244, 9, 50]"/>
- </edges>
- <edges xmi:type="notation:Connector" xmi:id="_CnSIDWyHEeKx9Kegn5X27A" type="4001" source="_CnSH4WyHEeKx9Kegn5X27A" target="_CnbRv2yHEeKx9Kegn5X27A" lineColor="0">
- <children xmi:type="notation:DecorationNode" xmi:id="_CnSIDmyHEeKx9Kegn5X27A" type="6001">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_CnSID2yHEeKx9Kegn5X27A" y="-20"/>
- </children>
- <children xmi:type="notation:DecorationNode" xmi:id="_CnSIEGyHEeKx9Kegn5X27A" visible="false" type="6002">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_CnSIEWyHEeKx9Kegn5X27A" y="20"/>
- </children>
- <children xmi:type="notation:DecorationNode" xmi:id="_CnSIEmyHEeKx9Kegn5X27A" type="6003">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_CnSIE2yHEeKx9Kegn5X27A" y="-20"/>
- </children>
- <children xmi:type="notation:DecorationNode" xmi:id="_CnSIFGyHEeKx9Kegn5X27A" type="6005">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_CnSIFWyHEeKx9Kegn5X27A" y="20"/>
- </children>
- <children xmi:type="notation:DecorationNode" xmi:id="_CnSIFmyHEeKx9Kegn5X27A" type="6033">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_CnSIF2yHEeKx9Kegn5X27A" y="20"/>
- </children>
- <children xmi:type="notation:DecorationNode" xmi:id="_CnSIGGyHEeKx9Kegn5X27A" type="6034">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_CnSIGWyHEeKx9Kegn5X27A" y="-20"/>
- </children>
- <styles xmi:type="notation:FontStyle" xmi:id="_CnSIGmyHEeKx9Kegn5X27A" fontName="Segoe UI"/>
- <element xmi:type="uml:Association" href="sashwindowsdi.uml#_viyZUEJZEd6kIY39uis5Uw"/>
- <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_CnSIG2yHEeKx9Kegn5X27A" points="[-50, -45, 600, 533]$[-650, -578, 0, 0]"/>
- </edges>
- <edges xmi:type="notation:Connector" xmi:id="_rGHG0GyHEeKx9Kegn5X27A" type="4001" source="_rFD98GyHEeKx9Kegn5X27A" target="_CnSH4WyHEeKx9Kegn5X27A" lineColor="0">
- <children xmi:type="notation:DecorationNode" xmi:id="_rGHG02yHEeKx9Kegn5X27A" type="6001">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_rGHG1GyHEeKx9Kegn5X27A" y="-20"/>
- </children>
- <children xmi:type="notation:DecorationNode" xmi:id="_rGHG1WyHEeKx9Kegn5X27A" visible="false" type="6002">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_rGHG1myHEeKx9Kegn5X27A" y="20"/>
- </children>
- <children xmi:type="notation:DecorationNode" xmi:id="_rGHG12yHEeKx9Kegn5X27A" type="6003">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_rGHG2GyHEeKx9Kegn5X27A" y="-20"/>
- </children>
- <children xmi:type="notation:DecorationNode" xmi:id="_rGHG2WyHEeKx9Kegn5X27A" type="6005">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_rGHG2myHEeKx9Kegn5X27A" y="20"/>
- </children>
- <children xmi:type="notation:DecorationNode" xmi:id="_rGHG22yHEeKx9Kegn5X27A" type="6033">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_rGHG3GyHEeKx9Kegn5X27A" y="20"/>
- </children>
- <children xmi:type="notation:DecorationNode" xmi:id="_rGHG3WyHEeKx9Kegn5X27A" type="6034">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_rGHG3myHEeKx9Kegn5X27A" y="-20"/>
- </children>
- <styles xmi:type="notation:FontStyle" xmi:id="_rGHG0WyHEeKx9Kegn5X27A" fontName="Segoe UI"/>
- <element xmi:type="uml:Association" href="sashwindowsdi.uml#_b3enUEnjEd6ussMWxXGeXg"/>
- <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_rGHG0myHEeKx9Kegn5X27A" points="[0, 0, -996, -582]$[946, 552, -50, -30]"/>
- </edges>
- <edges xmi:type="notation:Connector" xmi:id="_0mwWoGyHEeKx9Kegn5X27A" type="4001" source="_0mKgwGyHEeKx9Kegn5X27A" target="_CnSHmGyHEeKx9Kegn5X27A" lineColor="0">
- <children xmi:type="notation:DecorationNode" xmi:id="_0mwWo2yHEeKx9Kegn5X27A" type="6001">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_0mwWpGyHEeKx9Kegn5X27A" y="-20"/>
- </children>
- <children xmi:type="notation:DecorationNode" xmi:id="_0mwWpWyHEeKx9Kegn5X27A" visible="false" type="6002">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_0mwWpmyHEeKx9Kegn5X27A" y="20"/>
- </children>
- <children xmi:type="notation:DecorationNode" xmi:id="_0mwWp2yHEeKx9Kegn5X27A" type="6003">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_0mwWqGyHEeKx9Kegn5X27A" x="-30" y="70"/>
- </children>
- <children xmi:type="notation:DecorationNode" xmi:id="_0mwWqWyHEeKx9Kegn5X27A" visible="false" type="6005">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_0mwWqmyHEeKx9Kegn5X27A" x="26" y="-82"/>
- </children>
- <children xmi:type="notation:DecorationNode" xmi:id="_0mwWq2yHEeKx9Kegn5X27A" type="6033">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_0mwWrGyHEeKx9Kegn5X27A" y="20"/>
- </children>
- <children xmi:type="notation:DecorationNode" xmi:id="_0mwWrWyHEeKx9Kegn5X27A" visible="false" type="6034">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_0mwWrmyHEeKx9Kegn5X27A" y="-20"/>
- </children>
- <styles xmi:type="notation:FontStyle" xmi:id="_0mwWoWyHEeKx9Kegn5X27A" fontName="Segoe UI"/>
- <element xmi:type="uml:Association" href="sashwindowsdi.uml#_mT2jkEJkEd6kIY39uis5Uw"/>
- <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_0mwWomyHEeKx9Kegn5X27A" points="[0, 0, -694, -312]$[333, 150, -361, -162]"/>
- </edges>
- <edges xmi:type="notation:Connector" xmi:id="_ED5DJFViEeWe8LyZrqaAug" type="StereotypeCommentLink" source="_rFD98GyHEeKx9Kegn5X27A" target="_ED5DIFViEeWe8LyZrqaAug">
- <styles xmi:type="notation:FontStyle" xmi:id="_ED5DJVViEeWe8LyZrqaAug"/>
- <styles xmi:type="notation:EObjectValueStyle" xmi:id="_ED5DKVViEeWe8LyZrqaAug" name="BASE_ELEMENT">
- <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/Ecore.metamodel.uml#EObject"/>
- </styles>
- <element xsi:nil="true"/>
- <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ED5DJlViEeWe8LyZrqaAug" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
- <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ED5DJ1ViEeWe8LyZrqaAug"/>
- <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ED5DKFViEeWe8LyZrqaAug"/>
- </edges>
- </notation:Diagram>
- <notation:Diagram xmi:id="_0m_xwGyIEeKx9Kegn5X27A" type="PapyrusUMLClassDiagram" name="datatypes" measurementUnit="Pixel">
- <children xmi:type="notation:Shape" xmi:id="_2JyaMGyIEeKx9Kegn5X27A" type="2009" fontName="Segoe UI" lineColor="0">
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_2JyaMmyIEeKx9Kegn5X27A" source="ShadowFigure">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_2JyaM2yIEeKx9Kegn5X27A" key="ShadowFigure_Value" value="false"/>
- </eAnnotations>
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_2JyaNGyIEeKx9Kegn5X27A" source="displayNameLabelIcon">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_2JyaNWyIEeKx9Kegn5X27A" key="displayNameLabelIcon_value" value="false"/>
- </eAnnotations>
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_2JyaNmyIEeKx9Kegn5X27A" source="QualifiedName">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_2JyaN2yIEeKx9Kegn5X27A" key="QualifiedNameDepth" value="1000"/>
- </eAnnotations>
- <children xmi:type="notation:DecorationNode" xmi:id="_2JyaOGyIEeKx9Kegn5X27A" type="5032"/>
- <children xmi:type="notation:DecorationNode" xmi:id="_D69wolViEeWe8LyZrqaAug" type="8511">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_D69wo1ViEeWe8LyZrqaAug" y="5"/>
- </children>
- <element xmi:type="uml:PrimitiveType" href="sashwindowsdi.uml#_Hkk78EVbEd6g-YgfS2DHrA"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2JyaMWyIEeKx9Kegn5X27A" x="120" y="196"/>
- </children>
- <children xmi:type="notation:Shape" xmi:id="_2ldCgGyIEeKx9Kegn5X27A" type="2009" fontName="Segoe UI" lineColor="0">
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_2ldCgmyIEeKx9Kegn5X27A" source="ShadowFigure">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_2ldCg2yIEeKx9Kegn5X27A" key="ShadowFigure_Value" value="false"/>
- </eAnnotations>
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_2ldChGyIEeKx9Kegn5X27A" source="displayNameLabelIcon">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_2ldChWyIEeKx9Kegn5X27A" key="displayNameLabelIcon_value" value="false"/>
- </eAnnotations>
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_2ldChmyIEeKx9Kegn5X27A" source="QualifiedName">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_2ldCh2yIEeKx9Kegn5X27A" key="QualifiedNameDepth" value="1000"/>
- </eAnnotations>
- <children xmi:type="notation:DecorationNode" xmi:id="_2ldCiGyIEeKx9Kegn5X27A" type="5032"/>
- <children xmi:type="notation:DecorationNode" xmi:id="_D69wpFViEeWe8LyZrqaAug" type="8511">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_D69wpVViEeWe8LyZrqaAug" y="5"/>
- </children>
- <element xmi:type="uml:PrimitiveType" href="sashwindowsdi.uml#_A-BP8EVhEd6g-YgfS2DHrA"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2ldCgWyIEeKx9Kegn5X27A" x="342" y="192"/>
- </children>
- <children xmi:type="notation:Shape" xmi:id="_28g3oGyIEeKx9Kegn5X27A" type="2009" fontName="Segoe UI" lineColor="0">
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_28g3omyIEeKx9Kegn5X27A" source="ShadowFigure">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_28g3o2yIEeKx9Kegn5X27A" key="ShadowFigure_Value" value="false"/>
- </eAnnotations>
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_28g3pGyIEeKx9Kegn5X27A" source="displayNameLabelIcon">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_28g3pWyIEeKx9Kegn5X27A" key="displayNameLabelIcon_value" value="false"/>
- </eAnnotations>
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_28g3pmyIEeKx9Kegn5X27A" source="QualifiedName">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_28g3p2yIEeKx9Kegn5X27A" key="QualifiedNameDepth" value="1000"/>
- </eAnnotations>
- <children xmi:type="notation:DecorationNode" xmi:id="_28g3qGyIEeKx9Kegn5X27A" type="5032"/>
- <children xmi:type="notation:DecorationNode" xmi:id="_D69wplViEeWe8LyZrqaAug" type="8511">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_D69wp1ViEeWe8LyZrqaAug" y="5"/>
- </children>
- <element xmi:type="uml:PrimitiveType" href="sashwindowsdi.uml#_IEBx4EV4Ed6g-YgfS2DHrA"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_28g3oWyIEeKx9Kegn5X27A" x="120" y="324"/>
- </children>
- <children xmi:type="notation:Shape" xmi:id="_3hRKgGyIEeKx9Kegn5X27A" type="2009" fontName="Segoe UI" lineColor="0">
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3hRKgmyIEeKx9Kegn5X27A" source="ShadowFigure">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3hRKg2yIEeKx9Kegn5X27A" key="ShadowFigure_Value" value="false"/>
- </eAnnotations>
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3hRKhGyIEeKx9Kegn5X27A" source="displayNameLabelIcon">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3hRKhWyIEeKx9Kegn5X27A" key="displayNameLabelIcon_value" value="false"/>
- </eAnnotations>
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3hRKhmyIEeKx9Kegn5X27A" source="QualifiedName">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3hRKh2yIEeKx9Kegn5X27A" key="QualifiedNameDepth" value="1000"/>
- </eAnnotations>
- <children xmi:type="notation:DecorationNode" xmi:id="_3hRKiGyIEeKx9Kegn5X27A" type="5032"/>
- <children xmi:type="notation:DecorationNode" xmi:id="_D69wqFViEeWe8LyZrqaAug" type="8511">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_D69wqVViEeWe8LyZrqaAug" y="5"/>
- </children>
- <element xmi:type="uml:PrimitiveType" href="sashwindowsdi.uml#_SNSWAEbaEd6g-YgfS2DHrA"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3hRKgWyIEeKx9Kegn5X27A" x="344" y="328"/>
- </children>
- <children xmi:type="notation:Shape" xmi:id="_D8v5WVViEeWe8LyZrqaAug" type="StereotypeComment">
- <styles xmi:type="notation:TitleStyle" xmi:id="_D8v5WlViEeWe8LyZrqaAug" showTitle="true"/>
- <styles xmi:type="notation:EObjectValueStyle" xmi:id="_D8v5XFViEeWe8LyZrqaAug" name="BASE_ELEMENT">
- <eObjectValue xmi:type="uml:PrimitiveType" href="sashwindowsdi.uml#_Hkk78EVbEd6g-YgfS2DHrA"/>
- </styles>
- <element xsi:nil="true"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_D8v5W1ViEeWe8LyZrqaAug" x="320" y="196"/>
- </children>
- <children xmi:type="notation:Shape" xmi:id="_D9MlS1ViEeWe8LyZrqaAug" type="StereotypeComment">
- <styles xmi:type="notation:TitleStyle" xmi:id="_D9MlTFViEeWe8LyZrqaAug" showTitle="true"/>
- <styles xmi:type="notation:EObjectValueStyle" xmi:id="_D9MlTlViEeWe8LyZrqaAug" name="BASE_ELEMENT">
- <eObjectValue xmi:type="uml:PrimitiveType" href="sashwindowsdi.uml#_A-BP8EVhEd6g-YgfS2DHrA"/>
- </styles>
- <element xsi:nil="true"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_D9MlTVViEeWe8LyZrqaAug" x="542" y="192"/>
- </children>
- <children xmi:type="notation:Shape" xmi:id="_D9fgP1ViEeWe8LyZrqaAug" type="StereotypeComment">
- <styles xmi:type="notation:TitleStyle" xmi:id="_D9fgQFViEeWe8LyZrqaAug" showTitle="true"/>
- <styles xmi:type="notation:EObjectValueStyle" xmi:id="_D9fgQlViEeWe8LyZrqaAug" name="BASE_ELEMENT">
- <eObjectValue xmi:type="uml:PrimitiveType" href="sashwindowsdi.uml#_IEBx4EV4Ed6g-YgfS2DHrA"/>
- </styles>
- <element xsi:nil="true"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_D9fgQVViEeWe8LyZrqaAug" x="320" y="324"/>
- </children>
- <children xmi:type="notation:Shape" xmi:id="_D-PHE1ViEeWe8LyZrqaAug" type="StereotypeComment">
- <styles xmi:type="notation:TitleStyle" xmi:id="_D-PHFFViEeWe8LyZrqaAug" showTitle="true"/>
- <styles xmi:type="notation:EObjectValueStyle" xmi:id="_D-PHFlViEeWe8LyZrqaAug" name="BASE_ELEMENT">
- <eObjectValue xmi:type="uml:PrimitiveType" href="sashwindowsdi.uml#_SNSWAEbaEd6g-YgfS2DHrA"/>
- </styles>
- <element xsi:nil="true"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_D-PHFVViEeWe8LyZrqaAug" x="544" y="328"/>
- </children>
- <styles xmi:type="notation:DiagramStyle" xmi:id="_0m_xwWyIEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:StringValueStyle" xmi:id="_D69wqlViEeWe8LyZrqaAug" name="diagram_compatibility_version" stringValue="1.1.0"/>
- <element xmi:type="uml:Model" href="sashwindowsdi.uml#_NuHhwEJVEd6kIY39uis5Uw"/>
- <edges xmi:type="notation:Connector" xmi:id="_D8v5XVViEeWe8LyZrqaAug" type="StereotypeCommentLink" source="_2JyaMGyIEeKx9Kegn5X27A" target="_D8v5WVViEeWe8LyZrqaAug">
- <styles xmi:type="notation:FontStyle" xmi:id="_D8v5XlViEeWe8LyZrqaAug"/>
- <styles xmi:type="notation:EObjectValueStyle" xmi:id="_D8v5YlViEeWe8LyZrqaAug" name="BASE_ELEMENT">
- <eObjectValue xmi:type="uml:PrimitiveType" href="sashwindowsdi.uml#_Hkk78EVbEd6g-YgfS2DHrA"/>
- </styles>
- <element xsi:nil="true"/>
- <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_D8v5X1ViEeWe8LyZrqaAug" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
- <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_D8v5YFViEeWe8LyZrqaAug"/>
- <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_D8v5YVViEeWe8LyZrqaAug"/>
- </edges>
- <edges xmi:type="notation:Connector" xmi:id="_D9MlT1ViEeWe8LyZrqaAug" type="StereotypeCommentLink" source="_2ldCgGyIEeKx9Kegn5X27A" target="_D9MlS1ViEeWe8LyZrqaAug">
- <styles xmi:type="notation:FontStyle" xmi:id="_D9MlUFViEeWe8LyZrqaAug"/>
- <styles xmi:type="notation:EObjectValueStyle" xmi:id="_D9MlVFViEeWe8LyZrqaAug" name="BASE_ELEMENT">
- <eObjectValue xmi:type="uml:PrimitiveType" href="sashwindowsdi.uml#_A-BP8EVhEd6g-YgfS2DHrA"/>
- </styles>
- <element xsi:nil="true"/>
- <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_D9MlUVViEeWe8LyZrqaAug" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
- <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_D9MlUlViEeWe8LyZrqaAug"/>
- <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_D9MlU1ViEeWe8LyZrqaAug"/>
- </edges>
- <edges xmi:type="notation:Connector" xmi:id="_D9fgQ1ViEeWe8LyZrqaAug" type="StereotypeCommentLink" source="_28g3oGyIEeKx9Kegn5X27A" target="_D9fgP1ViEeWe8LyZrqaAug">
- <styles xmi:type="notation:FontStyle" xmi:id="_D9fgRFViEeWe8LyZrqaAug"/>
- <styles xmi:type="notation:EObjectValueStyle" xmi:id="_D9fgSFViEeWe8LyZrqaAug" name="BASE_ELEMENT">
- <eObjectValue xmi:type="uml:PrimitiveType" href="sashwindowsdi.uml#_IEBx4EV4Ed6g-YgfS2DHrA"/>
- </styles>
- <element xsi:nil="true"/>
- <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_D9fgRVViEeWe8LyZrqaAug" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
- <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_D9fgRlViEeWe8LyZrqaAug"/>
- <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_D9fgR1ViEeWe8LyZrqaAug"/>
- </edges>
- <edges xmi:type="notation:Connector" xmi:id="_D-PHF1ViEeWe8LyZrqaAug" type="StereotypeCommentLink" source="_3hRKgGyIEeKx9Kegn5X27A" target="_D-PHE1ViEeWe8LyZrqaAug">
- <styles xmi:type="notation:FontStyle" xmi:id="_D-PHGFViEeWe8LyZrqaAug"/>
- <styles xmi:type="notation:EObjectValueStyle" xmi:id="_D-PHHFViEeWe8LyZrqaAug" name="BASE_ELEMENT">
- <eObjectValue xmi:type="uml:PrimitiveType" href="sashwindowsdi.uml#_SNSWAEbaEd6g-YgfS2DHrA"/>
- </styles>
- <element xsi:nil="true"/>
- <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_D-PHGVViEeWe8LyZrqaAug" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
- <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_D-PHGlViEeWe8LyZrqaAug"/>
- <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_D-PHG1ViEeWe8LyZrqaAug"/>
- </edges>
- </notation:Diagram>
- <notation:Diagram xmi:id="_lk72EG8gEeKx9Kegn5X27A" type="PapyrusUMLClassDiagram" name="ClassDiagram" measurementUnit="Pixel">
- <styles xmi:type="notation:DiagramStyle" xmi:id="_lk72EW8gEeKx9Kegn5X27A"/>
- <styles xmi:type="notation:StringValueStyle" xmi:id="_D57O0FViEeWe8LyZrqaAug" name="diagram_compatibility_version" stringValue="1.1.0"/>
- <element xmi:type="uml:Model" href="sashwindowsdi.uml#_NuHhwEJVEd6kIY39uis5Uw"/>
- </notation:Diagram>
-</xmi:XMI>
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML">
+ <notation:Diagram xmi:id="_xRNpEGyFEeKx9Kegn5X27A" type="PapyrusUMLClassDiagram" name="overview" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_z0HqsGyFEeKx9Kegn5X27A" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_z0RbsGyFEeKx9Kegn5X27A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_z0RbsWyFEeKx9Kegn5X27A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_z0RbsmyFEeKx9Kegn5X27A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_z0Rbs2yFEeKx9Kegn5X27A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_z0RbtGyFEeKx9Kegn5X27A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_z0RbtWyFEeKx9Kegn5X27A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_z0RbtmyFEeKx9Kegn5X27A" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_z0Rbt2yFEeKx9Kegn5X27A" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_z0RbuGyFEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_z0RbuWyFEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_z0RbumyFEeKx9Kegn5X27A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_z0Rbu2yFEeKx9Kegn5X27A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_z0RbvGyFEeKx9Kegn5X27A" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_z0RbvWyFEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_z0RbvmyFEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_z0Rbv2yFEeKx9Kegn5X27A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_z0RbwGyFEeKx9Kegn5X27A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_z0RbwWyFEeKx9Kegn5X27A" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_z0RbwmyFEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_z0Rbw2yFEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_z0RbxGyFEeKx9Kegn5X27A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_z0RbxWyFEeKx9Kegn5X27A"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Dd9EgFViEeWe8LyZrqaAug" type="8510">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Dd9EgVViEeWe8LyZrqaAug" y="5"/>
+ </children>
+ <element xmi:type="uml:Class" href="sashwindowsdi.uml#_Xa5wIEJVEd6kIY39uis5Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_z0HqsWyFEeKx9Kegn5X27A" x="498" y="216"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_z1T9gGyFEeKx9Kegn5X27A" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_z1T9gmyFEeKx9Kegn5X27A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_z1T9g2yFEeKx9Kegn5X27A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_z1T9hGyFEeKx9Kegn5X27A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_z1T9hWyFEeKx9Kegn5X27A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_z1T9hmyFEeKx9Kegn5X27A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_z1T9h2yFEeKx9Kegn5X27A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_z1T9iGyFEeKx9Kegn5X27A" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_z1T9iWyFEeKx9Kegn5X27A" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_eGgOoJUXEeWeT68xCjxnSQ" type="3012">
+ <element xmi:type="uml:Property" href="sashwindowsdi.uml#_eF-DIJUXEeWeT68xCjxnSQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_eGgOoZUXEeWeT68xCjxnSQ"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_z1T9imyFEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_z1T9i2yFEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_z1T9jGyFEeKx9Kegn5X27A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_z1T9jWyFEeKx9Kegn5X27A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_z1T9jmyFEeKx9Kegn5X27A" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_z1T9j2yFEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_z1T9kGyFEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_z1T9kWyFEeKx9Kegn5X27A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_z1T9kmyFEeKx9Kegn5X27A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_z1T9k2yFEeKx9Kegn5X27A" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_z1T9lGyFEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_z1T9lWyFEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_z1T9lmyFEeKx9Kegn5X27A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_z1T9l2yFEeKx9Kegn5X27A"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Dd9EglViEeWe8LyZrqaAug" type="8510">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Dd9Eg1ViEeWe8LyZrqaAug" y="5"/>
+ </children>
+ <element xmi:type="uml:Class" href="sashwindowsdi.uml#_UiIMMEJVEd6kIY39uis5Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_z1T9gWyFEeKx9Kegn5X27A" x="229" y="215"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_4bTRMGyFEeKx9Kegn5X27A" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_4bTRMmyFEeKx9Kegn5X27A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4bTRM2yFEeKx9Kegn5X27A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_4bcbIGyFEeKx9Kegn5X27A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4bcbIWyFEeKx9Kegn5X27A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_4bcbImyFEeKx9Kegn5X27A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4bcbI2yFEeKx9Kegn5X27A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_4bcbJGyFEeKx9Kegn5X27A" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_4bcbJWyFEeKx9Kegn5X27A" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_4bcbJmyFEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_4bcbJ2yFEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_4bcbKGyFEeKx9Kegn5X27A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_4bcbKWyFEeKx9Kegn5X27A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_4bcbKmyFEeKx9Kegn5X27A" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_4bcbK2yFEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_4bcbLGyFEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_4bcbLWyFEeKx9Kegn5X27A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_4bcbLmyFEeKx9Kegn5X27A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_4bcbL2yFEeKx9Kegn5X27A" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_4bcbMGyFEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_4bcbMWyFEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_4bcbMmyFEeKx9Kegn5X27A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_4bcbM2yFEeKx9Kegn5X27A"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Dd9EhFViEeWe8LyZrqaAug" type="8510">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Dd9EhVViEeWe8LyZrqaAug" y="5"/>
+ </children>
+ <element xmi:type="uml:Class" href="sashwindowsdi.uml#_fbWYgEJVEd6kIY39uis5Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_4bTRMWyFEeKx9Kegn5X27A" x="936" y="222"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_6BzU8GyFEeKx9Kegn5X27A" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6BzU8myFEeKx9Kegn5X27A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6BzU82yFEeKx9Kegn5X27A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6BzU9GyFEeKx9Kegn5X27A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6BzU9WyFEeKx9Kegn5X27A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6BzU9myFEeKx9Kegn5X27A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6BzU92yFEeKx9Kegn5X27A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_6BzU-GyFEeKx9Kegn5X27A" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_6BzU-WyFEeKx9Kegn5X27A" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_6BzU-myFEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_6BzU-2yFEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_6BzU_GyFEeKx9Kegn5X27A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6BzU_WyFEeKx9Kegn5X27A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_6BzU_myFEeKx9Kegn5X27A" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_6BzU_2yFEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_6BzVAGyFEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_6BzVAWyFEeKx9Kegn5X27A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6BzVAmyFEeKx9Kegn5X27A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_6BzVA2yFEeKx9Kegn5X27A" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_6BzVBGyFEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_6BzVBWyFEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_6BzVBmyFEeKx9Kegn5X27A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6BzVB2yFEeKx9Kegn5X27A"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Dd9EhlViEeWe8LyZrqaAug" type="8510">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Dd9Eh1ViEeWe8LyZrqaAug" y="5"/>
+ </children>
+ <element xmi:type="uml:Class" href="sashwindowsdi.uml#_Zx2ZYEJVEd6kIY39uis5Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6BzU8WyFEeKx9Kegn5X27A" x="936" y="48"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_6Ci70GyFEeKx9Kegn5X27A" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6Ci70myFEeKx9Kegn5X27A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6Ci702yFEeKx9Kegn5X27A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6Ci71GyFEeKx9Kegn5X27A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6Ci71WyFEeKx9Kegn5X27A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6Ci71myFEeKx9Kegn5X27A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6Ci712yFEeKx9Kegn5X27A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_6Ci72GyFEeKx9Kegn5X27A" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_6Ci72WyFEeKx9Kegn5X27A" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_6Ci72myFEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_6Ci722yFEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_6Ci73GyFEeKx9Kegn5X27A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6Ci73WyFEeKx9Kegn5X27A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_6Ci73myFEeKx9Kegn5X27A" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_6Ci732yFEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_6Ci74GyFEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_6Ci74WyFEeKx9Kegn5X27A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6Ci74myFEeKx9Kegn5X27A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_6Ci742yFEeKx9Kegn5X27A" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_6Ci75GyFEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_6Ci75WyFEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_6Ci75myFEeKx9Kegn5X27A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6Ci752yFEeKx9Kegn5X27A"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Dd9EiFViEeWe8LyZrqaAug" type="8510">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Dd9EiVViEeWe8LyZrqaAug" y="5"/>
+ </children>
+ <element xmi:type="uml:Class" href="sashwindowsdi.uml#_86BAgEJWEd6kIY39uis5Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6Ci70WyFEeKx9Kegn5X27A" x="726" y="48"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_6knuIGyFEeKx9Kegn5X27A" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6knuImyFEeKx9Kegn5X27A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6knuI2yFEeKx9Kegn5X27A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6knuJGyFEeKx9Kegn5X27A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6knuJWyFEeKx9Kegn5X27A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6knuJmyFEeKx9Kegn5X27A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6knuJ2yFEeKx9Kegn5X27A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_6knuKGyFEeKx9Kegn5X27A" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_6knuKWyFEeKx9Kegn5X27A" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_RHjtwFViEeWe8LyZrqaAug" type="3012">
+ <element xmi:type="uml:Property" href="sashwindowsdi.uml#_RGhL8FViEeWe8LyZrqaAug"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_RHjtwVViEeWe8LyZrqaAug"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_6knuKmyFEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_6knuK2yFEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_6knuLGyFEeKx9Kegn5X27A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6knuLWyFEeKx9Kegn5X27A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_6knuLmyFEeKx9Kegn5X27A" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_6knuL2yFEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_6knuMGyFEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_6knuMWyFEeKx9Kegn5X27A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6knuMmyFEeKx9Kegn5X27A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_6knuM2yFEeKx9Kegn5X27A" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_6knuNGyFEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_6knuNWyFEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_6knuNmyFEeKx9Kegn5X27A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6knuN2yFEeKx9Kegn5X27A"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Dd9EilViEeWe8LyZrqaAug" type="8510">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Dd9Ei1ViEeWe8LyZrqaAug" y="5"/>
+ </children>
+ <element xmi:type="uml:Class" href="sashwindowsdi.uml#_h_HVwEJVEd6kIY39uis5Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6knuIWyFEeKx9Kegn5X27A" x="909" y="522"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_CZQIEGyGEeKx9Kegn5X27A" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_CZQIEmyGEeKx9Kegn5X27A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_CZQIE2yGEeKx9Kegn5X27A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_CZQIFGyGEeKx9Kegn5X27A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_CZQIFWyGEeKx9Kegn5X27A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_CZQIFmyGEeKx9Kegn5X27A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_CZQIF2yGEeKx9Kegn5X27A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_CZQIGGyGEeKx9Kegn5X27A" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_CZQIGWyGEeKx9Kegn5X27A" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_CZQIGmyGEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_CZQIG2yGEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_CZQIHGyGEeKx9Kegn5X27A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CZQIHWyGEeKx9Kegn5X27A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_CZQIHmyGEeKx9Kegn5X27A" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_CZQIH2yGEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_CZQIIGyGEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_CZQIIWyGEeKx9Kegn5X27A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CZQIImyGEeKx9Kegn5X27A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_CZQII2yGEeKx9Kegn5X27A" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_CZQIJGyGEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_CZQIJWyGEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_CZQIJmyGEeKx9Kegn5X27A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CZQIJ2yGEeKx9Kegn5X27A"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Dd9EjFViEeWe8LyZrqaAug" type="8510">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Dd9EjVViEeWe8LyZrqaAug" y="5"/>
+ </children>
+ <element xmi:type="uml:Class" href="sashwindowsdi.uml#_eE7YIEJVEd6kIY39uis5Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CZQIEWyGEeKx9Kegn5X27A" x="732" y="216"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_QHBfoGyGEeKx9Kegn5X27A" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_QHBfomyGEeKx9Kegn5X27A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_QHBfo2yGEeKx9Kegn5X27A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_QHBfpGyGEeKx9Kegn5X27A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_QHBfpWyGEeKx9Kegn5X27A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_QHBfpmyGEeKx9Kegn5X27A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_QHBfp2yGEeKx9Kegn5X27A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_QHKpkGyGEeKx9Kegn5X27A" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_QHKpkWyGEeKx9Kegn5X27A" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_QHKpkmyGEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_QHKpk2yGEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_QHKplGyGEeKx9Kegn5X27A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QHKplWyGEeKx9Kegn5X27A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_QHKplmyGEeKx9Kegn5X27A" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_QHKpl2yGEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_QHKpmGyGEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_QHKpmWyGEeKx9Kegn5X27A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QHKpmmyGEeKx9Kegn5X27A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_QHKpm2yGEeKx9Kegn5X27A" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_QHKpnGyGEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_QHKpnWyGEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_QHKpnmyGEeKx9Kegn5X27A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QHKpn2yGEeKx9Kegn5X27A"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Dd9EjlViEeWe8LyZrqaAug" type="8510">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Dd9Ej1ViEeWe8LyZrqaAug" y="5"/>
+ </children>
+ <element xmi:type="uml:Class" href="sashwindowsdi.uml#_b7a4cEMaEd6kIY39uis5Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QHBfoWyGEeKx9Kegn5X27A" x="294" y="516"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_eHZDEGyGEeKx9Kegn5X27A" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_eHZDEmyGEeKx9Kegn5X27A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_eHZDE2yGEeKx9Kegn5X27A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_eHZDFGyGEeKx9Kegn5X27A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_eHZDFWyGEeKx9Kegn5X27A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_eHZDFmyGEeKx9Kegn5X27A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_eHZDF2yGEeKx9Kegn5X27A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_eHZDGGyGEeKx9Kegn5X27A" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_eHZDGWyGEeKx9Kegn5X27A" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_eHZDGmyGEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_eHZDG2yGEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_eHZDHGyGEeKx9Kegn5X27A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_eHZDHWyGEeKx9Kegn5X27A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_eHZDHmyGEeKx9Kegn5X27A" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_eHZDH2yGEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_eHZDIGyGEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_eHZDIWyGEeKx9Kegn5X27A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_eHZDImyGEeKx9Kegn5X27A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_eHZDI2yGEeKx9Kegn5X27A" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_eHZDJGyGEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_eHZDJWyGEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_eHZDJmyGEeKx9Kegn5X27A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_eHZDJ2yGEeKx9Kegn5X27A"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Dd9EkFViEeWe8LyZrqaAug" type="8510">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Dd9EkVViEeWe8LyZrqaAug" y="5"/>
+ </children>
+ <element xmi:type="uml:Class" href="sashwindowsdi.uml#_-9vywEMaEd6kIY39uis5Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_eHZDEWyGEeKx9Kegn5X27A" x="24" y="222"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="__nlxYGyIEeKx9Kegn5X27A" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__nlxYmyIEeKx9Kegn5X27A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__nlxY2yIEeKx9Kegn5X27A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__nlxZGyIEeKx9Kegn5X27A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__nlxZWyIEeKx9Kegn5X27A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__nlxZmyIEeKx9Kegn5X27A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__nlxZ2yIEeKx9Kegn5X27A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="__nlxaGyIEeKx9Kegn5X27A" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="__nlxaWyIEeKx9Kegn5X27A" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="__nlxamyIEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="__nlxa2yIEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="__nlxbGyIEeKx9Kegn5X27A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="__nlxbWyIEeKx9Kegn5X27A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="__nlxbmyIEeKx9Kegn5X27A" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="__nlxb2yIEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="__nlxcGyIEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="__nlxcWyIEeKx9Kegn5X27A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="__nlxcmyIEeKx9Kegn5X27A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="__nlxc2yIEeKx9Kegn5X27A" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="__nlxdGyIEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="__nlxdWyIEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="__nlxdmyIEeKx9Kegn5X27A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="__nlxd2yIEeKx9Kegn5X27A"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Dd9EklViEeWe8LyZrqaAug" type="8510">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Dd9Ek1ViEeWe8LyZrqaAug" y="5"/>
+ </children>
+ <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/Ecore.metamodel.uml#EObject"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="__nlxYWyIEeKx9Kegn5X27A" x="1216" y="522"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_D03IoFViEeWe8LyZrqaAug" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_D03IoVViEeWe8LyZrqaAug" showTitle="true"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_D03Io1ViEeWe8LyZrqaAug" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/Ecore.metamodel.uml#EObject"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_D03IolViEeWe8LyZrqaAug" x="1334" y="522"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_xRNpEWyFEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:StringValueStyle" xmi:id="_Dd9ElFViEeWe8LyZrqaAug" name="diagram_compatibility_version" stringValue="1.1.0"/>
+ <element xmi:type="uml:Model" href="sashwindowsdi.uml#_NuHhwEJVEd6kIY39uis5Uw"/>
+ <edges xmi:type="notation:Connector" xmi:id="_z3ZoMGyFEeKx9Kegn5X27A" type="4001" source="_z0HqsGyFEeKx9Kegn5X27A" target="_z1T9gGyFEeKx9Kegn5X27A" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_z3iyIGyFEeKx9Kegn5X27A" type="6001">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_mMjvwJUXEeWeT68xCjxnSQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_z3iyIWyFEeKx9Kegn5X27A" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_z3iyImyFEeKx9Kegn5X27A" visible="false" type="6002">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_mM340JUXEeWeT68xCjxnSQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_z3iyI2yFEeKx9Kegn5X27A" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_z3iyJGyFEeKx9Kegn5X27A" type="6003">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_mNMo8JUXEeWeT68xCjxnSQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_z3iyJWyFEeKx9Kegn5X27A" x="28" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_z3iyJmyFEeKx9Kegn5X27A" visible="false" type="6005">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_mNhZEJUXEeWeT68xCjxnSQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_z3iyJ2yFEeKx9Kegn5X27A" x="-6" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_z3iyKGyFEeKx9Kegn5X27A" type="6033">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_mN3XUJUXEeWeT68xCjxnSQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_z3iyKWyFEeKx9Kegn5X27A" x="6" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_z3iyKmyFEeKx9Kegn5X27A" type="6034">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_mOMHcJUXEeWeT68xCjxnSQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_z3iyK2yFEeKx9Kegn5X27A" x="-15" y="18"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_z3ZoMWyFEeKx9Kegn5X27A" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="sashwindowsdi.uml#_9JomUEJVEd6kIY39uis5Uw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_z3ZoMmyFEeKx9Kegn5X27A" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_mQcKMZUXEeWeT68xCjxnSQ" id="(0.0,0.49)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_mQcKMpUXEeWeT68xCjxnSQ" id="(1.0,0.5)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_4cfkAGyFEeKx9Kegn5X27A" type="4001" source="_4bTRMGyFEeKx9Kegn5X27A" target="_z1T9gGyFEeKx9Kegn5X27A" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_4cfkA2yFEeKx9Kegn5X27A" type="6001">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_mOgQgJUXEeWeT68xCjxnSQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_4cfkBGyFEeKx9Kegn5X27A" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_4cfkBWyFEeKx9Kegn5X27A" visible="false" type="6002">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_mO1nsJUXEeWeT68xCjxnSQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_4cfkBmyFEeKx9Kegn5X27A" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_4cfkB2yFEeKx9Kegn5X27A" type="6003">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_mPJwwJUXEeWeT68xCjxnSQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_4cfkCGyFEeKx9Kegn5X27A" x="75" y="-47"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_4cfkCWyFEeKx9Kegn5X27A" visible="false" type="6005">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_mPcrsJUXEeWeT68xCjxnSQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_4cfkCmyFEeKx9Kegn5X27A" x="-16" y="-69"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_4cfkC2yFEeKx9Kegn5X27A" type="6033">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_mPtxcJUXEeWeT68xCjxnSQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_4cfkDGyFEeKx9Kegn5X27A" x="103" y="18"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_4cfkDWyFEeKx9Kegn5X27A" type="6034">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_mP-3MJUXEeWeT68xCjxnSQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_4cfkDmyFEeKx9Kegn5X27A" x="-16" y="-109"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_4cfkAWyFEeKx9Kegn5X27A" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="sashwindowsdi.uml#_mT2jkEJkEd6kIY39uis5Uw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_4cfkAmyFEeKx9Kegn5X27A" points="[936, 306, -643984, -643984]$[758, 444, -643984, -643984]$[325, 444, -643984, -643984]$[321, 315, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_mQbjIJUXEeWeT68xCjxnSQ" id="(0.0,0.84)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_mQcKMJUXEeWeT68xCjxnSQ" id="(0.5423728813559322,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_6DldoGyFEeKx9Kegn5X27A" type="4001" source="_6BzU8GyFEeKx9Kegn5X27A" target="_6Ci70GyFEeKx9Kegn5X27A" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_6DvOoGyFEeKx9Kegn5X27A" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_6DvOoWyFEeKx9Kegn5X27A" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_6DvOomyFEeKx9Kegn5X27A" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_6DvOo2yFEeKx9Kegn5X27A" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_6DvOpGyFEeKx9Kegn5X27A" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_6DvOpWyFEeKx9Kegn5X27A" x="25" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_6DvOpmyFEeKx9Kegn5X27A" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_6DvOp2yFEeKx9Kegn5X27A" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_6DvOqGyFEeKx9Kegn5X27A" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_6DvOqWyFEeKx9Kegn5X27A" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_6DvOqmyFEeKx9Kegn5X27A" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_6DvOq2yFEeKx9Kegn5X27A" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_6DldoWyFEeKx9Kegn5X27A" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="sashwindowsdi.uml#__CVNUEJVEd6kIY39uis5Uw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_6DldomyFEeKx9Kegn5X27A" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_6lXVAGyFEeKx9Kegn5X27A" type="4001" source="_6knuIGyFEeKx9Kegn5X27A" target="_4bTRMGyFEeKx9Kegn5X27A" routing="Rectilinear" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_6lXVA2yFEeKx9Kegn5X27A" type="6001">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_y01toJUREeWeT68xCjxnSQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_6lXVBGyFEeKx9Kegn5X27A" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_6lXVBWyFEeKx9Kegn5X27A" visible="false" type="6002">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_y1IBgJUREeWeT68xCjxnSQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_6lXVBmyFEeKx9Kegn5X27A" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_6lXVB2yFEeKx9Kegn5X27A" type="6003">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_y1cxoJUREeWeT68xCjxnSQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_6lXVCGyFEeKx9Kegn5X27A" x="22" y="-39"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_6lXVCWyFEeKx9Kegn5X27A" type="6005">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_y1xhwJUREeWeT68xCjxnSQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_6lXVCmyFEeKx9Kegn5X27A" x="-17" y="32"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_6lXVC2yFEeKx9Kegn5X27A" type="6033">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_y2HgAJUREeWeT68xCjxnSQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_6lXVDGyFEeKx9Kegn5X27A" x="31" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_6lXVDWyFEeKx9Kegn5X27A" type="6034">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_y2bpEJUREeWeT68xCjxnSQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_6lXVDmyFEeKx9Kegn5X27A" x="-25" y="-30"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_6lXVAWyFEeKx9Kegn5X27A" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="sashwindowsdi.uml#_AM_CkEJWEd6kIY39uis5Uw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_6lXVAmyFEeKx9Kegn5X27A" points="[966, 522, -643984, -643984]$[966, 422, -643984, -643984]$[959, 422, -643984, -643984]$[959, 322, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_bn3q0FViEeWe8LyZrqaAug" id="(0.3125,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_bn3q0VViEeWe8LyZrqaAug" id="(0.23,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_-YK4QGyFEeKx9Kegn5X27A" type="4002" source="_z0HqsGyFEeKx9Kegn5X27A" target="_6Ci70GyFEeKx9Kegn5X27A" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_-YK4Q2yFEeKx9Kegn5X27A" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_-YK4RGyFEeKx9Kegn5X27A" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_-YK4QWyFEeKx9Kegn5X27A" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="sashwindowsdi.uml#_95DboEJWEd6kIY39uis5Uw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_-YK4QmyFEeKx9Kegn5X27A" points="[50, 12, -365, -90]$[365, 89, -50, -13]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_CaI44GyGEeKx9Kegn5X27A" type="4002" source="_CZQIEGyGEeKx9Kegn5X27A" target="_6BzU8GyFEeKx9Kegn5X27A" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_CaI442yGEeKx9Kegn5X27A" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_CaI45GyGEeKx9Kegn5X27A" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_CaI44WyGEeKx9Kegn5X27A" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="sashwindowsdi.uml#_7VZokEJVEd6kIY39uis5Uw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_CaI44myGEeKx9Kegn5X27A" points="[0, 0, -753, -562]$[703, 524, -50, -38]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_C8qXIGyGEeKx9Kegn5X27A" type="4002" source="_CZQIEGyGEeKx9Kegn5X27A" target="_6Ci70GyFEeKx9Kegn5X27A" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_C8qXI2yGEeKx9Kegn5X27A" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_C8qXJGyGEeKx9Kegn5X27A" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_C8qXIWyGEeKx9Kegn5X27A" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="sashwindowsdi.uml#_UH6OsEsDEd6MxdnlcgT3eA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_C8qXImyGEeKx9Kegn5X27A" points="[36, -50, -315, 432]$[314, -432, -37, 50]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_HSH7gGyGEeKx9Kegn5X27A" type="4002" source="_4bTRMGyFEeKx9Kegn5X27A" target="_6BzU8GyFEeKx9Kegn5X27A" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_HSRFcGyGEeKx9Kegn5X27A" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_HSRFcWyGEeKx9Kegn5X27A" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_HSH7gWyGEeKx9Kegn5X27A" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="sashwindowsdi.uml#_71vVgEJVEd6kIY39uis5Uw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_HSH7gmyGEeKx9Kegn5X27A" points="[26, -50, -166, 310]$[165, -310, -27, 50]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_QH6QcGyGEeKx9Kegn5X27A" type="4001" source="_6knuIGyFEeKx9Kegn5X27A" target="_QHBfoGyGEeKx9Kegn5X27A" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_QH6Qc2yGEeKx9Kegn5X27A" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_QH6QdGyGEeKx9Kegn5X27A" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_QH6QdWyGEeKx9Kegn5X27A" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_QH6QdmyGEeKx9Kegn5X27A" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_QH6Qd2yGEeKx9Kegn5X27A" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_QH6QeGyGEeKx9Kegn5X27A" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_QH6QeWyGEeKx9Kegn5X27A" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_QH6QemyGEeKx9Kegn5X27A" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_QH6Qe2yGEeKx9Kegn5X27A" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_QH6QfGyGEeKx9Kegn5X27A" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_QH6QfWyGEeKx9Kegn5X27A" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_QH6QfmyGEeKx9Kegn5X27A" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_QH6QcWyGEeKx9Kegn5X27A" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="sashwindowsdi.uml#_viyZUEJZEd6kIY39uis5Uw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_QH6QcmyGEeKx9Kegn5X27A" points="[-50, -45, 600, 533]$[-650, -578, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_bn3q0lViEeWe8LyZrqaAug" id="(0.0,0.44)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_bn3q01ViEeWe8LyZrqaAug" id="(1.0,0.5)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_eIIp8GyGEeKx9Kegn5X27A" type="4001" source="_QHBfoGyGEeKx9Kegn5X27A" target="_eHZDEGyGEeKx9Kegn5X27A" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_eIIp82yGEeKx9Kegn5X27A" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_eIIp9GyGEeKx9Kegn5X27A" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_eIIp9WyGEeKx9Kegn5X27A" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_eIIp9myGEeKx9Kegn5X27A" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_eIIp92yGEeKx9Kegn5X27A" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_eIIp-GyGEeKx9Kegn5X27A" x="-33" y="-26"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_eIIp-WyGEeKx9Kegn5X27A" visible="false" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_eIIp-myGEeKx9Kegn5X27A" x="56" y="72"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_eIIp-2yGEeKx9Kegn5X27A" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_eIIp_GyGEeKx9Kegn5X27A" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_eIIp_WyGEeKx9Kegn5X27A" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_eIIp_myGEeKx9Kegn5X27A" x="56" y="-31"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_eIIp8WyGEeKx9Kegn5X27A" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="sashwindowsdi.uml#_9k0bgEMbEd6kIY39uis5Uw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_eIIp8myGEeKx9Kegn5X27A" points="[-50, 0, 207, 294]$[-248, 0, 9, 294]$[-248, -244, 9, 50]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_fLY2sGyGEeKx9Kegn5X27A" type="4001" source="_z1T9gGyFEeKx9Kegn5X27A" target="_eHZDEGyGEeKx9Kegn5X27A" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_fLY2s2yGEeKx9Kegn5X27A" type="6001">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_mK5i4JUXEeWeT68xCjxnSQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_fLY2tGyGEeKx9Kegn5X27A" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_fLY2tWyGEeKx9Kegn5X27A" visible="false" type="6002">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_mLKooJUXEeWeT68xCjxnSQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_fLY2tmyGEeKx9Kegn5X27A" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_fLY2t2yGEeKx9Kegn5X27A" type="6003">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_mLbHUJUXEeWeT68xCjxnSQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_fLY2uGyGEeKx9Kegn5X27A" x="37" y="24"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_fLY2uWyGEeKx9Kegn5X27A" visible="false" type="6005">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_mLs0IJUXEeWeT68xCjxnSQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_fLY2umyGEeKx9Kegn5X27A" x="-23" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_fLY2u2yGEeKx9Kegn5X27A" type="6033">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_mL_IAJUXEeWeT68xCjxnSQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_fLY2vGyGEeKx9Kegn5X27A" x="14" y="-21"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_fLiAoGyGEeKx9Kegn5X27A" type="6034">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_mMSqAJUXEeWeT68xCjxnSQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_fLiAoWyGEeKx9Kegn5X27A" x="-23" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_fLY2sWyGEeKx9Kegn5X27A" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="sashwindowsdi.uml#_-EQwkEMbEd6kIY39uis5Uw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_fLY2smyGEeKx9Kegn5X27A" points="[-21, 50, 92, -220]$[-92, 220, 21, -50]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_mQcKM5UXEeWeT68xCjxnSQ" id="(0.0,0.57)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_mQcxQJUXEeWeT68xCjxnSQ" id="(1.0,0.5)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="__ofJQGyIEeKx9Kegn5X27A" type="4001" source="__nlxYGyIEeKx9Kegn5X27A" target="_6knuIGyFEeKx9Kegn5X27A" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="__ooTMGyIEeKx9Kegn5X27A" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="__ooTMWyIEeKx9Kegn5X27A" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="__ooTMmyIEeKx9Kegn5X27A" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="__ooTM2yIEeKx9Kegn5X27A" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="__ooTNGyIEeKx9Kegn5X27A" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="__ooTNWyIEeKx9Kegn5X27A" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="__ooTNmyIEeKx9Kegn5X27A" visible="false" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="__ooTN2yIEeKx9Kegn5X27A" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="__ooTOGyIEeKx9Kegn5X27A" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="__ooTOWyIEeKx9Kegn5X27A" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="__ooTOmyIEeKx9Kegn5X27A" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="__ooTO2yIEeKx9Kegn5X27A" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="__ofJQWyIEeKx9Kegn5X27A" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="sashwindowsdi.uml#_b3enUEnjEd6ussMWxXGeXg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="__ofJQmyIEeKx9Kegn5X27A" points="[0, 0, -986, -572]$[936, 542, -50, -30]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_a3Xa8FViEeWe8LyZrqaAug" id="(0.0,0.4854368932038835)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_a3Xa8VViEeWe8LyZrqaAug" id="(1.0,0.5)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_D03IpFViEeWe8LyZrqaAug" type="StereotypeCommentLink" source="__nlxYGyIEeKx9Kegn5X27A" target="_D03IoFViEeWe8LyZrqaAug">
+ <styles xmi:type="notation:FontStyle" xmi:id="_D03IpVViEeWe8LyZrqaAug"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_D03IqVViEeWe8LyZrqaAug" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/Ecore.metamodel.uml#EObject"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_D03IplViEeWe8LyZrqaAug" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_D03Ip1ViEeWe8LyZrqaAug"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_D03IqFViEeWe8LyZrqaAug"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_kigQcJUREeWeT68xCjxnSQ" type="4001" source="_4bTRMGyFEeKx9Kegn5X27A" target="_6knuIGyFEeKx9Kegn5X27A" routing="Rectilinear">
+ <children xmi:type="notation:DecorationNode" xmi:id="_kiiFoJUREeWeT68xCjxnSQ" type="6001">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_qBSNUJUREeWeT68xCjxnSQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_kiiFoZUREeWeT68xCjxnSQ" y="-19"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_kiissJUREeWeT68xCjxnSQ" type="6002">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_qBtEEJUREeWeT68xCjxnSQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_kiissZUREeWeT68xCjxnSQ" x="1" y="18"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_kiisspUREeWeT68xCjxnSQ" visible="false" type="6003">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_qCIh4JUREeWeT68xCjxnSQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_kiiss5UREeWeT68xCjxnSQ" x="34" y="25"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_kiistJUREeWeT68xCjxnSQ" type="6005">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_qCfuQJUREeWeT68xCjxnSQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_kiistZUREeWeT68xCjxnSQ" x="-29" y="-50"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_kiistpUREeWeT68xCjxnSQ" type="6033">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_qC26oJUREeWeT68xCjxnSQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_kiist5UREeWeT68xCjxnSQ" x="22" y="-16"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_kiisuJUREeWeT68xCjxnSQ" type="6034">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_qDLqwJUREeWeT68xCjxnSQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_kiisuZUREeWeT68xCjxnSQ" x="-29" y="21"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_kigQcZUREeWeT68xCjxnSQ"/>
+ <element xmi:type="uml:Association" href="sashwindowsdi.uml#_kgdpEJUREeWeT68xCjxnSQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_kigQcpUREeWeT68xCjxnSQ" points="[1036, 272, -643984, -643984]$[1055, 272, -643984, -643984]$[1055, 522, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kjqHAJUREeWeT68xCjxnSQ" id="(1.0,0.5)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kjqHAZUREeWeT68xCjxnSQ" id="(0.91875,0.0)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_CCrlsGyHEeKx9Kegn5X27A" type="PapyrusUMLClassDiagram" name="ClassDiagram" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_CnIWkGyHEeKx9Kegn5X27A" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_CnIWkWyHEeKx9Kegn5X27A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_CnIWkmyHEeKx9Kegn5X27A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_CnIWk2yHEeKx9Kegn5X27A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_CnIWlGyHEeKx9Kegn5X27A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_CnIWlWyHEeKx9Kegn5X27A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_CnIWlmyHEeKx9Kegn5X27A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_CnIWl2yHEeKx9Kegn5X27A" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_CnIWmGyHEeKx9Kegn5X27A" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_CnIWmWyHEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_CnIWmmyHEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_CnIWm2yHEeKx9Kegn5X27A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CnIWnGyHEeKx9Kegn5X27A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_CnIWnWyHEeKx9Kegn5X27A" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_CnIWnmyHEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_CnIWn2yHEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_CnIWoGyHEeKx9Kegn5X27A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CnIWoWyHEeKx9Kegn5X27A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_CnIWomyHEeKx9Kegn5X27A" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_CnIWo2yHEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_CnIWpGyHEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_CnIWpWyHEeKx9Kegn5X27A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CnIWpmyHEeKx9Kegn5X27A"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_D-iCAFViEeWe8LyZrqaAug" type="8510">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_D-iCAVViEeWe8LyZrqaAug" y="5"/>
+ </children>
+ <element xmi:type="uml:Class" href="sashwindowsdi.uml#_-9vywEMaEd6kIY39uis5Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CnIWp2yHEeKx9Kegn5X27A" x="34" y="232"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_CnSHmGyHEeKx9Kegn5X27A" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_CnSHmWyHEeKx9Kegn5X27A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_CnSHmmyHEeKx9Kegn5X27A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_CnSHm2yHEeKx9Kegn5X27A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_CnSHnGyHEeKx9Kegn5X27A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_CnSHnWyHEeKx9Kegn5X27A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_CnSHnmyHEeKx9Kegn5X27A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_CnSHn2yHEeKx9Kegn5X27A" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_CnSHoGyHEeKx9Kegn5X27A" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_CnSHoWyHEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_CnSHomyHEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_CnSHo2yHEeKx9Kegn5X27A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CnSHpGyHEeKx9Kegn5X27A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_CnSHpWyHEeKx9Kegn5X27A" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="_F9OIoGyHEeKx9Kegn5X27A" type="3013" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_RjPwkGyHEeKx9Kegn5X27A" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_TjMPEGyHEeKx9Kegn5X27A" key="CustomAppearance_MaskValue" value="21258"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="sashwindowsdi.uml#_wdFgUEV4Ed6g-YgfS2DHrA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_F9OIoWyHEeKx9Kegn5X27A" x="32" y="15"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_F-G5cGyHEeKx9Kegn5X27A" type="3013" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_RjZhkWyHEeKx9Kegn5X27A" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_TjMPEWyHEeKx9Kegn5X27A" key="CustomAppearance_MaskValue" value="21258"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="sashwindowsdi.uml#_m7xPsEa4Ed6g-YgfS2DHrA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_F-G5cWyHEeKx9Kegn5X27A" x="32" y="15"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_F-2gUGyHEeKx9Kegn5X27A" type="3013" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_WgzPsGyHEeKx9Kegn5X27A" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Xvt54GyHEeKx9Kegn5X27A" key="CustomAppearance_MaskValue" value="21258"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="sashwindowsdi.uml#_e9ojYEbXEd6g-YgfS2DHrA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_F-2gUWyHEeKx9Kegn5X27A" x="32" y="15"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_F_mHMGyHEeKx9Kegn5X27A" type="3013" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_WgzPsmyHEeKx9Kegn5X27A" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Xvt54WyHEeKx9Kegn5X27A" key="CustomAppearance_MaskValue" value="21258"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="sashwindowsdi.uml#_q8zekEbsEd6g-YgfS2DHrA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_F_mHMWyHEeKx9Kegn5X27A" x="32" y="15"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GAffEGyHEeKx9Kegn5X27A" type="3013" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_WgzPtGyHEeKx9Kegn5X27A" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Xvt54myHEeKx9Kegn5X27A" key="CustomAppearance_MaskValue" value="21258"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="sashwindowsdi.uml#_vnqNcEoIEd6ussMWxXGeXg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GAffEWyHEeKx9Kegn5X27A" x="32" y="15"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GBYP4GyHEeKx9Kegn5X27A" type="3013" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_WgzPtmyHEeKx9Kegn5X27A" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Xvt542yHEeKx9Kegn5X27A" key="CustomAppearance_MaskValue" value="21258"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="sashwindowsdi.uml#_Kvf9cEoJEd6ussMWxXGeXg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GBYP4WyHEeKx9Kegn5X27A" x="32" y="15"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GCRnwGyHEeKx9Kegn5X27A" type="3013" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_WgzPuGyHEeKx9Kegn5X27A" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Xvt55GyHEeKx9Kegn5X27A" key="CustomAppearance_MaskValue" value="21258"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="sashwindowsdi.uml#_OoMtUEoJEd6ussMWxXGeXg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GCRnwWyHEeKx9Kegn5X27A" x="32" y="15"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GDBOoGyHEeKx9Kegn5X27A" type="3013" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_WgzPumyHEeKx9Kegn5X27A" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Xvt55WyHEeKx9Kegn5X27A" key="CustomAppearance_MaskValue" value="21258"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="sashwindowsdi.uml#_vaMqoE4OEd-B2uXHu4qMXg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GDBOoWyHEeKx9Kegn5X27A" x="32" y="15"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GDw1gGyHEeKx9Kegn5X27A" type="3013" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_WgzPvGyHEeKx9Kegn5X27A" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Xv3q4GyHEeKx9Kegn5X27A" key="CustomAppearance_MaskValue" value="21258"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="sashwindowsdi.uml#_-TkSoE4OEd-B2uXHu4qMXg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GDw1gWyHEeKx9Kegn5X27A" x="32" y="15"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GEgcYGyHEeKx9Kegn5X27A" type="3013" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_WgzPvmyHEeKx9Kegn5X27A" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Xv3q4WyHEeKx9Kegn5X27A" key="CustomAppearance_MaskValue" value="21258"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="sashwindowsdi.uml#_1jUIgE4PEd-B2uXHu4qMXg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GEgcYWyHEeKx9Kegn5X27A" x="32" y="15"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GFQDQGyHEeKx9Kegn5X27A" type="3013" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_WgzPwGyHEeKx9Kegn5X27A" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Xv3q4myHEeKx9Kegn5X27A" key="CustomAppearance_MaskValue" value="21258"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="sashwindowsdi.uml#_4qi_ME4PEd-B2uXHu4qMXg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GFQDQWyHEeKx9Kegn5X27A" x="32" y="15"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GGJbIGyHEeKx9Kegn5X27A" type="3013" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_WgzPwmyHEeKx9Kegn5X27A" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Xv3q42yHEeKx9Kegn5X27A" key="CustomAppearance_MaskValue" value="21258"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="sashwindowsdi.uml#_fPvj8FgxEeGNKLzLkykmJw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GGJbIWyHEeKx9Kegn5X27A" x="32" y="15"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_zeIgsGySEeKx9Kegn5X27A" type="3013" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_68TicGySEeKx9Kegn5X27A" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7ttKMGySEeKx9Kegn5X27A" key="CustomAppearance_MaskValue" value="21258"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="sashwindowsdi.uml#_zdr0wGySEeKx9Kegn5X27A"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_zeIgsWySEeKx9Kegn5X27A"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_CnSHpmyHEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_CnSHp2yHEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_CnSHqGyHEeKx9Kegn5X27A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CnSHqWyHEeKx9Kegn5X27A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_CnSHqmyHEeKx9Kegn5X27A" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_CnSHq2yHEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_CnSHrGyHEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_CnSHrWyHEeKx9Kegn5X27A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CnSHrmyHEeKx9Kegn5X27A"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_D-iCAlViEeWe8LyZrqaAug" type="8510">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_D-iCA1ViEeWe8LyZrqaAug" y="5"/>
+ </children>
+ <element xmi:type="uml:Class" href="sashwindowsdi.uml#_UiIMMEJVEd6kIY39uis5Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CnSHr2yHEeKx9Kegn5X27A" x="288" y="150"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_CnSH4WyHEeKx9Kegn5X27A" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_CnSH4myHEeKx9Kegn5X27A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_CnSH42yHEeKx9Kegn5X27A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_CnSH5GyHEeKx9Kegn5X27A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_CnSH5WyHEeKx9Kegn5X27A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_CnSH5myHEeKx9Kegn5X27A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_CnSH52yHEeKx9Kegn5X27A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_CnSH6GyHEeKx9Kegn5X27A" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_CnSH6WyHEeKx9Kegn5X27A" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_CnSH6myHEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_CnSH62yHEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_CnSH7GyHEeKx9Kegn5X27A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CnSH7WyHEeKx9Kegn5X27A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_CnSH7myHEeKx9Kegn5X27A" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_CnSH72yHEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_CnSH8GyHEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_CnSH8WyHEeKx9Kegn5X27A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CnSH8myHEeKx9Kegn5X27A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_CnSH82yHEeKx9Kegn5X27A" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_CnSH9GyHEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_CnSH9WyHEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_CnSH9myHEeKx9Kegn5X27A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CnSH92yHEeKx9Kegn5X27A"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_D-iCBFViEeWe8LyZrqaAug" type="8510">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_D-iCBVViEeWe8LyZrqaAug" y="5"/>
+ </children>
+ <element xmi:type="uml:Class" href="sashwindowsdi.uml#_h_HVwEJVEd6kIY39uis5Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CnSH-GyHEeKx9Kegn5X27A" x="948" y="654"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_CnbRv2yHEeKx9Kegn5X27A" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_CnbRwGyHEeKx9Kegn5X27A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_CnbRwWyHEeKx9Kegn5X27A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_CnbRwmyHEeKx9Kegn5X27A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_CnbRw2yHEeKx9Kegn5X27A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_CnbRxGyHEeKx9Kegn5X27A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_CnbRxWyHEeKx9Kegn5X27A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_CnbRxmyHEeKx9Kegn5X27A" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_CnbRx2yHEeKx9Kegn5X27A" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_CnbRyGyHEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_CnbRyWyHEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_CnbRymyHEeKx9Kegn5X27A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CnbRy2yHEeKx9Kegn5X27A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_CnbRzGyHEeKx9Kegn5X27A" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_CnbRzWyHEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_CnbRzmyHEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_CnbRz2yHEeKx9Kegn5X27A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CnbR0GyHEeKx9Kegn5X27A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_CnbR0WyHEeKx9Kegn5X27A" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_CnbR0myHEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_CnbR02yHEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_CnbR1GyHEeKx9Kegn5X27A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CnbR1WyHEeKx9Kegn5X27A"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_D-iCBlViEeWe8LyZrqaAug" type="8510">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_D-iCB1ViEeWe8LyZrqaAug" y="5"/>
+ </children>
+ <element xmi:type="uml:Class" href="sashwindowsdi.uml#_b7a4cEMaEd6kIY39uis5Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CnbR1myHEeKx9Kegn5X27A" x="306" y="648"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_rFD98GyHEeKx9Kegn5X27A" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_rFD98myHEeKx9Kegn5X27A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_rFD982yHEeKx9Kegn5X27A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_rFD99GyHEeKx9Kegn5X27A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_rFD99WyHEeKx9Kegn5X27A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_rFD99myHEeKx9Kegn5X27A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_rFD992yHEeKx9Kegn5X27A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_rFD9-GyHEeKx9Kegn5X27A" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_rFD9-WyHEeKx9Kegn5X27A" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_rFD9-myHEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_rFD9-2yHEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_rFD9_GyHEeKx9Kegn5X27A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rFD9_WyHEeKx9Kegn5X27A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_rFD9_myHEeKx9Kegn5X27A" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_rFD9_2yHEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_rFD-AGyHEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_rFD-AWyHEeKx9Kegn5X27A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rFD-AmyHEeKx9Kegn5X27A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_rFD-A2yHEeKx9Kegn5X27A" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_rFD-BGyHEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_rFD-BWyHEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_rFD-BmyHEeKx9Kegn5X27A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rFD-B2yHEeKx9Kegn5X27A"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_D-iCCFViEeWe8LyZrqaAug" type="8510">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_D-iCCVViEeWe8LyZrqaAug" y="5"/>
+ </children>
+ <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/Ecore.metamodel.uml#EObject"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rFD98WyHEeKx9Kegn5X27A" x="740" y="794"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_0mKgwGyHEeKx9Kegn5X27A" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_0mKgwmyHEeKx9Kegn5X27A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0mKgw2yHEeKx9Kegn5X27A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_0mKgxGyHEeKx9Kegn5X27A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0mKgxWyHEeKx9Kegn5X27A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_0mKgxmyHEeKx9Kegn5X27A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0mKgx2yHEeKx9Kegn5X27A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_0mKgyGyHEeKx9Kegn5X27A" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_0mKgyWyHEeKx9Kegn5X27A" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_0mKgymyHEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_0mKgy2yHEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_0mKgzGyHEeKx9Kegn5X27A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0mKgzWyHEeKx9Kegn5X27A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_0mKgzmyHEeKx9Kegn5X27A" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_0mKgz2yHEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_0mKg0GyHEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_0mKg0WyHEeKx9Kegn5X27A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0mKg0myHEeKx9Kegn5X27A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_0mKg02yHEeKx9Kegn5X27A" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_0mKg1GyHEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_0mKg1WyHEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_0mKg1myHEeKx9Kegn5X27A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0mKg12yHEeKx9Kegn5X27A"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_D-iCClViEeWe8LyZrqaAug" type="8510">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_D-iCC1ViEeWe8LyZrqaAug" y="5"/>
+ </children>
+ <element xmi:type="uml:Class" href="sashwindowsdi.uml#_fbWYgEJVEd6kIY39uis5Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0mKgwWyHEeKx9Kegn5X27A" x="780" y="534"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_ED5DIFViEeWe8LyZrqaAug" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_ED5DIVViEeWe8LyZrqaAug" showTitle="true"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_ED5DI1ViEeWe8LyZrqaAug" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/Ecore.metamodel.uml#EObject"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ED5DIlViEeWe8LyZrqaAug" x="940" y="794"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_CCrlsWyHEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:StringValueStyle" xmi:id="_D-iCDFViEeWe8LyZrqaAug" name="diagram_compatibility_version" stringValue="1.1.0"/>
+ <element xmi:type="uml:Model" href="sashwindowsdi.uml#_NuHhwEJVEd6kIY39uis5Uw"/>
+ <edges xmi:type="notation:Connector" xmi:id="_CnIWt2yHEeKx9Kegn5X27A" type="4001" source="_CnSHmGyHEeKx9Kegn5X27A" target="_CnIWkGyHEeKx9Kegn5X27A" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_CnIWuGyHEeKx9Kegn5X27A" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_CnIWuWyHEeKx9Kegn5X27A" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_CnIWumyHEeKx9Kegn5X27A" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_CnIWu2yHEeKx9Kegn5X27A" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_CnIWvGyHEeKx9Kegn5X27A" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_CnIWvWyHEeKx9Kegn5X27A" x="33" y="22"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_CnIWvmyHEeKx9Kegn5X27A" visible="false" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_CnIWv2yHEeKx9Kegn5X27A" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_CnIWwGyHEeKx9Kegn5X27A" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_CnIWwWyHEeKx9Kegn5X27A" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_CnIWwmyHEeKx9Kegn5X27A" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_CnIWw2yHEeKx9Kegn5X27A" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_CnIWxGyHEeKx9Kegn5X27A" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="sashwindowsdi.uml#_-EQwkEMbEd6kIY39uis5Uw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_CnIWxWyHEeKx9Kegn5X27A" points="[-21, 50, 92, -220]$[-92, 220, 21, -50]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_CnIWxmyHEeKx9Kegn5X27A" type="4001" source="_CnbRv2yHEeKx9Kegn5X27A" target="_CnIWkGyHEeKx9Kegn5X27A" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_CnIWx2yHEeKx9Kegn5X27A" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_CnIWyGyHEeKx9Kegn5X27A" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_CnIWyWyHEeKx9Kegn5X27A" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_CnIWymyHEeKx9Kegn5X27A" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_CnIWy2yHEeKx9Kegn5X27A" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_CnIWzGyHEeKx9Kegn5X27A" x="-33" y="-26"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_CnIWzWyHEeKx9Kegn5X27A" visible="false" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_CnIWzmyHEeKx9Kegn5X27A" x="56" y="72"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_CnIWz2yHEeKx9Kegn5X27A" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_CnIW0GyHEeKx9Kegn5X27A" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_CnIW0WyHEeKx9Kegn5X27A" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_CnIW0myHEeKx9Kegn5X27A" x="56" y="-31"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_CnIW02yHEeKx9Kegn5X27A" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="sashwindowsdi.uml#_9k0bgEMbEd6kIY39uis5Uw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_CnIW1GyHEeKx9Kegn5X27A" points="[-50, 0, 207, 294]$[-248, 0, 9, 294]$[-248, -244, 9, 50]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_CnSIDWyHEeKx9Kegn5X27A" type="4001" source="_CnSH4WyHEeKx9Kegn5X27A" target="_CnbRv2yHEeKx9Kegn5X27A" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_CnSIDmyHEeKx9Kegn5X27A" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_CnSID2yHEeKx9Kegn5X27A" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_CnSIEGyHEeKx9Kegn5X27A" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_CnSIEWyHEeKx9Kegn5X27A" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_CnSIEmyHEeKx9Kegn5X27A" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_CnSIE2yHEeKx9Kegn5X27A" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_CnSIFGyHEeKx9Kegn5X27A" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_CnSIFWyHEeKx9Kegn5X27A" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_CnSIFmyHEeKx9Kegn5X27A" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_CnSIF2yHEeKx9Kegn5X27A" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_CnSIGGyHEeKx9Kegn5X27A" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_CnSIGWyHEeKx9Kegn5X27A" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_CnSIGmyHEeKx9Kegn5X27A" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="sashwindowsdi.uml#_viyZUEJZEd6kIY39uis5Uw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_CnSIG2yHEeKx9Kegn5X27A" points="[-50, -45, 600, 533]$[-650, -578, 0, 0]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_rGHG0GyHEeKx9Kegn5X27A" type="4001" source="_rFD98GyHEeKx9Kegn5X27A" target="_CnSH4WyHEeKx9Kegn5X27A" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_rGHG02yHEeKx9Kegn5X27A" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_rGHG1GyHEeKx9Kegn5X27A" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_rGHG1WyHEeKx9Kegn5X27A" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_rGHG1myHEeKx9Kegn5X27A" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_rGHG12yHEeKx9Kegn5X27A" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_rGHG2GyHEeKx9Kegn5X27A" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_rGHG2WyHEeKx9Kegn5X27A" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_rGHG2myHEeKx9Kegn5X27A" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_rGHG22yHEeKx9Kegn5X27A" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_rGHG3GyHEeKx9Kegn5X27A" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_rGHG3WyHEeKx9Kegn5X27A" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_rGHG3myHEeKx9Kegn5X27A" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_rGHG0WyHEeKx9Kegn5X27A" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="sashwindowsdi.uml#_b3enUEnjEd6ussMWxXGeXg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_rGHG0myHEeKx9Kegn5X27A" points="[0, 0, -996, -582]$[946, 552, -50, -30]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_0mwWoGyHEeKx9Kegn5X27A" type="4001" source="_0mKgwGyHEeKx9Kegn5X27A" target="_CnSHmGyHEeKx9Kegn5X27A" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_0mwWo2yHEeKx9Kegn5X27A" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_0mwWpGyHEeKx9Kegn5X27A" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_0mwWpWyHEeKx9Kegn5X27A" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_0mwWpmyHEeKx9Kegn5X27A" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_0mwWp2yHEeKx9Kegn5X27A" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_0mwWqGyHEeKx9Kegn5X27A" x="-30" y="70"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_0mwWqWyHEeKx9Kegn5X27A" visible="false" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_0mwWqmyHEeKx9Kegn5X27A" x="26" y="-82"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_0mwWq2yHEeKx9Kegn5X27A" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_0mwWrGyHEeKx9Kegn5X27A" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_0mwWrWyHEeKx9Kegn5X27A" visible="false" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_0mwWrmyHEeKx9Kegn5X27A" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_0mwWoWyHEeKx9Kegn5X27A" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="sashwindowsdi.uml#_mT2jkEJkEd6kIY39uis5Uw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_0mwWomyHEeKx9Kegn5X27A" points="[0, 0, -694, -312]$[333, 150, -361, -162]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_ED5DJFViEeWe8LyZrqaAug" type="StereotypeCommentLink" source="_rFD98GyHEeKx9Kegn5X27A" target="_ED5DIFViEeWe8LyZrqaAug">
+ <styles xmi:type="notation:FontStyle" xmi:id="_ED5DJVViEeWe8LyZrqaAug"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_ED5DKVViEeWe8LyZrqaAug" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/Ecore.metamodel.uml#EObject"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ED5DJlViEeWe8LyZrqaAug" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ED5DJ1ViEeWe8LyZrqaAug"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ED5DKFViEeWe8LyZrqaAug"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_0m_xwGyIEeKx9Kegn5X27A" type="PapyrusUMLClassDiagram" name="datatypes" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_2JyaMGyIEeKx9Kegn5X27A" type="2009" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_2JyaMmyIEeKx9Kegn5X27A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_2JyaM2yIEeKx9Kegn5X27A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_2JyaNGyIEeKx9Kegn5X27A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_2JyaNWyIEeKx9Kegn5X27A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_2JyaNmyIEeKx9Kegn5X27A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_2JyaN2yIEeKx9Kegn5X27A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_2JyaOGyIEeKx9Kegn5X27A" type="5032"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_D69wolViEeWe8LyZrqaAug" type="8511">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_D69wo1ViEeWe8LyZrqaAug" y="5"/>
+ </children>
+ <element xmi:type="uml:PrimitiveType" href="sashwindowsdi.uml#_Hkk78EVbEd6g-YgfS2DHrA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2JyaMWyIEeKx9Kegn5X27A" x="120" y="196"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_2ldCgGyIEeKx9Kegn5X27A" type="2009" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_2ldCgmyIEeKx9Kegn5X27A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_2ldCg2yIEeKx9Kegn5X27A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_2ldChGyIEeKx9Kegn5X27A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_2ldChWyIEeKx9Kegn5X27A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_2ldChmyIEeKx9Kegn5X27A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_2ldCh2yIEeKx9Kegn5X27A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_2ldCiGyIEeKx9Kegn5X27A" type="5032"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_D69wpFViEeWe8LyZrqaAug" type="8511">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_D69wpVViEeWe8LyZrqaAug" y="5"/>
+ </children>
+ <element xmi:type="uml:PrimitiveType" href="sashwindowsdi.uml#_A-BP8EVhEd6g-YgfS2DHrA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2ldCgWyIEeKx9Kegn5X27A" x="342" y="192"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_28g3oGyIEeKx9Kegn5X27A" type="2009" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_28g3omyIEeKx9Kegn5X27A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_28g3o2yIEeKx9Kegn5X27A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_28g3pGyIEeKx9Kegn5X27A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_28g3pWyIEeKx9Kegn5X27A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_28g3pmyIEeKx9Kegn5X27A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_28g3p2yIEeKx9Kegn5X27A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_28g3qGyIEeKx9Kegn5X27A" type="5032"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_D69wplViEeWe8LyZrqaAug" type="8511">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_D69wp1ViEeWe8LyZrqaAug" y="5"/>
+ </children>
+ <element xmi:type="uml:PrimitiveType" href="sashwindowsdi.uml#_IEBx4EV4Ed6g-YgfS2DHrA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_28g3oWyIEeKx9Kegn5X27A" x="120" y="324"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3hRKgGyIEeKx9Kegn5X27A" type="2009" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3hRKgmyIEeKx9Kegn5X27A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3hRKg2yIEeKx9Kegn5X27A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3hRKhGyIEeKx9Kegn5X27A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3hRKhWyIEeKx9Kegn5X27A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3hRKhmyIEeKx9Kegn5X27A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3hRKh2yIEeKx9Kegn5X27A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3hRKiGyIEeKx9Kegn5X27A" type="5032"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_D69wqFViEeWe8LyZrqaAug" type="8511">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_D69wqVViEeWe8LyZrqaAug" y="5"/>
+ </children>
+ <element xmi:type="uml:PrimitiveType" href="sashwindowsdi.uml#_SNSWAEbaEd6g-YgfS2DHrA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3hRKgWyIEeKx9Kegn5X27A" x="344" y="328"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_D8v5WVViEeWe8LyZrqaAug" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_D8v5WlViEeWe8LyZrqaAug" showTitle="true"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_D8v5XFViEeWe8LyZrqaAug" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:PrimitiveType" href="sashwindowsdi.uml#_Hkk78EVbEd6g-YgfS2DHrA"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_D8v5W1ViEeWe8LyZrqaAug" x="320" y="196"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_D9MlS1ViEeWe8LyZrqaAug" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_D9MlTFViEeWe8LyZrqaAug" showTitle="true"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_D9MlTlViEeWe8LyZrqaAug" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:PrimitiveType" href="sashwindowsdi.uml#_A-BP8EVhEd6g-YgfS2DHrA"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_D9MlTVViEeWe8LyZrqaAug" x="542" y="192"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_D9fgP1ViEeWe8LyZrqaAug" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_D9fgQFViEeWe8LyZrqaAug" showTitle="true"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_D9fgQlViEeWe8LyZrqaAug" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:PrimitiveType" href="sashwindowsdi.uml#_IEBx4EV4Ed6g-YgfS2DHrA"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_D9fgQVViEeWe8LyZrqaAug" x="320" y="324"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_D-PHE1ViEeWe8LyZrqaAug" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_D-PHFFViEeWe8LyZrqaAug" showTitle="true"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_D-PHFlViEeWe8LyZrqaAug" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:PrimitiveType" href="sashwindowsdi.uml#_SNSWAEbaEd6g-YgfS2DHrA"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_D-PHFVViEeWe8LyZrqaAug" x="544" y="328"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_0m_xwWyIEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:StringValueStyle" xmi:id="_D69wqlViEeWe8LyZrqaAug" name="diagram_compatibility_version" stringValue="1.1.0"/>
+ <element xmi:type="uml:Model" href="sashwindowsdi.uml#_NuHhwEJVEd6kIY39uis5Uw"/>
+ <edges xmi:type="notation:Connector" xmi:id="_D8v5XVViEeWe8LyZrqaAug" type="StereotypeCommentLink" source="_2JyaMGyIEeKx9Kegn5X27A" target="_D8v5WVViEeWe8LyZrqaAug">
+ <styles xmi:type="notation:FontStyle" xmi:id="_D8v5XlViEeWe8LyZrqaAug"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_D8v5YlViEeWe8LyZrqaAug" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:PrimitiveType" href="sashwindowsdi.uml#_Hkk78EVbEd6g-YgfS2DHrA"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_D8v5X1ViEeWe8LyZrqaAug" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_D8v5YFViEeWe8LyZrqaAug"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_D8v5YVViEeWe8LyZrqaAug"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_D9MlT1ViEeWe8LyZrqaAug" type="StereotypeCommentLink" source="_2ldCgGyIEeKx9Kegn5X27A" target="_D9MlS1ViEeWe8LyZrqaAug">
+ <styles xmi:type="notation:FontStyle" xmi:id="_D9MlUFViEeWe8LyZrqaAug"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_D9MlVFViEeWe8LyZrqaAug" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:PrimitiveType" href="sashwindowsdi.uml#_A-BP8EVhEd6g-YgfS2DHrA"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_D9MlUVViEeWe8LyZrqaAug" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_D9MlUlViEeWe8LyZrqaAug"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_D9MlU1ViEeWe8LyZrqaAug"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_D9fgQ1ViEeWe8LyZrqaAug" type="StereotypeCommentLink" source="_28g3oGyIEeKx9Kegn5X27A" target="_D9fgP1ViEeWe8LyZrqaAug">
+ <styles xmi:type="notation:FontStyle" xmi:id="_D9fgRFViEeWe8LyZrqaAug"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_D9fgSFViEeWe8LyZrqaAug" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:PrimitiveType" href="sashwindowsdi.uml#_IEBx4EV4Ed6g-YgfS2DHrA"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_D9fgRVViEeWe8LyZrqaAug" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_D9fgRlViEeWe8LyZrqaAug"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_D9fgR1ViEeWe8LyZrqaAug"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_D-PHF1ViEeWe8LyZrqaAug" type="StereotypeCommentLink" source="_3hRKgGyIEeKx9Kegn5X27A" target="_D-PHE1ViEeWe8LyZrqaAug">
+ <styles xmi:type="notation:FontStyle" xmi:id="_D-PHGFViEeWe8LyZrqaAug"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_D-PHHFViEeWe8LyZrqaAug" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:PrimitiveType" href="sashwindowsdi.uml#_SNSWAEbaEd6g-YgfS2DHrA"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_D-PHGVViEeWe8LyZrqaAug" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_D-PHGlViEeWe8LyZrqaAug"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_D-PHG1ViEeWe8LyZrqaAug"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_lk72EG8gEeKx9Kegn5X27A" type="PapyrusUMLClassDiagram" name="ClassDiagram" measurementUnit="Pixel">
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_lk72EW8gEeKx9Kegn5X27A"/>
+ <styles xmi:type="notation:StringValueStyle" xmi:id="_D57O0FViEeWe8LyZrqaAug" name="diagram_compatibility_version" stringValue="1.1.0"/>
+ <element xmi:type="uml:Model" href="sashwindowsdi.uml#_NuHhwEJVEd6kIY39uis5Uw"/>
+ </notation:Diagram>
+</xmi:XMI>
diff --git a/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/model/sashwindowsdi.uml b/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/model/sashwindowsdi.uml
index a155501dda8..5d8586393bd 100644
--- a/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/model/sashwindowsdi.uml
+++ b/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/model/sashwindowsdi.uml
@@ -1,598 +1,612 @@
-<?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:Ecore="http://www.eclipse.org/uml2/schemas/Ecore/5" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xsi:schemaLocation="http://www.eclipse.org/uml2/schemas/Ecore/5 pathmap://UML_PROFILES/Ecore.profile.uml#_z1OFcHjqEdy8S4Cr8Rc_NA">
- <uml:Model xmi:id="_NuHhwEJVEd6kIY39uis5Uw" name="di" URI="http://www.eclipse.org/papyrus/0.7.0/sashdi">
- <packageImport xmi:type="uml:PackageImport" xmi:id="_F0PskN5qEd2dfviKlv9PXw">
- <importedPackage xmi:type="uml:Model" href="pathmap://UML_METAMODELS/Ecore.metamodel.uml#_0"/>
- </packageImport>
- <packagedElement xmi:type="uml:Class" xmi:id="_UiIMMEJVEd6kIY39uis5Uw" name="SashModel">
- <ownedComment xmi:type="uml:Comment" xmi:id="_UyqHoEUrEd6g-YgfS2DHrA" annotatedElement="_UiIMMEJVEd6kIY39uis5Uw">
- <body>Root node of the model describing the sash windows, panels and pages.&#xD;
-A SashModel can have several windows containing panels separated by sashes. Such panels can be folders &#xD;
-containing pages.</body>
- </ownedComment>
- <ownedAttribute xmi:type="uml:Property" xmi:id="_9KYNMEJVEd6kIY39uis5Uw" name="windows" type="_Xa5wIEJVEd6kIY39uis5Uw" aggregation="composite" association="_9JomUEJVEd6kIY39uis5Uw">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_9KYNMUJVEd6kIY39uis5Uw"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_9KYNMkJVEd6kIY39uis5Uw" value="*"/>
- </ownedAttribute>
- <ownedAttribute xmi:type="uml:Property" xmi:id="_mW0_EEJkEd6kIY39uis5Uw" name="currentSelection" type="_fbWYgEJVEd6kIY39uis5Uw" isUnique="false" association="_mT2jkEJkEd6kIY39uis5Uw">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_mW0_EUJkEd6kIY39uis5Uw" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_mW0_EkJkEd6kIY39uis5Uw" value="1"/>
- </ownedAttribute>
- <ownedOperation xmi:type="uml:Operation" xmi:id="_wdFgUEV4Ed6g-YgfS2DHrA" name="addPage">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="_yMF_0EV4Ed6g-YgfS2DHrA" name="pageIdentifier" type="_A-BP8EVhEd6g-YgfS2DHrA">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_1N0EYEV4Ed6g-YgfS2DHrA" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1N0EYUV4Ed6g-YgfS2DHrA" value="1"/>
- <defaultValue xmi:type="uml:LiteralString" xmi:id="_1N0EYkV4Ed6g-YgfS2DHrA">
- <value xsi:nil="true"/>
- </defaultValue>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="_m7xPsEa4Ed6g-YgfS2DHrA" name="removePage">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="_m7xPsUa4Ed6g-YgfS2DHrA" name="pageIdentifier" type="_A-BP8EVhEd6g-YgfS2DHrA">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_m7xPs0a4Ed6g-YgfS2DHrA" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_m7xPska4Ed6g-YgfS2DHrA" value="1"/>
- <defaultValue xmi:type="uml:LiteralString" xmi:id="_m7xPtEa4Ed6g-YgfS2DHrA">
- <value xsi:nil="true"/>
- </defaultValue>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="_e9ojYEbXEd6g-YgfS2DHrA" name="lookupPage">
- <ownedComment xmi:type="uml:Comment" xmi:id="_hi4uYEbXEd6g-YgfS2DHrA" annotatedElement="_e9ojYEbXEd6g-YgfS2DHrA">
- <body>Lookup the pageRef identified by the pageIdentifier.&#xD;
-Return the pageRef or null if not found.&#xD;
-Lookup in the entire SashModel structure.</body>
- </ownedComment>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="_e9ojYUbXEd6g-YgfS2DHrA" name="pageIdentifier" type="_A-BP8EVhEd6g-YgfS2DHrA">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_e9ojY0bXEd6g-YgfS2DHrA" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_e9ojYkbXEd6g-YgfS2DHrA" value="1"/>
- <defaultValue xmi:type="uml:LiteralString" xmi:id="_e9ojZEbXEd6g-YgfS2DHrA">
- <value xsi:nil="true"/>
- </defaultValue>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="_UTCMcEbYEd6g-YgfS2DHrA" name="return" type="_h_HVwEJVEd6kIY39uis5Uw" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_WgwBMEbYEd6g-YgfS2DHrA" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Wg5LIEbYEd6g-YgfS2DHrA" value="1"/>
- <defaultValue xmi:type="uml:LiteralString" xmi:id="_Wg5LIUbYEd6g-YgfS2DHrA">
- <value xsi:nil="true"/>
- </defaultValue>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="_q8zekEbsEd6g-YgfS2DHrA" name="movePage">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="_sQ_qUEbsEd6g-YgfS2DHrA" name="srcParentFolder" type="_fbWYgEJVEd6kIY39uis5Uw">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wdNzIEbsEd6g-YgfS2DHrA" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wdW9EEbsEd6g-YgfS2DHrA" value="1"/>
- <defaultValue xmi:type="uml:LiteralString" xmi:id="_wdW9EUbsEd6g-YgfS2DHrA">
- <value xsi:nil="true"/>
- </defaultValue>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="_q8zekUbsEd6g-YgfS2DHrA" name="srcIndex" type="_Hkk78EVbEd6g-YgfS2DHrA">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_q8zek0bsEd6g-YgfS2DHrA" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_q8zekkbsEd6g-YgfS2DHrA" value="1"/>
- <defaultValue xmi:type="uml:LiteralString" xmi:id="_q8zelEbsEd6g-YgfS2DHrA">
- <value xsi:nil="true"/>
- </defaultValue>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="_wqxuAEbsEd6g-YgfS2DHrA" name="targetParentFolder" type="_fbWYgEJVEd6kIY39uis5Uw">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_y6twUEbsEd6g-YgfS2DHrA" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_y6twUUbsEd6g-YgfS2DHrA" value="1"/>
- <defaultValue xmi:type="uml:LiteralString" xmi:id="_y6twUkbsEd6g-YgfS2DHrA">
- <value xsi:nil="true"/>
- </defaultValue>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="_q8zelUbsEd6g-YgfS2DHrA" name="targetIndex" type="_Hkk78EVbEd6g-YgfS2DHrA">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_q8zel0bsEd6g-YgfS2DHrA" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_q8zelkbsEd6g-YgfS2DHrA" value="1"/>
- <defaultValue xmi:type="uml:LiteralString" xmi:id="_q8zemEbsEd6g-YgfS2DHrA">
- <value xsi:nil="true"/>
- </defaultValue>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="_vnqNcEoIEd6ussMWxXGeXg" name="insertFolder">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="_vnqNcUoIEd6ussMWxXGeXg" name="folderToInsert" type="_fbWYgEJVEd6kIY39uis5Uw">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_vnqNc0oIEd6ussMWxXGeXg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_vnqNckoIEd6ussMWxXGeXg" value="1"/>
- <defaultValue xmi:type="uml:LiteralString" xmi:id="_vnqNdEoIEd6ussMWxXGeXg">
- <value xsi:nil="true"/>
- </defaultValue>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="_vnqNeUoIEd6ussMWxXGeXg" name="refFolder" type="_fbWYgEJVEd6kIY39uis5Uw">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_vnqNe0oIEd6ussMWxXGeXg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_vnqNekoIEd6ussMWxXGeXg" value="1"/>
- <defaultValue xmi:type="uml:LiteralString" xmi:id="_vnqNfEoIEd6ussMWxXGeXg">
- <value xsi:nil="true"/>
- </defaultValue>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="_vnqNfUoIEd6ussMWxXGeXg" name="refFolderSide" type="_Hkk78EVbEd6g-YgfS2DHrA">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_vnqNf0oIEd6ussMWxXGeXg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_vnqNfkoIEd6ussMWxXGeXg" value="1"/>
- <defaultValue xmi:type="uml:LiteralString" xmi:id="_vnqNgEoIEd6ussMWxXGeXg">
- <value xsi:nil="true"/>
- </defaultValue>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="_Kvf9cEoJEd6ussMWxXGeXg" name="movePage">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="_Kvf9cUoJEd6ussMWxXGeXg" name="srcParentFolder" type="_fbWYgEJVEd6kIY39uis5Uw">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Kvf9c0oJEd6ussMWxXGeXg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Kvf9ckoJEd6ussMWxXGeXg" value="1"/>
- <defaultValue xmi:type="uml:LiteralString" xmi:id="_Kvf9dEoJEd6ussMWxXGeXg">
- <value xsi:nil="true"/>
- </defaultValue>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="_Kvf9dUoJEd6ussMWxXGeXg" name="srcIndex" type="_Hkk78EVbEd6g-YgfS2DHrA">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Kvf9d0oJEd6ussMWxXGeXg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Kvf9dkoJEd6ussMWxXGeXg" value="1"/>
- <defaultValue xmi:type="uml:LiteralString" xmi:id="_Kvf9eEoJEd6ussMWxXGeXg">
- <value xsi:nil="true"/>
- </defaultValue>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="_Kvf9eUoJEd6ussMWxXGeXg" name="targetParentFolder" type="_fbWYgEJVEd6kIY39uis5Uw">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Kvf9e0oJEd6ussMWxXGeXg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Kvf9ekoJEd6ussMWxXGeXg" value="1"/>
- <defaultValue xmi:type="uml:LiteralString" xmi:id="_Kvf9fEoJEd6ussMWxXGeXg">
- <value xsi:nil="true"/>
- </defaultValue>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="_OoMtUEoJEd6ussMWxXGeXg" name="removeEmptyFolder">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="_OoMtUUoJEd6ussMWxXGeXg" name="folder" type="_fbWYgEJVEd6kIY39uis5Uw">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_OoMtU0oJEd6ussMWxXGeXg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_OoMtUkoJEd6ussMWxXGeXg" value="1"/>
- <defaultValue xmi:type="uml:LiteralString" xmi:id="_OoMtVEoJEd6ussMWxXGeXg">
- <value xsi:nil="true"/>
- </defaultValue>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="_vaMqoE4OEd-B2uXHu4qMXg" name="removeAllPages">
- <ownedComment xmi:type="uml:Comment" xmi:id="_yKxU0E4OEd-B2uXHu4qMXg" annotatedElement="_vaMqoE4OEd-B2uXHu4qMXg">
- <body>Remove all pages from the model. Only left one empty top level folder.</body>
- </ownedComment>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="_-TkSoE4OEd-B2uXHu4qMXg" name="removeOtherPages">
- <ownedComment xmi:type="uml:Comment" xmi:id="_Ar2_sE4PEd-B2uXHu4qMXg" annotatedElement="_-TkSoE4OEd-B2uXHu4qMXg">
- <body>Remove pages other than the one specified from the model. Intermediate folders are also removed.</body>
- </ownedComment>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="_-TkSoU4OEd-B2uXHu4qMXg" name="pageIdentifier" type="_A-BP8EVhEd6g-YgfS2DHrA">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_-TkSo04OEd-B2uXHu4qMXg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-TkSok4OEd-B2uXHu4qMXg" value="1"/>
- <defaultValue xmi:type="uml:LiteralString" xmi:id="_-TkSpE4OEd-B2uXHu4qMXg">
- <value xsi:nil="true"/>
- </defaultValue>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="_1jUIgE4PEd-B2uXHu4qMXg" name="lookupFirstWindow">
- <ownedComment xmi:type="uml:Comment" xmi:id="_JhGFkE4QEd-B2uXHu4qMXg" annotatedElement="_1jUIgE4PEd-B2uXHu4qMXg">
- <body>Get the first available window.</body>
- </ownedComment>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="_9JGOIE4PEd-B2uXHu4qMXg" name="window" type="_Xa5wIEJVEd6kIY39uis5Uw" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__PD1EE4PEd-B2uXHu4qMXg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__PD1EU4PEd-B2uXHu4qMXg" value="1"/>
- <defaultValue xmi:type="uml:LiteralString" xmi:id="__PD1Ek4PEd-B2uXHu4qMXg">
- <value xsi:nil="true"/>
- </defaultValue>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="_4qi_ME4PEd-B2uXHu4qMXg" name="lookupFirstFolder">
- <ownedComment xmi:type="uml:Comment" xmi:id="_MKOD8E4QEd-B2uXHu4qMXg" annotatedElement="_4qi_ME4PEd-B2uXHu4qMXg">
- <body>Lookup the first available folder.</body>
- </ownedComment>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="__o-w8E4PEd-B2uXHu4qMXg" name="folder" type="_fbWYgEJVEd6kIY39uis5Uw" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_BOwb8E4QEd-B2uXHu4qMXg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_BO6M8E4QEd-B2uXHu4qMXg" value="1"/>
- <defaultValue xmi:type="uml:LiteralString" xmi:id="_BO6M8U4QEd-B2uXHu4qMXg">
- <value xsi:nil="true"/>
- </defaultValue>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="_fPvj8FgxEeGNKLzLkykmJw" name="removePageAndEmptyFolder">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="_fPvj8VgxEeGNKLzLkykmJw" name="pageIdentifier" type="_A-BP8EVhEd6g-YgfS2DHrA">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_fPvj8lgxEeGNKLzLkykmJw" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_fPvj81gxEeGNKLzLkykmJw" value="1"/>
- <defaultValue xmi:type="uml:LiteralString" xmi:id="_fPvj9FgxEeGNKLzLkykmJw">
- <value xsi:nil="true"/>
- </defaultValue>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="_zdr0wGySEeKx9Kegn5X27A" name="setCurrentSelectionSilently">
- <ownedComment xmi:type="uml:Comment" xmi:id="_CMVagGyTEeKx9Kegn5X27A">
- <body>Set the current selection without firing a changedEvent.</body>
- </ownedComment>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="_5Z9l8GySEeKx9Kegn5X27A" name="selection" type="_fbWYgEJVEd6kIY39uis5Uw"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="_HtBbEFVkEeWe8LyZrqaAug" name="addPage">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="_KIfX8FVkEeWe8LyZrqaAug" name="folder" type="_fbWYgEJVEd6kIY39uis5Uw"/>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="_HtBbEVVkEeWe8LyZrqaAug" name="pageIdentifier" type="_A-BP8EVhEd6g-YgfS2DHrA">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_HtBbElVkEeWe8LyZrqaAug" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_HtBbE1VkEeWe8LyZrqaAug" value="1"/>
- <defaultValue xmi:type="uml:LiteralString" xmi:id="_HtBbFFVkEeWe8LyZrqaAug">
- <value xsi:nil="true"/>
- </defaultValue>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="_vv4NwFYZEeWe8LyZrqaAug" name="addPage">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="_vv4NwVYZEeWe8LyZrqaAug" name="folder" type="_fbWYgEJVEd6kIY39uis5Uw"/>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="_vv4NwlYZEeWe8LyZrqaAug" name="pageRef" type="_h_HVwEJVEd6kIY39uis5Uw">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_vv4Nw1YZEeWe8LyZrqaAug" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_vv4NxFYZEeWe8LyZrqaAug" value="1"/>
- <defaultValue xmi:type="uml:LiteralString" xmi:id="_vv4NxVYZEeWe8LyZrqaAug">
- <value xsi:nil="true"/>
- </defaultValue>
- </ownedParameter>
- </ownedOperation>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="_Xa5wIEJVEd6kIY39uis5Uw" name="Window">
- <generalization xmi:type="uml:Generalization" xmi:id="_95DboEJWEd6kIY39uis5Uw" general="_86BAgEJWEd6kIY39uis5Uw"/>
- <ownedAttribute xmi:type="uml:Property" xmi:id="_yWfIQESDEd6kIY39uis5Uw" name="position" visibility="public" type="_jc9vQESDEd6kIY39uis5Uw" isUnique="false">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_zpoyMESDEd6kIY39uis5Uw" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_zpoyMUSDEd6kIY39uis5Uw" value="1"/>
- <defaultValue xmi:type="uml:LiteralString" xmi:id="_zpx8IESDEd6kIY39uis5Uw">
- <value xsi:nil="true"/>
- </defaultValue>
- </ownedAttribute>
- <ownedAttribute xmi:type="uml:Property" xmi:id="_z0glcESDEd6kIY39uis5Uw" name="size" visibility="public" type="_lh4NUESDEd6kIY39uis5Uw" isUnique="false">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_1ItYQESDEd6kIY39uis5Uw" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1I2iMESDEd6kIY39uis5Uw" value="1"/>
- <defaultValue xmi:type="uml:LiteralString" xmi:id="_1I2iMUSDEd6kIY39uis5Uw">
- <value xsi:nil="true"/>
- </defaultValue>
- </ownedAttribute>
- <ownedAttribute xmi:type="uml:Property" xmi:id="_lnNFMEsFEd6MxdnlcgT3eA" name="panel" type="_Zx2ZYEJVEd6kIY39uis5Uw" isUnique="false" isDerived="true" association="_li3-0EsFEd6MxdnlcgT3eA">
- <ownedComment xmi:type="uml:Comment" xmi:id="_xQZ88EsFEd6MxdnlcgT3eA" annotatedElement="_lnNFMEsFEd6MxdnlcgT3eA">
- <body>Redefine children.</body>
- </ownedComment>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_9GbvwEsFEd6MxdnlcgT3eA" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_9Gk5sEsFEd6MxdnlcgT3eA" value="1"/>
- </ownedAttribute>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="_Zx2ZYEJVEd6kIY39uis5Uw" name="AbstractPanel" isAbstract="true">
- <ownedAttribute xmi:type="uml:Property" xmi:id="__CoIQEJVEd6kIY39uis5Uw" name="parent" type="_86BAgEJWEd6kIY39uis5Uw" isUnique="false" association="__CVNUEJVEd6kIY39uis5Uw">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__CoIQkJVEd6kIY39uis5Uw" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__CoIQUJVEd6kIY39uis5Uw" value="1"/>
- </ownedAttribute>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="_eE7YIEJVEd6kIY39uis5Uw" name="SashPanel">
- <generalization xmi:type="uml:Generalization" xmi:id="_7VZokEJVEd6kIY39uis5Uw" general="_Zx2ZYEJVEd6kIY39uis5Uw"/>
- <generalization xmi:type="uml:Generalization" xmi:id="_UH6OsEsDEd6MxdnlcgT3eA" general="_86BAgEJWEd6kIY39uis5Uw"/>
- <ownedAttribute xmi:type="uml:Property" xmi:id="_8rplQESDEd6kIY39uis5Uw" name="sashPosition" visibility="public" type="_IEBx4EV4Ed6g-YgfS2DHrA" isUnique="false">
- <ownedComment xmi:type="uml:Comment" xmi:id="_AWCzYESEEd6kIY39uis5Uw" annotatedElement="_8rplQESDEd6kIY39uis5Uw">
- <body>Position of the sash in the panel. The position is in percent. The value should be between 0 and 100.</body>
- </ownedComment>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__l6W8ESDEd6kIY39uis5Uw" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__mEH8ESDEd6kIY39uis5Uw" value="1"/>
- <defaultValue xmi:type="uml:LiteralString" xmi:id="__mEH8USDEd6kIY39uis5Uw">
- <value xsi:nil="true"/>
- </defaultValue>
- </ownedAttribute>
- <ownedAttribute xmi:type="uml:Property" xmi:id="_1nx64EbpEd6g-YgfS2DHrA" name="direction" visibility="public" type="_Hkk78EVbEd6g-YgfS2DHrA" isUnique="false">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_4GxF0EbpEd6g-YgfS2DHrA" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_4G620EbpEd6g-YgfS2DHrA" value="1"/>
- <defaultValue xmi:type="uml:LiteralString" xmi:id="_4G620UbpEd6g-YgfS2DHrA">
- <value xsi:nil="true"/>
- </defaultValue>
- </ownedAttribute>
- <ownedOperation xmi:type="uml:Operation" xmi:id="_eGcSEEoLEd6ussMWxXGeXg" name="setChildren">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="_f_4f8EoLEd6ussMWxXGeXg" name="leftChild" type="_Zx2ZYEJVEd6kIY39uis5Uw">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_jqlQEEoLEd6ussMWxXGeXg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_jquaAEoLEd6ussMWxXGeXg" value="1"/>
- <defaultValue xmi:type="uml:LiteralString" xmi:id="_jquaAUoLEd6ussMWxXGeXg">
- <value xsi:nil="true"/>
- </defaultValue>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="_j57ToEoLEd6ussMWxXGeXg" name="rightChild" type="_Zx2ZYEJVEd6kIY39uis5Uw">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_l5xrgEoLEd6ussMWxXGeXg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_l57cgEoLEd6ussMWxXGeXg" value="1"/>
- <defaultValue xmi:type="uml:LiteralString" xmi:id="_l57cgUoLEd6ussMWxXGeXg">
- <value xsi:nil="true"/>
- </defaultValue>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="_mVfXIEoLEd6ussMWxXGeXg" name="direction" type="_Hkk78EVbEd6g-YgfS2DHrA">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_oo3vAEoLEd6ussMWxXGeXg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_oo3vAUoLEd6ussMWxXGeXg" value="1"/>
- <defaultValue xmi:type="uml:LiteralString" xmi:id="_oo3vAkoLEd6ussMWxXGeXg">
- <value xsi:nil="true"/>
- </defaultValue>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="_tzrhgEuAEd6kcPOdk0bn7w" name="delete">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="_yPQU8EuAEd6kcPOdk0bn7w" name="childToDelete" type="_Zx2ZYEJVEd6kIY39uis5Uw">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_2M3aAEuAEd6kcPOdk0bn7w" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2M3aAUuAEd6kcPOdk0bn7w" value="1"/>
- <defaultValue xmi:type="uml:LiteralString" xmi:id="_2M3aAkuAEd6kcPOdk0bn7w">
- <value xsi:nil="true"/>
- </defaultValue>
- </ownedParameter>
- </ownedOperation>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="_fbWYgEJVEd6kIY39uis5Uw" name="TabFolder">
- <generalization xmi:type="uml:Generalization" xmi:id="_71vVgEJVEd6kIY39uis5Uw" general="_Zx2ZYEJVEd6kIY39uis5Uw"/>
- <ownedAttribute xmi:type="uml:Property" xmi:id="_ANIzkEJWEd6kIY39uis5Uw" name="children" type="_h_HVwEJVEd6kIY39uis5Uw" aggregation="composite" association="_AM_CkEJWEd6kIY39uis5Uw">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ANIzkUJWEd6kIY39uis5Uw"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ANIzkkJWEd6kIY39uis5Uw" value="*"/>
- </ownedAttribute>
- <ownedOperation xmi:type="uml:Operation" xmi:id="_Cqh_oEViEd6g-YgfS2DHrA" name="movePage">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="_ETI8MEViEd6g-YgfS2DHrA" name="oldIndex" type="_Hkk78EVbEd6g-YgfS2DHrA">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_G2wIcEViEd6g-YgfS2DHrA" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_G2wIcUViEd6g-YgfS2DHrA" value="1"/>
- <defaultValue xmi:type="uml:LiteralString" xmi:id="_G2wIckViEd6g-YgfS2DHrA">
- <value xsi:nil="true"/>
- </defaultValue>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="_X27C4EV4Ed6g-YgfS2DHrA" name="newIndex" type="_Hkk78EVbEd6g-YgfS2DHrA">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_amdyUEV4Ed6g-YgfS2DHrA" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_amdyUUV4Ed6g-YgfS2DHrA" value="1"/>
- <defaultValue xmi:type="uml:LiteralString" xmi:id="_amdyUkV4Ed6g-YgfS2DHrA">
- <value xsi:nil="true"/>
- </defaultValue>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="_oZu3cEWEEd6g-YgfS2DHrA" name="addPage">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="_oZu3cUWEEd6g-YgfS2DHrA" name="pageIdentifier" type="_A-BP8EVhEd6g-YgfS2DHrA">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_oZu3c0WEEd6g-YgfS2DHrA" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_oZu3ckWEEd6g-YgfS2DHrA" value="1"/>
- <defaultValue xmi:type="uml:LiteralString" xmi:id="_oZu3dEWEEd6g-YgfS2DHrA">
- <value xsi:nil="true"/>
- </defaultValue>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="_oEQBQEblEd6g-YgfS2DHrA" name="removePage">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="_oEQBQUblEd6g-YgfS2DHrA" name="pageIndex" type="_Hkk78EVbEd6g-YgfS2DHrA">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_oEQBQ0blEd6g-YgfS2DHrA" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_oEQBQkblEd6g-YgfS2DHrA" value="1"/>
- <defaultValue xmi:type="uml:LiteralString" xmi:id="_oEQBREblEd6g-YgfS2DHrA">
- <value xsi:nil="true"/>
- </defaultValue>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="_byei4FVjEeWe8LyZrqaAug" name="addPage">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="_fr-kAFVjEeWe8LyZrqaAug" name="index">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="_byei4VVjEeWe8LyZrqaAug" name="pageIdentifier" type="_A-BP8EVhEd6g-YgfS2DHrA">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_byei4lVjEeWe8LyZrqaAug" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_byei41VjEeWe8LyZrqaAug" value="1"/>
- <defaultValue xmi:type="uml:LiteralString" xmi:id="_byei5FVjEeWe8LyZrqaAug">
- <value xsi:nil="true"/>
- </defaultValue>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="_1teNkFYZEeWe8LyZrqaAug" name="addPage">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="_1teNkVYZEeWe8LyZrqaAug" name="pageRef" type="_h_HVwEJVEd6kIY39uis5Uw">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_1teNklYZEeWe8LyZrqaAug" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1teNk1YZEeWe8LyZrqaAug" value="1"/>
- <defaultValue xmi:type="uml:LiteralString" xmi:id="_1teNlFYZEeWe8LyZrqaAug">
- <value xsi:nil="true"/>
- </defaultValue>
- </ownedParameter>
- </ownedOperation>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="_h_HVwEJVEd6kIY39uis5Uw" name="PageRef">
- <ownedAttribute xmi:type="uml:Property" xmi:id="_ANIzk0JWEd6kIY39uis5Uw" name="parent" type="_fbWYgEJVEd6kIY39uis5Uw" isUnique="false" association="_AM_CkEJWEd6kIY39uis5Uw">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ANIzlUJWEd6kIY39uis5Uw"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ANIzlEJWEd6kIY39uis5Uw" value="1"/>
- </ownedAttribute>
- <ownedAttribute xmi:type="uml:Property" xmi:id="_b94xUEnjEd6ussMWxXGeXg" name="emfPageIdentifier" visibility="private" isUnique="false" association="_b3enUEnjEd6ussMWxXGeXg">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/Ecore.metamodel.uml#EObject"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_b-CiUEnjEd6ussMWxXGeXg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_b-CiUUnjEd6ussMWxXGeXg" value="1"/>
- </ownedAttribute>
- <ownedAttribute xmi:type="uml:Property" xmi:id="_GrqUYEnkEd6ussMWxXGeXg" name="pageIdentifier" visibility="public" isLeaf="true" type="_A-BP8EVhEd6g-YgfS2DHrA" isUnique="false" isDerived="true">
- <ownedComment xmi:type="uml:Comment" xmi:id="_YfXUoEnmEd6ussMWxXGeXg" annotatedElement="_GrqUYEnkEd6ussMWxXGeXg">
- <body>pageIdentifier can be a plain JavaObject or an EObject.&#xD;
-They are not stored in the same place.</body>
- </ownedComment>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_W-rvkEnnEd6ussMWxXGeXg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_W-1gkEnnEd6ussMWxXGeXg" value="1"/>
- <defaultValue xmi:type="uml:LiteralString" xmi:id="_W-1gkUnnEd6ussMWxXGeXg">
- <value xsi:nil="true"/>
- </defaultValue>
- </ownedAttribute>
- <ownedAttribute xmi:type="uml:Property" xmi:id="_RkM5UEnmEd6ussMWxXGeXg" name="objectPageIdentifier" visibility="private" type="_A-BP8EVhEd6g-YgfS2DHrA" isUnique="false">
- <ownedComment xmi:type="uml:Comment" xmi:id="_UZ2QwEnmEd6ussMWxXGeXg" annotatedElement="_RkM5UEnmEd6ussMWxXGeXg">
- <body>Storage to store Identifier that are not EObject.</body>
- </ownedComment>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_DXj_AEnnEd6ussMWxXGeXg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_DXj_AUnnEd6ussMWxXGeXg" value="1"/>
- <defaultValue xmi:type="uml:LiteralString" xmi:id="_DXtI8EnnEd6ussMWxXGeXg">
- <value xsi:nil="true"/>
- </defaultValue>
- </ownedAttribute>
- <ownedAttribute xmi:type="uml:Property" xmi:id="_RGhL8FViEeWe8LyZrqaAug" name="favoriteEditor" visibility="public">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_eaPr0FViEeWe8LyZrqaAug"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_eaZc0FViEeWe8LyZrqaAug" value="1"/>
- </ownedAttribute>
- <ownedOperation xmi:type="uml:Operation" xmi:id="_BxkKcEbaEd6g-YgfS2DHrA" name="isForIdentifier">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="_BxkKcUbaEd6g-YgfS2DHrA" name="pageIdentifier" type="_A-BP8EVhEd6g-YgfS2DHrA">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_BxkKc0baEd6g-YgfS2DHrA" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_BxkKckbaEd6g-YgfS2DHrA" value="1"/>
- <defaultValue xmi:type="uml:LiteralString" xmi:id="_BxkKdEbaEd6g-YgfS2DHrA">
- <value xsi:nil="true"/>
- </defaultValue>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="_D0_awEbaEd6g-YgfS2DHrA" name="return" type="_SNSWAEbaEd6g-YgfS2DHrA" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_GFO_EEbaEd6g-YgfS2DHrA" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_GFO_EUbaEd6g-YgfS2DHrA" value="1"/>
- <defaultValue xmi:type="uml:LiteralString" xmi:id="_GFO_EkbaEd6g-YgfS2DHrA">
- <value xsi:nil="true"/>
- </defaultValue>
- </ownedParameter>
- </ownedOperation>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="_zd5g0EJVEd6kIY39uis5Uw" name="AbstractPage">
- <ownedAttribute xmi:type="uml:Property" xmi:id="_rLVHwEa1Ed6g-YgfS2DHrA" name="pageIdentifier" visibility="public" type="_A-BP8EVhEd6g-YgfS2DHrA" isUnique="false">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rLVHwka1Ed6g-YgfS2DHrA" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rLVHwUa1Ed6g-YgfS2DHrA" value="1"/>
- <defaultValue xmi:type="uml:LiteralString" xmi:id="_rLVHw0a1Ed6g-YgfS2DHrA">
- <value xsi:nil="true"/>
- </defaultValue>
- </ownedAttribute>
- </packagedElement>
- <packagedElement xmi:type="uml:Association" xmi:id="_9JomUEJVEd6kIY39uis5Uw" name="A_SashWindowsRoot_Window" memberEnd="_9KYNMEJVEd6kIY39uis5Uw _9Kh-MEJVEd6kIY39uis5Uw">
- <ownedEnd xmi:type="uml:Property" xmi:id="_9Kh-MEJVEd6kIY39uis5Uw" name="sashWindowsRoot" type="_UiIMMEJVEd6kIY39uis5Uw" isUnique="false" association="_9JomUEJVEd6kIY39uis5Uw">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_9Kh-MkJVEd6kIY39uis5Uw"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_9Kh-MUJVEd6kIY39uis5Uw" value="1"/>
- </ownedEnd>
- </packagedElement>
- <packagedElement xmi:type="uml:Association" xmi:id="__CVNUEJVEd6kIY39uis5Uw" name="A_PanelParent_AbstractPanel" memberEnd="__Ce-UEJVEd6kIY39uis5Uw __CoIQEJVEd6kIY39uis5Uw"/>
- <packagedElement xmi:type="uml:Association" xmi:id="_AM_CkEJWEd6kIY39uis5Uw" name="A_TabFolder_AbstractPageRef" memberEnd="_ANIzkEJWEd6kIY39uis5Uw _ANIzk0JWEd6kIY39uis5Uw"/>
- <packagedElement xmi:type="uml:Class" xmi:id="_86BAgEJWEd6kIY39uis5Uw" name="PanelParent" isAbstract="true">
- <ownedAttribute xmi:type="uml:Property" xmi:id="__Ce-UEJVEd6kIY39uis5Uw" name="children" type="_Zx2ZYEJVEd6kIY39uis5Uw" aggregation="composite" association="__CVNUEJVEd6kIY39uis5Uw">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__Ce-UUJVEd6kIY39uis5Uw" value="2"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__Ce-UkJVEd6kIY39uis5Uw" value="2"/>
- </ownedAttribute>
- <ownedOperation xmi:type="uml:Operation" xmi:id="_yG3I4EoKEd6ussMWxXGeXg" name="replaceChild">
- <ownedComment xmi:type="uml:Comment" xmi:id="_AxysQEoLEd6ussMWxXGeXg" annotatedElement="_yG3I4EoKEd6ussMWxXGeXg">
- <body>Replace the specified child by the new value.&#xD;
-Don't need to be implemented in TabFolder.&#xD;
-Used to insert a new SashPanel.</body>
- </ownedComment>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="_zqjwQEoKEd6ussMWxXGeXg" name="oldChild" type="_Zx2ZYEJVEd6kIY39uis5Uw">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_3Q7aAEoKEd6ussMWxXGeXg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_3Q7aAUoKEd6ussMWxXGeXg" value="1"/>
- <defaultValue xmi:type="uml:LiteralString" xmi:id="_3Q7aAkoKEd6ussMWxXGeXg">
- <value xsi:nil="true"/>
- </defaultValue>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="_3dJREEoKEd6ussMWxXGeXg" name="newChild" type="_Zx2ZYEJVEd6kIY39uis5Uw">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__gbLAEoKEd6ussMWxXGeXg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__gbLAUoKEd6ussMWxXGeXg" value="1"/>
- <defaultValue xmi:type="uml:LiteralString" xmi:id="__gbLAkoKEd6ussMWxXGeXg">
- <value xsi:nil="true"/>
- </defaultValue>
- </ownedParameter>
- </ownedOperation>
- </packagedElement>
- <packagedElement xmi:type="uml:Association" xmi:id="_viyZUEJZEd6kIY39uis5Uw" name="A_PageList_PageRef" memberEnd="_vjFUQEJZEd6kIY39uis5Uw _vjYPMkJZEd6kIY39uis5Uw">
- <ownedEnd xmi:type="uml:Property" xmi:id="_vjYPMkJZEd6kIY39uis5Uw" name="sashWindowsRoot" type="_b7a4cEMaEd6kIY39uis5Uw" isUnique="false" association="_viyZUEJZEd6kIY39uis5Uw">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_vjiAMUJZEd6kIY39uis5Uw"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_vjiAMEJZEd6kIY39uis5Uw" value="1"/>
- </ownedEnd>
- </packagedElement>
- <packagedElement xmi:type="uml:Association" xmi:id="_mT2jkEJkEd6kIY39uis5Uw" name="A_SashWindowsRoot_TabFolder" memberEnd="_mW0_EEJkEd6kIY39uis5Uw _mW0_E0JkEd6kIY39uis5Uw">
- <ownedEnd xmi:type="uml:Property" xmi:id="_mW0_E0JkEd6kIY39uis5Uw" name="sashWindowsRoot" type="_UiIMMEJVEd6kIY39uis5Uw" isUnique="false" association="_mT2jkEJkEd6kIY39uis5Uw">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_mW-wEUJkEd6kIY39uis5Uw"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_mW-wEEJkEd6kIY39uis5Uw" value="*"/>
- </ownedEnd>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="_b7a4cEMaEd6kIY39uis5Uw" name="PageList">
- <ownedAttribute xmi:type="uml:Property" xmi:id="_vjFUQEJZEd6kIY39uis5Uw" name="availablePage" type="_h_HVwEJVEd6kIY39uis5Uw" aggregation="composite" association="_viyZUEJZEd6kIY39uis5Uw">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_vjYPMEJZEd6kIY39uis5Uw"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_vjYPMUJZEd6kIY39uis5Uw" value="*"/>
- </ownedAttribute>
- <ownedOperation xmi:type="uml:Operation" xmi:id="_i92ooEa4Ed6g-YgfS2DHrA" name="addPage">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="_i92ooUa4Ed6g-YgfS2DHrA" name="pageIdentifier" type="_A-BP8EVhEd6g-YgfS2DHrA">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_i92oo0a4Ed6g-YgfS2DHrA" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_i92ooka4Ed6g-YgfS2DHrA" value="1"/>
- <defaultValue xmi:type="uml:LiteralString" xmi:id="_i92opEa4Ed6g-YgfS2DHrA">
- <value xsi:nil="true"/>
- </defaultValue>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="_ocolgEa4Ed6g-YgfS2DHrA" name="removePage">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="_ocolgUa4Ed6g-YgfS2DHrA" name="pageIdentifier" type="_A-BP8EVhEd6g-YgfS2DHrA">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ocolg0a4Ed6g-YgfS2DHrA" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ocolgka4Ed6g-YgfS2DHrA" value="1"/>
- <defaultValue xmi:type="uml:LiteralString" xmi:id="_ocolhEa4Ed6g-YgfS2DHrA">
- <value xsi:nil="true"/>
- </defaultValue>
- </ownedParameter>
- </ownedOperation>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="_-9vywEMaEd6kIY39uis5Uw" name="SashWindowsMngr">
- <ownedAttribute xmi:type="uml:Property" xmi:id="_9osO4EMbEd6kIY39uis5Uw" name="pageList" type="_b7a4cEMaEd6kIY39uis5Uw" isUnique="false" aggregation="composite" association="_9k0bgEMbEd6kIY39uis5Uw">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_9osO4UMbEd6kIY39uis5Uw" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_9osO4kMbEd6kIY39uis5Uw" value="1"/>
- </ownedAttribute>
- <ownedAttribute xmi:type="uml:Property" xmi:id="_-JenwEMbEd6kIY39uis5Uw" name="sashModel" type="_UiIMMEJVEd6kIY39uis5Uw" isUnique="false" aggregation="composite" association="_-EQwkEMbEd6kIY39uis5Uw">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_-JnxsEMbEd6kIY39uis5Uw" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-JnxsUMbEd6kIY39uis5Uw" value="1"/>
- </ownedAttribute>
- </packagedElement>
- <packagedElement xmi:type="uml:Association" xmi:id="_9k0bgEMbEd6kIY39uis5Uw" name="A_MultiPageEditor_PageList" memberEnd="_9osO4EMbEd6kIY39uis5Uw _9osO40MbEd6kIY39uis5Uw">
- <ownedEnd xmi:type="uml:Property" xmi:id="_9osO40MbEd6kIY39uis5Uw" name="multiPageEditor" type="_-9vywEMaEd6kIY39uis5Uw" isUnique="false" association="_9k0bgEMbEd6kIY39uis5Uw">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_9o1_4UMbEd6kIY39uis5Uw"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_9o1_4EMbEd6kIY39uis5Uw" value="1"/>
- </ownedEnd>
- </packagedElement>
- <packagedElement xmi:type="uml:Association" xmi:id="_-EQwkEMbEd6kIY39uis5Uw" name="A_MultiPageEditor_SashWindowsLayout" memberEnd="_-JenwEMbEd6kIY39uis5Uw _-JnxskMbEd6kIY39uis5Uw">
- <ownedEnd xmi:type="uml:Property" xmi:id="_-JnxskMbEd6kIY39uis5Uw" name="multiPageEditor" type="_-9vywEMaEd6kIY39uis5Uw" isUnique="false" association="_-EQwkEMbEd6kIY39uis5Uw">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_-JnxtEMbEd6kIY39uis5Uw"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-Jnxs0MbEd6kIY39uis5Uw" value="1"/>
- </ownedEnd>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="_jc9vQESDEd6kIY39uis5Uw" name="Position">
- <ownedAttribute xmi:type="uml:Property" xmi:id="_m9q14ESDEd6kIY39uis5Uw" name="x" visibility="public" type="_Hkk78EVbEd6g-YgfS2DHrA" isUnique="false">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_pZ1WUESDEd6kIY39uis5Uw" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_pZ1WUUSDEd6kIY39uis5Uw" value="1"/>
- <defaultValue xmi:type="uml:LiteralString" xmi:id="_paIRQESDEd6kIY39uis5Uw">
- <value xsi:nil="true"/>
- </defaultValue>
- </ownedAttribute>
- <ownedAttribute xmi:type="uml:Property" xmi:id="_pmDNYESDEd6kIY39uis5Uw" name="y" visibility="public" type="_Hkk78EVbEd6g-YgfS2DHrA" isUnique="false">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_q458YESDEd6kIY39uis5Uw" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_q5DtYESDEd6kIY39uis5Uw" value="1"/>
- <defaultValue xmi:type="uml:LiteralString" xmi:id="_q5DtYUSDEd6kIY39uis5Uw">
- <value xsi:nil="true"/>
- </defaultValue>
- </ownedAttribute>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="_lh4NUESDEd6kIY39uis5Uw" name="Size">
- <ownedAttribute xmi:type="uml:Property" xmi:id="_s1CR4ESDEd6kIY39uis5Uw" name="width" visibility="public" type="_Hkk78EVbEd6g-YgfS2DHrA" isUnique="false">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_u5DYEESDEd6kIY39uis5Uw" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_u5NJEESDEd6kIY39uis5Uw" value="1"/>
- <defaultValue xmi:type="uml:LiteralString" xmi:id="_u5NJEUSDEd6kIY39uis5Uw">
- <value xsi:nil="true"/>
- </defaultValue>
- </ownedAttribute>
- <ownedAttribute xmi:type="uml:Property" xmi:id="_vnZr0ESDEd6kIY39uis5Uw" name="length" visibility="public" type="_Hkk78EVbEd6g-YgfS2DHrA" isUnique="false">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_w_T58ESDEd6kIY39uis5Uw" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_w_dq8ESDEd6kIY39uis5Uw" value="1"/>
- <defaultValue xmi:type="uml:LiteralString" xmi:id="_w_dq8USDEd6kIY39uis5Uw">
- <value xsi:nil="true"/>
- </defaultValue>
- </ownedAttribute>
- </packagedElement>
- <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_Hkk78EVbEd6g-YgfS2DHrA" name="Integer"/>
- <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_A-BP8EVhEd6g-YgfS2DHrA" name="JavaObject"/>
- <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_IEBx4EV4Ed6g-YgfS2DHrA" name="Float"/>
- <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_SNSWAEbaEd6g-YgfS2DHrA" name="boolean"/>
- <packagedElement xmi:type="uml:Association" xmi:id="_b3enUEnjEd6ussMWxXGeXg" name="A_PageRef_EObject" memberEnd="_b94xUEnjEd6ussMWxXGeXg _b-CiUknjEd6ussMWxXGeXg">
- <ownedEnd xmi:type="uml:Property" xmi:id="_b-CiUknjEd6ussMWxXGeXg" name="pageRef" visibility="public" type="_h_HVwEJVEd6kIY39uis5Uw" isUnique="false" association="_b3enUEnjEd6ussMWxXGeXg">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_b-MTUUnjEd6ussMWxXGeXg"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_b-MTUEnjEd6ussMWxXGeXg" value="*"/>
- </ownedEnd>
- </packagedElement>
- <packagedElement xmi:type="uml:Association" xmi:id="_li3-0EsFEd6MxdnlcgT3eA" name="A_Window_AbstractPanel" memberEnd="_lnNFMEsFEd6MxdnlcgT3eA _lnWPIksFEd6MxdnlcgT3eA">
- <ownedEnd xmi:type="uml:Property" xmi:id="_lnWPIksFEd6MxdnlcgT3eA" name="window" type="_Xa5wIEJVEd6kIY39uis5Uw" isUnique="false" association="_li3-0EsFEd6MxdnlcgT3eA">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_lnWPJEsFEd6MxdnlcgT3eA"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_lnWPI0sFEd6MxdnlcgT3eA" value="*"/>
- </ownedEnd>
- </packagedElement>
- <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_NuHhwkJVEd6kIY39uis5Uw">
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_NuHhw0JVEd6kIY39uis5Uw" source="http://www.eclipse.org/uml2/2.0.0/UML">
- <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/uml2/5.0.0/UML/Profile/Standard#/"/>
- </eAnnotations>
- <appliedProfile xmi:type="uml:Profile" href="pathmap://UML_PROFILES/StandardL2.profile.uml#_0"/>
- </profileApplication>
- <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_wpAy0EJfEd6kIY39uis5Uw">
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_wpJ8wEJfEd6kIY39uis5Uw" source="http://www.eclipse.org/uml2/2.0.0/UML">
- <references xmi:type="ecore:EPackage" href="pathmap://UML_PROFILES/Ecore.profile.uml#_z1OFcHjqEdy8S4Cr8Rc_NA"/>
- </eAnnotations>
- <appliedProfile xmi:type="uml:Profile" href="pathmap://UML_PROFILES/Ecore.profile.uml#_0"/>
- </profileApplication>
- <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_T73od1ViEeWe8LyZrqaAug">
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_T73oeFViEeWe8LyZrqaAug" source="http://www.eclipse.org/uml2/2.0.0/UML">
- <references xmi:type="ecore:EPackage" href="pathmap://PAPYRUS_ACTIONLANGUAGE_PROFILE/ActionLanguage-Profile.profile.uml#_Kv8EIKFXEeS_KNX0nfvIVQ"/>
- </eAnnotations>
- <appliedProfile xmi:type="uml:Profile" href="pathmap://PAPYRUS_ACTIONLANGUAGE_PROFILE/ActionLanguage-Profile.profile.uml#ActionLanguage"/>
- </profileApplication>
- </uml:Model>
- <Ecore:EPackage xmi:id="_mo48QEJgEd6kIY39uis5Uw" base_Package="_NuHhwEJVEd6kIY39uis5Uw" nsPrefix="di" nsURI="http://www.eclipse.org/papyrus/0.7.0/sashdi" basePackage="org.eclipse.papyrus.infra.core.sashwindows" prefix="Di">
- <annotation>resource=XMI</annotation>
- </Ecore:EPackage>
- <Ecore:EDataType xmi:id="_6EWpcEVgEd6g-YgfS2DHrA" instanceClassName="int" base_PrimitiveType="_Hkk78EVbEd6g-YgfS2DHrA" dataTypeName="int"/>
- <Ecore:EDataType xmi:id="_DLSYwEVhEd6g-YgfS2DHrA" instanceClassName="java.lang.Object" base_PrimitiveType="_A-BP8EVhEd6g-YgfS2DHrA"/>
- <Ecore:EDataType xmi:id="_MeaSgEV4Ed6g-YgfS2DHrA" instanceClassName="float" base_PrimitiveType="_IEBx4EV4Ed6g-YgfS2DHrA"/>
- <Ecore:EDataType xmi:id="_UtLf4EbaEd6g-YgfS2DHrA" instanceClassName="boolean" base_PrimitiveType="_SNSWAEbaEd6g-YgfS2DHrA"/>
- <Ecore:EAttribute xmi:id="_UVaAMEnnEd6ussMWxXGeXg" isTransient="true" base_Property="_GrqUYEnkEd6ussMWxXGeXg"/>
- <Ecore:EReference xmi:id="_uX7T8EsFEd6MxdnlcgT3eA" isTransient="true" isVolatile="true" base_Property="_lnNFMEsFEd6MxdnlcgT3eA"/>
-</xmi:XMI>
+<?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:Ecore="http://www.eclipse.org/uml2/schemas/Ecore/5" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xsi:schemaLocation="http://www.eclipse.org/uml2/schemas/Ecore/5 pathmap://UML_PROFILES/Ecore.profile.uml#_z1OFcHjqEdy8S4Cr8Rc_NA">
+ <uml:Model xmi:id="_NuHhwEJVEd6kIY39uis5Uw" name="di" URI="http://www.eclipse.org/papyrus/0.7.0/sashdi">
+ <packageImport xmi:type="uml:PackageImport" xmi:id="_F0PskN5qEd2dfviKlv9PXw">
+ <importedPackage xmi:type="uml:Model" href="pathmap://UML_METAMODELS/Ecore.metamodel.uml#_0"/>
+ </packageImport>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UiIMMEJVEd6kIY39uis5Uw" name="SashModel">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_UyqHoEUrEd6g-YgfS2DHrA" annotatedElement="_UiIMMEJVEd6kIY39uis5Uw">
+ <body>Root node of the model describing the sash windows, panels and pages.&#xD;
+A SashModel can have several windows containing panels separated by sashes. Such panels can be folders &#xD;
+containing pages.</body>
+ </ownedComment>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_9KYNMEJVEd6kIY39uis5Uw" name="windows" type="_Xa5wIEJVEd6kIY39uis5Uw" aggregation="composite" association="_9JomUEJVEd6kIY39uis5Uw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_9KYNMUJVEd6kIY39uis5Uw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_9KYNMkJVEd6kIY39uis5Uw" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_mW0_EEJkEd6kIY39uis5Uw" name="currentSelection" type="_fbWYgEJVEd6kIY39uis5Uw" isUnique="false" association="_mT2jkEJkEd6kIY39uis5Uw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_mW0_EUJkEd6kIY39uis5Uw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_mW0_EkJkEd6kIY39uis5Uw" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_eF-DIJUXEeWeT68xCjxnSQ" name="restoreActivePage" type="_SNSWAEbaEd6g-YgfS2DHrA"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_wdFgUEV4Ed6g-YgfS2DHrA" name="addPage">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_yMF_0EV4Ed6g-YgfS2DHrA" name="pageIdentifier" type="_A-BP8EVhEd6g-YgfS2DHrA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_1N0EYEV4Ed6g-YgfS2DHrA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1N0EYUV4Ed6g-YgfS2DHrA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_1N0EYkV4Ed6g-YgfS2DHrA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_m7xPsEa4Ed6g-YgfS2DHrA" name="removePage">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_m7xPsUa4Ed6g-YgfS2DHrA" name="pageIdentifier" type="_A-BP8EVhEd6g-YgfS2DHrA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_m7xPs0a4Ed6g-YgfS2DHrA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_m7xPska4Ed6g-YgfS2DHrA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_m7xPtEa4Ed6g-YgfS2DHrA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_e9ojYEbXEd6g-YgfS2DHrA" name="lookupPage">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_hi4uYEbXEd6g-YgfS2DHrA" annotatedElement="_e9ojYEbXEd6g-YgfS2DHrA">
+ <body>Lookup the pageRef identified by the pageIdentifier.&#xD;
+Return the pageRef or null if not found.&#xD;
+Lookup in the entire SashModel structure.</body>
+ </ownedComment>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_e9ojYUbXEd6g-YgfS2DHrA" name="pageIdentifier" type="_A-BP8EVhEd6g-YgfS2DHrA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_e9ojY0bXEd6g-YgfS2DHrA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_e9ojYkbXEd6g-YgfS2DHrA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_e9ojZEbXEd6g-YgfS2DHrA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_UTCMcEbYEd6g-YgfS2DHrA" name="return" type="_h_HVwEJVEd6kIY39uis5Uw" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_WgwBMEbYEd6g-YgfS2DHrA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Wg5LIEbYEd6g-YgfS2DHrA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_Wg5LIUbYEd6g-YgfS2DHrA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_q8zekEbsEd6g-YgfS2DHrA" name="movePage">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_sQ_qUEbsEd6g-YgfS2DHrA" name="srcParentFolder" type="_fbWYgEJVEd6kIY39uis5Uw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wdNzIEbsEd6g-YgfS2DHrA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wdW9EEbsEd6g-YgfS2DHrA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_wdW9EUbsEd6g-YgfS2DHrA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_q8zekUbsEd6g-YgfS2DHrA" name="srcIndex" type="_Hkk78EVbEd6g-YgfS2DHrA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_q8zek0bsEd6g-YgfS2DHrA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_q8zekkbsEd6g-YgfS2DHrA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_q8zelEbsEd6g-YgfS2DHrA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_wqxuAEbsEd6g-YgfS2DHrA" name="targetParentFolder" type="_fbWYgEJVEd6kIY39uis5Uw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_y6twUEbsEd6g-YgfS2DHrA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_y6twUUbsEd6g-YgfS2DHrA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_y6twUkbsEd6g-YgfS2DHrA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_q8zelUbsEd6g-YgfS2DHrA" name="targetIndex" type="_Hkk78EVbEd6g-YgfS2DHrA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_q8zel0bsEd6g-YgfS2DHrA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_q8zelkbsEd6g-YgfS2DHrA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_q8zemEbsEd6g-YgfS2DHrA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_vnqNcEoIEd6ussMWxXGeXg" name="insertFolder">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_vnqNcUoIEd6ussMWxXGeXg" name="folderToInsert" type="_fbWYgEJVEd6kIY39uis5Uw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_vnqNc0oIEd6ussMWxXGeXg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_vnqNckoIEd6ussMWxXGeXg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_vnqNdEoIEd6ussMWxXGeXg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_vnqNeUoIEd6ussMWxXGeXg" name="refFolder" type="_fbWYgEJVEd6kIY39uis5Uw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_vnqNe0oIEd6ussMWxXGeXg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_vnqNekoIEd6ussMWxXGeXg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_vnqNfEoIEd6ussMWxXGeXg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_vnqNfUoIEd6ussMWxXGeXg" name="refFolderSide" type="_Hkk78EVbEd6g-YgfS2DHrA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_vnqNf0oIEd6ussMWxXGeXg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_vnqNfkoIEd6ussMWxXGeXg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_vnqNgEoIEd6ussMWxXGeXg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_Kvf9cEoJEd6ussMWxXGeXg" name="movePage">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_Kvf9cUoJEd6ussMWxXGeXg" name="srcParentFolder" type="_fbWYgEJVEd6kIY39uis5Uw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Kvf9c0oJEd6ussMWxXGeXg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Kvf9ckoJEd6ussMWxXGeXg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_Kvf9dEoJEd6ussMWxXGeXg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_Kvf9dUoJEd6ussMWxXGeXg" name="srcIndex" type="_Hkk78EVbEd6g-YgfS2DHrA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Kvf9d0oJEd6ussMWxXGeXg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Kvf9dkoJEd6ussMWxXGeXg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_Kvf9eEoJEd6ussMWxXGeXg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_Kvf9eUoJEd6ussMWxXGeXg" name="targetParentFolder" type="_fbWYgEJVEd6kIY39uis5Uw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Kvf9e0oJEd6ussMWxXGeXg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Kvf9ekoJEd6ussMWxXGeXg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_Kvf9fEoJEd6ussMWxXGeXg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_OoMtUEoJEd6ussMWxXGeXg" name="removeEmptyFolder">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_OoMtUUoJEd6ussMWxXGeXg" name="folder" type="_fbWYgEJVEd6kIY39uis5Uw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_OoMtU0oJEd6ussMWxXGeXg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_OoMtUkoJEd6ussMWxXGeXg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_OoMtVEoJEd6ussMWxXGeXg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_vaMqoE4OEd-B2uXHu4qMXg" name="removeAllPages">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_yKxU0E4OEd-B2uXHu4qMXg" annotatedElement="_vaMqoE4OEd-B2uXHu4qMXg">
+ <body>Remove all pages from the model. Only left one empty top level folder.</body>
+ </ownedComment>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_-TkSoE4OEd-B2uXHu4qMXg" name="removeOtherPages">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_Ar2_sE4PEd-B2uXHu4qMXg" annotatedElement="_-TkSoE4OEd-B2uXHu4qMXg">
+ <body>Remove pages other than the one specified from the model. Intermediate folders are also removed.</body>
+ </ownedComment>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_-TkSoU4OEd-B2uXHu4qMXg" name="pageIdentifier" type="_A-BP8EVhEd6g-YgfS2DHrA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_-TkSo04OEd-B2uXHu4qMXg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-TkSok4OEd-B2uXHu4qMXg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_-TkSpE4OEd-B2uXHu4qMXg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_1jUIgE4PEd-B2uXHu4qMXg" name="lookupFirstWindow">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_JhGFkE4QEd-B2uXHu4qMXg" annotatedElement="_1jUIgE4PEd-B2uXHu4qMXg">
+ <body>Get the first available window.</body>
+ </ownedComment>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_9JGOIE4PEd-B2uXHu4qMXg" name="window" type="_Xa5wIEJVEd6kIY39uis5Uw" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__PD1EE4PEd-B2uXHu4qMXg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__PD1EU4PEd-B2uXHu4qMXg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="__PD1Ek4PEd-B2uXHu4qMXg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_4qi_ME4PEd-B2uXHu4qMXg" name="lookupFirstFolder">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_MKOD8E4QEd-B2uXHu4qMXg" annotatedElement="_4qi_ME4PEd-B2uXHu4qMXg">
+ <body>Lookup the first available folder.</body>
+ </ownedComment>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="__o-w8E4PEd-B2uXHu4qMXg" name="folder" type="_fbWYgEJVEd6kIY39uis5Uw" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_BOwb8E4QEd-B2uXHu4qMXg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_BO6M8E4QEd-B2uXHu4qMXg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_BO6M8U4QEd-B2uXHu4qMXg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_fPvj8FgxEeGNKLzLkykmJw" name="removePageAndEmptyFolder">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_fPvj8VgxEeGNKLzLkykmJw" name="pageIdentifier" type="_A-BP8EVhEd6g-YgfS2DHrA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_fPvj8lgxEeGNKLzLkykmJw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_fPvj81gxEeGNKLzLkykmJw" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_fPvj9FgxEeGNKLzLkykmJw">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_zdr0wGySEeKx9Kegn5X27A" name="setCurrentSelectionSilently">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_CMVagGyTEeKx9Kegn5X27A">
+ <body>Set the current selection without firing a changedEvent.</body>
+ </ownedComment>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_5Z9l8GySEeKx9Kegn5X27A" name="selection" type="_fbWYgEJVEd6kIY39uis5Uw"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_HtBbEFVkEeWe8LyZrqaAug" name="addPage">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_KIfX8FVkEeWe8LyZrqaAug" name="folder" type="_fbWYgEJVEd6kIY39uis5Uw"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_HtBbEVVkEeWe8LyZrqaAug" name="pageIdentifier" type="_A-BP8EVhEd6g-YgfS2DHrA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_HtBbElVkEeWe8LyZrqaAug" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_HtBbE1VkEeWe8LyZrqaAug" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_HtBbFFVkEeWe8LyZrqaAug">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_vv4NwFYZEeWe8LyZrqaAug" name="addPage">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_vv4NwVYZEeWe8LyZrqaAug" name="folder" type="_fbWYgEJVEd6kIY39uis5Uw"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_vv4NwlYZEeWe8LyZrqaAug" name="pageRef" type="_h_HVwEJVEd6kIY39uis5Uw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_vv4Nw1YZEeWe8LyZrqaAug" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_vv4NxFYZEeWe8LyZrqaAug" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_vv4NxVYZEeWe8LyZrqaAug">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_Xa5wIEJVEd6kIY39uis5Uw" name="Window">
+ <generalization xmi:type="uml:Generalization" xmi:id="_95DboEJWEd6kIY39uis5Uw" general="_86BAgEJWEd6kIY39uis5Uw"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_yWfIQESDEd6kIY39uis5Uw" name="position" visibility="public" type="_jc9vQESDEd6kIY39uis5Uw" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_zpoyMESDEd6kIY39uis5Uw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_zpoyMUSDEd6kIY39uis5Uw" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_zpx8IESDEd6kIY39uis5Uw">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_z0glcESDEd6kIY39uis5Uw" name="size" visibility="public" type="_lh4NUESDEd6kIY39uis5Uw" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_1ItYQESDEd6kIY39uis5Uw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1I2iMESDEd6kIY39uis5Uw" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_1I2iMUSDEd6kIY39uis5Uw">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_lnNFMEsFEd6MxdnlcgT3eA" name="panel" type="_Zx2ZYEJVEd6kIY39uis5Uw" isUnique="false" isDerived="true" association="_li3-0EsFEd6MxdnlcgT3eA">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_xQZ88EsFEd6MxdnlcgT3eA" annotatedElement="_lnNFMEsFEd6MxdnlcgT3eA">
+ <body>Redefine children.</body>
+ </ownedComment>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_9GbvwEsFEd6MxdnlcgT3eA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_9Gk5sEsFEd6MxdnlcgT3eA" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_Zx2ZYEJVEd6kIY39uis5Uw" name="AbstractPanel" isAbstract="true">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="__CoIQEJVEd6kIY39uis5Uw" name="parent" type="_86BAgEJWEd6kIY39uis5Uw" isUnique="false" association="__CVNUEJVEd6kIY39uis5Uw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__CoIQkJVEd6kIY39uis5Uw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__CoIQUJVEd6kIY39uis5Uw" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_eE7YIEJVEd6kIY39uis5Uw" name="SashPanel">
+ <generalization xmi:type="uml:Generalization" xmi:id="_7VZokEJVEd6kIY39uis5Uw" general="_Zx2ZYEJVEd6kIY39uis5Uw"/>
+ <generalization xmi:type="uml:Generalization" xmi:id="_UH6OsEsDEd6MxdnlcgT3eA" general="_86BAgEJWEd6kIY39uis5Uw"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_8rplQESDEd6kIY39uis5Uw" name="sashPosition" visibility="public" type="_IEBx4EV4Ed6g-YgfS2DHrA" isUnique="false">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_AWCzYESEEd6kIY39uis5Uw" annotatedElement="_8rplQESDEd6kIY39uis5Uw">
+ <body>Position of the sash in the panel. The position is in percent. The value should be between 0 and 100.</body>
+ </ownedComment>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__l6W8ESDEd6kIY39uis5Uw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__mEH8ESDEd6kIY39uis5Uw" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="__mEH8USDEd6kIY39uis5Uw">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_1nx64EbpEd6g-YgfS2DHrA" name="direction" visibility="public" type="_Hkk78EVbEd6g-YgfS2DHrA" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_4GxF0EbpEd6g-YgfS2DHrA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_4G620EbpEd6g-YgfS2DHrA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_4G620UbpEd6g-YgfS2DHrA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_eGcSEEoLEd6ussMWxXGeXg" name="setChildren">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_f_4f8EoLEd6ussMWxXGeXg" name="leftChild" type="_Zx2ZYEJVEd6kIY39uis5Uw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_jqlQEEoLEd6ussMWxXGeXg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_jquaAEoLEd6ussMWxXGeXg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_jquaAUoLEd6ussMWxXGeXg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_j57ToEoLEd6ussMWxXGeXg" name="rightChild" type="_Zx2ZYEJVEd6kIY39uis5Uw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_l5xrgEoLEd6ussMWxXGeXg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_l57cgEoLEd6ussMWxXGeXg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_l57cgUoLEd6ussMWxXGeXg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_mVfXIEoLEd6ussMWxXGeXg" name="direction" type="_Hkk78EVbEd6g-YgfS2DHrA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_oo3vAEoLEd6ussMWxXGeXg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_oo3vAUoLEd6ussMWxXGeXg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_oo3vAkoLEd6ussMWxXGeXg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_tzrhgEuAEd6kcPOdk0bn7w" name="delete">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_yPQU8EuAEd6kcPOdk0bn7w" name="childToDelete" type="_Zx2ZYEJVEd6kIY39uis5Uw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_2M3aAEuAEd6kcPOdk0bn7w" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2M3aAUuAEd6kcPOdk0bn7w" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_2M3aAkuAEd6kcPOdk0bn7w">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_fbWYgEJVEd6kIY39uis5Uw" name="TabFolder">
+ <generalization xmi:type="uml:Generalization" xmi:id="_71vVgEJVEd6kIY39uis5Uw" general="_Zx2ZYEJVEd6kIY39uis5Uw"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_ANIzkEJWEd6kIY39uis5Uw" name="children" type="_h_HVwEJVEd6kIY39uis5Uw" aggregation="composite" association="_AM_CkEJWEd6kIY39uis5Uw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ANIzkUJWEd6kIY39uis5Uw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ANIzkkJWEd6kIY39uis5Uw" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_kgs5oJUREeWeT68xCjxnSQ" name="currentSelection" type="_h_HVwEJVEd6kIY39uis5Uw" subsettedProperty="_ANIzkEJWEd6kIY39uis5Uw" association="_kgdpEJUREeWeT68xCjxnSQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_vkeJEJUREeWeT68xCjxnSQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_vkhzcJUREeWeT68xCjxnSQ" value="1"/>
+ </ownedAttribute>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_Cqh_oEViEd6g-YgfS2DHrA" name="movePage">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_ETI8MEViEd6g-YgfS2DHrA" name="oldIndex" type="_Hkk78EVbEd6g-YgfS2DHrA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_G2wIcEViEd6g-YgfS2DHrA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_G2wIcUViEd6g-YgfS2DHrA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_G2wIckViEd6g-YgfS2DHrA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_X27C4EV4Ed6g-YgfS2DHrA" name="newIndex" type="_Hkk78EVbEd6g-YgfS2DHrA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_amdyUEV4Ed6g-YgfS2DHrA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_amdyUUV4Ed6g-YgfS2DHrA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_amdyUkV4Ed6g-YgfS2DHrA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_oZu3cEWEEd6g-YgfS2DHrA" name="addPage">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_oZu3cUWEEd6g-YgfS2DHrA" name="pageIdentifier" type="_A-BP8EVhEd6g-YgfS2DHrA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_oZu3c0WEEd6g-YgfS2DHrA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_oZu3ckWEEd6g-YgfS2DHrA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_oZu3dEWEEd6g-YgfS2DHrA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_oEQBQEblEd6g-YgfS2DHrA" name="removePage">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_oEQBQUblEd6g-YgfS2DHrA" name="pageIndex" type="_Hkk78EVbEd6g-YgfS2DHrA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_oEQBQ0blEd6g-YgfS2DHrA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_oEQBQkblEd6g-YgfS2DHrA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_oEQBREblEd6g-YgfS2DHrA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_byei4FVjEeWe8LyZrqaAug" name="addPage">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_fr-kAFVjEeWe8LyZrqaAug" name="index">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_byei4VVjEeWe8LyZrqaAug" name="pageIdentifier" type="_A-BP8EVhEd6g-YgfS2DHrA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_byei4lVjEeWe8LyZrqaAug" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_byei41VjEeWe8LyZrqaAug" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_byei5FVjEeWe8LyZrqaAug">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_1teNkFYZEeWe8LyZrqaAug" name="addPage">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_1teNkVYZEeWe8LyZrqaAug" name="pageRef" type="_h_HVwEJVEd6kIY39uis5Uw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_1teNklYZEeWe8LyZrqaAug" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1teNk1YZEeWe8LyZrqaAug" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_1teNlFYZEeWe8LyZrqaAug">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_h_HVwEJVEd6kIY39uis5Uw" name="PageRef">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_ANIzk0JWEd6kIY39uis5Uw" name="parent" type="_fbWYgEJVEd6kIY39uis5Uw" isUnique="false" association="_AM_CkEJWEd6kIY39uis5Uw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ANIzlUJWEd6kIY39uis5Uw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ANIzlEJWEd6kIY39uis5Uw" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_b94xUEnjEd6ussMWxXGeXg" name="emfPageIdentifier" visibility="private" isUnique="false" association="_b3enUEnjEd6ussMWxXGeXg">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/Ecore.metamodel.uml#EObject"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_b-CiUEnjEd6ussMWxXGeXg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_b-CiUUnjEd6ussMWxXGeXg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_GrqUYEnkEd6ussMWxXGeXg" name="pageIdentifier" visibility="public" isLeaf="true" type="_A-BP8EVhEd6g-YgfS2DHrA" isUnique="false" isDerived="true">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_YfXUoEnmEd6ussMWxXGeXg" annotatedElement="_GrqUYEnkEd6ussMWxXGeXg">
+ <body>pageIdentifier can be a plain JavaObject or an EObject.&#xD;
+They are not stored in the same place.</body>
+ </ownedComment>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_W-rvkEnnEd6ussMWxXGeXg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_W-1gkEnnEd6ussMWxXGeXg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_W-1gkUnnEd6ussMWxXGeXg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_RkM5UEnmEd6ussMWxXGeXg" name="objectPageIdentifier" visibility="private" type="_A-BP8EVhEd6g-YgfS2DHrA" isUnique="false">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_UZ2QwEnmEd6ussMWxXGeXg" annotatedElement="_RkM5UEnmEd6ussMWxXGeXg">
+ <body>Storage to store Identifier that are not EObject.</body>
+ </ownedComment>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_DXj_AEnnEd6ussMWxXGeXg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_DXj_AUnnEd6ussMWxXGeXg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_DXtI8EnnEd6ussMWxXGeXg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_RGhL8FViEeWe8LyZrqaAug" name="favoriteEditor" visibility="public">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_eaPr0FViEeWe8LyZrqaAug"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_eaZc0FViEeWe8LyZrqaAug" value="1"/>
+ </ownedAttribute>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_BxkKcEbaEd6g-YgfS2DHrA" name="isForIdentifier">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_BxkKcUbaEd6g-YgfS2DHrA" name="pageIdentifier" type="_A-BP8EVhEd6g-YgfS2DHrA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_BxkKc0baEd6g-YgfS2DHrA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_BxkKckbaEd6g-YgfS2DHrA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_BxkKdEbaEd6g-YgfS2DHrA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_D0_awEbaEd6g-YgfS2DHrA" name="return" type="_SNSWAEbaEd6g-YgfS2DHrA" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_GFO_EEbaEd6g-YgfS2DHrA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_GFO_EUbaEd6g-YgfS2DHrA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_GFO_EkbaEd6g-YgfS2DHrA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_zd5g0EJVEd6kIY39uis5Uw" name="AbstractPage">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_rLVHwEa1Ed6g-YgfS2DHrA" name="pageIdentifier" visibility="public" type="_A-BP8EVhEd6g-YgfS2DHrA" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rLVHwka1Ed6g-YgfS2DHrA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rLVHwUa1Ed6g-YgfS2DHrA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_rLVHw0a1Ed6g-YgfS2DHrA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_9JomUEJVEd6kIY39uis5Uw" name="A_SashWindowsRoot_Window" memberEnd="_9KYNMEJVEd6kIY39uis5Uw _9Kh-MEJVEd6kIY39uis5Uw">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_9Kh-MEJVEd6kIY39uis5Uw" name="sashWindowsRoot" type="_UiIMMEJVEd6kIY39uis5Uw" isUnique="false" association="_9JomUEJVEd6kIY39uis5Uw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_9Kh-MkJVEd6kIY39uis5Uw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_9Kh-MUJVEd6kIY39uis5Uw" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="__CVNUEJVEd6kIY39uis5Uw" name="A_PanelParent_AbstractPanel" memberEnd="__Ce-UEJVEd6kIY39uis5Uw __CoIQEJVEd6kIY39uis5Uw"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_AM_CkEJWEd6kIY39uis5Uw" name="A_TabFolder_AbstractPageRef" memberEnd="_ANIzkEJWEd6kIY39uis5Uw _ANIzk0JWEd6kIY39uis5Uw"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_86BAgEJWEd6kIY39uis5Uw" name="PanelParent" isAbstract="true">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="__Ce-UEJVEd6kIY39uis5Uw" name="children" type="_Zx2ZYEJVEd6kIY39uis5Uw" aggregation="composite" association="__CVNUEJVEd6kIY39uis5Uw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__Ce-UUJVEd6kIY39uis5Uw" value="2"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__Ce-UkJVEd6kIY39uis5Uw" value="2"/>
+ </ownedAttribute>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_yG3I4EoKEd6ussMWxXGeXg" name="replaceChild">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_AxysQEoLEd6ussMWxXGeXg" annotatedElement="_yG3I4EoKEd6ussMWxXGeXg">
+ <body>Replace the specified child by the new value.&#xD;
+Don't need to be implemented in TabFolder.&#xD;
+Used to insert a new SashPanel.</body>
+ </ownedComment>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_zqjwQEoKEd6ussMWxXGeXg" name="oldChild" type="_Zx2ZYEJVEd6kIY39uis5Uw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_3Q7aAEoKEd6ussMWxXGeXg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_3Q7aAUoKEd6ussMWxXGeXg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_3Q7aAkoKEd6ussMWxXGeXg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_3dJREEoKEd6ussMWxXGeXg" name="newChild" type="_Zx2ZYEJVEd6kIY39uis5Uw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__gbLAEoKEd6ussMWxXGeXg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__gbLAUoKEd6ussMWxXGeXg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="__gbLAkoKEd6ussMWxXGeXg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_viyZUEJZEd6kIY39uis5Uw" name="A_PageList_PageRef" memberEnd="_vjFUQEJZEd6kIY39uis5Uw _vjYPMkJZEd6kIY39uis5Uw">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_vjYPMkJZEd6kIY39uis5Uw" name="sashWindowsRoot" type="_b7a4cEMaEd6kIY39uis5Uw" isUnique="false" association="_viyZUEJZEd6kIY39uis5Uw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_vjiAMUJZEd6kIY39uis5Uw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_vjiAMEJZEd6kIY39uis5Uw" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_mT2jkEJkEd6kIY39uis5Uw" name="A_SashWindowsRoot_TabFolder" memberEnd="_mW0_EEJkEd6kIY39uis5Uw _mW0_E0JkEd6kIY39uis5Uw">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_mW0_E0JkEd6kIY39uis5Uw" name="sashWindowsRoot" type="_UiIMMEJVEd6kIY39uis5Uw" isUnique="false" association="_mT2jkEJkEd6kIY39uis5Uw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_mW-wEUJkEd6kIY39uis5Uw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_mW-wEEJkEd6kIY39uis5Uw" value="*"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_b7a4cEMaEd6kIY39uis5Uw" name="PageList">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_vjFUQEJZEd6kIY39uis5Uw" name="availablePage" type="_h_HVwEJVEd6kIY39uis5Uw" aggregation="composite" association="_viyZUEJZEd6kIY39uis5Uw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_vjYPMEJZEd6kIY39uis5Uw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_vjYPMUJZEd6kIY39uis5Uw" value="*"/>
+ </ownedAttribute>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_i92ooEa4Ed6g-YgfS2DHrA" name="addPage">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_i92ooUa4Ed6g-YgfS2DHrA" name="pageIdentifier" type="_A-BP8EVhEd6g-YgfS2DHrA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_i92oo0a4Ed6g-YgfS2DHrA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_i92ooka4Ed6g-YgfS2DHrA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_i92opEa4Ed6g-YgfS2DHrA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_ocolgEa4Ed6g-YgfS2DHrA" name="removePage">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_ocolgUa4Ed6g-YgfS2DHrA" name="pageIdentifier" type="_A-BP8EVhEd6g-YgfS2DHrA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ocolg0a4Ed6g-YgfS2DHrA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ocolgka4Ed6g-YgfS2DHrA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_ocolhEa4Ed6g-YgfS2DHrA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_-9vywEMaEd6kIY39uis5Uw" name="SashWindowsMngr">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_9osO4EMbEd6kIY39uis5Uw" name="pageList" type="_b7a4cEMaEd6kIY39uis5Uw" isUnique="false" aggregation="composite" association="_9k0bgEMbEd6kIY39uis5Uw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_9osO4UMbEd6kIY39uis5Uw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_9osO4kMbEd6kIY39uis5Uw" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_-JenwEMbEd6kIY39uis5Uw" name="sashModel" type="_UiIMMEJVEd6kIY39uis5Uw" isUnique="false" aggregation="composite" association="_-EQwkEMbEd6kIY39uis5Uw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_-JnxsEMbEd6kIY39uis5Uw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-JnxsUMbEd6kIY39uis5Uw" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_9k0bgEMbEd6kIY39uis5Uw" name="A_MultiPageEditor_PageList" memberEnd="_9osO4EMbEd6kIY39uis5Uw _9osO40MbEd6kIY39uis5Uw">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_9osO40MbEd6kIY39uis5Uw" name="multiPageEditor" type="_-9vywEMaEd6kIY39uis5Uw" isUnique="false" association="_9k0bgEMbEd6kIY39uis5Uw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_9o1_4UMbEd6kIY39uis5Uw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_9o1_4EMbEd6kIY39uis5Uw" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_-EQwkEMbEd6kIY39uis5Uw" name="A_MultiPageEditor_SashWindowsLayout" memberEnd="_-JenwEMbEd6kIY39uis5Uw _-JnxskMbEd6kIY39uis5Uw">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_-JnxskMbEd6kIY39uis5Uw" name="multiPageEditor" type="_-9vywEMaEd6kIY39uis5Uw" isUnique="false" association="_-EQwkEMbEd6kIY39uis5Uw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_-JnxtEMbEd6kIY39uis5Uw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-Jnxs0MbEd6kIY39uis5Uw" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_jc9vQESDEd6kIY39uis5Uw" name="Position">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_m9q14ESDEd6kIY39uis5Uw" name="x" visibility="public" type="_Hkk78EVbEd6g-YgfS2DHrA" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_pZ1WUESDEd6kIY39uis5Uw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_pZ1WUUSDEd6kIY39uis5Uw" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_paIRQESDEd6kIY39uis5Uw">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_pmDNYESDEd6kIY39uis5Uw" name="y" visibility="public" type="_Hkk78EVbEd6g-YgfS2DHrA" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_q458YESDEd6kIY39uis5Uw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_q5DtYESDEd6kIY39uis5Uw" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_q5DtYUSDEd6kIY39uis5Uw">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_lh4NUESDEd6kIY39uis5Uw" name="Size">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_s1CR4ESDEd6kIY39uis5Uw" name="width" visibility="public" type="_Hkk78EVbEd6g-YgfS2DHrA" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_u5DYEESDEd6kIY39uis5Uw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_u5NJEESDEd6kIY39uis5Uw" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_u5NJEUSDEd6kIY39uis5Uw">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_vnZr0ESDEd6kIY39uis5Uw" name="length" visibility="public" type="_Hkk78EVbEd6g-YgfS2DHrA" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_w_T58ESDEd6kIY39uis5Uw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_w_dq8ESDEd6kIY39uis5Uw" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_w_dq8USDEd6kIY39uis5Uw">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_Hkk78EVbEd6g-YgfS2DHrA" name="Integer"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_A-BP8EVhEd6g-YgfS2DHrA" name="JavaObject"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_IEBx4EV4Ed6g-YgfS2DHrA" name="Float"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_SNSWAEbaEd6g-YgfS2DHrA" name="boolean"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_b3enUEnjEd6ussMWxXGeXg" name="A_PageRef_EObject" memberEnd="_b94xUEnjEd6ussMWxXGeXg _b-CiUknjEd6ussMWxXGeXg">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_b-CiUknjEd6ussMWxXGeXg" name="pageRef" visibility="public" type="_h_HVwEJVEd6kIY39uis5Uw" isUnique="false" association="_b3enUEnjEd6ussMWxXGeXg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_b-MTUUnjEd6ussMWxXGeXg"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_b-MTUEnjEd6ussMWxXGeXg" value="*"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_li3-0EsFEd6MxdnlcgT3eA" name="A_Window_AbstractPanel" memberEnd="_lnNFMEsFEd6MxdnlcgT3eA _lnWPIksFEd6MxdnlcgT3eA">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_lnWPIksFEd6MxdnlcgT3eA" name="window" type="_Xa5wIEJVEd6kIY39uis5Uw" isUnique="false" association="_li3-0EsFEd6MxdnlcgT3eA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_lnWPJEsFEd6MxdnlcgT3eA"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_lnWPI0sFEd6MxdnlcgT3eA" value="*"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_kgdpEJUREeWeT68xCjxnSQ" memberEnd="_kgs5oJUREeWeT68xCjxnSQ _kgtgsJUREeWeT68xCjxnSQ">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kgrEcJUREeWeT68xCjxnSQ" source="org.eclipse.papyrus">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kgrrgJUREeWeT68xCjxnSQ" key="nature" value="UML_Nature"/>
+ </eAnnotations>
+ <ownedEnd xmi:type="uml:Property" xmi:id="_kgtgsJUREeWeT68xCjxnSQ" type="_fbWYgEJVEd6kIY39uis5Uw" association="_kgdpEJUREeWeT68xCjxnSQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_8ejZ4JUREeWeT68xCjxnSQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_8ekA8JUREeWeT68xCjxnSQ" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_NuHhwkJVEd6kIY39uis5Uw">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_NuHhw0JVEd6kIY39uis5Uw" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/uml2/5.0.0/UML/Profile/Standard#/"/>
+ </eAnnotations>
+ <appliedProfile xmi:type="uml:Profile" href="pathmap://UML_PROFILES/StandardL2.profile.uml#_0"/>
+ </profileApplication>
+ <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_wpAy0EJfEd6kIY39uis5Uw">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_wpJ8wEJfEd6kIY39uis5Uw" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="pathmap://UML_PROFILES/Ecore.profile.uml#_z1OFcHjqEdy8S4Cr8Rc_NA"/>
+ </eAnnotations>
+ <appliedProfile xmi:type="uml:Profile" href="pathmap://UML_PROFILES/Ecore.profile.uml#_0"/>
+ </profileApplication>
+ <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_T73od1ViEeWe8LyZrqaAug">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_T73oeFViEeWe8LyZrqaAug" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="pathmap://PAPYRUS_ACTIONLANGUAGE_PROFILE/ActionLanguage-Profile.profile.uml#_Kv8EIKFXEeS_KNX0nfvIVQ"/>
+ </eAnnotations>
+ <appliedProfile xmi:type="uml:Profile" href="pathmap://PAPYRUS_ACTIONLANGUAGE_PROFILE/ActionLanguage-Profile.profile.uml#ActionLanguage"/>
+ </profileApplication>
+ </uml:Model>
+ <Ecore:EPackage xmi:id="_mo48QEJgEd6kIY39uis5Uw" base_Package="_NuHhwEJVEd6kIY39uis5Uw" nsPrefix="di" nsURI="http://www.eclipse.org/papyrus/0.7.0/sashdi" basePackage="org.eclipse.papyrus.infra.core.sashwindows" prefix="Di">
+ <annotation>resource=XMI</annotation>
+ </Ecore:EPackage>
+ <Ecore:EDataType xmi:id="_6EWpcEVgEd6g-YgfS2DHrA" instanceClassName="int" base_PrimitiveType="_Hkk78EVbEd6g-YgfS2DHrA" dataTypeName="int"/>
+ <Ecore:EDataType xmi:id="_DLSYwEVhEd6g-YgfS2DHrA" instanceClassName="java.lang.Object" base_PrimitiveType="_A-BP8EVhEd6g-YgfS2DHrA"/>
+ <Ecore:EDataType xmi:id="_MeaSgEV4Ed6g-YgfS2DHrA" instanceClassName="float" base_PrimitiveType="_IEBx4EV4Ed6g-YgfS2DHrA"/>
+ <Ecore:EDataType xmi:id="_UtLf4EbaEd6g-YgfS2DHrA" instanceClassName="boolean" base_PrimitiveType="_SNSWAEbaEd6g-YgfS2DHrA"/>
+ <Ecore:EAttribute xmi:id="_UVaAMEnnEd6ussMWxXGeXg" isTransient="true" base_Property="_GrqUYEnkEd6ussMWxXGeXg"/>
+ <Ecore:EReference xmi:id="_uX7T8EsFEd6MxdnlcgT3eA" isTransient="true" isVolatile="true" base_Property="_lnNFMEsFEd6MxdnlcgT3eA"/>
+</xmi:XMI>
diff --git a/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/src/org/eclipse/papyrus/infra/core/sashwindows/di/DiPackage.java b/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/src/org/eclipse/papyrus/infra/core/sashwindows/di/DiPackage.java
index 67bc8ed7932..3bfd9bb55d3 100644
--- a/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/src/org/eclipse/papyrus/infra/core/sashwindows/di/DiPackage.java
+++ b/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/src/org/eclipse/papyrus/infra/core/sashwindows/di/DiPackage.java
@@ -1,9 +1,16 @@
-/**
- * <copyright>
- * </copyright>
+/*****************************************************************************
+ * Copyright (c) 2011, 2015 LIFL, CEA LIST, Christian W. Damus, and others.
*
- * $Id$
- */
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * LIFL - Initial API and implementation
+ * Christian W. Damus - bug 469188
+ *
+ *****************************************************************************/
package org.eclipse.papyrus.infra.core.sashwindows.di;
import org.eclipse.emf.ecore.EAttribute;
@@ -98,6 +105,16 @@ public interface DiPackage extends EPackage {
int SASH_MODEL__CURRENT_SELECTION = 1;
/**
+ * The feature id for the '<em><b>Restore Active Page</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int SASH_MODEL__RESTORE_ACTIVE_PAGE = 2;
+
+ /**
* The number of structural features of the '<em>Sash Model</em>' class.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -105,7 +122,7 @@ public interface DiPackage extends EPackage {
* @generated
* @ordered
*/
- int SASH_MODEL_FEATURE_COUNT = 2;
+ int SASH_MODEL_FEATURE_COUNT = 3;
/**
* The meta object id for the '{@link org.eclipse.papyrus.infra.core.sashwindows.di.impl.PanelParentImpl <em>Panel Parent</em>}' class.
@@ -344,6 +361,16 @@ public interface DiPackage extends EPackage {
int TAB_FOLDER__CHILDREN = ABSTRACT_PANEL_FEATURE_COUNT + 0;
/**
+ * The feature id for the '<em><b>Current Selection</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TAB_FOLDER__CURRENT_SELECTION = ABSTRACT_PANEL_FEATURE_COUNT + 1;
+
+ /**
* The number of structural features of the '<em>Tab Folder</em>' class.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -351,7 +378,7 @@ public interface DiPackage extends EPackage {
* @generated
* @ordered
*/
- int TAB_FOLDER_FEATURE_COUNT = ABSTRACT_PANEL_FEATURE_COUNT + 1;
+ int TAB_FOLDER_FEATURE_COUNT = ABSTRACT_PANEL_FEATURE_COUNT + 2;
/**
* The meta object id for the '{@link org.eclipse.papyrus.infra.core.sashwindows.di.impl.PageRefImpl <em>Page Ref</em>}' class.
@@ -668,6 +695,18 @@ public interface DiPackage extends EPackage {
EReference getSashModel_CurrentSelection();
/**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.infra.core.sashwindows.di.SashModel#isRestoreActivePage <em>Restore Active Page</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @return the meta object for the attribute '<em>Restore Active Page</em>'.
+ * @see org.eclipse.papyrus.infra.core.sashwindows.di.SashModel#isRestoreActivePage()
+ * @see #getSashModel()
+ * @generated
+ */
+ EAttribute getSashModel_RestoreActivePage();
+
+ /**
* Returns the meta object for class '{@link org.eclipse.papyrus.infra.core.sashwindows.di.Window <em>Window</em>}'.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -854,6 +893,18 @@ public interface DiPackage extends EPackage {
EReference getTabFolder_Children();
/**
+ * Returns the meta object for the reference '{@link org.eclipse.papyrus.infra.core.sashwindows.di.TabFolder#getCurrentSelection <em>Current Selection</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @return the meta object for the reference '<em>Current Selection</em>'.
+ * @see org.eclipse.papyrus.infra.core.sashwindows.di.TabFolder#getCurrentSelection()
+ * @see #getTabFolder()
+ * @generated
+ */
+ EReference getTabFolder_CurrentSelection();
+
+ /**
* Returns the meta object for class '{@link org.eclipse.papyrus.infra.core.sashwindows.di.PageRef <em>Page Ref</em>}'.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -1144,6 +1195,15 @@ public interface DiPackage extends EPackage {
EReference SASH_MODEL__CURRENT_SELECTION = eINSTANCE.getSashModel_CurrentSelection();
/**
+ * The meta object literal for the '<em><b>Restore Active Page</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EAttribute SASH_MODEL__RESTORE_ACTIVE_PAGE = eINSTANCE.getSashModel_RestoreActivePage();
+
+ /**
* The meta object literal for the '{@link org.eclipse.papyrus.infra.core.sashwindows.di.impl.WindowImpl <em>Window</em>}' class.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -1300,6 +1360,15 @@ public interface DiPackage extends EPackage {
EReference TAB_FOLDER__CHILDREN = eINSTANCE.getTabFolder_Children();
/**
+ * The meta object literal for the '<em><b>Current Selection</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference TAB_FOLDER__CURRENT_SELECTION = eINSTANCE.getTabFolder_CurrentSelection();
+
+ /**
* The meta object literal for the '{@link org.eclipse.papyrus.infra.core.sashwindows.di.impl.PageRefImpl <em>Page Ref</em>}' class.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
diff --git a/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/src/org/eclipse/papyrus/infra/core/sashwindows/di/SashModel.java b/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/src/org/eclipse/papyrus/infra/core/sashwindows/di/SashModel.java
index 1369aae63b5..70f43ba2066 100644
--- a/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/src/org/eclipse/papyrus/infra/core/sashwindows/di/SashModel.java
+++ b/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/src/org/eclipse/papyrus/infra/core/sashwindows/di/SashModel.java
@@ -1,9 +1,16 @@
-/**
- * <copyright>
- * </copyright>
+/*****************************************************************************
+ * Copyright (c) 2011, 2015 LIFL, CEA LIST, Christian W. Damus, and others.
*
- * $Id$
- */
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * LIFL - Initial API and implementation
+ * Christian W. Damus - bug 469188
+ *
+ *****************************************************************************/
package org.eclipse.papyrus.infra.core.sashwindows.di;
import org.eclipse.emf.common.util.EList;
@@ -26,6 +33,7 @@ import org.eclipse.emf.ecore.EObject;
* <ul>
* <li>{@link org.eclipse.papyrus.infra.core.sashwindows.di.SashModel#getWindows <em>Windows</em>}</li>
* <li>{@link org.eclipse.papyrus.infra.core.sashwindows.di.SashModel#getCurrentSelection <em>Current Selection</em>}</li>
+ * <li>{@link org.eclipse.papyrus.infra.core.sashwindows.di.SashModel#isRestoreActivePage <em>Restore Active Page</em>}</li>
* </ul>
*
* @see org.eclipse.papyrus.infra.core.sashwindows.di.DiPackage#getSashModel()
@@ -79,6 +87,35 @@ public interface SashModel extends EObject {
void setCurrentSelection(TabFolder value);
/**
+ * Returns the value of the '<em><b>Restore Active Page</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Restore Active Page</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>Restore Active Page</em>' attribute.
+ * @see #setRestoreActivePage(boolean)
+ * @see org.eclipse.papyrus.infra.core.sashwindows.di.DiPackage#getSashModel_RestoreActivePage()
+ * @model dataType="org.eclipse.papyrus.infra.core.sashwindows.di.boolean" required="true" ordered="false"
+ * @generated
+ */
+ boolean isRestoreActivePage();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.infra.core.sashwindows.di.SashModel#isRestoreActivePage <em>Restore Active Page</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>Restore Active Page</em>' attribute.
+ * @see #isRestoreActivePage()
+ * @generated
+ */
+ void setRestoreActivePage(boolean value);
+
+ /**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
diff --git a/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/src/org/eclipse/papyrus/infra/core/sashwindows/di/TabFolder.java b/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/src/org/eclipse/papyrus/infra/core/sashwindows/di/TabFolder.java
index a3ad5e3294e..14add487fed 100644
--- a/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/src/org/eclipse/papyrus/infra/core/sashwindows/di/TabFolder.java
+++ b/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/src/org/eclipse/papyrus/infra/core/sashwindows/di/TabFolder.java
@@ -1,9 +1,16 @@
-/**
- * <copyright>
- * </copyright>
+/*****************************************************************************
+ * Copyright (c) 2011, 2015 LIFL, CEA LIST, Christian W. Damus, and others.
*
- * $Id$
- */
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * LIFL - Initial API and implementation
+ * Christian W. Damus - bug 469188
+ *
+ *****************************************************************************/
package org.eclipse.papyrus.infra.core.sashwindows.di;
import org.eclipse.emf.common.util.EList;
@@ -18,6 +25,7 @@ import org.eclipse.emf.common.util.EList;
* </p>
* <ul>
* <li>{@link org.eclipse.papyrus.infra.core.sashwindows.di.TabFolder#getChildren <em>Children</em>}</li>
+ * <li>{@link org.eclipse.papyrus.infra.core.sashwindows.di.TabFolder#getCurrentSelection <em>Current Selection</em>}</li>
* </ul>
*
* @see org.eclipse.papyrus.infra.core.sashwindows.di.DiPackage#getTabFolder()
@@ -45,6 +53,41 @@ public interface TabFolder extends AbstractPanel {
EList<PageRef> getChildren();
/**
+ * Returns the value of the '<em><b>Current Selection</b></em>' reference.
+ * <p>
+ * This feature subsets the following features:
+ * </p>
+ * <ul>
+ * <li>'{@link org.eclipse.papyrus.infra.core.sashwindows.di.TabFolder#getChildren() <em>Children</em>}'</li>
+ * </ul>
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Current Selection</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>Current Selection</em>' reference.
+ * @see #setCurrentSelection(PageRef)
+ * @see org.eclipse.papyrus.infra.core.sashwindows.di.DiPackage#getTabFolder_CurrentSelection()
+ * @model ordered="false"
+ * @generated
+ */
+ PageRef getCurrentSelection();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.infra.core.sashwindows.di.TabFolder#getCurrentSelection <em>Current Selection</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>Current Selection</em>' reference.
+ * @see #getCurrentSelection()
+ * @generated
+ */
+ void setCurrentSelection(PageRef value);
+
+ /**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
diff --git a/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/src/org/eclipse/papyrus/infra/core/sashwindows/di/impl/DiFactoryImpl.java b/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/src/org/eclipse/papyrus/infra/core/sashwindows/di/impl/DiFactoryImpl.java
index 44f9fe0910e..4adfc55f84b 100644
--- a/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/src/org/eclipse/papyrus/infra/core/sashwindows/di/impl/DiFactoryImpl.java
+++ b/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/src/org/eclipse/papyrus/infra/core/sashwindows/di/impl/DiFactoryImpl.java
@@ -1,9 +1,17 @@
-/**
- * <copyright>
- * </copyright>
+/*****************************************************************************
+ * Copyright (c) 2009, 2015 LIFL, CEA LIST, Christian W. Damus, and others.
*
- * $Id$
- */
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Cedric Dumoulin Cedric.dumoulin@lifl.fr - Initial API and implementation (assumed)
+ * Christian W. Damus - bug 469188
+ *
+ *****************************************************************************/
+
package org.eclipse.papyrus.infra.core.sashwindows.di.impl;
import org.eclipse.emf.ecore.EClass;
@@ -286,10 +294,21 @@ public class DiFactoryImpl extends EFactoryImpl implements DiFactory {
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
- * @generated
+ * @generated NOT
*/
public Object createJavaObjectFromString(EDataType eDataType, String initialValue) {
- return super.createFromString(eDataType, initialValue);
+ Object result = null;
+
+ try {
+ result = super.createFromString(eDataType, initialValue);
+ } catch (IllegalArgumentException e) {
+ // Not deserialized as a Java object? Then just return the string value (or null)
+ if (initialValue != null) {
+ result = initialValue.intern();
+ }
+ }
+
+ return result;
}
/**
diff --git a/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/src/org/eclipse/papyrus/infra/core/sashwindows/di/impl/DiPackageImpl.java b/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/src/org/eclipse/papyrus/infra/core/sashwindows/di/impl/DiPackageImpl.java
index ace97ed4a19..edd144b0e7f 100644
--- a/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/src/org/eclipse/papyrus/infra/core/sashwindows/di/impl/DiPackageImpl.java
+++ b/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/src/org/eclipse/papyrus/infra/core/sashwindows/di/impl/DiPackageImpl.java
@@ -1,11 +1,19 @@
-/**
- * <copyright>
- * </copyright>
+/*****************************************************************************
+ * Copyright (c) 2011, 2015 LIFL, CEA LIST, Christian W. Damus, and others.
*
- * $Id$
- */
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * LIFL - Initial API and implementation
+ * Christian W. Damus - bug 469188
+ *
+ *****************************************************************************/
package org.eclipse.papyrus.infra.core.sashwindows.di.impl;
+import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.EAttribute;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EDataType;
@@ -277,6 +285,17 @@ public class DiPackageImpl extends EPackageImpl implements DiPackage {
* @generated
*/
@Override
+ public EAttribute getSashModel_RestoreActivePage() {
+ return (EAttribute) sashModelEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
public EClass getWindow() {
return windowEClass;
}
@@ -453,6 +472,17 @@ public class DiPackageImpl extends EPackageImpl implements DiPackage {
* @generated
*/
@Override
+ public EReference getTabFolder_CurrentSelection() {
+ return (EReference) tabFolderEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
public EClass getPageRef() {
return pageRefEClass;
}
@@ -703,6 +733,7 @@ public class DiPackageImpl extends EPackageImpl implements DiPackage {
sashModelEClass = createEClass(SASH_MODEL);
createEReference(sashModelEClass, SASH_MODEL__WINDOWS);
createEReference(sashModelEClass, SASH_MODEL__CURRENT_SELECTION);
+ createEAttribute(sashModelEClass, SASH_MODEL__RESTORE_ACTIVE_PAGE);
windowEClass = createEClass(WINDOW);
createEReference(windowEClass, WINDOW__POSITION);
@@ -725,6 +756,7 @@ public class DiPackageImpl extends EPackageImpl implements DiPackage {
tabFolderEClass = createEClass(TAB_FOLDER);
createEReference(tabFolderEClass, TAB_FOLDER__CHILDREN);
+ createEReference(tabFolderEClass, TAB_FOLDER__CURRENT_SELECTION);
pageRefEClass = createEClass(PAGE_REF);
createEReference(pageRefEClass, PAGE_REF__EMF_PAGE_IDENTIFIER);
@@ -800,6 +832,7 @@ public class DiPackageImpl extends EPackageImpl implements DiPackage {
initEReference(getSashModel_Windows(), this.getWindow(), null, "windows", null, 0, -1, SashModel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
initEReference(getSashModel_CurrentSelection(), this.getTabFolder(), null, "currentSelection", null, 1, 1, SashModel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED,
!IS_ORDERED);
+ initEAttribute(getSashModel_RestoreActivePage(), this.getboolean(), "restoreActivePage", null, 1, 1, SashModel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
EOperation op = addEOperation(sashModelEClass, null, "addPage", 1, 1, IS_UNIQUE, !IS_ORDERED);
addEParameter(op, this.getJavaObject(), "pageIdentifier", 1, 1, IS_UNIQUE, !IS_ORDERED);
@@ -880,6 +913,8 @@ public class DiPackageImpl extends EPackageImpl implements DiPackage {
initEClass(tabFolderEClass, TabFolder.class, "TabFolder", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
initEReference(getTabFolder_Children(), this.getPageRef(), this.getPageRef_Parent(), "children", null, 0, -1, TabFolder.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED,
!IS_ORDERED);
+ initEReference(getTabFolder_CurrentSelection(), this.getPageRef(), null, "currentSelection", null, 0, 1, TabFolder.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED,
+ !IS_ORDERED);
op = addEOperation(tabFolderEClass, null, "movePage", 1, 1, IS_UNIQUE, !IS_ORDERED);
addEParameter(op, this.getint(), "oldIndex", 1, 1, IS_UNIQUE, !IS_ORDERED);
@@ -953,6 +988,8 @@ public class DiPackageImpl extends EPackageImpl implements DiPackage {
createResourceXMIAnnotations();
// http://www.eclipse.org/uml2/2.0.0/UML
createUMLAnnotations();
+ // subsets
+ createSubsetsAnnotations();
}
/**
@@ -986,4 +1023,22 @@ public class DiPackageImpl extends EPackageImpl implements DiPackage {
});
}
+ /**
+ * Initializes the annotations for <b>subsets</b>.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected void createSubsetsAnnotations() {
+ String source = "subsets";
+ addAnnotation(getTabFolder_CurrentSelection(),
+ source,
+ new String[] {
+ },
+ new URI[] {
+ URI.createURI(eNS_URI).appendFragment("//TabFolder/children")
+ });
+ }
+
} // DiPackageImpl
diff --git a/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/src/org/eclipse/papyrus/infra/core/sashwindows/di/impl/SashModelImpl.java b/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/src/org/eclipse/papyrus/infra/core/sashwindows/di/impl/SashModelImpl.java
index 7db11d90472..4d9ea04f50d 100644
--- a/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/src/org/eclipse/papyrus/infra/core/sashwindows/di/impl/SashModelImpl.java
+++ b/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/src/org/eclipse/papyrus/infra/core/sashwindows/di/impl/SashModelImpl.java
@@ -1,9 +1,16 @@
-/**
- * <copyright>
- * </copyright>
+/*****************************************************************************
+ * Copyright (c) 2011, 2015 LIFL, CEA LIST, Christian W. Damus, and others.
*
- * $Id$
- */
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * LIFL - Initial API and implementation
+ * Christian W. Damus - bug 469188
+ *
+ *****************************************************************************/
package org.eclipse.papyrus.infra.core.sashwindows.di.impl;
import java.util.Collection;
@@ -40,6 +47,7 @@ import org.eclipse.swt.SWT;
* <ul>
* <li>{@link org.eclipse.papyrus.infra.core.sashwindows.di.impl.SashModelImpl#getWindows <em>Windows</em>}</li>
* <li>{@link org.eclipse.papyrus.infra.core.sashwindows.di.impl.SashModelImpl#getCurrentSelection <em>Current Selection</em>}</li>
+ * <li>{@link org.eclipse.papyrus.infra.core.sashwindows.di.impl.SashModelImpl#isRestoreActivePage <em>Restore Active Page</em>}</li>
* </ul>
*
* @generated
@@ -69,6 +77,28 @@ public class SashModelImpl extends EObjectImpl implements SashModel {
protected TabFolder currentSelection;
/**
+ * The default value of the '{@link #isRestoreActivePage() <em>Restore Active Page</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @see #isRestoreActivePage()
+ * @generated
+ * @ordered
+ */
+ protected static final boolean RESTORE_ACTIVE_PAGE_EDEFAULT = false;
+
+ /**
+ * The cached value of the '{@link #isRestoreActivePage() <em>Restore Active Page</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @see #isRestoreActivePage()
+ * @generated
+ * @ordered
+ */
+ protected boolean restoreActivePage = RESTORE_ACTIVE_PAGE_EDEFAULT;
+
+ /**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
@@ -152,6 +182,32 @@ public class SashModelImpl extends EObjectImpl implements SashModel {
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
+ * @generated
+ */
+ @Override
+ public boolean isRestoreActivePage() {
+ return restoreActivePage;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void setRestoreActivePage(boolean newRestoreActivePage) {
+ boolean oldRestoreActivePage = restoreActivePage;
+ restoreActivePage = newRestoreActivePage;
+ if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, DiPackage.SASH_MODEL__RESTORE_ACTIVE_PAGE, oldRestoreActivePage, restoreActivePage));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
* @generated NOT
*/
@Override
@@ -678,6 +734,8 @@ public class SashModelImpl extends EObjectImpl implements SashModel {
return getCurrentSelection();
}
return basicGetCurrentSelection();
+ case DiPackage.SASH_MODEL__RESTORE_ACTIVE_PAGE:
+ return isRestoreActivePage();
}
return super.eGet(featureID, resolve, coreType);
}
@@ -699,6 +757,9 @@ public class SashModelImpl extends EObjectImpl implements SashModel {
case DiPackage.SASH_MODEL__CURRENT_SELECTION:
setCurrentSelection((TabFolder) newValue);
return;
+ case DiPackage.SASH_MODEL__RESTORE_ACTIVE_PAGE:
+ setRestoreActivePage((Boolean) newValue);
+ return;
}
super.eSet(featureID, newValue);
}
@@ -718,6 +779,9 @@ public class SashModelImpl extends EObjectImpl implements SashModel {
case DiPackage.SASH_MODEL__CURRENT_SELECTION:
setCurrentSelection((TabFolder) null);
return;
+ case DiPackage.SASH_MODEL__RESTORE_ACTIVE_PAGE:
+ setRestoreActivePage(RESTORE_ACTIVE_PAGE_EDEFAULT);
+ return;
}
super.eUnset(featureID);
}
@@ -735,8 +799,29 @@ public class SashModelImpl extends EObjectImpl implements SashModel {
return windows != null && !windows.isEmpty();
case DiPackage.SASH_MODEL__CURRENT_SELECTION:
return currentSelection != null;
+ case DiPackage.SASH_MODEL__RESTORE_ACTIVE_PAGE:
+ return restoreActivePage != RESTORE_ACTIVE_PAGE_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(" (restoreActivePage: ");
+ result.append(restoreActivePage);
+ result.append(')');
+ return result.toString();
+ }
+
} // SashModelImpl
diff --git a/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/src/org/eclipse/papyrus/infra/core/sashwindows/di/impl/TabFolderImpl.java b/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/src/org/eclipse/papyrus/infra/core/sashwindows/di/impl/TabFolderImpl.java
index 0aaea3fedac..f7ee51e8a5f 100644
--- a/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/src/org/eclipse/papyrus/infra/core/sashwindows/di/impl/TabFolderImpl.java
+++ b/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di/src/org/eclipse/papyrus/infra/core/sashwindows/di/impl/TabFolderImpl.java
@@ -1,23 +1,33 @@
-/**
- * <copyright>
- * </copyright>
+/*****************************************************************************
+ * Copyright (c) 2011, 2015 LIFL, CEA LIST, Christian W. Damus, and others.
*
- * $Id$
- */
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * LIFL - Initial API and implementation
+ * Christian W. Damus - bug 469188
+ *
+ *****************************************************************************/
package org.eclipse.papyrus.infra.core.sashwindows.di.impl;
import java.util.Collection;
+import org.eclipse.emf.common.notify.Notification;
import org.eclipse.emf.common.notify.NotificationChain;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.InternalEObject;
-import org.eclipse.emf.ecore.util.EObjectContainmentWithInverseEList;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.util.InternalEList;
import org.eclipse.papyrus.infra.core.sashwindows.di.DiFactory;
import org.eclipse.papyrus.infra.core.sashwindows.di.DiPackage;
import org.eclipse.papyrus.infra.core.sashwindows.di.PageRef;
import org.eclipse.papyrus.infra.core.sashwindows.di.TabFolder;
+import org.eclipse.uml2.common.util.SubsetSupersetEObjectContainmentWithInverseEList;
/**
* <!-- begin-user-doc -->
@@ -28,6 +38,7 @@ import org.eclipse.papyrus.infra.core.sashwindows.di.TabFolder;
* </p>
* <ul>
* <li>{@link org.eclipse.papyrus.infra.core.sashwindows.di.impl.TabFolderImpl#getChildren <em>Children</em>}</li>
+ * <li>{@link org.eclipse.papyrus.infra.core.sashwindows.di.impl.TabFolderImpl#getCurrentSelection <em>Current Selection</em>}</li>
* </ul>
*
* @generated
@@ -46,6 +57,17 @@ public class TabFolderImpl extends AbstractPanelImpl implements TabFolder {
protected EList<PageRef> children;
/**
+ * The cached value of the '{@link #getCurrentSelection() <em>Current Selection</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @see #getCurrentSelection()
+ * @generated
+ * @ordered
+ */
+ protected PageRef currentSelection;
+
+ /**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
@@ -75,12 +97,77 @@ public class TabFolderImpl extends AbstractPanelImpl implements TabFolder {
@Override
public EList<PageRef> getChildren() {
if (children == null) {
- children = new EObjectContainmentWithInverseEList<PageRef>(PageRef.class, this, DiPackage.TAB_FOLDER__CHILDREN, DiPackage.PAGE_REF__PARENT);
+ children = new SubsetSupersetEObjectContainmentWithInverseEList<PageRef>(PageRef.class, this, DiPackage.TAB_FOLDER__CHILDREN, null, CHILDREN_ESUBSETS, DiPackage.PAGE_REF__PARENT);
}
return children;
}
/**
+ * The array of subset feature identifiers for the '{@link #getChildren() <em>Children</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @see #getChildren()
+ * @generated
+ * @ordered
+ */
+ protected static final int[] CHILDREN_ESUBSETS = new int[] { DiPackage.TAB_FOLDER__CURRENT_SELECTION };
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public PageRef getCurrentSelection() {
+ if (currentSelection != null && currentSelection.eIsProxy()) {
+ InternalEObject oldCurrentSelection = (InternalEObject) currentSelection;
+ currentSelection = (PageRef) eResolveProxy(oldCurrentSelection);
+ if (currentSelection != oldCurrentSelection) {
+ if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, DiPackage.TAB_FOLDER__CURRENT_SELECTION, oldCurrentSelection, currentSelection));
+ }
+ }
+ }
+ return currentSelection;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public PageRef basicGetCurrentSelection() {
+ return currentSelection;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void setCurrentSelection(PageRef newCurrentSelection) {
+ PageRef oldCurrentSelection = currentSelection;
+ currentSelection = newCurrentSelection;
+ if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, DiPackage.TAB_FOLDER__CURRENT_SELECTION, oldCurrentSelection, currentSelection));
+ }
+ Resource.Internal eInternalResource = eInternalResource();
+ if (eInternalResource == null || !eInternalResource.isLoading()) {
+ if (newCurrentSelection != null) {
+ EList<PageRef> children = getChildren();
+ if (!children.contains(newCurrentSelection)) {
+ children.add(newCurrentSelection);
+ }
+ }
+ }
+ }
+
+ /**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
@@ -170,6 +257,11 @@ public class TabFolderImpl extends AbstractPanelImpl implements TabFolder {
switch (featureID) {
case DiPackage.TAB_FOLDER__CHILDREN:
return getChildren();
+ case DiPackage.TAB_FOLDER__CURRENT_SELECTION:
+ if (resolve) {
+ return getCurrentSelection();
+ }
+ return basicGetCurrentSelection();
}
return super.eGet(featureID, resolve, coreType);
}
@@ -188,6 +280,9 @@ public class TabFolderImpl extends AbstractPanelImpl implements TabFolder {
getChildren().clear();
getChildren().addAll((Collection<? extends PageRef>) newValue);
return;
+ case DiPackage.TAB_FOLDER__CURRENT_SELECTION:
+ setCurrentSelection((PageRef) newValue);
+ return;
}
super.eSet(featureID, newValue);
}
@@ -204,6 +299,9 @@ public class TabFolderImpl extends AbstractPanelImpl implements TabFolder {
case DiPackage.TAB_FOLDER__CHILDREN:
getChildren().clear();
return;
+ case DiPackage.TAB_FOLDER__CURRENT_SELECTION:
+ setCurrentSelection((PageRef) null);
+ return;
}
super.eUnset(featureID);
}
@@ -219,6 +317,8 @@ public class TabFolderImpl extends AbstractPanelImpl implements TabFolder {
switch (featureID) {
case DiPackage.TAB_FOLDER__CHILDREN:
return children != null && !children.isEmpty();
+ case DiPackage.TAB_FOLDER__CURRENT_SELECTION:
+ return currentSelection != null;
}
return super.eIsSet(featureID);
}
diff --git a/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor/src/org/eclipse/papyrus/infra/core/sasheditor/editor/ICloseablePart.java b/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor/src/org/eclipse/papyrus/infra/core/sasheditor/editor/ICloseablePart.java
new file mode 100644
index 00000000000..9431a6dc30e
--- /dev/null
+++ b/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor/src/org/eclipse/papyrus/infra/core/sasheditor/editor/ICloseablePart.java
@@ -0,0 +1,60 @@
+/*****************************************************************************
+ * Copyright (c) 2015 Christian W. Damus 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:
+ * Christian W. Damus - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.infra.core.sasheditor.editor;
+
+import org.eclipse.ui.IPropertyListener;
+import org.eclipse.ui.IWorkbenchPart;
+
+/**
+ * A mixin interface, analogous to the Eclipse UI's {@link IWorkbenchPart}, that
+ * defines the protocol for editors and other parts nested within the
+ * {@linkplain IMultiPageEditorPart multi-page editor} that are conditionally
+ * closeable. That is, parts that may not always be permitted to be closed by the
+ * user.
+ */
+public interface ICloseablePart {
+ /**
+ * The Eclipse-style constant for the workbench property listener protocol,
+ * signalling changes in the {@link #canClose() canClose} property.
+ */
+ int PROP_CAN_CLOSE = 0x100001;
+
+ /**
+ * Queries whether I may be closed.
+ *
+ * @return whether I may be closed
+ */
+ boolean canClose();
+
+ /**
+ * Adds a property listener to me, such as for observation of the
+ * {@link #PROP_CAN_CLOSE canClose} property.
+ *
+ * @param listener
+ * the listener to add
+ *
+ * @see IWorkbenchPart#addPropertyListener(IPropertyListener)
+ */
+ void addPropertyListener(IPropertyListener listener);
+
+ /**
+ * Removes a property listener from me.
+ *
+ * @param listener
+ * the listener to remove
+ *
+ * @see IWorkbenchPart#removePropertyListener(IPropertyListener)
+ */
+ void removePropertyListener(IPropertyListener listener);
+}
diff --git a/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor/src/org/eclipse/papyrus/infra/core/sasheditor/internal/ComponentPart.java b/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor/src/org/eclipse/papyrus/infra/core/sasheditor/internal/ComponentPart.java
index af61a90a5fc..b79c1a7e1de 100644
--- a/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor/src/org/eclipse/papyrus/infra/core/sasheditor/internal/ComponentPart.java
+++ b/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor/src/org/eclipse/papyrus/infra/core/sasheditor/internal/ComponentPart.java
@@ -1,5 +1,5 @@
/*****************************************************************************
- * Copyright (c) 2009 CEA LIST & LIFL
+ * Copyright (c) 2009, 2015 CEA LIST & LIFL, Christian W. Damus, and others
*
*
* All rights reserved. This program and the accompanying materials
@@ -9,6 +9,7 @@
*
* Contributors:
* Cedric Dumoulin Cedric.dumoulin@lifl.fr - Initial API and implementation
+ * Christian W. Damus - bug 469188
*
*****************************************************************************/
package org.eclipse.papyrus.infra.core.sasheditor.internal;
@@ -18,7 +19,7 @@ import org.eclipse.core.runtime.Status;
import org.eclipse.papyrus.infra.core.sasheditor.Activator;
import org.eclipse.papyrus.infra.core.sasheditor.contentprovider.IComponentModel;
import org.eclipse.papyrus.infra.core.sasheditor.editor.IComponentPage;
-import org.eclipse.papyrus.infra.core.sasheditor.internal.AbstractPart.GarbageState;
+import org.eclipse.papyrus.infra.tools.util.PlatformHelper;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.Point;
@@ -59,6 +60,11 @@ public class ComponentPart extends PagePart implements IComponentPage {
this.partModel = partModel;
}
+ @Override
+ public <T> T getAdapter(Class<T> adapter) {
+ return PlatformHelper.getAdapter(partModel, adapter, () -> super.getAdapter(adapter));
+ }
+
/**
* Create the control of this Part, and children's controls.
*
diff --git a/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor/src/org/eclipse/papyrus/infra/core/sasheditor/internal/EditorPart.java b/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor/src/org/eclipse/papyrus/infra/core/sasheditor/internal/EditorPart.java
index e431710afc2..1abf8c91d38 100644
--- a/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor/src/org/eclipse/papyrus/infra/core/sasheditor/internal/EditorPart.java
+++ b/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor/src/org/eclipse/papyrus/infra/core/sasheditor/internal/EditorPart.java
@@ -1,5 +1,5 @@
/*****************************************************************************
- * Copyright (c) 2009 CEA LIST & LIFL
+ * Copyright (c) 2009, 2015 CEA LIST & LIFL, Christian W. Damus, and others
*
*
* All rights reserved. This program and the accompanying materials
@@ -9,6 +9,7 @@
*
* Contributors:
* Cedric Dumoulin Cedric.dumoulin@lifl.fr - Initial API and implementation
+ * Christian W. Damus - bug 469188
*
*****************************************************************************/
package org.eclipse.papyrus.infra.core.sasheditor.internal;
@@ -24,9 +25,9 @@ import org.eclipse.jface.window.Window;
import org.eclipse.papyrus.infra.core.sasheditor.Activator;
import org.eclipse.papyrus.infra.core.sasheditor.contentprovider.IEditorModel;
import org.eclipse.papyrus.infra.core.sasheditor.editor.IEditorPage;
-import org.eclipse.papyrus.infra.core.sasheditor.internal.AbstractPart.GarbageState;
import org.eclipse.papyrus.infra.core.sasheditor.internal.eclipsecopy.IMultiPageEditorSite;
import org.eclipse.papyrus.infra.core.sasheditor.internal.eclipsecopy.MultiPageEditorSite;
+import org.eclipse.papyrus.infra.tools.util.PlatformHelper;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.DisposeEvent;
import org.eclipse.swt.events.DisposeListener;
@@ -169,19 +170,12 @@ public class EditorPart extends PagePart implements IEditorPage {
this.multiEditorManager = multiEditorManager;
}
-
- /**
- * Create the control of this part.
- * For a this implementations, also create the children's controls.
- * This method forward to {@link createPartControl(Composite)}.
- *
- * @param parent
- * TODO remove ?
- */
- // public void createControl(Composite parent) {
- // createPartControl(parent);
- // }
-
+ @Override
+ public <T> T getAdapter(Class<T> adapter) {
+ return PlatformHelper.getAdapter(editorPart, adapter, ()//
+ -> PlatformHelper.getAdapter(editorModel, adapter, ()//
+ -> super.getAdapter(adapter)));
+ }
/**
* Create the control of this Part, and children's controls.
@@ -379,7 +373,7 @@ public class EditorPart extends PagePart implements IEditorPage {
// cedric : old fashion, deprecated ?
getSashWindowContainer().firePropertyChange(propertyId);
// relay the event to the page lifecycle event notifier
- getSashWindowContainer().getLifeCycleEventProvider().firePageFirePropertyChangeEvent(this, propertyId);
+ getSashWindowContainer().getLifeCycleEventProvider().firePageFirePropertyChangeEvent(this, propertyId);
}
/**
@@ -582,7 +576,6 @@ public class EditorPart extends PagePart implements IEditorPage {
* TODO: change the interface.
*
* @param draggedObject
- * @param sourcePart
* @param position
* @return
*/
diff --git a/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor/src/org/eclipse/papyrus/infra/core/sasheditor/internal/PTabFolder.java b/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor/src/org/eclipse/papyrus/infra/core/sasheditor/internal/PTabFolder.java
index 5bd3de9f10f..808a6568e20 100644
--- a/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor/src/org/eclipse/papyrus/infra/core/sasheditor/internal/PTabFolder.java
+++ b/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor/src/org/eclipse/papyrus/infra/core/sasheditor/internal/PTabFolder.java
@@ -1,5 +1,5 @@
/*****************************************************************************
- * Copyright (c) 2008 CEA LIST.
+ * Copyright (c) 2008, 2015 CEA LIST, Christian W. Damus, and others.
*
*
* All rights reserved. This program and the accompanying materials
@@ -9,6 +9,7 @@
*
* Contributors:
* Cedric Dumoulin Cedric.dumoulin@lifl.fr - Initial API and implementation
+ * Christian W. Damus - bug 469188
*
*****************************************************************************/
package org.eclipse.papyrus.infra.core.sasheditor.internal;
@@ -144,9 +145,10 @@ public class PTabFolder {
*/
private CTabFolder createContainer(Composite parent) {
// use SWT.FLAT style so that an extra 1 pixel border is not reserved
- // inside the folder
+ // inside the folder. Don't use SWT.CLOSE style because each tab determines
+ // whether it is closeable or not
parent.setLayout(new FillLayout());
- final CTabFolder newContainer = new CTabFolder(parent, SWT.BOTTOM | SWT.FLAT | SWT.CLOSE);
+ final CTabFolder newContainer = new CTabFolder(parent, SWT.BOTTOM | SWT.FLAT);
// TODO Move listener init in appropriate method.
newContainer.addSelectionListener(new SelectionAdapter() {
diff --git a/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor/src/org/eclipse/papyrus/infra/core/sasheditor/internal/PagePart.java b/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor/src/org/eclipse/papyrus/infra/core/sasheditor/internal/PagePart.java
index 3da44a185d3..85a1bb84394 100644
--- a/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor/src/org/eclipse/papyrus/infra/core/sasheditor/internal/PagePart.java
+++ b/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor/src/org/eclipse/papyrus/infra/core/sasheditor/internal/PagePart.java
@@ -1,5 +1,5 @@
/*****************************************************************************
- * Copyright (c) 2009 CEA LIST & LIFL
+ * Copyright (c) 2009, 2015 CEA LIST & LIFL, Christian W. Damus, and others
*
*
* All rights reserved. This program and the accompanying materials
@@ -9,12 +9,15 @@
*
* Contributors:
* Cedric Dumoulin Cedric.dumoulin@lifl.fr - Initial API and implementation
+ * Christian W. Damus - bug 469188
*
*****************************************************************************/
package org.eclipse.papyrus.infra.core.sasheditor.internal;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.papyrus.infra.core.sasheditor.editor.ICloseablePart;
import org.eclipse.papyrus.infra.core.sasheditor.editor.IPage;
-import org.eclipse.papyrus.infra.core.sasheditor.internal.AbstractPart.GarbageState;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.widgets.Composite;
@@ -26,7 +29,7 @@ import org.eclipse.swt.widgets.Widget;
*
* @author dumoulin
*/
-public abstract class PagePart extends AbstractPart implements IPage {
+public abstract class PagePart extends AbstractPart implements IPage, IAdaptable {
/** Raw model associated to this part. We store it because the PartModel do not provide it */
protected Object rawModel;
@@ -46,6 +49,10 @@ public abstract class PagePart extends AbstractPart implements IPage {
this.rawModel = rawModel;
}
+ @Override
+ public <T> T getAdapter(Class<T> adapter) {
+ return Platform.getAdapterManager().getAdapter(this, adapter);
+ }
/**
* @return the parent
@@ -212,6 +219,18 @@ public abstract class PagePart extends AbstractPart implements IPage {
}
/**
+ * Queries whether I should be permitted to be closed.
+ *
+ * @return whether my containing tab should show the close widget
+ */
+ public boolean canClose() {
+ ICloseablePart closeable = getAdapter(ICloseablePart.class);
+ return (closeable == null)
+ || (closeable == this) // Avoid unbounded re-entry into this method!
+ || closeable.canClose();
+ }
+
+ /**
* Set focus on the SWT control associated to this PagePart.
* Used by the ActivePageTracker.
*/
diff --git a/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor/src/org/eclipse/papyrus/infra/core/sasheditor/internal/TabFolderPart.java b/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor/src/org/eclipse/papyrus/infra/core/sasheditor/internal/TabFolderPart.java
index 61eccba6915..1ab3a6c04ac 100644
--- a/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor/src/org/eclipse/papyrus/infra/core/sasheditor/internal/TabFolderPart.java
+++ b/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor/src/org/eclipse/papyrus/infra/core/sasheditor/internal/TabFolderPart.java
@@ -1,5 +1,5 @@
/*****************************************************************************
- * Copyright (c) 2008, 2014 CEA LIST and others.
+ * Copyright (c) 2008, 2015 CEA LIST, Christian W. Damus, and others.
*
*
* All rights reserved. This program and the accompanying materials
@@ -10,6 +10,7 @@
* Contributors:
* Cedric Dumoulin Cedric.dumoulin@lifl.fr - Initial API and implementation
* Christian W. Damus (CEA) - bug 392301
+ * Christian W. Damus - bug 469188
*
*****************************************************************************/
package org.eclipse.papyrus.infra.core.sasheditor.internal;
@@ -22,8 +23,10 @@ import org.eclipse.jface.util.Geometry;
import org.eclipse.papyrus.infra.core.sasheditor.Activator;
import org.eclipse.papyrus.infra.core.sasheditor.contentprovider.IPageModel;
import org.eclipse.papyrus.infra.core.sasheditor.contentprovider.ITabFolderModel;
+import org.eclipse.papyrus.infra.core.sasheditor.editor.ICloseablePart;
import org.eclipse.papyrus.infra.core.sasheditor.editor.IFolder;
import org.eclipse.papyrus.infra.core.sasheditor.internal.eclipsecopy.AbstractTabFolderPart;
+import org.eclipse.papyrus.infra.tools.util.PlatformHelper;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.CTabFolder;
import org.eclipse.swt.custom.CTabFolderEvent;
@@ -41,6 +44,7 @@ import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Menu;
+import org.eclipse.ui.IPropertyListener;
import org.eclipse.ui.internal.DragCursors;
import org.eclipse.ui.internal.dnd.DragUtil;
import org.eclipse.ui.internal.dnd.IDragOverListener;
@@ -1078,6 +1082,12 @@ public class TabFolderPart extends AbstractTabFolderPart implements IFolder {
// No part control? Dispose the model, now
partModel.dispose();
}
+
+ ICloseablePart closeable = PlatformHelper.getAdapter(newPart, ICloseablePart.class);
+ if (closeable != null) {
+ attachListeners(closeable, newPart);
+ }
+
return newPart;
}
@@ -1085,6 +1095,22 @@ public class TabFolderPart extends AbstractTabFolderPart implements IFolder {
return createErrorPage();
}
+ private void attachListeners(ICloseablePart closeable, PagePart part) {
+ closeable.addPropertyListener(new IPropertyListener() {
+
+ @Override
+ public void propertyChanged(Object source, int propId) {
+ switch (propId) {
+ case ICloseablePart.PROP_CAN_CLOSE:
+ // Update the presentation of the close widget, if necessary
+ refreshPageTab(part);
+ break;
+ }
+ }
+ });
+
+ }
+
/**
* Creates an ErrorComponentPart which displays an error message to the user.
* Avoid returning null, which might later lead to NPEs
diff --git a/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor/src/org/eclipse/papyrus/infra/core/sasheditor/internal/TabItemPart.java b/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor/src/org/eclipse/papyrus/infra/core/sasheditor/internal/TabItemPart.java
index 3cb9a279ff1..8e7ffe91c6e 100644
--- a/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor/src/org/eclipse/papyrus/infra/core/sasheditor/internal/TabItemPart.java
+++ b/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor/src/org/eclipse/papyrus/infra/core/sasheditor/internal/TabItemPart.java
@@ -1,5 +1,5 @@
/*****************************************************************************
- * Copyright (c) 2009 CEA LIST & LIFL
+ * Copyright (c) 2009, 2015 CEA LIST & LIFL, Christian W. Damus, and others
*
*
* All rights reserved. This program and the accompanying materials
@@ -9,6 +9,7 @@
*
* Contributors:
* Cedric Dumoulin Cedric.dumoulin@lifl.fr - Initial API and implementation
+ * Christian W. Damus - bug 469188
*
*****************************************************************************/
package org.eclipse.papyrus.infra.core.sasheditor.internal;
@@ -93,6 +94,7 @@ public class TabItemPart {
public void refreshTabDecorations() {
setTabText(childPart.getPageTitle());
setTabImage(childPart.getPageIcon());
+ control.setShowClose(childPart.canClose());
}
/**
diff --git a/plugins/infra/core/org.eclipse.papyrus.infra.core/src/org/eclipse/papyrus/infra/core/editor/CoreMultiDiagramEditor.java b/plugins/infra/core/org.eclipse.papyrus.infra.core/src/org/eclipse/papyrus/infra/core/editor/CoreMultiDiagramEditor.java
index ef429d9aaaa..24a15bd5e20 100644
--- a/plugins/infra/core/org.eclipse.papyrus.infra.core/src/org/eclipse/papyrus/infra/core/editor/CoreMultiDiagramEditor.java
+++ b/plugins/infra/core/org.eclipse.papyrus.infra.core/src/org/eclipse/papyrus/infra/core/editor/CoreMultiDiagramEditor.java
@@ -13,6 +13,7 @@
* Christian W. Damus (CEA) - bug 431953 (pre-requisite refactoring of ModelSet service start-up)
* Christian W. Damus (CEA) - bug 437217
* Christian W. Damus - bug 469464
+ * Christian W. Damus - bug 469188
*
*****************************************************************************/
@@ -493,6 +494,10 @@ public class CoreMultiDiagramEditor extends AbstractMultiPageSashEditor implemen
public void createPartControl(Composite parent) {
super.createPartControl(parent);
+ // Fire the PreDisplay event synchronously, so that listeners can continue
+ // setting up the UI before the contents are actually rendered fully
+ getLifecycleManager().firePreDisplay(this);
+
// Fire the PostDisplay event asynchronously, to leave time to the Eclipse
// framework to actually display the contents of the editor
Display.getDefault().asyncExec(new Runnable() {
diff --git a/plugins/infra/core/org.eclipse.papyrus.infra.core/src/org/eclipse/papyrus/infra/core/editor/MultiDiagramPropertySheetPage.java b/plugins/infra/core/org.eclipse.papyrus.infra.core/src/org/eclipse/papyrus/infra/core/editor/MultiDiagramPropertySheetPage.java
index 1056bef8835..75f4962b214 100644
--- a/plugins/infra/core/org.eclipse.papyrus.infra.core/src/org/eclipse/papyrus/infra/core/editor/MultiDiagramPropertySheetPage.java
+++ b/plugins/infra/core/org.eclipse.papyrus.infra.core/src/org/eclipse/papyrus/infra/core/editor/MultiDiagramPropertySheetPage.java
@@ -1,5 +1,5 @@
/*****************************************************************************
- * Copyright (c) 2014 CEA LIST and others.
+ * Copyright (c) 2014, 2015 CEA LIST, Christian W. Damus, and others.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
@@ -8,20 +8,30 @@
*
* Contributors:
* CEA LIST - Initial API and implementation
+ * Christian W. Damus - bug 469188
*
*****************************************************************************/
package org.eclipse.papyrus.infra.core.editor;
import org.eclipse.core.commands.operations.IUndoContext;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.emf.common.ui.URIEditorInput;
+import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.papyrus.infra.core.editor.reload.EditorReloadEvent;
import org.eclipse.papyrus.infra.core.editor.reload.IEditorReloadListener;
import org.eclipse.papyrus.infra.core.operation.DelegatingUndoContext;
-import org.eclipse.papyrus.infra.core.utils.AdapterUtils;
+import org.eclipse.papyrus.infra.core.sasheditor.editor.ISashWindowsContainer;
+import org.eclipse.papyrus.infra.tools.util.PlatformHelper;
import org.eclipse.ui.IActionBars;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IFileEditorInput;
import org.eclipse.ui.IPartListener;
import org.eclipse.ui.ISelectionListener;
+import org.eclipse.ui.IStorageEditorInput;
+import org.eclipse.ui.IURIEditorInput;
import org.eclipse.ui.IViewPart;
import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.actions.ActionFactory;
@@ -67,6 +77,46 @@ class MultiDiagramPropertySheetPage extends TabbedPropertySheetPage implements I
}
@Override
+ public void selectionChanged(IWorkbenchPart part, ISelection selection) {
+ if (selection.isEmpty() && (part instanceof IMultiDiagramEditor)) {
+ // Perhaps the user selected a page such as the Welcome Page that
+ // isn't an editor and so doesn't have a selection
+ IMultiDiagramEditor editor = (IMultiDiagramEditor) part;
+ ISashWindowsContainer sash = editor.getAdapter(ISashWindowsContainer.class);
+ if (sash != null) {
+ if ((sash.getActiveEditor() == null) && (sash.getActiveSashWindowsPage() != null)) {
+ // Yep, that's the case, here. So show the properties of the input
+ // resource (usually a DI file)
+ IEditorInput input = editor.getEditorInput();
+ Object newSelection;
+ if (input instanceof IFileEditorInput) {
+ newSelection = ((IFileEditorInput) input).getFile();
+ } else if (input instanceof IStorageEditorInput) {
+ IStorageEditorInput storageInput = (IStorageEditorInput) input;
+ try {
+ newSelection = storageInput.getStorage();
+ } catch (CoreException e) {
+ newSelection = storageInput;
+ }
+ } else if (input instanceof IURIEditorInput) {
+ newSelection = ((IURIEditorInput) input).getURI();
+ } else if (input instanceof URIEditorInput) {
+ newSelection = ((URIEditorInput) input).getURI();
+ } else {
+ newSelection = null;
+ }
+
+ if (newSelection != null) {
+ selection = new StructuredSelection(newSelection);
+ }
+ }
+ }
+ }
+
+ super.selectionChanged(part, selection);
+ }
+
+ @Override
public void editorAboutToReload(EditorReloadEvent event) {
Object propertySheet = getSite().getService(IViewPart.class);
if (propertySheet instanceof IShowInSource) {
@@ -106,7 +156,7 @@ class MultiDiagramPropertySheetPage extends TabbedPropertySheetPage implements I
// The editor will have a new undo context (because it will have a new editing domain)
if (undoContext != null) {
- undoContext.setDelegate(AdapterUtils.adapt(multiDiagramEditor, IUndoContext.class, null));
+ undoContext.setDelegate(PlatformHelper.getAdapter(multiDiagramEditor, IUndoContext.class));
}
}
@@ -115,7 +165,7 @@ class MultiDiagramPropertySheetPage extends TabbedPropertySheetPage implements I
super.setActionBars(actionBars);
undoContext = new DelegatingUndoContext();
- undoContext.setDelegate(AdapterUtils.adapt(multiDiagramEditor, IUndoContext.class, null));
+ undoContext.setDelegate(PlatformHelper.getAdapter(multiDiagramEditor, IUndoContext.class));
undo = new UndoActionHandler(multiDiagramEditor.getSite(), undoContext);
redo = new RedoActionHandler(multiDiagramEditor.getSite(), undoContext);
diff --git a/plugins/infra/core/org.eclipse.papyrus.infra.core/src/org/eclipse/papyrus/infra/core/internal/commands/PageLayoutStorageState.java b/plugins/infra/core/org.eclipse.papyrus.infra.core/src/org/eclipse/papyrus/infra/core/internal/commands/PageLayoutStorageState.java
index 876c75a8651..1218162eb1c 100644
--- a/plugins/infra/core/org.eclipse.papyrus.infra.core/src/org/eclipse/papyrus/infra/core/internal/commands/PageLayoutStorageState.java
+++ b/plugins/infra/core/org.eclipse.papyrus.infra.core/src/org/eclipse/papyrus/infra/core/internal/commands/PageLayoutStorageState.java
@@ -13,6 +13,8 @@
package org.eclipse.papyrus.infra.core.internal.commands;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
import java.lang.ref.Reference;
import java.lang.ref.WeakReference;
@@ -31,7 +33,7 @@ import org.eclipse.ui.PlatformUI;
/**
* The boolean toggle state of the private page layout storage menu item.
*/
-public class PageLayoutStorageState extends ToggleState implements IPartListener {
+public class PageLayoutStorageState extends ToggleState implements IPartListener, PropertyChangeListener {
private IPartService partService = null;
@@ -76,6 +78,8 @@ public class PageLayoutStorageState extends ToggleState implements IPartListener
// Default state is private storage
boolean state = true;
+ unhookSashModelListener();
+
activeEditor = null;
if (part instanceof IMultiDiagramEditor) {
@@ -84,6 +88,8 @@ public class PageLayoutStorageState extends ToggleState implements IPartListener
state = isPrivateLayout(editor);
}
+ hookSashModelListener();
+
// Fires notification if changed from previous state
setValue(state);
}
@@ -117,4 +123,42 @@ public class PageLayoutStorageState extends ToggleState implements IPartListener
public void partOpened(IWorkbenchPart part) {
// Pass
}
+
+ @Override
+ public void propertyChange(PropertyChangeEvent evt) {
+ if (evt.getSource() instanceof SashModel) {
+ switch (evt.getPropertyName()) {
+ case SashModel.PROPERTY_LEGACY_MODE:
+ setValue(!(Boolean) evt.getNewValue());
+ break;
+ }
+ }
+ }
+
+ private SashModel getSashModel() {
+ SashModel result = null;
+
+ if (activeEditor != null) {
+ IMultiDiagramEditor editor = activeEditor.get();
+ if (editor != null) {
+ result = SashModelUtils.getSashModel(editor.getServicesRegistry());
+ }
+ }
+
+ return result;
+ }
+
+ private void unhookSashModelListener() {
+ SashModel sash = getSashModel();
+ if (sash != null) {
+ sash.removePropertyChangeListener(SashModel.PROPERTY_LEGACY_MODE, this);
+ }
+ }
+
+ private void hookSashModelListener() {
+ SashModel sash = getSashModel();
+ if (sash != null) {
+ sash.addPropertyChangeListener(SashModel.PROPERTY_LEGACY_MODE, this);
+ }
+ }
}
diff --git a/plugins/infra/core/org.eclipse.papyrus.infra.core/src/org/eclipse/papyrus/infra/core/resource/sasheditor/SashLayoutCommandFactory.java b/plugins/infra/core/org.eclipse.papyrus.infra.core/src/org/eclipse/papyrus/infra/core/resource/sasheditor/SashLayoutCommandFactory.java
index bbd6b52c8c1..facbe085f31 100644
--- a/plugins/infra/core/org.eclipse.papyrus.infra.core/src/org/eclipse/papyrus/infra/core/resource/sasheditor/SashLayoutCommandFactory.java
+++ b/plugins/infra/core/org.eclipse.papyrus.infra.core/src/org/eclipse/papyrus/infra/core/resource/sasheditor/SashLayoutCommandFactory.java
@@ -13,16 +13,23 @@
package org.eclipse.papyrus.infra.core.resource.sasheditor;
+import java.util.ArrayList;
+
import org.eclipse.emf.common.command.AbstractCommand;
import org.eclipse.emf.common.command.Command;
import org.eclipse.emf.common.command.UnexecutableCommand;
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.util.EcoreUtil;
import org.eclipse.emf.edit.domain.EditingDomain;
import org.eclipse.papyrus.infra.core.editor.IMultiDiagramEditor;
import org.eclipse.papyrus.infra.core.resource.ModelSet;
+import org.eclipse.papyrus.infra.core.sasheditor.editor.ISashWindowsContainer;
+import org.eclipse.papyrus.infra.core.sashwindows.di.PageRef;
+import org.eclipse.papyrus.infra.core.sashwindows.di.SashModel;
import org.eclipse.papyrus.infra.core.sashwindows.di.SashWindowsMngr;
+import org.eclipse.papyrus.infra.core.sashwindows.di.TabFolder;
import org.eclipse.papyrus.infra.core.sashwindows.di.util.DiUtils;
/**
@@ -50,9 +57,27 @@ public class SashLayoutCommandFactory {
org.eclipse.papyrus.infra.core.resource.sasheditor.SashModel sashModel = SashModelUtils.getSashModel(modelSet);
if (sashModel != null) {
result = new AbstractToggleCommand("Toggle Private Editor Layout") {
+ private Command toggleRestoreActivePage;
+
+ {
+ // If we are toggling off private mode, make sure that we stop
+ // tracking the active page selection if we were tracking it.
+ // And remember that for undo
+ if (!sashModel.isLegacyMode()) {
+ SashWindowsMngr sash = DiUtils.lookupSashWindowsMngr(sashModel.getResource());
+ if ((sash != null) && (sash.getSashModel() != null) && sash.getSashModel().isRestoreActivePage()) {
+ toggleRestoreActivePage = createToggleRestoreActivePageCommand();
+ }
+ }
+ }
@Override
public void execute() {
+ // First, if we need to toggle restoring the active page, do that
+ if ((toggleRestoreActivePage != null) && toggleRestoreActivePage.canExecute()) {
+ toggleRestoreActivePage.execute();
+ }
+
SashWindowsMngr toMove = DiUtils.lookupSashWindowsMngr(sashModel.getResource());
// We don't record changes in the sash model for undo/redo,
@@ -66,12 +91,7 @@ public class SashLayoutCommandFactory {
// give up because something is seriously wrong in that case
Resource diResource = modelSet.getResource(sharedURI, false);
if ((diResource != null) && diResource.isLoaded()) {
- SashWindowsMngr toReplace = DiUtils.lookupSashWindowsMngr(diResource);
- if (toReplace != null) {
- EcoreUtil.replace(toReplace, toMove);
- } else {
- diResource.getContents().add(0, toMove);
- }
+ moveContents(sashResource, diResource);
if (sashResource.getContents().isEmpty()) {
// Schedule deletion on save
@@ -93,12 +113,8 @@ public class SashLayoutCommandFactory {
// In case we had marked it for deletion, earlier
modelSet.getResourcesToDeleteOnSave().remove(privateURI);
- SashWindowsMngr toReplace = DiUtils.lookupSashWindowsMngr(sashResource);
- if (toReplace != null) {
- EcoreUtil.replace(toReplace, toMove);
- } else {
- sashResource.getContents().add(0, toMove);
- }
+ Resource diResource = toMove.eResource();
+ moveContents(diResource, sashResource);
}
// Re-load from the new resource. Snippets might find this odd, but
@@ -111,6 +127,74 @@ public class SashLayoutCommandFactory {
return result;
}
+ void moveContents(Resource fromResource, Resource toResource) {
+ // Safe copy to allow concurrent modifications
+ for (EObject root : new ArrayList<>(fromResource.getContents())) {
+ EObject toReplace = (EObject) EcoreUtil.getObjectByType(toResource.getContents(), root.eClass());
+ if (toReplace != null) {
+ EcoreUtil.replace(toReplace, root);
+ } else {
+ if (root instanceof SashWindowsMngr) {
+ // This one is expected always to be first
+ toResource.getContents().add(0, root);
+ } else {
+ toResource.getContents().add(root);
+ }
+ }
+ }
+
+ }
+
+ /**
+ * Creates a command that toggles whether the sash model records the currently
+ * active page to restore it on next opening.
+ *
+ * @return a toggle command for the restore-active-page behaviour
+ */
+ public Command createToggleRestoreActivePageCommand() {
+ Command result = UnexecutableCommand.INSTANCE;
+
+ ModelSet modelSet = (ModelSet) editor.getAdapter(EditingDomain.class).getResourceSet();
+ SashWindowsMngr sashWindows = SashModelUtils.getSashWindowsMngr(modelSet);
+ ISashWindowsContainer container = editor.getAdapter(ISashWindowsContainer.class);
+
+ SashModel sashModel = sashWindows.getSashModel();
+ if (sashModel != null) {
+ // We don't record the tracking of the active page for undo/redo,
+ // so we cannot assume that any changes to the current page selections
+ // are undoable in the usual way
+ result = new AbstractToggleCommand("Toggle Restore Active Page") {
+
+ @Override
+ public void execute() {
+ boolean oldValue = sashModel.isRestoreActivePage();
+
+ if (oldValue) {
+ // Clear each tab folder's selection
+ container.getIFolderList().stream()
+ .map(f -> f.getRawModel())
+ .filter(TabFolder.class::isInstance).map(TabFolder.class::cast)
+ .filter(f -> f.getCurrentSelection() != null)
+ .forEach(f -> f.setCurrentSelection(null));
+ } else {
+ // Set each tab folder's selection.
+ // The 'visible pages' are the current selection in each folder
+ container.getVisiblePages().stream()
+ .map(p -> p.getRawModel())
+ .filter(PageRef.class::isInstance).map(PageRef.class::cast)
+ .filter(p -> p.getParent().getCurrentSelection() != p)
+ .forEach(p -> p.getParent().setCurrentSelection(p));
+ }
+
+ // The basic toggle
+ sashModel.setRestoreActivePage(!oldValue);
+ }
+ };
+ }
+
+ return result;
+ }
+
//
// Nested types
//
diff --git a/plugins/infra/core/org.eclipse.papyrus.infra.core/src/org/eclipse/papyrus/infra/core/resource/sasheditor/SashModel.java b/plugins/infra/core/org.eclipse.papyrus.infra.core/src/org/eclipse/papyrus/infra/core/resource/sasheditor/SashModel.java
index 479066b57c6..08b531676b3 100644
--- a/plugins/infra/core/org.eclipse.papyrus.infra.core/src/org/eclipse/papyrus/infra/core/resource/sasheditor/SashModel.java
+++ b/plugins/infra/core/org.eclipse.papyrus.infra.core/src/org/eclipse/papyrus/infra/core/resource/sasheditor/SashModel.java
@@ -12,13 +12,19 @@
* Christian W. Damus (CEA) - bug 429242
* Christian W. Damus (CEA) - bug 436468
* Christian W. Damus - bug 434983
+ * Christian W. Damus - bug 469188
*
*****************************************************************************/
package org.eclipse.papyrus.infra.core.resource.sasheditor;
+import java.beans.PropertyChangeListener;
+import java.beans.PropertyChangeSupport;
import java.util.Collections;
import java.util.Map;
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.impl.AdapterImpl;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.URIConverter;
@@ -33,10 +39,21 @@ import org.eclipse.papyrus.infra.core.sashwindows.di.util.DiUtils;
import com.google.common.base.Objects;
/**
+ * <p>
* Model for the sash system.
- *
+ * </p>
+ * <p>
* It may be stored in the *.di file (Legacy mode) or in a *.sash file in the user
* preference space (~workspace/.metadata/.plugins/org.eclipse.papyrus.infra.core/)
+ * </p>
+ * <p>
+ * The following properties are observable via Java Beans {@linkplain #addPropertyChangeListener(String, PropertyChangeListener) listeners}:
+ * </p>
+ * <ul>
+ * <li>{@link #isLegacyMode() legacyMode}</li>
+ * <li>{@link #getPrivateResourceURI() privateResourceURI}</li>
+ * <li>{@link #getSharedResourceURI() sharedResourceURI}</li>
+ * </ul>
*
* @author Cedric Dumoulin
* @author Camille Letavernier
@@ -44,8 +61,18 @@ import com.google.common.base.Objects;
*/
public class SashModel extends EMFLogicalModel implements IModel {
+ public static final String PROPERTY_PRIVATE_RESOURCE_URI = "privateResourceURI"; //$NON-NLS-1$
+ public static final String PROPERTY_SHARED_RESOURCE_URI = "sharedResourceURI"; //$NON-NLS-1$
+ public static final String PROPERTY_LEGACY_MODE = "legacyMode"; //$NON-NLS-1$
+
+ private final PropertyChangeSupport bean = new PropertyChangeSupport(this);
+
private SashModelProviderManager providerManager;
+ private Adapter sashModelStorageAdapter;
+
+ private volatile Boolean legacyMode;
+
/**
* File extension.
*
@@ -70,7 +97,20 @@ public class SashModel extends EMFLogicalModel implements IModel {
*
*/
public SashModel() {
-
+ super();
+
+ sashModelStorageAdapter = new AdapterImpl() {
+ @Override
+ public void notifyChanged(Notification msg) {
+ if (getResources().contains(msg.getNotifier())) {
+ switch (msg.getFeatureID(Resource.class)) {
+ case Resource.RESOURCE__CONTENTS:
+ invalidateLegacyMode();
+ break;
+ }
+ }
+ }
+ };
}
/**
@@ -103,6 +143,8 @@ public class SashModel extends EMFLogicalModel implements IModel {
providerManager = null;
}
+ getResources().forEach(res -> res.eAdapters().remove(sashModelStorageAdapter));
+
super.unload();
}
@@ -114,7 +156,7 @@ public class SashModel extends EMFLogicalModel implements IModel {
// We only handle the main Sash resource. Imported *.sash are not relevant
if (resource == getResource()) {
result = true;
- } else if (getModelManager().getURIWithoutExtension() != null) {
+ } else {
// We can only calculate these related URIs if the ModelSet is initialized
result = resource.getURI().equals(getPrivateResourceURI()) || resource.getURI().equals(getSharedResourceURI());
}
@@ -123,6 +165,15 @@ public class SashModel extends EMFLogicalModel implements IModel {
return result;
}
+ @Override
+ protected void configureResource(Resource resourceToConfigure) {
+ super.configureResource(resourceToConfigure);
+
+ if (resourceToConfigure != null) {
+ resourceToConfigure.eAdapters().add(sashModelStorageAdapter);
+ }
+ }
+
/**
* Get the identifier used to register this model.
*
@@ -164,6 +215,9 @@ public class SashModel extends EMFLogicalModel implements IModel {
@Override
public void setModelURI(URI uriWithoutExtension) {
+ URI oldPrivateURI = getPrivateResourceURI();
+ URI oldSharedURI = getSharedResourceURI();
+
URI newURI;
if ((resourceURI != null) && isLegacy(resourceURI.trimFileExtension())) {
newURI = getLegacyURI(uriWithoutExtension);
@@ -172,6 +226,9 @@ public class SashModel extends EMFLogicalModel implements IModel {
}
super.setModelURI(newURI.trimFileExtension());
+
+ bean.firePropertyChange(PROPERTY_PRIVATE_RESOURCE_URI, oldPrivateURI, getPrivateResourceURI());
+ bean.firePropertyChange(PROPERTY_SHARED_RESOURCE_URI, oldSharedURI, getSharedResourceURI());
}
protected boolean isLegacy(URI uriWithoutExtension) {
@@ -236,7 +293,34 @@ public class SashModel extends EMFLogicalModel implements IModel {
}
public boolean isLegacyMode() {
- return isLegacy(getURI().trimFileExtension());
+ if (legacyMode == null) {
+ legacyMode = false; // Assume not
+
+ // Does the shared DI resource contain the sash layout?
+ URI sharedURI = getSharedResourceURI();
+ if (sharedURI != null) {
+ for (Resource next : getResources()) {
+ if (sharedURI.equals(next.getURI())) {
+ legacyMode = DiUtils.lookupSashWindowsMngr(next) != null;
+ break;
+ }
+ }
+ }
+ }
+
+ return legacyMode;
+ }
+
+ void invalidateLegacyMode() {
+ boolean oldValue = isLegacyMode();
+
+ legacyMode = null;
+
+ boolean newValue = isLegacyMode();
+
+ if (oldValue != newValue) {
+ bean.firePropertyChange(PROPERTY_LEGACY_MODE, oldValue, newValue);
+ }
}
/**
@@ -246,7 +330,8 @@ public class SashModel extends EMFLogicalModel implements IModel {
* @return the private sash-model resource URI
*/
public URI getPrivateResourceURI() {
- return getSashModelStoreURI(getModelManager().getURIWithoutExtension());
+ URI modelURI = (getModelManager() == null) ? null : getModelManager().getURIWithoutExtension();
+ return (modelURI == null) ? null : getSashModelStoreURI(modelURI);
}
/**
@@ -257,6 +342,27 @@ public class SashModel extends EMFLogicalModel implements IModel {
* @return the shared sash-model resource URI
*/
public URI getSharedResourceURI() {
- return getModelManager().getURIWithoutExtension().appendFileExtension(DiModel.MODEL_FILE_EXTENSION);
+ URI modelURI = (getModelManager() == null) ? null : getModelManager().getURIWithoutExtension();
+ return (modelURI == null) ? null : modelURI.appendFileExtension(DiModel.MODEL_FILE_EXTENSION);
+ }
+
+ //
+ // Bean API
+ //
+
+ public void addPropertyChangeListener(PropertyChangeListener listener) {
+ bean.addPropertyChangeListener(listener);
+ }
+
+ public void removePropertyChangeListener(PropertyChangeListener listener) {
+ bean.removePropertyChangeListener(listener);
+ }
+
+ public void addPropertyChangeListener(String propertyName, PropertyChangeListener listener) {
+ bean.addPropertyChangeListener(propertyName, listener);
+ }
+
+ public void removePropertyChangeListener(String propertyName, PropertyChangeListener listener) {
+ bean.removePropertyChangeListener(propertyName, listener);
}
}
diff --git a/plugins/infra/core/org.eclipse.papyrus.infra.core/src/org/eclipse/papyrus/infra/core/services/EditorLifecycleEventListener.java b/plugins/infra/core/org.eclipse.papyrus.infra.core/src/org/eclipse/papyrus/infra/core/services/EditorLifecycleEventListener.java
index 97145447636..4615f48e9d9 100644
--- a/plugins/infra/core/org.eclipse.papyrus.infra.core/src/org/eclipse/papyrus/infra/core/services/EditorLifecycleEventListener.java
+++ b/plugins/infra/core/org.eclipse.papyrus.infra.core/src/org/eclipse/papyrus/infra/core/services/EditorLifecycleEventListener.java
@@ -1,5 +1,5 @@
/*****************************************************************************
- * Copyright (c) 2013 CEA LIST.
+ * Copyright (c) 2013, 2015 CEA LIST, Christian W. Damus, and others.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
@@ -8,6 +8,7 @@
*
* Contributors:
* Camille Letavernier (CEA LIST) camille.letavernier@cea.fr - Initial API and implementation
+ * Christian W. Damus - bug 469188
*****************************************************************************/
package org.eclipse.papyrus.infra.core.services;
@@ -29,6 +30,15 @@ public interface EditorLifecycleEventListener {
public void postInit(IMultiDiagramEditor editor);
/**
+ * All the editors are constructed, but not yet displayed
+ *
+ * @param editor
+ */
+ public default void preDisplay(IMultiDiagramEditor editor) {
+ // Pass
+ }
+
+ /**
* All the editors are displayed
*
* @param editor
diff --git a/plugins/infra/core/org.eclipse.papyrus.infra.core/src/org/eclipse/papyrus/infra/core/services/internal/EditorLifecycleManagerImpl.java b/plugins/infra/core/org.eclipse.papyrus.infra.core/src/org/eclipse/papyrus/infra/core/services/internal/EditorLifecycleManagerImpl.java
index 7c588c4f626..3c37096f881 100644
--- a/plugins/infra/core/org.eclipse.papyrus.infra.core/src/org/eclipse/papyrus/infra/core/services/internal/EditorLifecycleManagerImpl.java
+++ b/plugins/infra/core/org.eclipse.papyrus.infra.core/src/org/eclipse/papyrus/infra/core/services/internal/EditorLifecycleManagerImpl.java
@@ -1,5 +1,5 @@
/*****************************************************************************
- * Copyright (c) 2013 CEA LIST.
+ * Copyright (c) 2013, 2015 CEA LIST, Christian W. Damus, and others.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
@@ -8,6 +8,7 @@
*
* Contributors:
* Camille Letavernier (CEA LIST) camille.letavernier@cea.fr - Initial API and implementation
+ * Christian W. Damus - bug 469188
*****************************************************************************/
package org.eclipse.papyrus.infra.core.services.internal;
@@ -71,6 +72,24 @@ public class EditorLifecycleManagerImpl implements EditorLifecycleManager, Inter
}
@Override
+ public void firePreDisplay(final IMultiDiagramEditor editor) {
+ for (final EditorLifecycleEventListener listener : listeners) {
+ SafeRunner.run(new ISafeRunnable() {
+
+ @Override
+ public void run() throws Exception {
+ listener.preDisplay(editor);
+ }
+
+ @Override
+ public void handleException(Throwable exception) {
+ // Already logged by the SafeRunner
+ }
+ });
+ }
+ }
+
+ @Override
public void firePostDisplay(final IMultiDiagramEditor editor) {
for (final EditorLifecycleEventListener listener : listeners) {
SafeRunner.run(new ISafeRunnable() {
diff --git a/plugins/infra/core/org.eclipse.papyrus.infra.core/src/org/eclipse/papyrus/infra/core/services/internal/InternalEditorLifecycleManager.java b/plugins/infra/core/org.eclipse.papyrus.infra.core/src/org/eclipse/papyrus/infra/core/services/internal/InternalEditorLifecycleManager.java
index 70fd10a6fe4..eab2e1272ea 100644
--- a/plugins/infra/core/org.eclipse.papyrus.infra.core/src/org/eclipse/papyrus/infra/core/services/internal/InternalEditorLifecycleManager.java
+++ b/plugins/infra/core/org.eclipse.papyrus.infra.core/src/org/eclipse/papyrus/infra/core/services/internal/InternalEditorLifecycleManager.java
@@ -1,5 +1,5 @@
/*****************************************************************************
- * Copyright (c) 2013 CEA LIST.
+ * Copyright (c) 2013, 2015 CEA LIST, Christian W. Damus, and others.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
@@ -8,6 +8,7 @@
*
* Contributors:
* Camille Letavernier (CEA LIST) camille.letavernier@cea.fr - Initial API and implementation
+ * Christian W. Damus - bug 469188
*****************************************************************************/
package org.eclipse.papyrus.infra.core.services.internal;
@@ -25,6 +26,13 @@ public interface InternalEditorLifecycleManager extends IService {
void firePostInit(IMultiDiagramEditor editor);
/**
+ * Sets the preDisplay notification for this editor
+ *
+ * @param editor
+ */
+ void firePreDisplay(IMultiDiagramEditor editor);
+
+ /**
* Sends the postDisplay notification for this editor
*
* @param editor
diff --git a/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/.classpath b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/.classpath
new file mode 100644
index 00000000000..eca7bdba8f0
--- /dev/null
+++ b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/.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/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/.project b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/.project
new file mode 100644
index 00000000000..7759ae463d1
--- /dev/null
+++ b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.papyrus.infra.editor.welcome.nattable</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/.settings/org.eclipse.jdt.core.prefs b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000000..8ddd9a88d57
--- /dev/null
+++ b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,296 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.format_block_comments=true
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true
+org.eclipse.jdt.core.formatter.comment.format_line_comments=true
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert
+org.eclipse.jdt.core.formatter.comment.line_length=260
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=false
+org.eclipse.jdt.core.formatter.join_wrapped_lines=false
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=260
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=5
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=false
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
diff --git a/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/.settings/org.eclipse.jdt.ui.prefs b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 00000000000..954281dbc31
--- /dev/null
+++ b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,68 @@
+cleanup.add_default_serial_version_id=true
+cleanup.add_generated_serial_version_id=false
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=true
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_missing_override_annotations_interface_methods=true
+cleanup.add_serial_version_id=false
+cleanup.always_use_blocks=true
+cleanup.always_use_parentheses_in_expressions=false
+cleanup.always_use_this_for_non_static_field_access=false
+cleanup.always_use_this_for_non_static_method_access=false
+cleanup.convert_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.correct_indentation=false
+cleanup.format_source_code=false
+cleanup.format_source_code_changes_only=false
+cleanup.insert_inferred_type_arguments=false
+cleanup.make_local_variable_final=true
+cleanup.make_parameters_final=false
+cleanup.make_private_fields_final=true
+cleanup.make_type_abstract_if_missing_method=false
+cleanup.make_variable_declarations_final=false
+cleanup.never_use_blocks=false
+cleanup.never_use_parentheses_in_expressions=true
+cleanup.organize_imports=false
+cleanup.qualify_static_field_accesses_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+cleanup.qualify_static_member_accesses_with_declaring_class=true
+cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.remove_private_constructors=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_casts=true
+cleanup.remove_unnecessary_nls_tags=true
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_blocks=true
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_lambda=true
+cleanup.use_parentheses_in_expressions=false
+cleanup.use_this_for_non_static_field_access=false
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=false
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_type_arguments=false
+cleanup_profile=_Papyrus
+cleanup_settings_version=2
+eclipse.preferences.version=1
+formatter_profile=_Papyrus
+formatter_settings_version=12
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.javadoc=true
+org.eclipse.jdt.ui.ondemandthreshold=99
+org.eclipse.jdt.ui.staticondemandthreshold=99
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\n * @return the ${bare_field_name}\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\n * @param ${param} the ${bare_field_name} to set\n */</template><template autoinsert\="false" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\n * Constructor.\n *\n * ${tags}\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/*****************************************************************************\n * Copyright (c) ${year} CEA LIST and others.\n * \n * All rights reserved. This program and the accompanying materials\n * are made available under the terms of the Eclipse Public License v1.0\n * which accompanies this distribution, and is available at\n * http\://www.eclipse.org/legal/epl-v10.html\n *\n * Contributors\:\n * CEA LIST - Initial API and implementation\n * \n *****************************************************************************/\n</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\n * @author ${user}\n *\n * ${tags}\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\n * \n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\n * ${tags}\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/**\n * ${see_to_overridden}\n *\n * ${tags}\n */</template><template autoinsert\="false" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\n * ${see_to_target}\n *\n * ${tags}\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\n${package_declaration}\n\n${typecomment}\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
diff --git a/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/META-INF/MANIFEST.MF b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..6b18e9e45a1
--- /dev/null
+++ b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/META-INF/MANIFEST.MF
@@ -0,0 +1,32 @@
+Manifest-Version: 1.0
+Export-Package: org.eclipse.papyrus.infra.editor.welcome.nattable,
+ org.eclipse.papyrus.infra.editor.welcome.nattable.hyperlink,
+ org.eclipse.papyrus.infra.editor.welcome.nattable.internal;x-internal:=true,
+ org.eclipse.papyrus.infra.editor.welcome.nattable.internal.widgets;x-internal:=true,
+ org.eclipse.papyrus.infra.editor.welcome.nattable.painter,
+ org.eclipse.papyrus.infra.editor.welcome.nattable.sorting,
+ org.eclipse.papyrus.infra.editor.welcome.nattable.widgets
+Require-Bundle: org.eclipse.core.runtime;bundle-version="3.12.0",
+ org.eclipse.emf.ecore;visibility:=reexport,
+ org.eclipse.papyrus.infra.core;bundle-version="1.2.0",
+ org.eclipse.papyrus.infra.core.log;bundle-version="1.2.0",
+ org.eclipse.ui;bundle-version="3.100.0",
+ org.eclipse.core.databinding;bundle-version="1.6.0",
+ org.eclipse.nebula.widgets.nattable.core;bundle-version="1.3.0",
+ org.eclipse.nebula.widgets.nattable.extension.glazedlists;bundle-version="1.3.0",
+ ca.odell.glazedlists;bundle-version="1.9.0",
+ org.eclipse.papyrus.infra.services.labelprovider;bundle-version="1.2.0",
+ org.eclipse.papyrus.infra.services.navigation;bundle-version="1.2.0",
+ org.eclipse.papyrus.infra.emf;bundle-version="1.2.0",
+ org.eclipse.papyrus.views.properties;bundle-version="1.2.0",
+ org.eclipse.papyrus.infra.editor.welcome;bundle-version="1.2.0"
+Bundle-Vendor: %providerName
+Bundle-ActivationPolicy: lazy
+Bundle-Version: 1.2.0.qualifier
+Bundle-ClassPath: .
+Bundle-Localization: plugin
+Bundle-Name: %pluginName
+Bundle-Activator: org.eclipse.papyrus.infra.editor.welcome.nattable.internal.Activator
+Bundle-ManifestVersion: 2
+Bundle-SymbolicName: org.eclipse.papyrus.infra.editor.welcome.nattable;singleton:=true
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
diff --git a/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/about.html b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/about.html
new file mode 100644
index 00000000000..dd3c089a94c
--- /dev/null
+++ b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/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>November 14, 2008</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> \ No newline at end of file
diff --git a/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/build.properties b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/build.properties
new file mode 100644
index 00000000000..631423469dc
--- /dev/null
+++ b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/build.properties
@@ -0,0 +1,22 @@
+#
+# Copyright (c) 2015 Christian W. Damus 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:
+# Christian W. Damus - Initial API and implementation
+#
+
+bin.includes = META-INF/,\
+ .,\
+ about.html,\
+ plugin.properties,\
+ model/,\
+ plugin.xml
+output.. = bin/
+src.includes = about.html
+source.. = src/
+bin.. = bin/
diff --git a/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/model/environment.xmi b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/model/environment.xmi
new file mode 100644
index 00000000000..a936faf13bf
--- /dev/null
+++ b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/model/environment.xmi
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="ASCII"?>
+<environment:Environment
+ xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:environment="http://www.eclipse.org/papyrus/properties/environment/0.9">
+ <namespaces
+ name="ppew"
+ value="org.eclipse.papyrus.infra.editor.welcome.nattable.internal.widgets"/>
+</environment:Environment>
diff --git a/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/model/general/languages.ctx b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/model/general/languages.ctx
new file mode 100644
index 00000000000..cbfd9f71eb7
--- /dev/null
+++ b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/model/general/languages.ctx
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="ASCII"?>
+<contexts:Context xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:constraints="http://www.eclipse.org/papyrus/constraints/0.9" xmlns:contexts="http://www.eclipse.org/papyrus/properties/contexts/0.9" xmi:id="_MPALcI7eEeWNa5T2Agi7uA" name="welcome-languages" label="Modeling Languages">
+ <tabs xmi:id="_SsfbQcElEeS_u7hIvAIReA" label="General" id="general" category="org.eclipse.papyrus" priority="70">
+ <sections xmi:id="_SsgCV8ElEeS_u7hIvAIReA" name="Single Languages" sectionFile="ui/SingleLanguages.xwt">
+ <widget href="ui/SingleLanguages.xwt#/"/>
+ </sections>
+ </tabs>
+ <views xmi:id="_Ssiem8ElEeS_u7hIvAIReA" name="Single Languages" sections="_SsgCV8ElEeS_u7hIvAIReA" automaticContext="true" datacontexts="_SsmJGsElEeS_u7hIvAIReA">
+ <constraints xsi:type="constraints:SimpleConstraint" xmi:id="_SskT2cElEeS_u7hIvAIReA" name="isWelcomeElement">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.editor.welcome/model/environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" xmi:id="_SskT2sElEeS_u7hIvAIReA" name="metaclassName" value="Welcome"/>
+ </constraints>
+ </views>
+ <dataContexts xmi:id="_SsmI-cElEeS_u7hIvAIReA" name="welcomeLanguages" label="Welcome">
+ <elements xmi:id="_SsmJGsElEeS_u7hIvAIReA" name="Languages">
+ <properties xmi:id="_SsmJG8ElEeS_u7hIvAIReA" name="languages" label="Languages" type="Reference" multiplicity="-1" description="Modeling languages instantiated in the model"/>
+ </elements>
+ <modelElementFactory href="ppe:/environment/org.eclipse.papyrus.infra.editor.welcome/model/environment.xmi#//@modelElementFactories.0"/>
+ </dataContexts>
+</contexts:Context>
diff --git a/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/model/general/ui/SingleLanguages.xwt b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/model/general/ui/SingleLanguages.xwt
new file mode 100644
index 00000000000..bc24cfadfc6
--- /dev/null
+++ b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/model/general/ui/SingleLanguages.xwt
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:ppe="clr-namespace:org.eclipse.papyrus.views.properties.widgets"
+ xmlns:x="http://www.eclipse.org/xwt"
+ xmlns:ppew="clr-namespace:org.eclipse.papyrus.infra.editor.welcome.nattable.internal.widgets"
+ xmlns="http://www.eclipse.org/xwt/presentation" xmlns:j="clr-namespace:java.lang">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppew:LanguagesTable input="{Binding}" property="welcomeLanguages:Languages:languages"></ppew:LanguagesTable>
+</Composite> \ No newline at end of file
diff --git a/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/plugin.properties b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/plugin.properties
new file mode 100644
index 00000000000..befe5b938ce
--- /dev/null
+++ b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/plugin.properties
@@ -0,0 +1,13 @@
+#
+# Copyright (c) 2015 Christian W. Damus 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:
+# Christian W. Damus - Initial API and implementation
+#
+pluginName=Papyrus NatTable for Editor Welcome Page
+providerName=Eclipse Modeling Project
diff --git a/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/plugin.xml b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/plugin.xml
new file mode 100644
index 00000000000..360b78fc654
--- /dev/null
+++ b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/plugin.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.2"?>
+<!--
+ Copyright (c) 2015 Christian W. Damus 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:
+ Christian W. Damus - Initial API and implementation
+-->
+<plugin>
+ <extension
+ point="org.eclipse.papyrus.views.properties.context">
+ <context
+ contextModel="model/general/languages.ctx">
+ </context>
+ <preferencePageBinding
+ context="welcome-languages"
+ page="org.eclipse.papyrus.infra.editor.welcome.content">
+ </preferencePageBinding>
+ </extension>
+ <extension
+ point="org.eclipse.papyrus.views.properties.environment">
+ <environment
+ environmentModel="model/environment.xmi">
+ </environment>
+ </extension>
+</plugin>
diff --git a/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/pom.xml b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/pom.xml
new file mode 100644
index 00000000000..e4cc773674d
--- /dev/null
+++ b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/pom.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <artifactId>org.eclipse.papyrus.releng</artifactId>
+ <groupId>org.eclipse.papyrus</groupId>
+ <version>1.2.0-SNAPSHOT</version>
+ <relativePath>../../../../releng/main</relativePath>
+ </parent>
+ <artifactId>org.eclipse.papyrus.infra.editor.welcome.nattable</artifactId>
+ <groupId>org.eclipse.papyrus</groupId>
+ <version>1.2.0-SNAPSHOT</version>
+ <packaging>eclipse-plugin</packaging>
+</project> \ No newline at end of file
diff --git a/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/src/org/eclipse/papyrus/infra/editor/welcome/nattable/ServiceConfigAttributes.java b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/src/org/eclipse/papyrus/infra/editor/welcome/nattable/ServiceConfigAttributes.java
new file mode 100644
index 00000000000..f9255e4d342
--- /dev/null
+++ b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/src/org/eclipse/papyrus/infra/editor/welcome/nattable/ServiceConfigAttributes.java
@@ -0,0 +1,132 @@
+/*****************************************************************************
+ * Copyright (c) 2015 Christian W. Damus 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:
+ * Christian W. Damus - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.infra.editor.welcome.nattable;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.function.Function;
+
+import org.eclipse.nebula.widgets.nattable.config.IConfigRegistry;
+import org.eclipse.nebula.widgets.nattable.layer.LabelStack;
+import org.eclipse.nebula.widgets.nattable.layer.cell.ILayerCell;
+import org.eclipse.nebula.widgets.nattable.style.ConfigAttribute;
+
+/**
+ * A factory for unique NatTable configuration attributes for Papyrus services.
+ */
+public class ServiceConfigAttributes {
+ private static Map<Class<?>, ConfigAttribute<?>> configAttributes = new HashMap<>();
+
+ private ServiceConfigAttributes() {
+ super();
+ }
+
+ /**
+ * Obtains the (unique) configuration attribute for the given service type.
+ *
+ * @param serviceType
+ * a service type
+ *
+ * @return the corresponding configuration attribute
+ */
+ @SuppressWarnings("unchecked")
+ public static <T> ConfigAttribute<T> get(Class<T> serviceType) {
+ return (ConfigAttribute<T>) configAttributes.computeIfAbsent(serviceType, key -> new ConfigAttribute<T>());
+ }
+
+ /**
+ * Obtains a builder-like configurator object that uses the given service accessor to obtain
+ * services to register.
+ *
+ * @param registry
+ * the NatTable configuration registry
+ * @param serviceAccessor
+ * a service accessor function
+ *
+ * @return the configurator
+ */
+ public static Configurator with(IConfigRegistry registry, Function<? super Class<?>, ?> serviceAccessor) {
+ return new Configurator(registry, serviceAccessor);
+ }
+
+ public static <T> void registerService(Class<T> serviceType, IConfigRegistry configRegistry, T service) {
+ configRegistry.registerConfigAttribute(get(serviceType), service);
+ }
+
+ public static <T> void registerService(Class<T> serviceType, IConfigRegistry configRegistry, T service, String targetDisplayMode) {
+ configRegistry.registerConfigAttribute(get(serviceType), service, targetDisplayMode);
+ }
+
+ public static <T> void registerService(Class<T> serviceType, IConfigRegistry configRegistry, T service, String targetDisplayMode, String label) {
+ configRegistry.registerConfigAttribute(get(serviceType), service, targetDisplayMode, label);
+ }
+
+ public static <T> T getService(Class<T> serviceType, IConfigRegistry config, String targetDisplayMode, String... labels) {
+ return config.getConfigAttribute(get(serviceType), targetDisplayMode, labels);
+ }
+
+ public static <T> T getService(Class<T> serviceType, IConfigRegistry config, String targetDisplayMode, List<String> labels) {
+ return config.getConfigAttribute(get(serviceType), targetDisplayMode, labels);
+ }
+
+ public static <T> T getService(Class<T> serviceType, IConfigRegistry config, String targetDisplayMode, LabelStack labels) {
+ return getService(serviceType, config, targetDisplayMode, labels.getLabels());
+ }
+
+ public static <T> T getService(Class<T> serviceType, IConfigRegistry config, ILayerCell cell) {
+ return getService(serviceType, config, cell.getDisplayMode(), cell.getConfigLabels().getLabels());
+ }
+
+ //
+ // Nested types
+ //
+
+ /**
+ * A builder-like configurator object that automatically registers services in a particular
+ * NatTable configuration registry.
+ */
+ public static class Configurator {
+ private final IConfigRegistry configRegistry;
+ private final Function<? super Class<?>, ?> serviceAccessor;
+
+ Configurator(IConfigRegistry configRegistry, Function<? super Class<?>, ?> serviceAccessor) {
+ super();
+
+ this.configRegistry = configRegistry;
+ this.serviceAccessor = serviceAccessor;
+ }
+
+ <T> T getService(Class<T> serviceType) {
+ @SuppressWarnings("unchecked")
+ Function<? super Class<T>, T> accessor = (Function<? super Class<T>, T>) serviceAccessor;
+ return accessor.apply(serviceType);
+ }
+
+ public <T> Configurator register(Class<T> serviceType) {
+ registerService(serviceType, configRegistry, getService(serviceType));
+ return this;
+ }
+
+ public <T> Configurator register(Class<T> serviceType, String targetDisplayMode) {
+ registerService(serviceType, configRegistry, getService(serviceType), targetDisplayMode);
+ return this;
+ }
+
+ public <T> Configurator register(Class<T> serviceType, String targetDisplayMode, String label) {
+ registerService(serviceType, configRegistry, getService(serviceType), targetDisplayMode, label);
+ return this;
+ }
+ }
+}
diff --git a/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/src/org/eclipse/papyrus/infra/editor/welcome/nattable/hyperlink/HyperlinkNavigationAction.java b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/src/org/eclipse/papyrus/infra/editor/welcome/nattable/hyperlink/HyperlinkNavigationAction.java
new file mode 100644
index 00000000000..b5236901c8d
--- /dev/null
+++ b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/src/org/eclipse/papyrus/infra/editor/welcome/nattable/hyperlink/HyperlinkNavigationAction.java
@@ -0,0 +1,62 @@
+/*****************************************************************************
+ * Copyright (c) 2015 Christian W. Damus 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:
+ * Christian W. Damus - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.infra.editor.welcome.nattable.hyperlink;
+
+import org.eclipse.core.databinding.observable.value.IObservableValue;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.nebula.widgets.nattable.NatTable;
+import org.eclipse.nebula.widgets.nattable.selection.action.AbstractMouseSelectionAction;
+import org.eclipse.nebula.widgets.nattable.style.DisplayMode;
+import org.eclipse.papyrus.infra.core.sasheditor.contentprovider.IPageManager;
+import org.eclipse.papyrus.infra.editor.welcome.nattable.ServiceConfigAttributes;
+import org.eclipse.papyrus.infra.services.navigation.service.NavigationService;
+import org.eclipse.swt.events.MouseEvent;
+
+/**
+ * A NatTable action for navigation of a hyperlink cell.
+ */
+public class HyperlinkNavigationAction extends AbstractMouseSelectionAction {
+
+ public HyperlinkNavigationAction() {
+ super();
+ }
+
+ <T> T getService(NatTable natTable, Class<T> serviceType) {
+ return ServiceConfigAttributes.getService(serviceType, natTable.getConfigRegistry(), DisplayMode.NORMAL);
+ }
+
+ @Override
+ public void run(NatTable natTable, MouseEvent event) {
+ super.run(natTable, event);
+
+ Object data = natTable.getDataValueByPosition(getGridColumnPosition(), getGridRowPosition());
+ if (data instanceof IObservableValue<?>) {
+ data = ((IObservableValue<?>) data).getValue();
+ }
+
+ IPageManager pages = getService(natTable, IPageManager.class);
+ if (pages.allPages().contains(data)) {
+ if (pages.isOpen(data)) {
+ pages.selectPage(data);
+ } else {
+ pages.openPage(data);
+ }
+ } else if (data != null) {
+ getService(natTable, NavigationService.class).navigate(data);
+ getService(natTable, ISelectionProvider.class).setSelection(new StructuredSelection(data));
+ }
+ }
+
+}
diff --git a/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/src/org/eclipse/papyrus/infra/editor/welcome/nattable/hyperlink/HyperlinkNavigationConfiguration.java b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/src/org/eclipse/papyrus/infra/editor/welcome/nattable/hyperlink/HyperlinkNavigationConfiguration.java
new file mode 100644
index 00000000000..3c795edc3aa
--- /dev/null
+++ b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/src/org/eclipse/papyrus/infra/editor/welcome/nattable/hyperlink/HyperlinkNavigationConfiguration.java
@@ -0,0 +1,160 @@
+/*****************************************************************************
+ * Copyright (c) 2015 Christian W. Damus 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:
+ * Christian W. Damus - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.infra.editor.welcome.nattable.hyperlink;
+
+import java.util.function.Predicate;
+
+import org.eclipse.nebula.widgets.nattable.NatTable;
+import org.eclipse.nebula.widgets.nattable.config.AbstractUiBindingConfiguration;
+import org.eclipse.nebula.widgets.nattable.layer.LabelStack;
+import org.eclipse.nebula.widgets.nattable.layer.cell.ILayerCell;
+import org.eclipse.nebula.widgets.nattable.painter.cell.ICellPainter;
+import org.eclipse.nebula.widgets.nattable.ui.binding.UiBindingRegistry;
+import org.eclipse.nebula.widgets.nattable.ui.matcher.IMouseEventMatcher;
+import org.eclipse.nebula.widgets.nattable.ui.matcher.MouseEventMatcher;
+import org.eclipse.papyrus.infra.editor.welcome.nattable.painter.LabelPainter;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.MouseEvent;
+import org.eclipse.swt.graphics.Cursor;
+import org.eclipse.swt.graphics.GC;
+import org.eclipse.swt.graphics.Rectangle;
+import org.eclipse.swt.widgets.Control;
+
+/**
+ * A NatTable configuration that installs hyperlink navigation cursor feed-back and
+ * actions on the cells of a table that have hyperlinks.
+ */
+public class HyperlinkNavigationConfiguration<E> extends AbstractUiBindingConfiguration {
+ private final Class<? extends E> elementType;
+ private final Predicate<? super E> isActiveHyperlink;
+
+ private Cursor defaultCursor;
+ private Cursor handCursor;
+
+ private int currentColumn = -1;
+ private int currentRow = -1;
+ private Rectangle currentCellTextBounds;
+
+ /**
+ * Initializes me.
+ *
+ * @param owner
+ * the control that owns the {@link NatTable} that I will configure
+ * @param elementType
+ * the type of object that is a potential hyperlink
+ * @param isActiveHyperlink
+ * a predicate matching valid, navigable hyperlink elements
+ */
+ public HyperlinkNavigationConfiguration(Control owner, Class<? extends E> elementType, Predicate<? super E> isActiveHyperlink) {
+ super();
+
+ this.elementType = elementType;
+ this.isActiveHyperlink = isActiveHyperlink;
+
+ this.defaultCursor = owner.getCursor();
+ this.handCursor = new Cursor(owner.getDisplay(), SWT.CURSOR_HAND);
+
+ owner.addDisposeListener(event -> handCursor.dispose());
+ }
+
+ @Override
+ public void configureUiBindings(UiBindingRegistry uiBindingRegistry) {
+ uiBindingRegistry.registerSingleClickBinding(
+ MouseEventMatcher.bodyLeftClick(SWT.NONE),
+ new HyperlinkNavigationAction());
+
+ // On moving the mouse into the body area, show a navigation cursor
+ uiBindingRegistry.registerFirstMouseMoveBinding(
+ new IMouseEventMatcher() {
+ @Override
+ public boolean matches(NatTable natTable, MouseEvent event, LabelStack regionLabels) {
+ int col = natTable.getColumnPositionByX(event.x);
+ int row = natTable.getRowPositionByY(event.y);
+
+ return (col >= 0) && (row >= 0);
+ }
+
+ }, this::updateCursor);
+
+ // On moving the mouse out of the body area, restore the usual cursor
+ uiBindingRegistry.registerMouseMoveBinding(new IMouseEventMatcher() {
+ @Override
+ public boolean matches(NatTable natTable, MouseEvent event, LabelStack regionLabels) {
+ return (natTable != null && regionLabels == null);
+ }
+
+ }, this::reset);
+
+ // And same if it is moved out of the table altogether
+ uiBindingRegistry.registerMouseExitBinding(new IMouseEventMatcher() {
+ @Override
+ public boolean matches(NatTable natTable, MouseEvent event, LabelStack regionLabels) {
+ return true;
+ }
+
+ }, this::reset);
+ }
+
+ void updateCursor(NatTable table, MouseEvent event) {
+ int col = table.getColumnPositionByX(event.x);
+ int row = table.getRowPositionByY(event.y);
+ Object data = (col >= 0) && (row >= 0) ? table.getDataValueByPosition(col, row) : null;
+
+ if (!elementType.isInstance(data) || !isActiveHyperlink.test(elementType.cast(data))) {
+ // not a havigable hyperlink
+ table.setCursor(defaultCursor);
+ } else {
+ // are we over text?
+ if ((currentCellTextBounds == null) || (col != currentColumn) || (row != currentRow)) {
+ updateCellTextBounds(table, col, row);
+ }
+
+ if (currentCellTextBounds != null && currentCellTextBounds.contains(event.x, event.y)) {
+ table.setCursor(handCursor);
+ } else {
+ table.setCursor(defaultCursor);
+ }
+ }
+ }
+
+ void reset(NatTable table, MouseEvent event) {
+ currentColumn = -1;
+ currentRow = -1;
+ currentCellTextBounds = null;
+
+ table.setCursor(defaultCursor);
+ }
+
+ void updateCellTextBounds(NatTable table, int column, int row) {
+ currentColumn = column;
+ currentRow = row;
+ currentCellTextBounds = null;
+
+ ILayerCell cell = table.getCellByPosition(column, row);
+ if (cell != null) {
+ ICellPainter painter = table.getCellPainter(column, row, cell, table.getConfigRegistry());
+ if (painter instanceof LabelPainter) {
+ GC gc = new GC(table.getDisplay());
+ try {
+ currentCellTextBounds = ((LabelPainter) painter).getTextBounds(cell, gc, table.getConfigRegistry());
+ } finally {
+ gc.dispose();
+ }
+ } else {
+ // Assume the whole cell is text, then
+ currentCellTextBounds = cell.getBounds();
+ }
+ }
+ }
+}
diff --git a/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/src/org/eclipse/papyrus/infra/editor/welcome/nattable/internal/Activator.java b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/src/org/eclipse/papyrus/infra/editor/welcome/nattable/internal/Activator.java
new file mode 100644
index 00000000000..be2ea27bebf
--- /dev/null
+++ b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/src/org/eclipse/papyrus/infra/editor/welcome/nattable/internal/Activator.java
@@ -0,0 +1,60 @@
+/*****************************************************************************
+ * Copyright (c) 2015 Christian W. Damus 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:
+ * Christian W. Damus - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.infra.editor.welcome.nattable.internal;
+
+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.editor.welcome.nattable"; //$NON-NLS-1$
+
+ // The shared instance
+ private static Activator plugin;
+
+ public static LogHelper log;
+
+ /**
+ * The constructor
+ */
+ public Activator() {
+ }
+
+ @Override
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ plugin = this;
+ log = new LogHelper(this);
+ }
+
+ @Override
+ public void stop(BundleContext context) throws Exception {
+ plugin = null;
+ super.stop(context);
+ }
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static Activator getDefault() {
+ return plugin;
+ }
+
+}
diff --git a/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/src/org/eclipse/papyrus/infra/editor/welcome/nattable/internal/widgets/LanguagesTable.java b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/src/org/eclipse/papyrus/infra/editor/welcome/nattable/internal/widgets/LanguagesTable.java
new file mode 100644
index 00000000000..9b677ba672b
--- /dev/null
+++ b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/src/org/eclipse/papyrus/infra/editor/welcome/nattable/internal/widgets/LanguagesTable.java
@@ -0,0 +1,91 @@
+/*****************************************************************************
+ * Copyright (c) 2015 Christian W. Damus 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:
+ * Christian W. Damus - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.infra.editor.welcome.nattable.internal.widgets;
+
+import org.eclipse.nebula.widgets.nattable.data.IColumnPropertyAccessor;
+import org.eclipse.papyrus.infra.editor.welcome.internal.modelelements.LanguageObservable;
+import org.eclipse.papyrus.infra.editor.welcome.nattable.widgets.FormTable;
+import org.eclipse.swt.widgets.Composite;
+
+/**
+ * A table widget presenting languages in two columns for name and version.
+ */
+public class LanguagesTable extends FormTable<LanguageObservable> {
+
+ public LanguagesTable(Composite parent, int style) {
+ // No hyperlinks
+ super(parent, style, "Languages:", new LanguagesColumnAccessor(), "Name", "Version");
+ }
+
+ //
+ // Nested types
+ //
+
+ static class LanguagesColumnAccessor implements IColumnPropertyAccessor<LanguageObservable> {
+ static final String NAME = "name"; //$NON-NLS-1$
+ static final String VERSION = "version"; //$NON-NLS-1$
+
+ @Override
+ public int getColumnCount() {
+ return 2;
+ }
+
+ @Override
+ public Object getDataValue(LanguageObservable rowObject, int columnIndex) {
+ Object result;
+
+ switch (columnIndex) {
+ case 0:
+ result = rowObject.getName();
+ break;
+ case 1:
+ result = rowObject.getVersion();
+ break;
+ default:
+ throw new IndexOutOfBoundsException(Integer.toString(columnIndex));
+ }
+
+ return result;
+ }
+
+ @Override
+ public void setDataValue(LanguageObservable rowObject, int columnIndex, Object newValue) {
+ throw new IllegalStateException("not editable"); //$NON-NLS-1$
+ }
+
+ @Override
+ public String getColumnProperty(int columnIndex) {
+ switch (columnIndex) {
+ case 0:
+ return NAME;
+ case 1:
+ return VERSION;
+ default:
+ throw new IndexOutOfBoundsException(Integer.toString(columnIndex));
+ }
+ }
+
+ @Override
+ public int getColumnIndex(String propertyName) {
+ switch (propertyName) {
+ case NAME:
+ return 0;
+ case VERSION:
+ return 1;
+ default:
+ throw new IllegalArgumentException(propertyName);
+ }
+ }
+ }
+}
diff --git a/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/src/org/eclipse/papyrus/infra/editor/welcome/nattable/painter/LabelPainter.java b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/src/org/eclipse/papyrus/infra/editor/welcome/nattable/painter/LabelPainter.java
new file mode 100644
index 00000000000..cdc86d17ed0
--- /dev/null
+++ b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/src/org/eclipse/papyrus/infra/editor/welcome/nattable/painter/LabelPainter.java
@@ -0,0 +1,119 @@
+/*****************************************************************************
+ * Copyright (c) 2015 Christian W. Damus 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:
+ * Christian W. Damus - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.infra.editor.welcome.nattable.painter;
+
+import org.eclipse.nebula.widgets.nattable.config.IConfigRegistry;
+import org.eclipse.nebula.widgets.nattable.layer.cell.ILayerCell;
+import org.eclipse.nebula.widgets.nattable.painter.cell.ICellPainter;
+import org.eclipse.nebula.widgets.nattable.painter.cell.decorator.CellPainterDecorator;
+import org.eclipse.nebula.widgets.nattable.ui.util.CellEdgeEnum;
+import org.eclipse.swt.graphics.GC;
+import org.eclipse.swt.graphics.Rectangle;
+
+/**
+ * @author damus
+ *
+ */
+public class LabelPainter extends CellPainterDecorator {
+
+ public LabelPainter(CellEdgeEnum cellEdge) {
+ this(new LabelProviderTextPainter(), cellEdge, new LabelProviderImagePainter());
+ }
+
+ public LabelPainter(ICellPainter textPainter, CellEdgeEnum cellEdge) {
+ this(textPainter, cellEdge, new LabelProviderImagePainter());
+ }
+
+ public LabelPainter(CellEdgeEnum cellEdge, ICellPainter imagePainter) {
+ this(new LabelProviderTextPainter(), cellEdge, imagePainter);
+ }
+
+ public LabelPainter(ICellPainter textPainter, CellEdgeEnum cellEdge, ICellPainter imagePainter) {
+ super(textPainter, cellEdge, imagePainter);
+ }
+
+ public LabelPainter(ICellPainter textPainter, CellEdgeEnum cellEdge, ICellPainter imagePainter, boolean paintDecorationDependent) {
+ super(textPainter, cellEdge, imagePainter, paintDecorationDependent);
+ }
+
+ public LabelPainter(ICellPainter textPainter, CellEdgeEnum cellEdge, int spacing, ICellPainter imagePainter) {
+ super(textPainter, cellEdge, spacing, imagePainter);
+ }
+
+ public LabelPainter(ICellPainter textPainter, CellEdgeEnum cellEdge, int spacing, ICellPainter imagePainter, boolean paintDecorationDependent) {
+ super(textPainter, cellEdge, spacing, imagePainter, paintDecorationDependent);
+ }
+
+ public LabelPainter(ICellPainter textPainter, CellEdgeEnum cellEdge, int spacing, ICellPainter imagePainter, boolean paintDecorationDependent, boolean paintBg) {
+ super(textPainter, cellEdge, spacing, imagePainter, paintDecorationDependent, paintBg);
+ }
+
+ public Rectangle getTextBounds(ILayerCell cell, GC gc, IConfigRegistry configRegistry) {
+ Rectangle cellBounds = cell.getBounds();
+
+ int imageWidth = getDecoratorCellPainter().getPreferredWidth(cell, gc, configRegistry);
+ int imageHeight = getDecoratorCellPainter().getPreferredHeight(cell, gc, configRegistry);
+
+ // grab any extra space:
+ int preferredWidth = getBaseCellPainter().getPreferredWidth(cell, gc, configRegistry);
+ int preferredHeight = getBaseCellPainter().getPreferredHeight(cell, gc, configRegistry);
+
+ Rectangle result = null;
+
+ switch (getCellEdge()) {
+ case LEFT:
+ result = new Rectangle(cellBounds.x + imageWidth + getSpacing(),
+ cellBounds.y, preferredWidth, cellBounds.height);
+ break;
+ case RIGHT:
+ result = new Rectangle(cellBounds.x, cellBounds.y, preferredWidth, cellBounds.height);
+ break;
+ case TOP:
+ result = new Rectangle(cellBounds.x,
+ cellBounds.y + imageHeight + getSpacing(),
+ cellBounds.width, preferredHeight);
+ break;
+ case BOTTOM:
+ result = new Rectangle(cellBounds.x, cellBounds.y, cellBounds.width, preferredHeight);
+ break;
+ case TOP_LEFT:
+ result = new Rectangle(cellBounds.x + imageWidth + getSpacing(),
+ cellBounds.y + imageHeight + getSpacing(),
+ preferredWidth, preferredHeight);
+ break;
+ case TOP_RIGHT:
+ result = new Rectangle(cellBounds.x,
+ cellBounds.y + imageHeight + getSpacing(),
+ preferredWidth, preferredHeight);
+ break;
+ case BOTTOM_LEFT:
+ result = new Rectangle(cellBounds.x + imageWidth + getSpacing(),
+ cellBounds.y, preferredWidth, preferredHeight);
+ break;
+ case BOTTOM_RIGHT:
+ result = new Rectangle(cellBounds.x, cellBounds.y, preferredWidth, preferredHeight);
+ break;
+ case NONE:
+ break;
+ }
+
+ if (result != null) {
+ // Crop to the actual cell bounds
+ result = result.intersection(cellBounds);
+ }
+
+ return result;
+ }
+
+}
diff --git a/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/src/org/eclipse/papyrus/infra/editor/welcome/nattable/painter/LabelProviderImagePainter.java b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/src/org/eclipse/papyrus/infra/editor/welcome/nattable/painter/LabelProviderImagePainter.java
new file mode 100644
index 00000000000..048820b9b29
--- /dev/null
+++ b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/src/org/eclipse/papyrus/infra/editor/welcome/nattable/painter/LabelProviderImagePainter.java
@@ -0,0 +1,52 @@
+/*****************************************************************************
+ * Copyright (c) 2015 Christian W. Damus 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:
+ * Christian W. Damus - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.infra.editor.welcome.nattable.painter;
+
+import org.eclipse.core.databinding.observable.value.IObservableValue;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.nebula.widgets.nattable.config.IConfigRegistry;
+import org.eclipse.nebula.widgets.nattable.layer.cell.ILayerCell;
+import org.eclipse.nebula.widgets.nattable.painter.cell.ImagePainter;
+import org.eclipse.papyrus.infra.editor.welcome.nattable.ServiceConfigAttributes;
+import org.eclipse.papyrus.infra.services.labelprovider.service.LabelProviderService;
+import org.eclipse.swt.graphics.Image;
+
+/**
+ * An image painter that obtains images from the {@link LabelProviderService} registered
+ * in the NatTable configuration registry.
+ */
+public class LabelProviderImagePainter extends ImagePainter {
+
+ public LabelProviderImagePainter() {
+ super();
+ }
+
+ public LabelProviderImagePainter(boolean paintBg) {
+ super(null, paintBg);
+ }
+
+ @Override
+ protected Image getImage(ILayerCell cell, IConfigRegistry configRegistry) {
+ Object dataValue = cell.getDataValue();
+
+ if (dataValue instanceof IObservableValue<?>) {
+ dataValue = ((IObservableValue<?>) dataValue).getValue();
+ }
+
+ LabelProviderService labelService = ServiceConfigAttributes.getService(LabelProviderService.class, configRegistry, cell);
+ ILabelProvider labelProvider = (dataValue == null) ? labelService.getLabelProvider() : labelService.getLabelProvider(dataValue);
+
+ return labelProvider.getImage(dataValue);
+ }
+}
diff --git a/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/src/org/eclipse/papyrus/infra/editor/welcome/nattable/painter/LabelProviderTextPainter.java b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/src/org/eclipse/papyrus/infra/editor/welcome/nattable/painter/LabelProviderTextPainter.java
new file mode 100644
index 00000000000..671337988b4
--- /dev/null
+++ b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/src/org/eclipse/papyrus/infra/editor/welcome/nattable/painter/LabelProviderTextPainter.java
@@ -0,0 +1,77 @@
+/*****************************************************************************
+ * Copyright (c) 2015 Christian W. Damus 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:
+ * Christian W. Damus - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.infra.editor.welcome.nattable.painter;
+
+import org.eclipse.core.databinding.observable.value.IObservableValue;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.nebula.widgets.nattable.config.IConfigRegistry;
+import org.eclipse.nebula.widgets.nattable.layer.cell.ILayerCell;
+import org.eclipse.nebula.widgets.nattable.painter.cell.TextPainter;
+import org.eclipse.papyrus.infra.editor.welcome.nattable.ServiceConfigAttributes;
+import org.eclipse.papyrus.infra.services.labelprovider.service.LabelProviderService;
+
+/**
+ * A text painter that obtains text labels from the {@link LabelProviderService} registered
+ * in the NatTable configuration registry.
+ */
+public class LabelProviderTextPainter extends TextPainter {
+
+ public LabelProviderTextPainter() {
+ super();
+ }
+
+ public LabelProviderTextPainter(boolean wrapText, boolean paintBg, boolean calculateByTextLength, boolean calculateByTextHeight) {
+ super(wrapText, paintBg, calculateByTextLength, calculateByTextHeight);
+ }
+
+ public LabelProviderTextPainter(boolean wrapText, boolean paintBg, boolean calculate) {
+ super(wrapText, paintBg, calculate);
+ }
+
+ public LabelProviderTextPainter(boolean wrapText, boolean paintBg, int spacing, boolean calculateByTextLength, boolean calculateByTextHeight) {
+ super(wrapText, paintBg, spacing, calculateByTextLength, calculateByTextHeight);
+ }
+
+ public LabelProviderTextPainter(boolean wrapText, boolean paintBg, int spacing, boolean calculate) {
+ super(wrapText, paintBg, spacing, calculate);
+ }
+
+ public LabelProviderTextPainter(boolean wrapText, boolean paintBg, int spacing) {
+ super(wrapText, paintBg, spacing);
+ }
+
+ public LabelProviderTextPainter(boolean wrapText, boolean paintBg) {
+ super(wrapText, paintBg);
+ }
+
+ @Override
+ protected String convertDataType(ILayerCell cell, IConfigRegistry configRegistry) {
+ String result;
+ Object dataValue = cell.getDataValue();
+ if (dataValue instanceof String) {
+ result = (String) dataValue;
+ } else {
+ if (dataValue instanceof IObservableValue<?>) {
+ dataValue = ((IObservableValue<?>) dataValue).getValue();
+ }
+
+ LabelProviderService labelService = ServiceConfigAttributes.getService(LabelProviderService.class, configRegistry, cell);
+ ILabelProvider labelProvider = (dataValue == null) ? labelService.getLabelProvider() : labelService.getLabelProvider(dataValue);
+
+ result = labelProvider.getText(dataValue);
+ }
+
+ return result;
+ }
+}
diff --git a/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/src/org/eclipse/papyrus/infra/editor/welcome/nattable/sorting/ColumnHeaderHelper.java b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/src/org/eclipse/papyrus/infra/editor/welcome/nattable/sorting/ColumnHeaderHelper.java
new file mode 100644
index 00000000000..6f6072be724
--- /dev/null
+++ b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/src/org/eclipse/papyrus/infra/editor/welcome/nattable/sorting/ColumnHeaderHelper.java
@@ -0,0 +1,157 @@
+/*****************************************************************************
+ * Copyright (c) 2015 Christian W. Damus 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:
+ * Christian W. Damus - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.infra.editor.welcome.nattable.sorting;
+
+import java.text.Collator;
+import java.util.Comparator;
+
+import org.eclipse.core.databinding.observable.value.IObservableValue;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.nebula.widgets.nattable.config.CellConfigAttributes;
+import org.eclipse.nebula.widgets.nattable.config.IConfigRegistry;
+import org.eclipse.nebula.widgets.nattable.data.IColumnPropertyAccessor;
+import org.eclipse.nebula.widgets.nattable.data.IDataProvider;
+import org.eclipse.nebula.widgets.nattable.extension.glazedlists.GlazedListsSortModel;
+import org.eclipse.nebula.widgets.nattable.grid.GridRegion;
+import org.eclipse.nebula.widgets.nattable.grid.data.DefaultColumnHeaderDataProvider;
+import org.eclipse.nebula.widgets.nattable.grid.layer.ColumnHeaderLayer;
+import org.eclipse.nebula.widgets.nattable.layer.DataLayer;
+import org.eclipse.nebula.widgets.nattable.layer.ILayer;
+import org.eclipse.nebula.widgets.nattable.layer.cell.ColumnOverrideLabelAccumulator;
+import org.eclipse.nebula.widgets.nattable.painter.cell.ICellPainter;
+import org.eclipse.nebula.widgets.nattable.selection.SelectionLayer;
+import org.eclipse.nebula.widgets.nattable.sort.ISortModel;
+import org.eclipse.nebula.widgets.nattable.sort.SortConfigAttributes;
+import org.eclipse.nebula.widgets.nattable.sort.SortHeaderLayer;
+import org.eclipse.nebula.widgets.nattable.sort.config.SingleClickSortConfiguration;
+import org.eclipse.nebula.widgets.nattable.sort.painter.SortableHeaderTextPainter;
+import org.eclipse.nebula.widgets.nattable.style.DisplayMode;
+import org.eclipse.nebula.widgets.nattable.style.IStyle;
+import org.eclipse.nebula.widgets.nattable.ui.util.CellEdgeEnum;
+import org.eclipse.papyrus.infra.editor.welcome.nattable.ServiceConfigAttributes;
+import org.eclipse.papyrus.infra.services.labelprovider.service.LabelProviderService;
+
+import ca.odell.glazedlists.SortedList;
+
+/**
+ * A helper utility for the configuration of sorting a NatTable that renders a
+ * SWT Forms-compatible flat presentation.
+ */
+public class ColumnHeaderHelper<T> {
+ private final IConfigRegistry configRegistry;
+
+ private final ILayer viewportLayer;
+ private final SelectionLayer selectionLayer;
+
+ private IColumnPropertyAccessor<T> columnAccessor;
+ private DataLayer headerData;
+ private SortHeaderLayer<T> sortHeaders;
+
+ /**
+ * Initializes me.
+ *
+ * @param configRegistry
+ * the NatTable configuration registry
+ * @param viewportLayer
+ * the viewport layer to track for positioning of header cells
+ * @param selectionLayer
+ * the selection layer in the table body
+ */
+ public ColumnHeaderHelper(IConfigRegistry configRegistry, ILayer viewportLayer, SelectionLayer selectionLayer) {
+ super();
+
+ this.configRegistry = configRegistry;
+ this.viewportLayer = viewportLayer;
+ this.selectionLayer = selectionLayer;
+ }
+
+ /**
+ * Creates the header layer. <b>Note</b> that this must be done exactly once, as the returned
+ * layer and other parts of it are retained for follow-up work.
+ *
+ * @param data
+ * the sorted Glazed-list backing store of the table
+ * @param columnAccessor
+ * the column accessor describing the columns to be presented
+ * @param columnHeadings
+ * the localized heading titles corresponding to each column
+ *
+ * @return the column header layer
+ */
+ public ILayer createHeaderLayer(SortedList<T> data, IColumnPropertyAccessor<T> columnAccessor, String... columnHeadings) {
+ this.columnAccessor = columnAccessor;
+ IDataProvider headerProvider = new DefaultColumnHeaderDataProvider(columnHeadings);
+ headerData = new DataLayer(headerProvider);
+ ColumnHeaderLayer headers = new ColumnHeaderLayer(headerData, viewportLayer, selectionLayer);
+ ISortModel sortModel = new GlazedListsSortModel<>(data, columnAccessor, configRegistry, headerData);
+ sortHeaders = new SortHeaderLayer<>(headers, sortModel, false);
+ return sortHeaders;
+ }
+
+ /**
+ * Configures the header layer {@linkplain #createHeaderLayer previously created} for sorting
+ * control behavior.
+ *
+ * @see #createHeaderLayer(SortedList, IColumnPropertyAccessor, String...)
+ */
+ public void configureSorting() {
+ ColumnOverrideLabelAccumulator labelAccumulator = new ColumnOverrideLabelAccumulator(headerData);
+ headerData.setConfigLabelAccumulator(labelAccumulator);
+
+ for (int i = 0; i < columnAccessor.getColumnCount(); i++) {
+ String label = sortLabel(i);
+ labelAccumulator.registerColumnOverrides(i, label);
+ configRegistry.registerConfigAttribute(SortConfigAttributes.SORT_COMPARATOR, getByLabelOrdering(), DisplayMode.NORMAL, label);
+ }
+ }
+
+ /**
+ * Configures the visual styling of the header layer {@linkplain #createHeaderLayer previously created}
+ * for presentation in a SWT Forms UI with a flat appearance.
+ *
+ * @see #createHeaderLayer(SortedList, IColumnPropertyAccessor, String...)
+ */
+ public void configureHeaders(ICellPainter cellPainter, IStyle style) {
+ sortHeaders.addConfiguration(new SingleClickSortConfiguration(new SortableHeaderTextPainter(cellPainter, CellEdgeEnum.LEFT, true, 3, true)));
+ configRegistry.registerConfigAttribute(CellConfigAttributes.CELL_PAINTER, cellPainter, DisplayMode.NORMAL, GridRegion.COLUMN_HEADER);
+ configRegistry.registerConfigAttribute(CellConfigAttributes.CELL_STYLE, style, DisplayMode.NORMAL, GridRegion.COLUMN_HEADER);
+ for (int i = 0; i < columnAccessor.getColumnCount(); i++) {
+ String label = sortLabel(i);
+ configRegistry.registerConfigAttribute(CellConfigAttributes.CELL_PAINTER, cellPainter, DisplayMode.NORMAL, label);
+ configRegistry.registerConfigAttribute(CellConfigAttributes.CELL_STYLE, style, DisplayMode.NORMAL, label);
+ }
+ }
+
+ String sortLabel(int columnIndex) {
+ return sortLabel(columnAccessor.getColumnProperty(columnIndex));
+ }
+
+ static String sortLabel(String propertyName) {
+ return "sortBy:" + propertyName;
+ }
+
+ private Comparator<IObservableValue<?>> getByLabelOrdering() {
+ Collator collator = Collator.getInstance();
+ collator.setStrength(Collator.PRIMARY);
+ return (a, b) -> collator.compare(getLabel(a), getLabel(b));
+ }
+
+ private String getLabel(IObservableValue<?> observable) {
+ LabelProviderService labels = ServiceConfigAttributes.getService(LabelProviderService.class, configRegistry, DisplayMode.NORMAL);
+ Object value = (observable == null) ? null : observable.getValue();
+ ILabelProvider labelProvider = (value == null) ? null : labels.getLabelProvider(observable);
+ return (labelProvider == null) ? null : labelProvider.getText(value);
+ }
+
+}
diff --git a/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/src/org/eclipse/papyrus/infra/editor/welcome/nattable/sorting/EventListObservableAdapter.java b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/src/org/eclipse/papyrus/infra/editor/welcome/nattable/sorting/EventListObservableAdapter.java
new file mode 100644
index 00000000000..5145cb4aeba
--- /dev/null
+++ b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/src/org/eclipse/papyrus/infra/editor/welcome/nattable/sorting/EventListObservableAdapter.java
@@ -0,0 +1,198 @@
+/*****************************************************************************
+ * Copyright (c) 2015 Christian W. Damus 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:
+ * Christian W. Damus - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.infra.editor.welcome.nattable.sorting;
+
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.stream.Stream;
+
+import org.eclipse.core.databinding.observable.ChangeEvent;
+import org.eclipse.core.databinding.observable.IChangeListener;
+import org.eclipse.core.databinding.observable.IObservable;
+import org.eclipse.core.databinding.observable.list.IListChangeListener;
+import org.eclipse.core.databinding.observable.list.IObservableList;
+import org.eclipse.core.databinding.observable.list.ListChangeEvent;
+
+import ca.odell.glazedlists.AbstractEventList;
+import ca.odell.glazedlists.event.ListEventPublisher;
+import ca.odell.glazedlists.util.concurrent.LockFactory;
+
+/**
+ * @author damus
+ *
+ */
+public class EventListObservableAdapter<E> extends AbstractEventList<E> {
+ private final IChangeListener elementListener;
+ private final IListChangeListener<E> listener;
+ private IObservableList<E> delegate;
+
+ public EventListObservableAdapter() {
+ this(null);
+ }
+
+ public EventListObservableAdapter(ListEventPublisher publisher) {
+ super(publisher);
+
+ this.readWriteLock = LockFactory.DEFAULT.createReadWriteLock();
+
+ this.listener = new IListChangeListener<E>() {
+ @Override
+ public void handleListChange(ListChangeEvent<? extends E> event) {
+ readWriteLock.readLock().lock();
+ try {
+ updates.beginEvent();
+ try {
+ Stream.of(event.diff.getDifferences()).forEach(entry -> {
+ if (entry.isAddition()) {
+ updates.elementInserted(entry.getPosition(), entry.getElement());
+ connect(entry.getElement());
+ } else {
+ disconnect(entry.getElement());
+ updates.elementDeleted(entry.getPosition(), entry.getElement());
+ }
+ });
+ } finally {
+ updates.commitEvent();
+ }
+ } finally {
+ readWriteLock.readLock().unlock();
+ }
+ }
+ };
+
+ this.elementListener = new IChangeListener() {
+
+ @Override
+ public void handleChange(ChangeEvent event) {
+ readWriteLock.readLock().lock();
+ try {
+ updates.beginEvent();
+ try {
+ @SuppressWarnings("unchecked")
+ E element = (E) event.getObservable();
+ updates.elementUpdated(indexOf(element), element, element);
+ } finally {
+ updates.commitEvent();
+ }
+ } finally {
+ readWriteLock.readLock().unlock();
+ }
+ }
+ };
+ }
+
+ public synchronized void setDelegate(IObservableList<E> newDelegate) {
+ IObservableList<E> oldDelegate = this.delegate;
+ this.delegate = newDelegate;
+
+ if (oldDelegate != null) {
+ oldDelegate.removeListChangeListener(listener);
+ }
+ if (newDelegate != null) {
+ newDelegate.addListChangeListener(listener);
+ }
+
+ readWriteLock.readLock().lock();
+ try {
+ updates.beginEvent();
+ try {
+ AtomicInteger i = new AtomicInteger();
+ if (oldDelegate != null) {
+ // Report updates for elements that have correspondents in the new list
+ oldDelegate.subList(0, (newDelegate == null) ? 0 : newDelegate.size()).forEach(e -> {
+ E newE = newDelegate.get(i.get());
+ disconnect(e);
+ updates.elementUpdated(i.getAndIncrement(), e, newE);
+ connect(newE);
+ });
+
+ // Report deletions for any further elements
+ if (oldDelegate.size() < i.get()) {
+ oldDelegate.forEach(e -> {
+ disconnect(e);
+ updates.elementDeleted(i.getAndIncrement(), e);
+ });
+ }
+ }
+
+ if (newDelegate != null) {
+ if ((newDelegate.size() > i.get())) {
+ // Report insertions for any further new elements
+ newDelegate.listIterator(i.get()).forEachRemaining(e -> {
+ updates.elementInserted(i.getAndIncrement(), e);
+ connect(e);
+ });
+ }
+ }
+ } finally {
+ updates.commitEvent();
+ }
+ } finally {
+ readWriteLock.readLock().unlock();
+ }
+ }
+
+ @Override
+ public void dispose() {
+ if (delegate != null) {
+ delegate.removeListChangeListener(listener);
+ }
+ }
+
+ @Override
+ public int size() {
+ return (delegate == null) ? 0 : delegate.size();
+ }
+
+ @Override
+ public E get(int index) {
+ checkDelegate();
+ return delegate.get(index);
+ }
+
+ private void checkDelegate() {
+ if (delegate == null) {
+ throw new IndexOutOfBoundsException();
+ }
+ }
+
+ @Override
+ public void add(int index, E value) {
+ checkDelegate();
+ delegate.add(index, value);
+ }
+
+ @Override
+ public E set(int index, E value) {
+ checkDelegate();
+ return delegate.set(index, value);
+ }
+
+ @Override
+ public E remove(int index) {
+ checkDelegate();
+ return delegate.remove(index);
+ }
+
+ private void connect(E newElement) {
+ if (newElement instanceof IObservable) {
+ ((IObservable) newElement).addChangeListener(elementListener);
+ }
+ }
+
+ private void disconnect(E newElement) {
+ if (newElement instanceof IObservable) {
+ ((IObservable) newElement).removeChangeListener(elementListener);
+ }
+ }
+}
diff --git a/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/src/org/eclipse/papyrus/infra/editor/welcome/nattable/sorting/PapyrusGlazedListEventsLayer.java b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/src/org/eclipse/papyrus/infra/editor/welcome/nattable/sorting/PapyrusGlazedListEventsLayer.java
new file mode 100644
index 00000000000..a8bb13c1439
--- /dev/null
+++ b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/src/org/eclipse/papyrus/infra/editor/welcome/nattable/sorting/PapyrusGlazedListEventsLayer.java
@@ -0,0 +1,159 @@
+/*****************************************************************************
+ * Copyright (c) 2015 Christian W. Damus 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:
+ * Christian W. Damus - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.infra.editor.welcome.nattable.sorting;
+
+import org.eclipse.nebula.widgets.nattable.extension.glazedlists.GlazedListsEventLayer;
+import org.eclipse.nebula.widgets.nattable.layer.AbstractLayerTransform;
+import org.eclipse.nebula.widgets.nattable.layer.IUniqueIndexLayer;
+import org.eclipse.nebula.widgets.nattable.layer.event.RowStructuralRefreshEvent;
+import org.eclipse.nebula.widgets.nattable.layer.event.VisualRefreshEvent;
+import org.eclipse.swt.widgets.Display;
+
+import ca.odell.glazedlists.EventList;
+import ca.odell.glazedlists.event.ListEvent;
+import ca.odell.glazedlists.event.ListEventListener;
+
+/**
+ * An alternative to the {@link GlazedListsEventLayer} that doesn't run a thread
+ * continuously checking for updates every 100 milliseconds, but instead posts
+ * 100-millisecond deferred updates that coalesce events in the interim.
+ */
+public class PapyrusGlazedListEventsLayer<E> extends AbstractLayerTransform implements IUniqueIndexLayer, ListEventListener<E> {
+
+ private final IUniqueIndexLayer underlyingLayer;
+ private EventList<? extends E> eventList;
+
+ private volatile boolean active;
+ private volatile Update pendingUpdate;
+
+ /**
+ * Initializes me.
+ *
+ * @param underlyingLayer
+ * the layer to which I post refresh events
+ * @param eventList
+ * the event list from which the {@code underlyingLayer} obtains its data
+ */
+ public PapyrusGlazedListEventsLayer(IUniqueIndexLayer underlyingLayer, EventList<? extends E> eventList) {
+ super(underlyingLayer);
+ this.underlyingLayer = underlyingLayer;
+ this.eventList = eventList;
+
+ this.eventList.addListEventListener(this);
+ }
+
+ @Override
+ public void dispose() {
+ super.dispose();
+
+ if (eventList != null) {
+ eventList.removeListEventListener(this);
+ eventList = null;
+ }
+ }
+
+ /**
+ * Queries whether I am currently reactiving to changes in the list that I am observing.
+ *
+ * @return whether I am active
+ */
+ public boolean isActive() {
+ return active;
+ }
+
+ /**
+ * Sets I am currently reactiving to changes in the list that I am observing.
+ * It is useful to deactivate me when initiating bulk operations on the list
+ * to avoid useless work when a full table refresh will follow, anyways.
+ *
+ * @param active
+ * whether I am active
+ */
+ public void setActive(boolean active) {
+ this.active = active;
+ }
+
+ //
+ // Event handling
+ //
+
+ @Override
+ public void listChanged(ListEvent<E> event) {
+ // Check whether we even want to process anything
+ if (!isActive()) {
+ return;
+ }
+
+ boolean structure = false;
+
+ out: while (event.next()) {
+ int eventType = event.getType();
+ switch (eventType) {
+ case ListEvent.DELETE:
+ case ListEvent.INSERT:
+ structure = true;
+ Update update = pendingUpdate;
+ if (update != null) {
+ update.structuralUpdate = structure;
+ }
+ break out;
+ }
+ }
+
+ if (pendingUpdate == null) {
+ // May have missed the boat
+ pendingUpdate = new Update();
+ pendingUpdate.structuralUpdate = structure;
+ Display.getDefault().timerExec(100, pendingUpdate);
+ }
+ }
+
+ //
+ // IUniqueIndexLayer protocol
+ //
+
+ @Override
+ public int getColumnPositionByIndex(int columnIndex) {
+ return this.underlyingLayer.getColumnPositionByIndex(columnIndex);
+ }
+
+ @Override
+ public int getRowPositionByIndex(int rowIndex) {
+ return this.underlyingLayer.getRowPositionByIndex(rowIndex);
+ }
+
+ //
+ // Nested types
+ //
+
+ private class Update implements Runnable {
+ volatile boolean structuralUpdate;
+
+ @Override
+ public void run() {
+ if (pendingUpdate == this) {
+ pendingUpdate = null;
+
+ // Check that we haven't been disposed since posting the update
+ if (eventList != null) {
+ if (structuralUpdate) {
+ fireLayerEvent(new RowStructuralRefreshEvent(getUnderlyingLayer()));
+ } else {
+ fireLayerEvent(new VisualRefreshEvent(getUnderlyingLayer()));
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/src/org/eclipse/papyrus/infra/editor/welcome/nattable/widgets/FormTable.java b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/src/org/eclipse/papyrus/infra/editor/welcome/nattable/widgets/FormTable.java
new file mode 100644
index 00000000000..615f360c423
--- /dev/null
+++ b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/src/org/eclipse/papyrus/infra/editor/welcome/nattable/widgets/FormTable.java
@@ -0,0 +1,230 @@
+/*****************************************************************************
+ * Copyright (c) 2015 Christian W. Damus 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:
+ * Christian W. Damus - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.infra.editor.welcome.nattable.widgets;
+
+import org.eclipse.core.databinding.observable.list.IObservableList;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jface.layout.GridDataFactory;
+import org.eclipse.jface.resource.JFaceResources;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.nebula.widgets.nattable.NatTable;
+import org.eclipse.nebula.widgets.nattable.config.CellConfigAttributes;
+import org.eclipse.nebula.widgets.nattable.config.ConfigRegistry;
+import org.eclipse.nebula.widgets.nattable.config.DefaultNatTableStyleConfiguration;
+import org.eclipse.nebula.widgets.nattable.config.IConfigRegistry;
+import org.eclipse.nebula.widgets.nattable.data.IColumnPropertyAccessor;
+import org.eclipse.nebula.widgets.nattable.data.IDataProvider;
+import org.eclipse.nebula.widgets.nattable.extension.glazedlists.GlazedListsDataProvider;
+import org.eclipse.nebula.widgets.nattable.grid.GridRegion;
+import org.eclipse.nebula.widgets.nattable.layer.CompositeLayer;
+import org.eclipse.nebula.widgets.nattable.layer.DataLayer;
+import org.eclipse.nebula.widgets.nattable.layer.ILayer;
+import org.eclipse.nebula.widgets.nattable.painter.cell.ICellPainter;
+import org.eclipse.nebula.widgets.nattable.selection.SelectionLayer;
+import org.eclipse.nebula.widgets.nattable.style.CellStyleAttributes;
+import org.eclipse.nebula.widgets.nattable.style.DisplayMode;
+import org.eclipse.nebula.widgets.nattable.style.HorizontalAlignmentEnum;
+import org.eclipse.nebula.widgets.nattable.style.Style;
+import org.eclipse.nebula.widgets.nattable.ui.util.CellEdgeEnum;
+import org.eclipse.nebula.widgets.nattable.viewport.ViewportLayer;
+import org.eclipse.papyrus.infra.core.editor.IMultiDiagramEditor;
+import org.eclipse.papyrus.infra.core.sasheditor.contentprovider.IPageManager;
+import org.eclipse.papyrus.infra.core.services.ServiceException;
+import org.eclipse.papyrus.infra.editor.welcome.nattable.ServiceConfigAttributes;
+import org.eclipse.papyrus.infra.editor.welcome.nattable.painter.LabelPainter;
+import org.eclipse.papyrus.infra.editor.welcome.nattable.painter.LabelProviderImagePainter;
+import org.eclipse.papyrus.infra.editor.welcome.nattable.painter.LabelProviderTextPainter;
+import org.eclipse.papyrus.infra.editor.welcome.nattable.sorting.ColumnHeaderHelper;
+import org.eclipse.papyrus.infra.editor.welcome.nattable.sorting.EventListObservableAdapter;
+import org.eclipse.papyrus.infra.editor.welcome.nattable.sorting.PapyrusGlazedListEventsLayer;
+import org.eclipse.papyrus.infra.emf.utils.EMFHelper;
+import org.eclipse.papyrus.infra.emf.utils.ServiceUtilsForEObject;
+import org.eclipse.papyrus.infra.services.labelprovider.service.LabelProviderService;
+import org.eclipse.papyrus.infra.services.navigation.service.NavigationService;
+import org.eclipse.papyrus.views.properties.modelelement.DataSource;
+import org.eclipse.papyrus.views.properties.modelelement.ModelElement;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+
+import ca.odell.glazedlists.SortedList;
+
+/**
+ * A {@link NatTable} composite with a "flat" presentation suitable for use in an SWT Forms context.
+ */
+public abstract class FormTable<E> extends Composite {
+ private final IConfigRegistry configRegistry;
+ private final NatTable table;
+ private final EventListObservableAdapter<E> backingList;
+ private final PapyrusGlazedListEventsLayer<E> eventLayer;
+
+ private String propertyPath;
+ private DataSource input;
+
+ public FormTable(Composite parent, int style, IColumnPropertyAccessor<E> columnAccessor, String... columnTitle) {
+ this(parent, style, null, columnAccessor, columnTitle);
+ }
+
+ public FormTable(Composite parent, int style, String label, IColumnPropertyAccessor<E> columnAccessor, String... columnTitle) {
+ super(parent, style);
+
+ setBackground(parent.getBackground());
+ setBackgroundMode(SWT.INHERIT_DEFAULT);
+
+ setLayout(new GridLayout());
+
+ configRegistry = new ConfigRegistry();
+
+ // Optional label for the table
+ if ((label != null) && !label.isEmpty()) {
+ Label _label = new Label(parent, SWT.LEFT);
+ _label.setText(label);
+ }
+
+ // Body of the table
+ backingList = new EventListObservableAdapter<>();
+ SortedList<E> sortedDiagrams = new SortedList<>(backingList, null);
+ IDataProvider dataProvider = new GlazedListsDataProvider<>(sortedDiagrams, columnAccessor);
+ DataLayer bodyDataLayer = new DataLayer(dataProvider);
+ eventLayer = new PapyrusGlazedListEventsLayer<>(bodyDataLayer, backingList);
+ SelectionLayer selectionLayer = new SelectionLayer(eventLayer, false);
+ addConfigurations(selectionLayer);
+ ViewportLayer viewportLayer = new ViewportLayer(selectionLayer);
+ viewportLayer.setRegionName(GridRegion.BODY);
+
+ // Column headers
+ ColumnHeaderHelper<E> headerHelper = new ColumnHeaderHelper<>(configRegistry, viewportLayer, selectionLayer);
+ ILayer headers = headerHelper.createHeaderLayer(sortedDiagrams, columnAccessor, columnTitle);
+
+ // Arrange the headers and body together
+ CompositeLayer composition = new CompositeLayer(1, 2);
+ composition.setChildLayer(GridRegion.COLUMN_HEADER, headers, 0, 0);
+ composition.setChildLayer(GridRegion.BODY, viewportLayer, 0, 1);
+
+ // Sorting configuration
+ headerHelper.configureSorting();
+
+ //
+ // Presentation configuration
+ //
+ ICellPainter commonPainter = new LabelProviderTextPainter(false, true, 3, true);
+ ICellPainter iconAndTextPainter = new LabelPainter(commonPainter, CellEdgeEnum.LEFT, new LabelProviderImagePainter());
+
+ // Headers
+ Style headerStyle = new Style();
+ headerStyle.setAttributeValue(CellStyleAttributes.BACKGROUND_COLOR, parent.getBackground());
+ headerStyle.setAttributeValue(CellStyleAttributes.HORIZONTAL_ALIGNMENT, HorizontalAlignmentEnum.LEFT);
+ headerStyle.setAttributeValue(CellStyleAttributes.FONT, JFaceResources.getFont(JFaceResources.BANNER_FONT));
+ headerHelper.configureHeaders(commonPainter, headerStyle);
+
+ // Body
+ configRegistry.registerConfigAttribute(CellConfigAttributes.CELL_PAINTER, iconAndTextPainter, DisplayMode.NORMAL, GridRegion.BODY);
+ Style bodyStyle = new Style();
+ bodyStyle.setAttributeValue(CellStyleAttributes.BACKGROUND_COLOR, parent.getBackground());
+ bodyStyle.setAttributeValue(CellStyleAttributes.HORIZONTAL_ALIGNMENT, HorizontalAlignmentEnum.LEFT);
+ configureBodyStyle(bodyStyle);
+ configRegistry.registerConfigAttribute(CellConfigAttributes.CELL_STYLE, bodyStyle, DisplayMode.NORMAL, GridRegion.BODY);
+ configRegistry.registerConfigAttribute(CellConfigAttributes.RENDER_GRID_LINES, false);
+
+ table = new NatTable(parent, composition, false);
+ GridDataFactory.fillDefaults().grab(true, true).applyTo(table);
+ table.setConfigRegistry(configRegistry);
+ table.setBackground(parent.getBackground());
+ table.addConfiguration(new DefaultNatTableStyleConfiguration());
+ table.configure();
+ }
+
+ protected void addConfigurations(SelectionLayer selectionLayer) {
+ // Pass
+ }
+
+ protected void configureBodyStyle(Style bodyStyle) {
+ // Pass
+ }
+
+ /**
+ * Sets the qualified property name (including model element path) of the
+ * {@linkplain DataSource data-source} property to access. The referenced
+ * property must be an {@linkplain IObservableList observable list}.
+ *
+ * @param propertyPath
+ * the property path
+ */
+ public void setProperty(String propertyPath) {
+ this.propertyPath = propertyPath;
+ checkInput();
+ }
+
+ public String getProperty() {
+ return propertyPath;
+ }
+
+ /**
+ * Sets the input DataSource for this Property editor.
+ *
+ * @param input
+ */
+ public void setInput(DataSource input) {
+ this.input = input;
+ checkInput();
+ }
+
+ protected void checkInput() {
+ String propertyPath = getProperty();
+
+ if ((input != null) && (propertyPath != null)) {
+ String elementPath = propertyPath.substring(0, propertyPath.lastIndexOf(':'));
+ String propertyName = propertyPath.substring(elementPath.length() + 1);
+
+ ModelElement element = input.getModelElement(elementPath);
+
+ ServiceConfigAttributes.with(configRegistry, this::getService)
+ .register(LabelProviderService.class)
+ .register(NavigationService.class)
+ .register(IPageManager.class);
+ ServiceConfigAttributes.registerService(ISelectionProvider.class, configRegistry,
+ getService(IMultiDiagramEditor.class).getEditorSite().getSelectionProvider());
+
+ eventLayer.setActive(false);
+ try {
+ @SuppressWarnings("unchecked")
+ IObservableList<E> diagrams = (IObservableList<E>) element.getObservable(propertyName);
+ this.backingList.setDelegate(diagrams);
+ } finally {
+ eventLayer.setActive(true);
+ table.refresh();
+ }
+ }
+ }
+
+ /**
+ * @return the input DataSource for this Property editor
+ */
+ public DataSource getInput() {
+ return input;
+ }
+
+ protected EObject getModelElement() {
+ return EMFHelper.getEObject(input.getSelection().getFirstElement());
+ }
+
+ protected <S> S getService(Class<? extends S> serviceType) {
+ try {
+ return ServiceUtilsForEObject.getInstance().getService(serviceType, getModelElement());
+ } catch (ServiceException e) {
+ throw new IllegalStateException(e);
+ }
+ }
+}
diff --git a/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/src/org/eclipse/papyrus/infra/editor/welcome/nattable/widgets/HyperlinkTable.java b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/src/org/eclipse/papyrus/infra/editor/welcome/nattable/widgets/HyperlinkTable.java
new file mode 100644
index 00000000000..f268f4d4495
--- /dev/null
+++ b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome.nattable/src/org/eclipse/papyrus/infra/editor/welcome/nattable/widgets/HyperlinkTable.java
@@ -0,0 +1,53 @@
+/*****************************************************************************
+ * Copyright (c) 2015 Christian W. Damus 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:
+ * Christian W. Damus - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.infra.editor.welcome.nattable.widgets;
+
+import org.eclipse.core.databinding.observable.value.IObservableValue;
+import org.eclipse.nebula.widgets.nattable.data.IColumnPropertyAccessor;
+import org.eclipse.nebula.widgets.nattable.selection.SelectionLayer;
+import org.eclipse.nebula.widgets.nattable.style.CellStyleAttributes;
+import org.eclipse.nebula.widgets.nattable.style.Style;
+import org.eclipse.nebula.widgets.nattable.style.TextDecorationEnum;
+import org.eclipse.nebula.widgets.nattable.util.GUIHelper;
+import org.eclipse.papyrus.infra.editor.welcome.nattable.hyperlink.HyperlinkNavigationConfiguration;
+import org.eclipse.swt.widgets.Composite;
+
+/**
+ * A table of hyperlinks for objects. One or more columns may render as hyperlinks to
+ * diagrams, views, etc. Label-based sorting of columns is provided.
+ */
+public abstract class HyperlinkTable<E> extends FormTable<E> {
+ public HyperlinkTable(Composite parent, int style, IColumnPropertyAccessor<E> columnAccessor, String... columnTitle) {
+ this(parent, style, null, columnAccessor, columnTitle);
+ }
+
+ public HyperlinkTable(Composite parent, int style, String label, IColumnPropertyAccessor<E> columnAccessor, String... columnTitle) {
+ super(parent, style, label, columnAccessor, columnTitle);
+ }
+
+ @Override
+ protected void addConfigurations(SelectionLayer selectionLayer) {
+ selectionLayer.addConfiguration(new HyperlinkNavigationConfiguration<>(getParent(), IObservableValue.class, this::isActiveHyperlink));
+ }
+
+ @Override
+ protected void configureBodyStyle(Style bodyStyle) {
+ bodyStyle.setAttributeValue(CellStyleAttributes.FOREGROUND_COLOR, GUIHelper.COLOR_BLUE);
+ bodyStyle.setAttributeValue(CellStyleAttributes.TEXT_DECORATION, TextDecorationEnum.UNDERLINE);
+ }
+
+ protected boolean isActiveHyperlink(IObservableValue<?> value) {
+ return (value != null) && (value.getValue() != null);
+ }
+}
diff --git a/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/.classpath b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/.classpath
new file mode 100644
index 00000000000..50aae142c50
--- /dev/null
+++ b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/.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/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/.project b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/.project
new file mode 100644
index 00000000000..df264f6400e
--- /dev/null
+++ b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.papyrus.infra.editor.welcome</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/.settings/org.eclipse.jdt.core.prefs b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000000..8ddd9a88d57
--- /dev/null
+++ b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,296 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.format_block_comments=true
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true
+org.eclipse.jdt.core.formatter.comment.format_line_comments=true
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert
+org.eclipse.jdt.core.formatter.comment.line_length=260
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=false
+org.eclipse.jdt.core.formatter.join_wrapped_lines=false
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=260
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=5
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=false
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
diff --git a/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/.settings/org.eclipse.jdt.ui.prefs b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 00000000000..954281dbc31
--- /dev/null
+++ b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,68 @@
+cleanup.add_default_serial_version_id=true
+cleanup.add_generated_serial_version_id=false
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=true
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_missing_override_annotations_interface_methods=true
+cleanup.add_serial_version_id=false
+cleanup.always_use_blocks=true
+cleanup.always_use_parentheses_in_expressions=false
+cleanup.always_use_this_for_non_static_field_access=false
+cleanup.always_use_this_for_non_static_method_access=false
+cleanup.convert_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.correct_indentation=false
+cleanup.format_source_code=false
+cleanup.format_source_code_changes_only=false
+cleanup.insert_inferred_type_arguments=false
+cleanup.make_local_variable_final=true
+cleanup.make_parameters_final=false
+cleanup.make_private_fields_final=true
+cleanup.make_type_abstract_if_missing_method=false
+cleanup.make_variable_declarations_final=false
+cleanup.never_use_blocks=false
+cleanup.never_use_parentheses_in_expressions=true
+cleanup.organize_imports=false
+cleanup.qualify_static_field_accesses_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+cleanup.qualify_static_member_accesses_with_declaring_class=true
+cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.remove_private_constructors=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_casts=true
+cleanup.remove_unnecessary_nls_tags=true
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_blocks=true
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_lambda=true
+cleanup.use_parentheses_in_expressions=false
+cleanup.use_this_for_non_static_field_access=false
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=false
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_type_arguments=false
+cleanup_profile=_Papyrus
+cleanup_settings_version=2
+eclipse.preferences.version=1
+formatter_profile=_Papyrus
+formatter_settings_version=12
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.javadoc=true
+org.eclipse.jdt.ui.ondemandthreshold=99
+org.eclipse.jdt.ui.staticondemandthreshold=99
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\n * @return the ${bare_field_name}\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\n * @param ${param} the ${bare_field_name} to set\n */</template><template autoinsert\="false" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\n * Constructor.\n *\n * ${tags}\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/*****************************************************************************\n * Copyright (c) ${year} CEA LIST and others.\n * \n * All rights reserved. This program and the accompanying materials\n * are made available under the terms of the Eclipse Public License v1.0\n * which accompanies this distribution, and is available at\n * http\://www.eclipse.org/legal/epl-v10.html\n *\n * Contributors\:\n * CEA LIST - Initial API and implementation\n * \n *****************************************************************************/\n</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\n * @author ${user}\n *\n * ${tags}\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\n * \n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\n * ${tags}\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/**\n * ${see_to_overridden}\n *\n * ${tags}\n */</template><template autoinsert\="false" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\n * ${see_to_target}\n *\n * ${tags}\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\n${package_declaration}\n\n${typecomment}\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
diff --git a/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/META-INF/MANIFEST.MF b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..32798bbebe3
--- /dev/null
+++ b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/META-INF/MANIFEST.MF
@@ -0,0 +1,38 @@
+Manifest-Version: 1.0
+Export-Package: org.eclipse.papyrus.infra.editor.welcome,
+ org.eclipse.papyrus.infra.editor.welcome.internal;x-internal:=true,
+ org.eclipse.papyrus.infra.editor.welcome.internal.commands;x-internal:=true,
+ org.eclipse.papyrus.infra.editor.welcome.internal.constraints;x-internal:=true,
+ org.eclipse.papyrus.infra.editor.welcome.internal.impl;x-internal:=true,
+ org.eclipse.papyrus.infra.editor.welcome.internal.operations,
+ org.eclipse.papyrus.infra.editor.welcome.internal.modelelements;
+ x-friends:="org.eclipse.papyrus.infra.editor.welcome.nattable",
+ org.eclipse.papyrus.infra.editor.welcome.internal.widgets;x-internal:=true,
+ org.eclipse.papyrus.infra.editor.welcome.util
+Require-Bundle: org.eclipse.core.runtime;bundle-version="3.12.0",
+ org.eclipse.emf.ecore;visibility:=reexport,
+ org.eclipse.uml2.types;visibility:=reexport,
+ org.eclipse.uml2.common;visibility:=reexport,
+ org.eclipse.papyrus.infra.core;bundle-version="1.2.0",
+ org.eclipse.papyrus.infra.core.sasheditor;bundle-version="1.2.0",
+ org.eclipse.papyrus.infra.core.log;bundle-version="1.2.0",
+ org.eclipse.ui;bundle-version="3.100.0",
+ org.eclipse.ui.forms;bundle-version="3.7.0",
+ org.eclipse.papyrus.views.properties;bundle-version="1.2.0",
+ org.eclipse.papyrus.infra.constraints;bundle-version="1.2.0",
+ org.eclipse.papyrus.views.properties.model;bundle-version="1.2.0",
+ org.eclipse.ui.views.properties.tabbed;bundle-version="3.6.0",
+ org.eclipse.core.databinding;bundle-version="1.6.0",
+ org.eclipse.papyrus.infra.emf;bundle-version="1.2.0",
+ org.eclipse.emf.transaction;bundle-version="1.9.0",
+ org.eclipse.papyrus.infra.widgets;bundle-version="1.2.0"
+Bundle-Vendor: %providerName
+Bundle-ActivationPolicy: lazy
+Bundle-Version: 1.2.0.qualifier
+Bundle-ClassPath: .
+Bundle-Localization: plugin
+Bundle-Name: %pluginName
+Bundle-Activator: org.eclipse.papyrus.infra.editor.welcome.internal.Activator
+Bundle-ManifestVersion: 2
+Bundle-SymbolicName: org.eclipse.papyrus.infra.editor.welcome;singleton:=true
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
diff --git a/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/about.html b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/about.html
new file mode 100644
index 00000000000..dd3c089a94c
--- /dev/null
+++ b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/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>November 14, 2008</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> \ No newline at end of file
diff --git a/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/build.properties b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/build.properties
new file mode 100644
index 00000000000..63eb6d0f978
--- /dev/null
+++ b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/build.properties
@@ -0,0 +1,24 @@
+#
+# Copyright (c) 2015 Christian W. Damus 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:
+# Christian W. Damus - Initial API and implementation
+#
+
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml,\
+ icons/,\
+ about.html,\
+ plugin.properties,\
+ model/
+output.. = bin/
+src.includes = about.html
+source.. = src/,\
+ src-gen/
+bin.. = bin/
diff --git a/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/icons/full/editor16/welcome16.gif b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/icons/full/editor16/welcome16.gif
new file mode 100644
index 00000000000..b20cc784ae3
--- /dev/null
+++ b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/icons/full/editor16/welcome16.gif
Binary files differ
diff --git a/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/icons/full/obj16/layout.png b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/icons/full/obj16/layout.png
new file mode 100644
index 00000000000..4c50765e3d3
--- /dev/null
+++ b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/icons/full/obj16/layout.png
Binary files differ
diff --git a/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/model/environment.xmi b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/model/environment.xmi
new file mode 100644
index 00000000000..cc6650ddaab
--- /dev/null
+++ b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/model/environment.xmi
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="ASCII"?>
+<environment:Environment
+ xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:environment="http://www.eclipse.org/papyrus/properties/environment/0.9">
+ <constraintTypes
+ label="IsWelcomeElement"
+ constraintClass="org.eclipse.papyrus.infra.editor.welcome.internal.constraints.IsWelcomeElement"/>
+ <modelElementFactories
+ name="Welcome Factory"
+ factoryClass="org.eclipse.papyrus.infra.editor.welcome.internal.modelelements.WelcomeModelElementFactory"/>
+ <widgetTypes
+ label="Open View"
+ widgetClass="OpenViewLink"
+ namespace="//@namespaces.0"/>
+ <namespaces
+ name="ppew"
+ value="org.eclipse.papyrus.infra.editor.welcome.internal.widgets"/>
+</environment:Environment>
diff --git a/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/model/general/general.ctx b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/model/general/general.ctx
new file mode 100644
index 00000000000..217abd2a84d
--- /dev/null
+++ b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/model/general/general.ctx
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="ASCII"?>
+<contexts:Context xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:constraints="http://www.eclipse.org/papyrus/constraints/0.9" xmlns:contexts="http://www.eclipse.org/papyrus/properties/contexts/0.9" xmi:id="_MPALcI7eEeWNa5T2Agi7uA" name="welcome-general" label="General Editor Settings">
+ <tabs xmi:id="_SsfbQcElEeS_u7hIvAIReA" label="General" id="general" category="org.eclipse.papyrus" priority="75">
+ <sections xmi:id="_SsgCV8ElEeS_u7hIvAIReA" name="Single Page Layout" sectionFile="ui/SinglePageLayout.xwt">
+ <widget href="ui/SinglePageLayout.xwt#/"/>
+ </sections>
+ </tabs>
+ <tabs xmi:id="_R74MUJhuEeWbjrnVcTzZFw" label="Related Views" id="view-links" category="org.eclipse.papyrus" afterTab="_SsfbQcElEeS_u7hIvAIReA" priority="75">
+ <sections xmi:id="_SsgCV9ElEeS_u7hIvAIReA" name="Single View Links" sectionFile="ui/SingleViewLinks.xwt">
+ <widget href="ui/SingleViewLinks.xwt#/"/>
+ </sections>
+ </tabs>
+ <views xmi:id="_Ssiem8ElEeS_u7hIvAIReA" name="Single Page Layout" sections="_SsgCV8ElEeS_u7hIvAIReA" automaticContext="true" datacontexts="_SsmJGsElEeS_u7hIvAIReA">
+ <constraints xsi:type="constraints:SimpleConstraint" xmi:id="_SskT2cElEeS_u7hIvAIReA" name="isWelcomeElement">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.editor.welcome/model/environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" xmi:id="_SskT2sElEeS_u7hIvAIReA" name="metaclassName" value="Welcome"/>
+ </constraints>
+ </views>
+ <views xmi:id="_Mz4-0JhuEeWbjrnVcTzZFw" name="Single View Links" sections="_SsgCV9ElEeS_u7hIvAIReA" automaticContext="true" datacontexts="_SsmJGsElEeS_u7hIvAIReA">
+ <constraints xsi:type="constraints:SimpleConstraint" xmi:id="_Mz4-0ZhuEeWbjrnVcTzZFw" name="isWelcomeElement">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.editor.welcome/model/environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" xmi:id="_Mz4-0phuEeWbjrnVcTzZFw" name="metaclassName" value="Welcome"/>
+ </constraints>
+ </views>
+ <dataContexts xmi:id="_SsmI-cElEeS_u7hIvAIReA" name="welcomeGeneral" label="Welcome">
+ <elements xmi:id="_SsmJGsElEeS_u7hIvAIReA" name="PageLayout">
+ <properties xmi:id="_SsmJG8ElEeS_u7hIvAIReA" name="privateLayout" label="Private editor page layout" type="Boolean" multiplicity="1" description="Do not share the layout of editor pages in the *.di file"/>
+ <properties xmi:id="_SsmJG9ElEeS_u7hIvAIReA" name="restoreActivePage" label="Remember last active page" type="Boolean" multiplicity="1" description="Remember the last active editor page to restore it when the editor is next opened"/>
+ </elements>
+ <modelElementFactory href="ppe:/environment/org.eclipse.papyrus.infra.editor.welcome/model/environment.xmi#//@modelElementFactories.0"/>
+ </dataContexts>
+</contexts:Context>
diff --git a/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/model/general/ui/SinglePageLayout.xwt b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/model/general/ui/SinglePageLayout.xwt
new file mode 100644
index 00000000000..1962afdc7c2
--- /dev/null
+++ b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/model/general/ui/SinglePageLayout.xwt
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:ppe="clr-namespace:org.eclipse.papyrus.views.properties.widgets"
+ xmlns:x="http://www.eclipse.org/xwt"
+ xmlns="http://www.eclipse.org/xwt/presentation" xmlns:j="clr-namespace:java.lang">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:BooleanCheckbox input="{Binding}" property="welcomeGeneral:PageLayout:privateLayout"></ppe:BooleanCheckbox>
+ <ppe:BooleanCheckbox input="{Binding}" property="welcomeGeneral:PageLayout:restoreActivePage"></ppe:BooleanCheckbox>
+</Composite> \ No newline at end of file
diff --git a/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/model/general/ui/SingleViewLinks.xwt b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/model/general/ui/SingleViewLinks.xwt
new file mode 100644
index 00000000000..b1c595802be
--- /dev/null
+++ b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/model/general/ui/SingleViewLinks.xwt
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.views.properties.widgets"
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:ppew="clr-namespace:org.eclipse.papyrus.infra.editor.welcome.internal.widgets"
+ xmlns:j="clr-namespace:java.lang" xmlns:x="http://www.eclipse.org/xwt"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppew:OpenViewLink label="Properties View" viewID="org.eclipse.ui.views.PropertySheet"></ppew:OpenViewLink>
+ <ppew:OpenViewLink label="Model Explorer" viewID="org.eclipse.papyrus.views.modelexplorer.modelexplorer"></ppew:OpenViewLink>
+ <ppew:OpenViewLink label="Model Validation" viewID="org.eclipse.papyrus.views.validation.ModelValidationView"></ppew:OpenViewLink>
+</Composite> \ No newline at end of file
diff --git a/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/model/welcome.di b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/model/welcome.di
new file mode 100644
index 00000000000..bf9abab340f
--- /dev/null
+++ b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/model/welcome.di
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"/>
diff --git a/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/model/welcome.ecore b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/model/welcome.ecore
new file mode 100644
index 00000000000..1754c6f7f89
--- /dev/null
+++ b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/model/welcome.ecore
@@ -0,0 +1,36 @@
+<?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="welcome" nsURI="http://www.eclipse.org/Papyrus/2015/editor/welcome"
+ nsPrefix="welcome">
+ <eClassifiers xsi:type="ecore:EClass" name="Welcome">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="welcomePage" ordered="false"
+ eType="#//WelcomePage" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="WelcomePage">
+ <eOperations name="getVisibleSections" ordered="false" upperBound="-1" eType="#//WelcomeSection">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="suppressedVisibility" value="true"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getSection" ordered="false" eType="#//WelcomeSection">
+ <eParameters name="identifier" ordered="false" lowerBound="1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//String"/>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="section" upperBound="-1"
+ eType="#//WelcomeSection" containment="true" eOpposite="#//WelcomeSection/page"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="visibleSection" upperBound="-1"
+ eType="#//WelcomeSection" volatile="true" transient="true" derived="true">
+ <eAnnotations source="subsets" references="#//WelcomePage/section"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="WelcomeSection">
+ <eOperations name="isIdentifiedBy" ordered="false" lowerBound="1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Boolean">
+ <eParameters name="identifier" ordered="false" lowerBound="1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//String"/>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="identifier" ordered="false"
+ lowerBound="1" upperBound="-1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//String"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="hidden" ordered="false"
+ lowerBound="1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Boolean"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="page" ordered="false" lowerBound="1"
+ eType="#//WelcomePage" eOpposite="#//WelcomePage/section"/>
+ </eClassifiers>
+</ecore:EPackage>
diff --git a/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/model/welcome.genmodel b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/model/welcome.genmodel
new file mode 100644
index 00000000000..f16431e3048
--- /dev/null
+++ b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/model/welcome.genmodel
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:genmodel="http://www.eclipse.org/uml2/2.2.0/GenModel"
+ copyrightText="Copyright (c) 2015 Christian W. Damus and others.&#xA;&#xA;All rights reserved. This program and the accompanying materials&#xA;are made available under the terms of the Eclipse Public License v1.0&#xA;which accompanies this distribution, and is available at&#xA;http://www.eclipse.org/legal/epl-v10.html&#xA;&#xA;Contributors:&#xA; Christian W. Damus - Initial API and implementation&#xA;"
+ modelDirectory="/org.eclipse.papyrus.infra.editor.welcome/src-gen" editDirectory="/org.eclipse.papyrus.infra.editor.welcome.edit/src-gen"
+ editorDirectory="/org.eclipse.papyrus.infra.editor.welcome.editor/src-gen" modelPluginID="org.eclipse.papyrus.infra.editor.welcome"
+ modelName="Welcome" nonNLSMarkers="true" rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container"
+ codeFormatting="true" commentFormatting="true" testsDirectory="/org.eclipse.papyrus.infra.editor.welcome.tests/src-gen"
+ importerID="org.eclipse.uml2.uml.ecore.importer" complianceLevel="8.0" copyrightFields="false"
+ usedGenPackages="../../org.eclipse.uml2.types/model/Types.genmodel#//types" operationReflection="true"
+ importOrganizing="true" cleanup="true" factoryMethods="true" pluralizedGetters="true"
+ cacheAdapterSupport="true" invariantPrefix="">
+ <genAnnotations source="http://www.eclipse.org/emf/2002/GenModel/importer/org.eclipse.uml2.uml.ecore.importer">
+ <details key="OPPOSITE_ROLE_NAMES" value="IGNORE"/>
+ <details key="DUPLICATE_FEATURES" value="DISCARD"/>
+ <details key="ANNOTATION_DETAILS" value="PROCESS"/>
+ <details key="PROPERTY_DEFAULT_EXPRESSIONS" value="IGNORE"/>
+ <details key="DUPLICATE_FEATURE_INHERITANCE" value="DISCARD"/>
+ <details key="COMMENTS" value="PROCESS"/>
+ <details key="DERIVED_FEATURES" value="PROCESS"/>
+ <details key="SUPER_CLASS_ORDER" value="PROCESS"/>
+ <details key="DUPLICATE_OPERATION_INHERITANCE" value="DISCARD"/>
+ <details key="REDEFINING_OPERATIONS" value="PROCESS"/>
+ <details key="INVARIANT_CONSTRAINTS" value="PROCESS"/>
+ <details key="UNION_PROPERTIES" value="PROCESS"/>
+ <details key="DUPLICATE_OPERATIONS" value="DISCARD"/>
+ <details key="NON_API_INVARIANTS" value="IGNORE"/>
+ <details key="CAMEL_CASE_NAMES" value="IGNORE"/>
+ <details key="SUBSETTING_PROPERTIES" value="PROCESS"/>
+ <details key="OPERATION_BODIES" value="IGNORE"/>
+ <details key="ECORE_TAGGED_VALUES" value="PROCESS"/>
+ <details key="UNTYPED_PROPERTIES" value="REPORT"/>
+ <details key="REDEFINING_PROPERTIES" value="PROCESS"/>
+ <details key="INVOCATION_DELEGATES" value="IGNORE"/>
+ <details key="VALIDATION_DELEGATES" value="IGNORE"/>
+ </genAnnotations>
+ <foreignModel>welcome.uml</foreignModel>
+ <genPackages xsi:type="genmodel:GenPackage" prefix="Welcome" basePackage="org.eclipse.papyrus.infra.editor"
+ disposableProviderFactory="true" classPackageSuffix="internal.impl" generateExampleClass="false"
+ ecorePackage="welcome.ecore#/" operationsPackage="org.eclipse.papyrus.infra.editor.welcome.internal.operations">
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="welcome.ecore#//Welcome">
+ <genFeatures xsi:type="genmodel:GenFeature" property="None" children="true"
+ createChild="true" ecoreFeature="ecore:EReference welcome.ecore#//Welcome/welcomePage"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="welcome.ecore#//WelcomePage">
+ <genFeatures xsi:type="genmodel:GenFeature" property="None" children="true"
+ createChild="true" ecoreFeature="ecore:EReference welcome.ecore#//WelcomePage/section"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="true" propertySortChoices="true"
+ ecoreFeature="ecore:EReference welcome.ecore#//WelcomePage/visibleSection"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="welcome.ecore#//WelcomePage/getVisibleSections"
+ cacheAdapterScope="Resource"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="welcome.ecore#//WelcomePage/getSection">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="welcome.ecore#//WelcomePage/getSection/identifier"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="welcome.ecore#//WelcomeSection">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute welcome.ecore#//WelcomeSection/identifier"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute welcome.ecore#//WelcomeSection/hidden"/>
+ <genFeatures xsi:type="genmodel:GenFeature" property="None" notify="false" createChild="false"
+ ecoreFeature="ecore:EReference welcome.ecore#//WelcomeSection/page"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="welcome.ecore#//WelcomeSection/isIdentifiedBy">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="welcome.ecore#//WelcomeSection/isIdentifiedBy/identifier"/>
+ </genOperations>
+ </genClasses>
+ </genPackages>
+</genmodel:GenModel>
diff --git a/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/model/welcome.notation b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/model/welcome.notation
new file mode 100644
index 00000000000..d1d4d0cc8bd
--- /dev/null
+++ b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/model/welcome.notation
@@ -0,0 +1,218 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<notation:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 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" xmi:id="_fPcrkI0zEeWQ4s2Ri_ucLw" type="PapyrusUMLClassDiagram" name="classes" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_g3Y5wI0zEeWQ4s2Ri_ucLw" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_g3iqwI0zEeWQ4s2Ri_ucLw" type="5029"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_g3iqwY0zEeWQ4s2Ri_ucLw" type="8510">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_g3iqwo0zEeWQ4s2Ri_ucLw" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_g3m8MI0zEeWQ4s2Ri_ucLw" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_g3m8MY0zEeWQ4s2Ri_ucLw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_g3m8Mo0zEeWQ4s2Ri_ucLw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_g3m8M40zEeWQ4s2Ri_ucLw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_g3m8NI0zEeWQ4s2Ri_ucLw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_g3m8NY0zEeWQ4s2Ri_ucLw" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_g3m8No0zEeWQ4s2Ri_ucLw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_g3m8N40zEeWQ4s2Ri_ucLw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_g3m8OI0zEeWQ4s2Ri_ucLw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_g3m8OY0zEeWQ4s2Ri_ucLw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_g3m8Oo0zEeWQ4s2Ri_ucLw" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_g3m8O40zEeWQ4s2Ri_ucLw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_g3m8PI0zEeWQ4s2Ri_ucLw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_g3m8PY0zEeWQ4s2Ri_ucLw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_g3m8Po0zEeWQ4s2Ri_ucLw"/>
+ </children>
+ <element xmi:type="uml:Class" href="welcome.uml#_g3K3UI0zEeWQ4s2Ri_ucLw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_g3Y5wY0zEeWQ4s2Ri_ucLw" x="75" y="97"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_6D_FEI0zEeWQ4s2Ri_ucLw" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_6D_FEY0zEeWQ4s2Ri_ucLw" showTitle="true"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_6D_sII0zEeWQ4s2Ri_ucLw" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="welcome.uml#_g3K3UI0zEeWQ4s2Ri_ucLw"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6D_FEo0zEeWQ4s2Ri_ucLw" x="279" y="104"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_MhN18JnYEeWGtMqIodd43w" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_MhPrIJnYEeWGtMqIodd43w" type="5029"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_MhQSMJnYEeWGtMqIodd43w" type="8510">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_MhQSMZnYEeWGtMqIodd43w" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_MhQSMpnYEeWGtMqIodd43w" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_MhQSM5nYEeWGtMqIodd43w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_MhQSNJnYEeWGtMqIodd43w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_MhQSNZnYEeWGtMqIodd43w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_MhQSNpnYEeWGtMqIodd43w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_MhQSN5nYEeWGtMqIodd43w" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="_MgoqUJncEeWGtMqIodd43w" type="3013">
+ <element xmi:type="uml:Operation" href="welcome.uml#_MgdEIJncEeWGtMqIodd43w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_MgoqUZncEeWGtMqIodd43w"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_T87OAJniEeWGtMqIodd43w" type="3013">
+ <element xmi:type="uml:Operation" href="welcome.uml#_T8vAwJniEeWGtMqIodd43w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_T87OAZniEeWGtMqIodd43w"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_MhQSOJnYEeWGtMqIodd43w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_MhQSOZnYEeWGtMqIodd43w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_MhQSOpnYEeWGtMqIodd43w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_MhQSO5nYEeWGtMqIodd43w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_MhQ5QJnYEeWGtMqIodd43w" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_MhQ5QZnYEeWGtMqIodd43w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_MhQ5QpnYEeWGtMqIodd43w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_MhQ5Q5nYEeWGtMqIodd43w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_MhQ5RJnYEeWGtMqIodd43w"/>
+ </children>
+ <element xmi:type="uml:Class" href="welcome.uml#_MfwdYJnYEeWGtMqIodd43w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_MhN18ZnYEeWGtMqIodd43w" x="294" y="102"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_cYIEQJnYEeWGtMqIodd43w" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_cYIrUZnYEeWGtMqIodd43w" type="5029"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_cYIrUpnYEeWGtMqIodd43w" type="8510">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_cYIrU5nYEeWGtMqIodd43w" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_cYIrVJnYEeWGtMqIodd43w" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_q1z10JnYEeWGtMqIodd43w" type="3012">
+ <element xmi:type="uml:Property" href="welcome.uml#_q1qE0JnYEeWGtMqIodd43w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_q1z10ZnYEeWGtMqIodd43w"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_yTDDcJnYEeWGtMqIodd43w" type="3012">
+ <element xmi:type="uml:Property" href="welcome.uml#_yS4EUJnYEeWGtMqIodd43w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_yTDDcZnYEeWGtMqIodd43w"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_cYJSYJnYEeWGtMqIodd43w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_cYJSYZnYEeWGtMqIodd43w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_cYJSYpnYEeWGtMqIodd43w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cYJSY5nYEeWGtMqIodd43w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_cYJSZJnYEeWGtMqIodd43w" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="_g8Ce4JnZEeWGtMqIodd43w" type="3013">
+ <element xmi:type="uml:Operation" href="welcome.uml#_g73fwJnZEeWGtMqIodd43w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_g8Ce4ZnZEeWGtMqIodd43w"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_cYJSZZnYEeWGtMqIodd43w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_cYJSZpnYEeWGtMqIodd43w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_cYJSZ5nYEeWGtMqIodd43w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cYJSaJnYEeWGtMqIodd43w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_cYJSaZnYEeWGtMqIodd43w" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_cYJSapnYEeWGtMqIodd43w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_cYJSa5nYEeWGtMqIodd43w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_cYJSbJnYEeWGtMqIodd43w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cYJSbZnYEeWGtMqIodd43w"/>
+ </children>
+ <element xmi:type="uml:Class" href="welcome.uml#_cX-6UJnYEeWGtMqIodd43w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cYIrUJnYEeWGtMqIodd43w" x="298" y="294"/>
+ </children>
+ <styles xmi:type="notation:StringValueStyle" xmi:id="_fPcrkY0zEeWQ4s2Ri_ucLw" name="diagram_compatibility_version" stringValue="1.1.0"/>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_fPcrko0zEeWQ4s2Ri_ucLw"/>
+ <styles xmi:type="style:PapyrusViewStyle" xmi:id="_fPcrk40zEeWQ4s2Ri_ucLw">
+ <owner xmi:type="uml:Model" href="welcome.uml#_fNSvcI0zEeWQ4s2Ri_ucLw"/>
+ </styles>
+ <element xmi:type="uml:Model" href="welcome.uml#_fNSvcI0zEeWQ4s2Ri_ucLw"/>
+ <edges xmi:type="notation:Connector" xmi:id="_6EEkoI0zEeWQ4s2Ri_ucLw" type="StereotypeCommentLink" source="_g3Y5wI0zEeWQ4s2Ri_ucLw" target="_6D_FEI0zEeWQ4s2Ri_ucLw">
+ <styles xmi:type="notation:FontStyle" xmi:id="_6EFLsI0zEeWQ4s2Ri_ucLw"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_6EFywo0zEeWQ4s2Ri_ucLw" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="welcome.uml#_g3K3UI0zEeWQ4s2Ri_ucLw"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_6EFLsY0zEeWQ4s2Ri_ucLw" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_6EFywI0zEeWQ4s2Ri_ucLw"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_6EFywY0zEeWQ4s2Ri_ucLw"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_gTuXIJnYEeWGtMqIodd43w" type="4001" source="_MhN18JnYEeWGtMqIodd43w" target="_cYIEQJnYEeWGtMqIodd43w" routing="Rectilinear">
+ <children xmi:type="notation:DecorationNode" xmi:id="_gTuXI5nYEeWGtMqIodd43w" type="6001">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_1oTvEJnYEeWGtMqIodd43w" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_gTuXJJnYEeWGtMqIodd43w" x="1" y="-18"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_gTuXJZnYEeWGtMqIodd43w" type="6002">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_1ocR8JnYEeWGtMqIodd43w" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_gTuXJpnYEeWGtMqIodd43w" y="19"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_gTuXJ5nYEeWGtMqIodd43w" type="6003">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_1okNwJnYEeWGtMqIodd43w" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_gTuXKJnYEeWGtMqIodd43w" x="17" y="-36"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_gTu-MJnYEeWGtMqIodd43w" type="6005">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_1osJkJnYEeWGtMqIodd43w" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_gTu-MZnYEeWGtMqIodd43w" x="-16" y="32"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_gTu-MpnYEeWGtMqIodd43w" type="6033">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_1o0FYJnYEeWGtMqIodd43w" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_gTu-M5nYEeWGtMqIodd43w" x="15" y="19"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_gTu-NJnYEeWGtMqIodd43w" type="6034">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_1o7aIJnYEeWGtMqIodd43w" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_gTu-NZnYEeWGtMqIodd43w" x="-15" y="-19"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_gTuXIZnYEeWGtMqIodd43w"/>
+ <element xmi:type="uml:Association" href="welcome.uml#_gTUugJnYEeWGtMqIodd43w"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_gTuXIpnYEeWGtMqIodd43w" points="[352, 202, -643984, -643984]$[352, 294, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_gVc1cJnYEeWGtMqIodd43w" id="(0.20588235294117646,1.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_gVc1cZnYEeWGtMqIodd43w" id="(0.22033898305084745,0.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_4GLfsJnYEeWGtMqIodd43w" type="4001" source="_g3Y5wI0zEeWQ4s2Ri_ucLw" target="_MhN18JnYEeWGtMqIodd43w">
+ <children xmi:type="notation:DecorationNode" xmi:id="_4GLfs5nYEeWGtMqIodd43w" type="6001">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_-jux8JnYEeWGtMqIodd43w" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_4GLftJnYEeWGtMqIodd43w" x="1" y="-18"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_4GLftZnYEeWGtMqIodd43w" type="6002">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_-j2twJnYEeWGtMqIodd43w" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_4GLftpnYEeWGtMqIodd43w" y="19"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_4GLft5nYEeWGtMqIodd43w" type="6003">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_-j9bcJnYEeWGtMqIodd43w" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_4GMGwJnYEeWGtMqIodd43w" x="28" y="-21"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_4GMGwZnYEeWGtMqIodd43w" type="6005">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_-kEwMJnYEeWGtMqIodd43w" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_4GMGwpnYEeWGtMqIodd43w" x="-41" y="18"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_4GMGw5nYEeWGtMqIodd43w" type="6033">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_-kMsAJnYEeWGtMqIodd43w" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_4GMGxJnYEeWGtMqIodd43w" x="16" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_4GMGxZnYEeWGtMqIodd43w" type="6034">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_-kUAwJnYEeWGtMqIodd43w" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_4GMGxpnYEeWGtMqIodd43w" x="-17" y="-19"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_4GLfsZnYEeWGtMqIodd43w"/>
+ <element xmi:type="uml:Association" href="welcome.uml#_4GAgkJnYEeWGtMqIodd43w"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_4GLfspnYEeWGtMqIodd43w" points="[179, 149, -643984, -643984]$[294, 146, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_4Ghd8JnYEeWGtMqIodd43w" id="(1.0,0.45)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_4Ghd8ZnYEeWGtMqIodd43w" id="(0.0,0.4)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_LwegEJnZEeWGtMqIodd43w" type="4001" source="_MhN18JnYEeWGtMqIodd43w" target="_cYIEQJnYEeWGtMqIodd43w" routing="Rectilinear">
+ <children xmi:type="notation:DecorationNode" xmi:id="_LwegE5nZEeWGtMqIodd43w" type="6001">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_MxAwAJnZEeWGtMqIodd43w" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_LwegFJnZEeWGtMqIodd43w" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_LwegFZnZEeWGtMqIodd43w" type="6002">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_MxJS4JnZEeWGtMqIodd43w" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_LwegFpnZEeWGtMqIodd43w" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_LwegF5nZEeWGtMqIodd43w" visible="false" type="6003">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_MxROsJnZEeWGtMqIodd43w" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_LwegGJnZEeWGtMqIodd43w" x="42" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_LwfHIJnZEeWGtMqIodd43w" type="6005">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_MxZKgJnZEeWGtMqIodd43w" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_LwfHIZnZEeWGtMqIodd43w" x="-19" y="-50"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_LwfHIpnZEeWGtMqIodd43w" visible="false" type="6033">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_MxhGUJnZEeWGtMqIodd43w" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_LwfHI5nZEeWGtMqIodd43w" x="42" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_LwfHJJnZEeWGtMqIodd43w" type="6034">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_MxpCIJnZEeWGtMqIodd43w" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_LwfHJZnZEeWGtMqIodd43w" x="-17" y="17"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_LwegEZnZEeWGtMqIodd43w"/>
+ <element xmi:type="uml:Association" href="welcome.uml#_LwREsJnZEeWGtMqIodd43w"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_LwegEpnZEeWGtMqIodd43w" points="[502, 202, -643984, -643984]$[502, 294, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Lw26kJnZEeWGtMqIodd43w" id="(0.7647058823529411,1.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Lw26kZnZEeWGtMqIodd43w" id="(0.864406779661017,0.0)"/>
+ </edges>
+</notation:Diagram>
diff --git a/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/model/welcome.uml b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/model/welcome.uml
new file mode 100644
index 00000000000..b0b2bad4c98
--- /dev/null
+++ b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/model/welcome.uml
@@ -0,0 +1,90 @@
+<?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:Ecore="http://www.eclipse.org/uml2/schemas/Ecore/5" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xsi:schemaLocation="http://www.eclipse.org/uml2/schemas/Ecore/5 pathmap://UML_PROFILES/Ecore.profile.uml#_z1OFcHjqEdy8S4Cr8Rc_NA">
+ <uml:Model xmi:id="_fNSvcI0zEeWQ4s2Ri_ucLw" name="welcome" URI="http://www.eclipse.org/Papyrus/2015/editor/welcome">
+ <packageImport xmi:type="uml:PackageImport" xmi:id="_fjMuAI0zEeWQ4s2Ri_ucLw">
+ <importedPackage xmi:type="uml:Model" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#_0"/>
+ </packageImport>
+ <packagedElement xmi:type="uml:Class" xmi:id="_g3K3UI0zEeWQ4s2Ri_ucLw" name="Welcome">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_4GBHopnYEeWGtMqIodd43w" name="welcomePage" type="_MfwdYJnYEeWGtMqIodd43w" aggregation="composite" association="_4GAgkJnYEeWGtMqIodd43w">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_8kZXcJnYEeWGtMqIodd43w"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_8kalkJnYEeWGtMqIodd43w" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_MfwdYJnYEeWGtMqIodd43w" name="WelcomePage">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_gTbcMJnYEeWGtMqIodd43w" name="section" type="_cX-6UJnYEeWGtMqIodd43w" isOrdered="true" aggregation="composite" association="_gTUugJnYEeWGtMqIodd43w">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_kuqRYJnYEeWGtMqIodd43w"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_kuvw8JnYEeWGtMqIodd43w" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_LwSS0JnZEeWGtMqIodd43w" name="visibleSection" type="_cX-6UJnYEeWGtMqIodd43w" isOrdered="true" isDerived="true" subsettedProperty="_gTbcMJnYEeWGtMqIodd43w" association="_LwREsJnZEeWGtMqIodd43w">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_VinvkJnZEeWGtMqIodd43w"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Vio9sJnZEeWGtMqIodd43w" value="*"/>
+ </ownedAttribute>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_MgdEIJncEeWGtMqIodd43w" name="getVisibleSections" visibility="protected">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_UWM4YJncEeWGtMqIodd43w" type="_cX-6UJnYEeWGtMqIodd43w" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_WB0ssJncEeWGtMqIodd43w"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_WB160JncEeWGtMqIodd43w" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_T8vAwJniEeWGtMqIodd43w" name="getSection">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_Z-UvwJniEeWGtMqIodd43w" name="identifier" effect="read">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_dygzEJniEeWGtMqIodd43w" type="_cX-6UJnYEeWGtMqIodd43w" direction="return" effect="read">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ffi8oJniEeWGtMqIodd43w"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ffkKwJniEeWGtMqIodd43w" value="1"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_cX-6UJnYEeWGtMqIodd43w" name="WelcomeSection">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_gTcDQJnYEeWGtMqIodd43w" name="page" type="_MfwdYJnYEeWGtMqIodd43w" association="_gTUugJnYEeWGtMqIodd43w"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_q1qE0JnYEeWGtMqIodd43w" name="identifier" visibility="public">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_K2WksJnaEeWGtMqIodd43w" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_K2YZ4JnaEeWGtMqIodd43w" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_yS4EUJnYEeWGtMqIodd43w" name="hidden" visibility="public">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedAttribute>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_g73fwJnZEeWGtMqIodd43w" name="isIdentifiedBy">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_maCYoJnZEeWGtMqIodd43w" name="identifier" effect="read">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_pPeUsJnZEeWGtMqIodd43w" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_gTUugJnYEeWGtMqIodd43w" memberEnd="_gTbcMJnYEeWGtMqIodd43w _gTcDQJnYEeWGtMqIodd43w">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gTaOEJnYEeWGtMqIodd43w" source="org.eclipse.papyrus">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gTaOEZnYEeWGtMqIodd43w" key="nature" value="UML_Nature"/>
+ </eAnnotations>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_4GAgkJnYEeWGtMqIodd43w" memberEnd="_4GBHopnYEeWGtMqIodd43w _4GBusJnYEeWGtMqIodd43w">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_4GBHoJnYEeWGtMqIodd43w" source="org.eclipse.papyrus">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4GBHoZnYEeWGtMqIodd43w" key="nature" value="UML_Nature"/>
+ </eAnnotations>
+ <ownedEnd xmi:type="uml:Property" xmi:id="_4GBusJnYEeWGtMqIodd43w" name="welcome" type="_g3K3UI0zEeWQ4s2Ri_ucLw" association="_4GAgkJnYEeWGtMqIodd43w"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_LwREsJnZEeWGtMqIodd43w" memberEnd="_LwSS0JnZEeWGtMqIodd43w _LwSS0ZnZEeWGtMqIodd43w">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_LwRrwJnZEeWGtMqIodd43w" source="org.eclipse.papyrus">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_LwRrwZnZEeWGtMqIodd43w" key="nature" value="UML_Nature"/>
+ </eAnnotations>
+ <ownedEnd xmi:type="uml:Property" xmi:id="_LwSS0ZnZEeWGtMqIodd43w" type="_MfwdYJnYEeWGtMqIodd43w" association="_LwREsJnZEeWGtMqIodd43w"/>
+ </packagedElement>
+ <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_fUBCgI0zEeWQ4s2Ri_ucLw">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_fUC3sI0zEeWQ4s2Ri_ucLw" 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="_vltTcJnYEeWGtMqIodd43w">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_vlvIoJnYEeWGtMqIodd43w" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="pathmap://PAPYRUS_ACTIONLANGUAGE_PROFILE/ActionLanguage-Profile.profile.uml#_Kv8EIKFXEeS_KNX0nfvIVQ"/>
+ </eAnnotations>
+ <appliedProfile xmi:type="uml:Profile" href="pathmap://PAPYRUS_ACTIONLANGUAGE_PROFILE/ActionLanguage-Profile.profile.uml#ActionLanguage"/>
+ </profileApplication>
+ </uml:Model>
+ <Ecore:EPackage xmi:id="_vYgZ0I0zEeWQ4s2Ri_ucLw" base_Package="_fNSvcI0zEeWQ4s2Ri_ucLw" nsPrefix="welcome" basePackage="org.eclipse.papyrus.infra.editor" prefix="Welcome"/>
+ <Ecore:EClass xmi:id="_6DadUI0zEeWQ4s2Ri_ucLw" base_Class="_g3K3UI0zEeWQ4s2Ri_ucLw"/>
+ <Ecore:EOperation xmi:id="_aKd9EJncEeWGtMqIodd43w" base_Operation="_MgdEIJncEeWGtMqIodd43w" visibility="None"/>
+</xmi:XMI>
diff --git a/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/plugin.properties b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/plugin.properties
new file mode 100644
index 00000000000..7a6fd800447
--- /dev/null
+++ b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/plugin.properties
@@ -0,0 +1,21 @@
+#
+# Copyright (c) 2015 Christian W. Damus 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:
+# Christian W. Damus - Initial API and implementation
+#
+pluginName=Papyrus Editor Welcome Page
+providerName=Eclipse Modeling Project
+
+cmd.showWelcome.desc = Shows the Papyrus Editor's overview welcome page
+cmd.showWelcome.name = Show Welcome Page
+cmd.showWelcome.tip = Open the overview (welcome) page
+cmd.resetWelcome.desc = Resets the arrangement of the welcome page
+cmd.resetWelcome.name = Reset Welcome Page
+cmd.resetWelcome.tip = Resets the arrangement of the welcome page
+prefpage.welcome.name = Editor Welcome Page
diff --git a/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/plugin.xml b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/plugin.xml
new file mode 100644
index 00000000000..a7e1ef425ba
--- /dev/null
+++ b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/plugin.xml
@@ -0,0 +1,163 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.2"?>
+<!--
+ Copyright (c) 2015 Christian W. Damus 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:
+ Christian W. Damus - Initial API and implementation
+-->
+<plugin>
+ <extension
+ point="org.eclipse.papyrus.infra.core.service">
+ <service
+ classname="org.eclipse.papyrus.infra.editor.welcome.internal.WelcomePageService"
+ description="The Papyrus Editor&apos;s welcome page management service."
+ id="org.eclipse.papyrus.infra.editor.welcome.IWelcomePageService"
+ priority="50"
+ startKind="startup">
+ <dependsOn
+ serviceKeyRef="org.eclipse.papyrus.infra.core.resource.ModelSet">
+ </dependsOn>
+ <dependsOn
+ serviceKeyRef="org.eclipse.papyrus.infra.core.sasheditor.contentprovider.IPageManager">
+ </dependsOn>
+ <dependsOn
+ serviceKeyRef="org.eclipse.papyrus.infra.core.services.EditorLifecycleManager">
+ </dependsOn>
+ </service>
+ </extension>
+ <extension
+ point="org.eclipse.papyrus.infra.core.papyrusDiagram">
+ <editorDiagram
+ factoryClass="org.eclipse.papyrus.infra.editor.welcome.internal.WelcomePageFactory"
+ icon="icons/full/editor16/welcome16.gif"
+ order="50">
+ </editorDiagram>
+ </extension>
+ <extension
+ point="org.eclipse.ui.commands">
+ <command
+ defaultHandler="org.eclipse.papyrus.infra.editor.welcome.internal.commands.ShowWelcomePageHandler"
+ description="%cmd.showWelcome.desc"
+ id="org.eclipse.papyrus.infra.editor.welcome.showWelcomePage"
+ name="%cmd.showWelcome.name">
+ </command>
+ <command
+ defaultHandler="org.eclipse.papyrus.infra.editor.welcome.internal.commands.ResetWelcomePageHandler"
+ description="%cmd.resetWelcome.desc"
+ id="org.eclipse.papyrus.infra.editor.welcome.resetWelcomePage"
+ name="%cmd.resetWelcome.name">
+ </command>
+ </extension>
+ <extension
+ point="org.eclipse.ui.menus">
+ <menuContribution
+ locationURI="popup:org.eclipse.papyrus.infra.core.editor.ui.tabmenu?before=additions">
+ <separator
+ name="welcome-group"
+ visible="true">
+ </separator>
+ </menuContribution>
+ <menuContribution
+ locationURI="popup:org.eclipse.papyrus.infra.core.editor.ui.tabmenu?after=welcome-group">
+ <command
+ commandId="org.eclipse.papyrus.infra.editor.welcome.showWelcomePage"
+ style="push"
+ tooltip="%cmd.showWelcome.tip">
+ <visibleWhen>
+ <with
+ variable="activeEditorId">
+ <equals
+ value="org.eclipse.papyrus.infra.core.papyrusEditor">
+ </equals>
+ </with>
+ </visibleWhen>
+ </command>
+ <command
+ commandId="org.eclipse.papyrus.infra.editor.welcome.resetWelcomePage"
+ style="push"
+ tooltip="%cmd.resetWelcome.tip">
+ <visibleWhen checkEnabled="true"/>
+ </command>
+ </menuContribution>
+ <menuContribution
+ locationURI="menu:org.eclipse.papyrus.infra.core.commands.dropdowncommand?before=additions">
+ <separator
+ name="welcome-group"
+ visible="true">
+ </separator>
+ </menuContribution>
+ <menuContribution
+ allPopups="false"
+ locationURI="menu:org.eclipse.papyrus.infra.core.commands.dropdowncommand?after=welcome-group">
+ <command
+ commandId="org.eclipse.papyrus.infra.editor.welcome.showWelcomePage"
+ style="push"
+ tooltip="%cmd.showWelcome.tip">
+ <visibleWhen>
+ <with
+ variable="activeEditorId">
+ <equals
+ value="org.eclipse.papyrus.infra.core.papyrusEditor">
+ </equals>
+ </with>
+ </visibleWhen>
+ </command>
+ <command
+ commandId="org.eclipse.papyrus.infra.editor.welcome.resetWelcomePage"
+ style="push"
+ tooltip="%cmd.resetWelcome.tip">
+ <visibleWhen checkEnabled="true"/>
+ </command>
+ </menuContribution>
+ </extension>
+ <extension
+ point="org.eclipse.core.runtime.adapters">
+ <factory
+ adaptableType="org.eclipse.papyrus.infra.editor.welcome.Welcome"
+ class="org.eclipse.papyrus.infra.editor.welcome.internal.WelcomeAdapterFactory">
+ <adapter
+ type="org.eclipse.papyrus.infra.core.sasheditor.di.contentprovider.IOpenable">
+ </adapter>
+ </factory>
+ </extension>
+ <extension
+ point="org.eclipse.ui.preferencePages">
+ <page
+ category="org.eclipse.papyrus.infra.core.sasheditor.preferences.generalcategory"
+ class="org.eclipse.papyrus.views.properties/org.eclipse.papyrus.views.properties.preferences.Preferences"
+ id="org.eclipse.papyrus.infra.editor.welcome.content"
+ name="%prefpage.welcome.name">
+ </page>
+ </extension>
+ <extension
+ point="org.eclipse.papyrus.views.properties.context">
+ <context
+ contextModel="model/general/general.ctx">
+ </context>
+ <preferencePageBinding
+ context="welcome-general"
+ page="org.eclipse.papyrus.infra.editor.welcome.content">
+ </preferencePageBinding>
+ </extension>
+ <extension
+ point="org.eclipse.papyrus.views.properties.environment">
+ <environment
+ environmentModel="model/environment.xmi">
+ </environment>
+ </extension>
+
+ <extension point="org.eclipse.emf.ecore.generated_package">
+ <!-- @generated welcome -->
+ <package
+ uri="http://www.eclipse.org/Papyrus/2015/editor/welcome"
+ class="org.eclipse.papyrus.infra.editor.welcome.WelcomePackage"
+ genModel="model/welcome.genmodel"/>
+ </extension>
+
+</plugin>
diff --git a/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/pom.xml b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/pom.xml
new file mode 100644
index 00000000000..8ad03b63171
--- /dev/null
+++ b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/pom.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <artifactId>org.eclipse.papyrus.releng</artifactId>
+ <groupId>org.eclipse.papyrus</groupId>
+ <version>1.2.0-SNAPSHOT</version>
+ <relativePath>../../../../releng/main</relativePath>
+ </parent>
+ <artifactId>org.eclipse.papyrus.infra.editor.welcome</artifactId>
+ <groupId>org.eclipse.papyrus</groupId>
+ <version>1.2.0-SNAPSHOT</version>
+ <packaging>eclipse-plugin</packaging>
+</project> \ No newline at end of file
diff --git a/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/src-gen/org/eclipse/papyrus/infra/editor/welcome/Welcome.java b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/src-gen/org/eclipse/papyrus/infra/editor/welcome/Welcome.java
new file mode 100644
index 00000000000..cc4ab1b9823
--- /dev/null
+++ b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/src-gen/org/eclipse/papyrus/infra/editor/welcome/Welcome.java
@@ -0,0 +1,74 @@
+/**
+ * Copyright (c) 2015 Christian W. Damus 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:
+ * Christian W. Damus - Initial API and implementation
+ *
+ */
+package org.eclipse.papyrus.infra.editor.welcome;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Welcome</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.infra.editor.welcome.Welcome#getWelcomePage <em>Welcome Page</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.infra.editor.welcome.WelcomePackage#getWelcome()
+ * @model
+ * @generated
+ */
+public interface Welcome extends EObject {
+
+ /**
+ * Returns the value of the '<em><b>Welcome Page</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Welcome Page</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>Welcome Page</em>' containment reference.
+ * @see #setWelcomePage(WelcomePage)
+ * @see org.eclipse.papyrus.infra.editor.welcome.WelcomePackage#getWelcome_WelcomePage()
+ * @model containment="true" ordered="false"
+ * @generated
+ */
+ WelcomePage getWelcomePage();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.infra.editor.welcome.Welcome#getWelcomePage <em>Welcome Page</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>Welcome Page</em>' containment reference.
+ * @see #getWelcomePage()
+ * @generated
+ */
+ void setWelcomePage(WelcomePage value);
+
+ /**
+ * Creates a new {@link org.eclipse.papyrus.infra.editor.welcome.WelcomePage} and sets the '<em><b>Welcome Page</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @return The new {@link org.eclipse.papyrus.infra.editor.welcome.WelcomePage}.
+ * @see #getWelcomePage()
+ * @generated
+ */
+ WelcomePage createWelcomePage();
+} // Welcome
diff --git a/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/src-gen/org/eclipse/papyrus/infra/editor/welcome/WelcomeFactory.java b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/src-gen/org/eclipse/papyrus/infra/editor/welcome/WelcomeFactory.java
new file mode 100644
index 00000000000..bf3f0ca49d9
--- /dev/null
+++ b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/src-gen/org/eclipse/papyrus/infra/editor/welcome/WelcomeFactory.java
@@ -0,0 +1,76 @@
+/**
+ * Copyright (c) 2015 Christian W. Damus 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:
+ * Christian W. Damus - Initial API and implementation
+ *
+ */
+package org.eclipse.papyrus.infra.editor.welcome;
+
+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.infra.editor.welcome.WelcomePackage
+ * @generated
+ */
+public interface WelcomeFactory extends EFactory {
+ /**
+ * The singleton instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ WelcomeFactory eINSTANCE = org.eclipse.papyrus.infra.editor.welcome.internal.impl.WelcomeFactoryImpl.init();
+
+ /**
+ * Returns a new object of class '<em>Welcome</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @return a new object of class '<em>Welcome</em>'.
+ * @generated
+ */
+ Welcome createWelcome();
+
+ /**
+ * Returns a new object of class '<em>Page</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @return a new object of class '<em>Page</em>'.
+ * @generated
+ */
+ WelcomePage createWelcomePage();
+
+ /**
+ * Returns a new object of class '<em>Section</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @return a new object of class '<em>Section</em>'.
+ * @generated
+ */
+ WelcomeSection createWelcomeSection();
+
+ /**
+ * Returns the package supported by this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @return the package supported by this factory.
+ * @generated
+ */
+ WelcomePackage getWelcomePackage();
+
+} // WelcomeFactory
diff --git a/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/src-gen/org/eclipse/papyrus/infra/editor/welcome/WelcomePackage.java b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/src-gen/org/eclipse/papyrus/infra/editor/welcome/WelcomePackage.java
new file mode 100644
index 00000000000..1cb0e97eab8
--- /dev/null
+++ b/plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/src-gen/org/eclipse/papyrus/infra/editor/welcome/WelcomePackage.java
@@ -0,0 +1,528 @@
+/**
+ * Copyright (c) 2015 Christian W. Damus 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:
+ * Christian W. Damus - Initial API and implementation
+ *
+ */
+package org.eclipse.papyrus.infra.editor.welcome;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EOperation;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each operation of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ *
+ * @see org.eclipse.papyrus.infra.editor.welcome.WelcomeFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface WelcomePackage extends EPackage {
+ /**
+ * The package name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated