Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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
+ */
+ String eNAME = "welcome"; //$NON-NLS-1$
+
+ /**
+ * The package namespace URI.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ String eNS_URI = "http://www.eclipse.org/Papyrus/2015/editor/welcome"; //$NON-NLS-1$
+
+ /**
+ * The package namespace name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ String eNS_PREFIX = "welcome"; //$NON-NLS-1$
+
+ /**
+ * The singleton instance of the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ WelcomePackage eINSTANCE = org.eclipse.papyrus.infra.editor.welcome.internal.impl.WelcomePackageImpl.init();
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.infra.editor.welcome.internal.impl.WelcomeImpl <em>Welcome</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @see org.eclipse.papyrus.infra.editor.welcome.internal.impl.WelcomeImpl
+ * @see org.eclipse.papyrus.infra.editor.welcome.internal.impl.WelcomePackageImpl#getWelcome()
+ * @generated
+ */
+ int WELCOME = 0;
+
+ /**
+ * The feature id for the '<em><b>Welcome Page</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int WELCOME__WELCOME_PAGE = 0;
+
+ /**
+ * The number of structural features of the '<em>Welcome</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int WELCOME_FEATURE_COUNT = 1;
+
+ /**
+ * The number of operations of the '<em>Welcome</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int WELCOME_OPERATION_COUNT = 0;
+
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.infra.editor.welcome.internal.impl.WelcomePageImpl <em>Page</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @see org.eclipse.papyrus.infra.editor.welcome.internal.impl.WelcomePageImpl
+ * @see org.eclipse.papyrus.infra.editor.welcome.internal.impl.WelcomePackageImpl#getWelcomePage()
+ * @generated
+ */
+ int WELCOME_PAGE = 1;
+
+ /**
+ * The feature id for the '<em><b>Section</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int WELCOME_PAGE__SECTION = 0;
+
+ /**
+ * The feature id for the '<em><b>Visible Section</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int WELCOME_PAGE__VISIBLE_SECTION = 1;
+
+ /**
+ * The number of structural features of the '<em>Page</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int WELCOME_PAGE_FEATURE_COUNT = 2;
+
+ /**
+ * The operation id for the '<em>Get Visible Sections</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int WELCOME_PAGE___GET_VISIBLE_SECTIONS = 0;
+
+ /**
+ * The operation id for the '<em>Get Section</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int WELCOME_PAGE___GET_SECTION__STRING = 1;
+
+ /**
+ * The number of operations of the '<em>Page</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int WELCOME_PAGE_OPERATION_COUNT = 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.infra.editor.welcome.internal.impl.WelcomeSectionImpl <em>Section</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @see org.eclipse.papyrus.infra.editor.welcome.internal.impl.WelcomeSectionImpl
+ * @see org.eclipse.papyrus.infra.editor.welcome.internal.impl.WelcomePackageImpl#getWelcomeSection()
+ * @generated
+ */
+ int WELCOME_SECTION = 2;
+
+ /**
+ * The feature id for the '<em><b>Identifier</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc --&g