Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGoulwen Le Fur2015-12-09 04:31:18 -0500
committerGoulwen Le Fur2015-12-09 04:31:18 -0500
commit12dd7a55f27da248aa9e25d4695f381728aea1ec (patch)
treec995c4c30343b67880782f22e208faa459406822
parent4a8a7fe7a9deb465377ccd235fb43911f41b31c1 (diff)
parentff9921b79a47dc83dd13cb1c97b28dd543885727 (diff)
downloadorg.eclipse.eef-v1_5_1_BRANCH.tar.gz
org.eclipse.eef-v1_5_1_BRANCH.tar.xz
org.eclipse.eef-v1_5_1_BRANCH.zip
Merge branch 'master' of ssh://git.eclipse.org:29418/eef/org.eclipse.eef into v1_5_1_BRANCHv1_5_1_BRANCH
-rw-r--r--.gitignore3
-rw-r--r--doc/org.eclipse.eef.documentation.validator/.classpath7
-rw-r--r--doc/org.eclipse.eef.documentation.validator/.project28
-rw-r--r--doc/org.eclipse.eef.documentation.validator/.settings/org.eclipse.jdt.core.prefs7
-rw-r--r--doc/org.eclipse.eef.documentation.validator/META-INF/MANIFEST.MF9
-rw-r--r--doc/org.eclipse.eef.documentation.validator/about.html28
-rw-r--r--doc/org.eclipse.eef.documentation.validator/build.properties4
-rw-r--r--doc/org.eclipse.eef.documentation.validator/src/org/eclipse/eef/documentation/validator/api/AbstractValidationStatus.java22
-rw-r--r--doc/org.eclipse.eef.documentation.validator/src/org/eclipse/eef/documentation/validator/api/DocumentationValidator.java154
-rw-r--r--doc/org.eclipse.eef.documentation.validator/src/org/eclipse/eef/documentation/validator/api/EClassifierValidationStatus.java18
-rw-r--r--doc/org.eclipse.eef.documentation.validator/src/org/eclipse/eef/documentation/validator/api/EStructuralFeatureValidationStatus.java18
-rw-r--r--doc/org.eclipse.eef.documentation.validator/src/org/eclipse/eef/documentation/validator/api/ValidationStatusKind.java13
-rw-r--r--doc/org.eclipse.eef.documentation.validator/src/org/eclipse/eef/documentation/validator/api/Validator.java36
-rw-r--r--doc/org.eclipse.eef.documentation/.classpath5
-rw-r--r--doc/org.eclipse.eef.documentation/.project28
-rw-r--r--doc/org.eclipse.eef.documentation/.settings/org.eclipse.jdt.core.prefs7
-rw-r--r--doc/org.eclipse.eef.documentation/META-INF/MANIFEST.MF7
-rw-r--r--doc/org.eclipse.eef.documentation/about.html28
-rw-r--r--doc/org.eclipse.eef.documentation/build.properties14
-rw-r--r--doc/org.eclipse.eef.documentation/plugin.properties12
-rw-r--r--doc/org.eclipse.eef.documentation/pom.xml37
-rw-r--r--doc/org.eclipse.eef.documentation/sketches/US-1.screen10
-rw-r--r--doc/org.eclipse.eef.documentation/sketches/US-10.screen45
-rw-r--r--doc/org.eclipse.eef.documentation/sketches/US-11.screen54
-rw-r--r--doc/org.eclipse.eef.documentation/sketches/US-12.screen23
-rw-r--r--doc/org.eclipse.eef.documentation/sketches/US-13.screen26
-rw-r--r--doc/org.eclipse.eef.documentation/sketches/US-14.screen28
-rw-r--r--doc/org.eclipse.eef.documentation/sketches/US-15.screen47
-rw-r--r--doc/org.eclipse.eef.documentation/sketches/US-16.screen23
-rw-r--r--doc/org.eclipse.eef.documentation/sketches/US-2.screen14
-rw-r--r--doc/org.eclipse.eef.documentation/sketches/US-3.screen17
-rw-r--r--doc/org.eclipse.eef.documentation/sketches/US-4.screen20
-rw-r--r--doc/org.eclipse.eef.documentation/sketches/US-5.screen26
-rw-r--r--doc/org.eclipse.eef.documentation/sketches/US-6.screen29
-rw-r--r--doc/org.eclipse.eef.documentation/sketches/US-7.screen32
-rw-r--r--doc/org.eclipse.eef.documentation/sketches/US-8.screen35
-rw-r--r--doc/org.eclipse.eef.documentation/sketches/US-9.screen38
-rw-r--r--doc/org.eclipse.eef.documentation/userstories/US-1.xmi11
-rw-r--r--doc/org.eclipse.eef.documentation/userstories/US-10.xmi65
-rw-r--r--doc/org.eclipse.eef.documentation/userstories/US-11.xmi73
-rw-r--r--doc/org.eclipse.eef.documentation/userstories/US-12.xmi29
-rw-r--r--doc/org.eclipse.eef.documentation/userstories/US-13.xmi31
-rw-r--r--doc/org.eclipse.eef.documentation/userstories/US-14.xmi36
-rw-r--r--doc/org.eclipse.eef.documentation/userstories/US-15.xmi41
-rw-r--r--doc/org.eclipse.eef.documentation/userstories/US-16.xmi63
-rw-r--r--doc/org.eclipse.eef.documentation/userstories/US-2.xmi14
-rw-r--r--doc/org.eclipse.eef.documentation/userstories/US-3.xmi18
-rw-r--r--doc/org.eclipse.eef.documentation/userstories/US-4.xmi22
-rw-r--r--doc/org.eclipse.eef.documentation/userstories/US-5.xmi33
-rw-r--r--doc/org.eclipse.eef.documentation/userstories/US-6.xmi43
-rw-r--r--doc/org.eclipse.eef.documentation/userstories/US-7.xmi48
-rw-r--r--doc/org.eclipse.eef.documentation/userstories/US-8.xmi55
-rw-r--r--doc/org.eclipse.eef.documentation/userstories/US-9.xmi58
-rw-r--r--features/org.eclipse.eef.sdk-feature/.project17
-rw-r--r--features/org.eclipse.eef.sdk-feature/about.html28
-rw-r--r--features/org.eclipse.eef.sdk-feature/build.properties3
-rw-r--r--features/org.eclipse.eef.sdk-feature/feature.properties15
-rw-r--r--features/org.eclipse.eef.sdk-feature/feature.xml62
-rw-r--r--features/org.eclipse.eef.sdk-feature/pom.xml37
-rw-r--r--plugins/org.eclipse.eef.core/.checkstyle10
-rw-r--r--plugins/org.eclipse.eef.core/.classpath7
-rw-r--r--plugins/org.eclipse.eef.core/.project34
-rw-r--r--plugins/org.eclipse.eef.core/.settings/org.eclipse.jdt.core.prefs398
-rw-r--r--plugins/org.eclipse.eef.core/.settings/org.eclipse.jdt.launching.prefs2
-rw-r--r--plugins/org.eclipse.eef.core/.settings/org.eclipse.jdt.ui.prefs68
-rw-r--r--plugins/org.eclipse.eef.core/.settings/org.eclipse.pde.core.prefs2
-rw-r--r--plugins/org.eclipse.eef.core/.settings/org.eclipse.pde.prefs32
-rw-r--r--plugins/org.eclipse.eef.core/META-INF/MANIFEST.MF18
-rw-r--r--plugins/org.eclipse.eef.core/about.html28
-rw-r--r--plugins/org.eclipse.eef.core/build.properties15
-rw-r--r--plugins/org.eclipse.eef.core/plugin.properties9
-rw-r--r--plugins/org.eclipse.eef.core/pom.xml37
-rw-r--r--plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/api/EEFContainerParent.java20
-rw-r--r--plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/api/EEFExpressionUtils.java50
-rw-r--r--plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/api/EEFGroup.java57
-rw-r--r--plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/api/EEFPage.java58
-rw-r--r--plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/api/EEFVariableManagerFactory.java29
-rw-r--r--plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/api/EEFView.java51
-rw-r--r--plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/api/EEFViewFactory.java50
-rw-r--r--plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/api/IVariableManager.java51
-rw-r--r--plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/api/controllers/EEFControllersFactory.java42
-rw-r--r--plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/api/controllers/EEFTextController.java60
-rw-r--r--plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/api/controllers/IConsumer.java28
-rw-r--r--plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/internal/EEFCompoundInterpreter.java92
-rw-r--r--plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/internal/EEFGroupImpl.java118
-rw-r--r--plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/internal/EEFPageImpl.java174
-rw-r--r--plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/internal/EEFVariableManager.java112
-rw-r--r--plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/internal/EEFViewImpl.java194
-rw-r--r--plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/internal/controllers/EEFTextControllerImpl.java200
-rw-r--r--plugins/org.eclipse.eef.edit/.checkstyle13
-rw-r--r--plugins/org.eclipse.eef.edit/.classpath11
-rw-r--r--plugins/org.eclipse.eef.edit/.project34
-rw-r--r--plugins/org.eclipse.eef.edit/.settings/org.eclipse.jdt.core.prefs398
-rw-r--r--plugins/org.eclipse.eef.edit/.settings/org.eclipse.jdt.launching.prefs2
-rw-r--r--plugins/org.eclipse.eef.edit/.settings/org.eclipse.jdt.ui.prefs67
-rw-r--r--plugins/org.eclipse.eef.edit/.settings/org.eclipse.pde.prefs32
-rw-r--r--plugins/org.eclipse.eef.edit/META-INF/MANIFEST.MF17
-rw-r--r--plugins/org.eclipse.eef.edit/about.html28
-rw-r--r--plugins/org.eclipse.eef.edit/build.properties17
-rw-r--r--plugins/org.eclipse.eef.edit/icons/full/obj16/EEFContainerDescription.gifbin0 -> 129 bytes
-rw-r--r--plugins/org.eclipse.eef.edit/icons/full/obj16/EEFGroupDescription.gifbin0 -> 129 bytes
-rw-r--r--plugins/org.eclipse.eef.edit/icons/full/obj16/EEFPageDescription.gifbin0 -> 129 bytes
-rw-r--r--plugins/org.eclipse.eef.edit/icons/full/obj16/EEFTextDescription.gifbin0 -> 129 bytes
-rw-r--r--plugins/org.eclipse.eef.edit/icons/full/obj16/EEFViewDescription.gifbin0 -> 129 bytes
-rw-r--r--plugins/org.eclipse.eef.edit/icons/full/obj16/EEFWidgetDescription.gifbin0 -> 129 bytes
-rw-r--r--plugins/org.eclipse.eef.edit/plugin.properties44
-rw-r--r--plugins/org.eclipse.eef.edit/plugin.xml28
-rw-r--r--plugins/org.eclipse.eef.edit/pom.xml37
-rw-r--r--plugins/org.eclipse.eef.edit/src-gen/org/eclipse/eef/provider/EEFContainerDescriptionItemProvider.java185
-rw-r--r--plugins/org.eclipse.eef.edit/src-gen/org/eclipse/eef/provider/EEFGroupDescriptionItemProvider.java216
-rw-r--r--plugins/org.eclipse.eef.edit/src-gen/org/eclipse/eef/provider/EEFPageDescriptionItemProvider.java191
-rw-r--r--plugins/org.eclipse.eef.edit/src-gen/org/eclipse/eef/provider/EEFTextDescriptionItemProvider.java144
-rw-r--r--plugins/org.eclipse.eef.edit/src-gen/org/eclipse/eef/provider/EEFViewDescriptionItemProvider.java217
-rw-r--r--plugins/org.eclipse.eef.edit/src-gen/org/eclipse/eef/provider/EEFWidgetDescriptionItemProvider.java161
-rw-r--r--plugins/org.eclipse.eef.edit/src-gen/org/eclipse/eef/provider/EefEditPlugin.java85
-rw-r--r--plugins/org.eclipse.eef.edit/src-gen/org/eclipse/eef/provider/EefItemProviderAdapterFactory.java308
-rw-r--r--plugins/org.eclipse.eef.ide.ui/.checkstyle10
-rw-r--r--plugins/org.eclipse.eef.ide.ui/.classpath7
-rw-r--r--plugins/org.eclipse.eef.ide.ui/.project34
-rw-r--r--plugins/org.eclipse.eef.ide.ui/.settings/org.eclipse.jdt.core.prefs398
-rw-r--r--plugins/org.eclipse.eef.ide.ui/.settings/org.eclipse.jdt.launching.prefs2
-rw-r--r--plugins/org.eclipse.eef.ide.ui/.settings/org.eclipse.jdt.ui.prefs67
-rw-r--r--plugins/org.eclipse.eef.ide.ui/.settings/org.eclipse.pde.core.prefs2
-rw-r--r--plugins/org.eclipse.eef.ide.ui/.settings/org.eclipse.pde.prefs32
-rw-r--r--plugins/org.eclipse.eef.ide.ui/META-INF/MANIFEST.MF26
-rw-r--r--plugins/org.eclipse.eef.ide.ui/about.html28
-rw-r--r--plugins/org.eclipse.eef.ide.ui/build.properties15
-rw-r--r--plugins/org.eclipse.eef.ide.ui/plugin.properties9
-rw-r--r--plugins/org.eclipse.eef.ide.ui/pom.xml37
-rw-r--r--plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/api/TabDescriptorFilter.java108
-rw-r--r--plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/EEFIdeUiPlugin.java97
-rw-r--r--plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/properties/EEFSection.java162
-rw-r--r--plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/properties/EEFSectionDescriptor.java94
-rw-r--r--plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/properties/EEFTabDescriptor.java91
-rw-r--r--plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/widgets/EEFContainerLifecycleManager.java147
-rw-r--r--plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/widgets/EEFTextLifecycleManager.java206
-rw-r--r--plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/widgets/ILifecycleManager.java52
-rw-r--r--plugins/org.eclipse.eef.ide/.checkstyle10
-rw-r--r--plugins/org.eclipse.eef.ide/.classpath7
-rw-r--r--plugins/org.eclipse.eef.ide/.project34
-rw-r--r--plugins/org.eclipse.eef.ide/.settings/org.eclipse.jdt.core.prefs398
-rw-r--r--plugins/org.eclipse.eef.ide/.settings/org.eclipse.jdt.launching.prefs2
-rw-r--r--plugins/org.eclipse.eef.ide/.settings/org.eclipse.jdt.ui.prefs67
-rw-r--r--plugins/org.eclipse.eef.ide/.settings/org.eclipse.pde.prefs32
-rw-r--r--plugins/org.eclipse.eef.ide/META-INF/MANIFEST.MF18
-rw-r--r--plugins/org.eclipse.eef.ide/about.html28
-rw-r--r--plugins/org.eclipse.eef.ide/build.properties15
-rw-r--r--plugins/org.eclipse.eef.ide/plugin.properties12
-rw-r--r--plugins/org.eclipse.eef.ide/plugin.xml7
-rw-r--r--plugins/org.eclipse.eef.ide/pom.xml37
-rw-r--r--plugins/org.eclipse.eef.ide/schema/eefViewDescriptionProvider.exsd123
-rw-r--r--plugins/org.eclipse.eef.ide/schema/interpreterProvider.exsd123
-rw-r--r--plugins/org.eclipse.eef.ide/src/org/eclipse/eef/ide/internal/EEFIdePlugin.java209
-rw-r--r--plugins/org.eclipse.eef.ide/src/org/eclipse/eef/ide/internal/I18N.java144
-rw-r--r--plugins/org.eclipse.eef.ide/src/org/eclipse/eef/ide/internal/Messages.java45
-rw-r--r--plugins/org.eclipse.eef.ide/src/org/eclipse/eef/ide/internal/extensions/AbstractRegistryEventListener.java201
-rw-r--r--plugins/org.eclipse.eef.ide/src/org/eclipse/eef/ide/internal/extensions/IItemDescriptor.java49
-rw-r--r--plugins/org.eclipse.eef.ide/src/org/eclipse/eef/ide/internal/extensions/IItemRegistry.java66
-rw-r--r--plugins/org.eclipse.eef.ide/src/org/eclipse/eef/ide/internal/extensions/impl/DescriptorRegistryEventListener.java161
-rw-r--r--plugins/org.eclipse.eef.ide/src/org/eclipse/eef/ide/internal/extensions/impl/ItemDescriptor.java104
-rw-r--r--plugins/org.eclipse.eef.ide/src/org/eclipse/eef/ide/internal/extensions/impl/ItemRegistry.java93
-rw-r--r--plugins/org.eclipse.eef/.checkstyle13
-rw-r--r--plugins/org.eclipse.eef/.classpath12
-rw-r--r--plugins/org.eclipse.eef/.project41
-rw-r--r--plugins/org.eclipse.eef/.settings/org.eclipse.jdt.core.prefs398
-rw-r--r--plugins/org.eclipse.eef/.settings/org.eclipse.jdt.launching.prefs2
-rw-r--r--plugins/org.eclipse.eef/.settings/org.eclipse.jdt.ui.prefs67
-rw-r--r--plugins/org.eclipse.eef/.settings/org.eclipse.pde.prefs32
-rw-r--r--plugins/org.eclipse.eef/META-INF/MANIFEST.MF16
-rw-r--r--plugins/org.eclipse.eef/about.html28
-rw-r--r--plugins/org.eclipse.eef/build.properties18
-rw-r--r--plugins/org.eclipse.eef/model/eef.ecore120
-rw-r--r--plugins/org.eclipse.eef/model/eef.genmodel45
-rw-r--r--plugins/org.eclipse.eef/model/eef2_legacy.ecore1346
-rw-r--r--plugins/org.eclipse.eef/plugin.properties9
-rw-r--r--plugins/org.eclipse.eef/plugin.xml23
-rw-r--r--plugins/org.eclipse.eef/pom.xml37
-rw-r--r--plugins/org.eclipse.eef/src-gen/org/eclipse/eef/EEFContainerDescription.java66
-rw-r--r--plugins/org.eclipse.eef/src-gen/org/eclipse/eef/EEFGroupDescription.java127
-rw-r--r--plugins/org.eclipse.eef/src-gen/org/eclipse/eef/EEFPageDescription.java120
-rw-r--r--plugins/org.eclipse.eef/src-gen/org/eclipse/eef/EEFTextDescription.java75
-rw-r--r--plugins/org.eclipse.eef/src-gen/org/eclipse/eef/EEFViewDescription.java122
-rw-r--r--plugins/org.eclipse.eef/src-gen/org/eclipse/eef/EEFWidgetDescription.java76
-rw-r--r--plugins/org.eclipse.eef/src-gen/org/eclipse/eef/EefFactory.java76
-rw-r--r--plugins/org.eclipse.eef/src-gen/org/eclipse/eef/EefPackage.java860
-rw-r--r--plugins/org.eclipse.eef/src-gen/org/eclipse/eef/impl/EEFContainerDescriptionImpl.java230
-rw-r--r--plugins/org.eclipse.eef/src-gen/org/eclipse/eef/impl/EEFGroupDescriptionImpl.java415
-rw-r--r--plugins/org.eclipse.eef/src-gen/org/eclipse/eef/impl/EEFPageDescriptionImpl.java331
-rw-r--r--plugins/org.eclipse.eef/src-gen/org/eclipse/eef/impl/EEFTextDescriptionImpl.java230
-rw-r--r--plugins/org.eclipse.eef/src-gen/org/eclipse/eef/impl/EEFViewDescriptionImpl.java364
-rw-r--r--plugins/org.eclipse.eef/src-gen/org/eclipse/eef/impl/EEFWidgetDescriptionImpl.java230
-rw-r--r--plugins/org.eclipse.eef/src-gen/org/eclipse/eef/impl/EefFactoryImpl.java155
-rw-r--r--plugins/org.eclipse.eef/src-gen/org/eclipse/eef/impl/EefPackageImpl.java571
-rw-r--r--plugins/org.eclipse.eef/src-gen/org/eclipse/eef/util/EefAdapterFactory.java218
-rw-r--r--plugins/org.eclipse.eef/src-gen/org/eclipse/eef/util/EefSwitch.java235
-rw-r--r--plugins/org.eclipse.eef/src/org/eclipse/eef/api/IEEFViewDescriptionProvider.java27
-rw-r--r--prototypes/org.eclipse.eef.expression/.classpath7
-rw-r--r--prototypes/org.eclipse.eef.expression/.project34
-rw-r--r--prototypes/org.eclipse.eef.expression/.settings/org.eclipse.jdt.core.prefs7
-rw-r--r--prototypes/org.eclipse.eef.expression/META-INF/MANIFEST.MF16
-rw-r--r--prototypes/org.eclipse.eef.expression/about.html28
-rw-r--r--prototypes/org.eclipse.eef.expression/build.properties13
-rw-r--r--prototypes/org.eclipse.eef.expression/eef.expression583
-rw-r--r--prototypes/org.eclipse.eef.expression/plugin.properties9
-rw-r--r--prototypes/org.eclipse.eef.expression/src/eef/expression/Activator.java60
-rw-r--r--prototypes/org.eclipse.eef.expression/userDefinedVariable.expression8
-rw-r--r--prototypes/org.eclipse.sirius.contentassist/.classpath7
-rw-r--r--prototypes/org.eclipse.sirius.contentassist/.project29
-rw-r--r--prototypes/org.eclipse.sirius.contentassist/.settings/org.eclipse.jdt.core.prefs7
-rw-r--r--prototypes/org.eclipse.sirius.contentassist/META-INF/MANIFEST.MF15
-rw-r--r--prototypes/org.eclipse.sirius.contentassist/about.html28
-rw-r--r--prototypes/org.eclipse.sirius.contentassist/build.properties10
-rw-r--r--prototypes/org.eclipse.sirius.contentassist/model/contentassist.aird200
-rw-r--r--prototypes/org.eclipse.sirius.contentassist/model/contentassist.ecore16
-rw-r--r--prototypes/org.eclipse.sirius.contentassist/model/contentassist.genmodel23
-rw-r--r--prototypes/org.eclipse.sirius.contentassist/plugin.properties4
-rw-r--r--prototypes/org.eclipse.sirius.contentassist/plugin.xml17
-rw-r--r--prototypes/org.eclipse.sirius.contentassist/src-gen/org/eclipse/sirius/contentassist/CompletionProposal.java218
-rw-r--r--prototypes/org.eclipse.sirius.contentassist/src-gen/org/eclipse/sirius/contentassist/ContentassistFactory.java48
-rw-r--r--prototypes/org.eclipse.sirius.contentassist/src-gen/org/eclipse/sirius/contentassist/ContentassistPackage.java397
-rw-r--r--prototypes/org.eclipse.sirius.contentassist/src-gen/org/eclipse/sirius/contentassist/impl/CompletionProposalImpl.java463
-rw-r--r--prototypes/org.eclipse.sirius.contentassist/src-gen/org/eclipse/sirius/contentassist/impl/ContentassistFactoryImpl.java172
-rw-r--r--prototypes/org.eclipse.sirius.contentassist/src-gen/org/eclipse/sirius/contentassist/impl/ContentassistPackageImpl.java290
-rw-r--r--prototypes/org.eclipse.sirius.contentassist/src-gen/org/eclipse/sirius/contentassist/util/ContentassistAdapterFactory.java126
-rw-r--r--prototypes/org.eclipse.sirius.contentassist/src-gen/org/eclipse/sirius/contentassist/util/ContentassistSwitch.java116
-rw-r--r--prototypes/org.eclipse.sirius.expression.design/.classpath7
-rw-r--r--prototypes/org.eclipse.sirius.expression.design/.project34
-rw-r--r--prototypes/org.eclipse.sirius.expression.design/META-INF/MANIFEST.MF13
-rw-r--r--prototypes/org.eclipse.sirius.expression.design/about.html28
-rw-r--r--prototypes/org.eclipse.sirius.expression.design/build.properties7
-rw-r--r--prototypes/org.eclipse.sirius.expression.design/description/expression.odesign192
-rw-r--r--prototypes/org.eclipse.sirius.expression.design/plugin.xml10
-rw-r--r--prototypes/org.eclipse.sirius.expression.design/src/org/eclipse/sirius/expression/design/Activator.java66
-rw-r--r--prototypes/org.eclipse.sirius.expression.edit/.checkstyle13
-rw-r--r--prototypes/org.eclipse.sirius.expression.edit/.classpath11
-rw-r--r--prototypes/org.eclipse.sirius.expression.edit/.project34
-rw-r--r--prototypes/org.eclipse.sirius.expression.edit/.settings/org.eclipse.jdt.core.prefs398
-rw-r--r--prototypes/org.eclipse.sirius.expression.edit/.settings/org.eclipse.jdt.launching.prefs2
-rw-r--r--prototypes/org.eclipse.sirius.expression.edit/.settings/org.eclipse.jdt.ui.prefs67
-rw-r--r--prototypes/org.eclipse.sirius.expression.edit/.settings/org.eclipse.pde.prefs32
-rw-r--r--prototypes/org.eclipse.sirius.expression.edit/META-INF/MANIFEST.MF17
-rw-r--r--prototypes/org.eclipse.sirius.expression.edit/about.html28
-rw-r--r--prototypes/org.eclipse.sirius.expression.edit/build.properties16
-rw-r--r--prototypes/org.eclipse.sirius.expression.edit/icons/full/obj16/ExpressionDescription.gifbin0 -> 129 bytes
-rw-r--r--prototypes/org.eclipse.sirius.expression.edit/icons/full/obj16/SiriusExpressionClass.gifbin0 -> 129 bytes
-rw-r--r--prototypes/org.eclipse.sirius.expression.edit/icons/full/obj16/SiriusExpressionDescription.gifbin0 -> 129 bytes
-rw-r--r--prototypes/org.eclipse.sirius.expression.edit/icons/full/obj16/SiriusExpressionPackage.gifbin0 -> 129 bytes
-rw-r--r--prototypes/org.eclipse.sirius.expression.edit/icons/full/obj16/SiriusParameter.gifbin0 -> 129 bytes
-rw-r--r--prototypes/org.eclipse.sirius.expression.edit/icons/full/obj16/SiriusVariable.gifbin0 -> 129 bytes
-rw-r--r--prototypes/org.eclipse.sirius.expression.edit/icons/full/obj16/UserDefinedVariable.gifbin0 -> 129 bytes
-rw-r--r--prototypes/org.eclipse.sirius.expression.edit/icons/full/obj16/Variable.gifbin0 -> 129 bytes
-rw-r--r--prototypes/org.eclipse.sirius.expression.edit/plugin.properties59
-rw-r--r--prototypes/org.eclipse.sirius.expression.edit/plugin.xml27
-rw-r--r--prototypes/org.eclipse.sirius.expression.edit/src-gen/org/eclipse/sirius/expression/provider/ExpressionEditPlugin.java96
-rw-r--r--prototypes/org.eclipse.sirius.expression.edit/src-gen/org/eclipse/sirius/expression/provider/ExpressionItemProviderAdapterFactory.java324
-rw-r--r--prototypes/org.eclipse.sirius.expression.edit/src-gen/org/eclipse/sirius/expression/provider/SiriusExpressionClassItemProvider.java219
-rw-r--r--prototypes/org.eclipse.sirius.expression.edit/src-gen/org/eclipse/sirius/expression/provider/SiriusExpressionDescriptionItemProvider.java305
-rw-r--r--prototypes/org.eclipse.sirius.expression.edit/src-gen/org/eclipse/sirius/expression/provider/SiriusExpressionPackageItemProvider.java207
-rw-r--r--prototypes/org.eclipse.sirius.expression.edit/src-gen/org/eclipse/sirius/expression/provider/SiriusParameterItemProvider.java194
-rw-r--r--prototypes/org.eclipse.sirius.expression.edit/src-gen/org/eclipse/sirius/expression/provider/SiriusVariableItemProvider.java220
-rw-r--r--prototypes/org.eclipse.sirius.expression.edit/src-gen/org/eclipse/sirius/expression/provider/UserDefinedVariableItemProvider.java147
-rw-r--r--prototypes/org.eclipse.sirius.expression.text.tests/.classpath7
-rw-r--r--prototypes/org.eclipse.sirius.expression.text.tests/.project34
-rw-r--r--prototypes/org.eclipse.sirius.expression.text.tests/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--prototypes/org.eclipse.sirius.expression.text.tests/.settings/org.eclipse.jdt.core.prefs7
-rw-r--r--prototypes/org.eclipse.sirius.expression.text.tests/META-INF/MANIFEST.MF25
-rw-r--r--prototypes/org.eclipse.sirius.expression.text.tests/about.html28
-rw-r--r--prototypes/org.eclipse.sirius.expression.text.tests/build.properties12
-rw-r--r--prototypes/org.eclipse.sirius.expression.text.tests/org.eclipse.sirius.expression.text.tests.launch13
-rw-r--r--prototypes/org.eclipse.sirius.expression.text.tests/plugin.properties8
-rw-r--r--prototypes/org.eclipse.sirius.expression.text.tests/src-gen/org/eclipse/sirius/expression/text/ExpressionTextInjectorProvider.java48
-rw-r--r--prototypes/org.eclipse.sirius.expression.text.tests/src-gen/org/eclipse/sirius/expression/text/ExpressionTextUiInjectorProvider.java17
-rw-r--r--prototypes/org.eclipse.sirius.expression.text.ui/.classpath9
-rw-r--r--prototypes/org.eclipse.sirius.expression.text.ui/.project34
-rw-r--r--prototypes/org.eclipse.sirius.expression.text.ui/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--prototypes/org.eclipse.sirius.expression.text.ui/.settings/org.eclipse.jdt.core.prefs7
-rw-r--r--prototypes/org.eclipse.sirius.expression.text.ui/META-INF/MANIFEST.MF27
-rw-r--r--prototypes/org.eclipse.sirius.expression.text.ui/about.html28
-rw-r--r--prototypes/org.eclipse.sirius.expression.text.ui/build.properties14
-rw-r--r--prototypes/org.eclipse.sirius.expression.text.ui/plugin.properties8
-rw-r--r--prototypes/org.eclipse.sirius.expression.text.ui/plugin.xml425
-rw-r--r--prototypes/org.eclipse.sirius.expression.text.ui/plugin.xml_gen425
-rw-r--r--prototypes/org.eclipse.sirius.expression.text.ui/src-gen/org/eclipse/sirius/expression/text/ui/AbstractExpressionTextUiModule.java196
-rw-r--r--prototypes/org.eclipse.sirius.expression.text.ui/src-gen/org/eclipse/sirius/expression/text/ui/ExpressionTextExecutableExtensionFactory.java29
-rw-r--r--prototypes/org.eclipse.sirius.expression.text.ui/src-gen/org/eclipse/sirius/expression/text/ui/contentassist/AbstractExpressionTextProposalProvider.java101
-rw-r--r--prototypes/org.eclipse.sirius.expression.text.ui/src-gen/org/eclipse/sirius/expression/text/ui/contentassist/antlr/ExpressionTextParser.java99
-rw-r--r--prototypes/org.eclipse.sirius.expression.text.ui/src-gen/org/eclipse/sirius/expression/text/ui/contentassist/antlr/PartialExpressionTextContentAssistParser.java38
-rw-r--r--prototypes/org.eclipse.sirius.expression.text.ui/src-gen/org/eclipse/sirius/expression/text/ui/contentassist/antlr/internal/InternalExpressionText.g2197
-rw-r--r--prototypes/org.eclipse.sirius.expression.text.ui/src-gen/org/eclipse/sirius/expression/text/ui/contentassist/antlr/internal/InternalExpressionText.tokens40
-rw-r--r--prototypes/org.eclipse.sirius.expression.text.ui/src-gen/org/eclipse/sirius/expression/text/ui/contentassist/antlr/internal/InternalExpressionTextLexer.java959
-rw-r--r--prototypes/org.eclipse.sirius.expression.text.ui/src-gen/org/eclipse/sirius/expression/text/ui/contentassist/antlr/internal/InternalExpressionTextParser.java5612
-rw-r--r--prototypes/org.eclipse.sirius.expression.text.ui/src-gen/org/eclipse/sirius/expression/text/ui/internal/ExpressionTextActivator.java95
-rw-r--r--prototypes/org.eclipse.sirius.expression.text.ui/src/org/eclipse/sirius/expression/text/ui/ExpressionTextUiModule.java15
-rw-r--r--prototypes/org.eclipse.sirius.expression.text.ui/src/org/eclipse/sirius/expression/text/ui/contentassist/ExpressionTextProposalProvider.xtend13
-rw-r--r--prototypes/org.eclipse.sirius.expression.text.ui/src/org/eclipse/sirius/expression/text/ui/labeling/ExpressionTextDescriptionLabelProvider.xtend24
-rw-r--r--prototypes/org.eclipse.sirius.expression.text.ui/src/org/eclipse/sirius/expression/text/ui/labeling/ExpressionTextLabelProvider.xtend29
-rw-r--r--prototypes/org.eclipse.sirius.expression.text.ui/src/org/eclipse/sirius/expression/text/ui/outline/ExpressionTextOutlineTreeProvider.xtend13
-rw-r--r--prototypes/org.eclipse.sirius.expression.text.ui/src/org/eclipse/sirius/expression/text/ui/quickfix/ExpressionTextQuickfixProvider.xtend26
-rw-r--r--prototypes/org.eclipse.sirius.expression.text.ui/xtend-gen/org/eclipse/sirius/expression/text/ui/contentassist/ExpressionTextProposalProvider.java14
-rw-r--r--prototypes/org.eclipse.sirius.expression.text.ui/xtend-gen/org/eclipse/sirius/expression/text/ui/labeling/ExpressionTextDescriptionLabelProvider.java15
-rw-r--r--prototypes/org.eclipse.sirius.expression.text.ui/xtend-gen/org/eclipse/sirius/expression/text/ui/labeling/ExpressionTextLabelProvider.java21
-rw-r--r--prototypes/org.eclipse.sirius.expression.text.ui/xtend-gen/org/eclipse/sirius/expression/text/ui/outline/ExpressionTextOutlineTreeProvider.java15
-rw-r--r--prototypes/org.eclipse.sirius.expression.text.ui/xtend-gen/org/eclipse/sirius/expression/text/ui/quickfix/ExpressionTextQuickfixProvider.java15
-rw-r--r--prototypes/org.eclipse.sirius.expression.text/.antlr-generator-3.2.0-patch.jarbin0 -> 1484649 bytes
-rw-r--r--prototypes/org.eclipse.sirius.expression.text/.classpath9
-rw-r--r--prototypes/org.eclipse.sirius.expression.text/.launch/Generate Language Infrastructure (org.eclipse.sirius.expression.text).launch18
-rw-r--r--prototypes/org.eclipse.sirius.expression.text/.launch/Launch Runtime Eclipse.launch34
-rw-r--r--prototypes/org.eclipse.sirius.expression.text/.project34
-rw-r--r--prototypes/org.eclipse.sirius.expression.text/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--prototypes/org.eclipse.sirius.expression.text/.settings/org.eclipse.jdt.core.prefs7
-rw-r--r--prototypes/org.eclipse.sirius.expression.text/META-INF/MANIFEST.MF29
-rw-r--r--prototypes/org.eclipse.sirius.expression.text/about.html28
-rw-r--r--prototypes/org.eclipse.sirius.expression.text/build.properties21
-rw-r--r--prototypes/org.eclipse.sirius.expression.text/plugin.properties8
-rw-r--r--prototypes/org.eclipse.sirius.expression.text/src-gen/org/eclipse/sirius/expression/text/AbstractExpressionTextRuntimeModule.java156
-rw-r--r--prototypes/org.eclipse.sirius.expression.text/src-gen/org/eclipse/sirius/expression/text/ExpressionText.xtextbinbin0 -> 2588 bytes
-rw-r--r--prototypes/org.eclipse.sirius.expression.text/src-gen/org/eclipse/sirius/expression/text/ExpressionTextStandaloneSetupGenerated.java53
-rw-r--r--prototypes/org.eclipse.sirius.expression.text/src-gen/org/eclipse/sirius/expression/text/parser/antlr/ExpressionTextAntlrTokenFileProvider.java16
-rw-r--r--prototypes/org.eclipse.sirius.expression.text/src-gen/org/eclipse/sirius/expression/text/parser/antlr/ExpressionTextParser.java39
-rw-r--r--prototypes/org.eclipse.sirius.expression.text/src-gen/org/eclipse/sirius/expression/text/parser/antlr/internal/InternalExpressionText.g639
-rw-r--r--prototypes/org.eclipse.sirius.expression.text/src-gen/org/eclipse/sirius/expression/text/parser/antlr/internal/InternalExpressionText.tokens40
-rw-r--r--prototypes/org.eclipse.sirius.expression.text/src-gen/org/eclipse/sirius/expression/text/parser/antlr/internal/InternalExpressionTextLexer.java959
-rw-r--r--prototypes/org.eclipse.sirius.expression.text/src-gen/org/eclipse/sirius/expression/text/parser/antlr/internal/InternalExpressionTextParser.java1484
-rw-r--r--prototypes/org.eclipse.sirius.expression.text/src-gen/org/eclipse/sirius/expression/text/serializer/ExpressionTextSemanticSequencer.java102
-rw-r--r--prototypes/org.eclipse.sirius.expression.text/src-gen/org/eclipse/sirius/expression/text/serializer/ExpressionTextSyntacticSequencer.java43
-rw-r--r--prototypes/org.eclipse.sirius.expression.text/src-gen/org/eclipse/sirius/expression/text/services/ExpressionTextGrammarAccess.java584
-rw-r--r--prototypes/org.eclipse.sirius.expression.text/src-gen/org/eclipse/sirius/expression/text/validation/AbstractExpressionTextValidator.java18
-rw-r--r--prototypes/org.eclipse.sirius.expression.text/src/org/eclipse/sirius/expression/text/ExpressionText.xtext45
-rw-r--r--prototypes/org.eclipse.sirius.expression.text/src/org/eclipse/sirius/expression/text/ExpressionTextRuntimeModule.java18
-rw-r--r--prototypes/org.eclipse.sirius.expression.text/src/org/eclipse/sirius/expression/text/ExpressionTextStandaloneSetup.java16
-rw-r--r--prototypes/org.eclipse.sirius.expression.text/src/org/eclipse/sirius/expression/text/GenerateExpressionText.mwe2137
-rw-r--r--prototypes/org.eclipse.sirius.expression.text/src/org/eclipse/sirius/expression/text/formatting/ExpressionTextFormatter.xtend30
-rw-r--r--prototypes/org.eclipse.sirius.expression.text/src/org/eclipse/sirius/expression/text/generator/ExpressionTextGenerator.xtend24
-rw-r--r--prototypes/org.eclipse.sirius.expression.text/src/org/eclipse/sirius/expression/text/scoping/ExpressionTextContainerState.xtend32
-rw-r--r--prototypes/org.eclipse.sirius.expression.text/src/org/eclipse/sirius/expression/text/scoping/ExpressionTextScopeProvider.xtend15
-rw-r--r--prototypes/org.eclipse.sirius.expression.text/src/org/eclipse/sirius/expression/text/scoping/ExpressionTextStateBasedContainer.xtend19
-rw-r--r--prototypes/org.eclipse.sirius.expression.text/src/org/eclipse/sirius/expression/text/scoping/ExpressionTextStatedContainerManager.xtend19
-rw-r--r--prototypes/org.eclipse.sirius.expression.text/src/org/eclipse/sirius/expression/text/validation/ExpressionTextValidator.xtend25
-rw-r--r--prototypes/org.eclipse.sirius.expression.text/xtend-gen/org/eclipse/sirius/expression/text/formatting/ExpressionTextFormatter.java22
-rw-r--r--prototypes/org.eclipse.sirius.expression.text/xtend-gen/org/eclipse/sirius/expression/text/generator/ExpressionTextGenerator.java20
-rw-r--r--prototypes/org.eclipse.sirius.expression.text/xtend-gen/org/eclipse/sirius/expression/text/scoping/ExpressionTextContainerState.java39
-rw-r--r--prototypes/org.eclipse.sirius.expression.text/xtend-gen/org/eclipse/sirius/expression/text/scoping/ExpressionTextScopeProvider.java16
-rw-r--r--prototypes/org.eclipse.sirius.expression.text/xtend-gen/org/eclipse/sirius/expression/text/scoping/ExpressionTextStateBasedContainer.java18
-rw-r--r--prototypes/org.eclipse.sirius.expression.text/xtend-gen/org/eclipse/sirius/expression/text/scoping/ExpressionTextStatedContainerManager.java23
-rw-r--r--prototypes/org.eclipse.sirius.expression.text/xtend-gen/org/eclipse/sirius/expression/text/validation/ExpressionTextValidator.java15
-rw-r--r--prototypes/org.eclipse.sirius.expression/.checkstyle13
-rw-r--r--prototypes/org.eclipse.sirius.expression/.classpath11
-rw-r--r--prototypes/org.eclipse.sirius.expression/.project41
-rw-r--r--prototypes/org.eclipse.sirius.expression/.settings/org.eclipse.jdt.core.prefs398
-rw-r--r--prototypes/org.eclipse.sirius.expression/.settings/org.eclipse.jdt.launching.prefs2
-rw-r--r--prototypes/org.eclipse.sirius.expression/.settings/org.eclipse.jdt.ui.prefs67
-rw-r--r--prototypes/org.eclipse.sirius.expression/.settings/org.eclipse.pde.prefs32
-rw-r--r--prototypes/org.eclipse.sirius.expression/META-INF/MANIFEST.MF16
-rw-r--r--prototypes/org.eclipse.sirius.expression/about.html28
-rw-r--r--prototypes/org.eclipse.sirius.expression/build.properties16
-rw-r--r--prototypes/org.eclipse.sirius.expression/model/expression.aird928
-rw-r--r--prototypes/org.eclipse.sirius.expression/model/expression.ecore120
-rw-r--r--prototypes/org.eclipse.sirius.expression/model/expression.genmodel48
-rw-r--r--prototypes/org.eclipse.sirius.expression/plugin.properties8
-rw-r--r--prototypes/org.eclipse.sirius.expression/plugin.xml22
-rw-r--r--prototypes/org.eclipse.sirius.expression/src-gen/org/eclipse/sirius/expression/ExpressionFactory.java92
-rw-r--r--prototypes/org.eclipse.sirius.expression/src-gen/org/eclipse/sirius/expression/ExpressionPackage.java1007
-rw-r--r--prototypes/org.eclipse.sirius.expression/src-gen/org/eclipse/sirius/expression/SiriusExpressionClass.java94
-rw-r--r--prototypes/org.eclipse.sirius.expression/src-gen/org/eclipse/sirius/expression/SiriusExpressionDescription.java174
-rw-r--r--prototypes/org.eclipse.sirius.expression/src-gen/org/eclipse/sirius/expression/SiriusExpressionPackage.java77
-rw-r--r--prototypes/org.eclipse.sirius.expression/src-gen/org/eclipse/sirius/expression/SiriusParameter.java82
-rw-r--r--prototypes/org.eclipse.sirius.expression/src-gen/org/eclipse/sirius/expression/SiriusVariable.java112
-rw-r--r--prototypes/org.eclipse.sirius.expression/src-gen/org/eclipse/sirius/expression/UserDefinedVariable.java54
-rw-r--r--prototypes/org.eclipse.sirius.expression/src-gen/org/eclipse/sirius/expression/Variable.java84
-rw-r--r--prototypes/org.eclipse.sirius.expression/src-gen/org/eclipse/sirius/expression/impl/ExpressionFactoryImpl.java270
-rw-r--r--prototypes/org.eclipse.sirius.expression/src-gen/org/eclipse/sirius/expression/impl/ExpressionPackageImpl.java548
-rw-r--r--prototypes/org.eclipse.sirius.expression/src-gen/org/eclipse/sirius/expression/impl/SiriusExpressionClassImpl.java255
-rw-r--r--prototypes/org.eclipse.sirius.expression/src-gen/org/eclipse/sirius/expression/impl/SiriusExpressionDescriptionImpl.java438
-rw-r--r--prototypes/org.eclipse.sirius.expression/src-gen/org/eclipse/sirius/expression/impl/SiriusExpressionPackageImpl.java220
-rw-r--r--prototypes/org.eclipse.sirius.expression/src-gen/org/eclipse/sirius/expression/impl/SiriusParameterImpl.java230
-rw-r--r--prototypes/org.eclipse.sirius.expression/src-gen/org/eclipse/sirius/expression/impl/SiriusVariableImpl.java284
-rw-r--r--prototypes/org.eclipse.sirius.expression/src-gen/org/eclipse/sirius/expression/impl/UserDefinedVariableImpl.java167
-rw-r--r--prototypes/org.eclipse.sirius.expression/src-gen/org/eclipse/sirius/expression/util/ExpressionAdapterFactory.java215
-rw-r--r--prototypes/org.eclipse.sirius.expression/src-gen/org/eclipse/sirius/expression/util/ExpressionSwitch.java221
-rw-r--r--prototypes/org.eclipse.sirius.validation/.classpath7
-rw-r--r--prototypes/org.eclipse.sirius.validation/.project29
-rw-r--r--prototypes/org.eclipse.sirius.validation/.settings/org.eclipse.jdt.core.prefs7
-rw-r--r--prototypes/org.eclipse.sirius.validation/META-INF/MANIFEST.MF15
-rw-r--r--prototypes/org.eclipse.sirius.validation/about.html28
-rw-r--r--prototypes/org.eclipse.sirius.validation/build.properties15
-rw-r--r--prototypes/org.eclipse.sirius.validation/model/validation.aird223
-rw-r--r--prototypes/org.eclipse.sirius.validation/model/validation.ecore19
-rw-r--r--prototypes/org.eclipse.sirius.validation/model/validation.genmodel25
-rw-r--r--prototypes/org.eclipse.sirius.validation/plugin.properties9
-rw-r--r--prototypes/org.eclipse.sirius.validation/plugin.xml23
-rw-r--r--prototypes/org.eclipse.sirius.validation/src-gen/org/eclipse/sirius/validation/Severity.java274
-rw-r--r--prototypes/org.eclipse.sirius.validation/src-gen/org/eclipse/sirius/validation/SiriusStatus.java113
-rw-r--r--prototypes/org.eclipse.sirius.validation/src-gen/org/eclipse/sirius/validation/ValidationFactory.java48
-rw-r--r--prototypes/org.eclipse.sirius.validation/src-gen/org/eclipse/sirius/validation/ValidationPackage.java285
-rw-r--r--prototypes/org.eclipse.sirius.validation/src-gen/org/eclipse/sirius/validation/impl/SiriusStatusImpl.java268
-rw-r--r--prototypes/org.eclipse.sirius.validation/src-gen/org/eclipse/sirius/validation/impl/ValidationFactoryImpl.java174
-rw-r--r--prototypes/org.eclipse.sirius.validation/src-gen/org/eclipse/sirius/validation/impl/ValidationPackageImpl.java256
-rw-r--r--prototypes/org.eclipse.sirius.validation/src-gen/org/eclipse/sirius/validation/util/ValidationAdapterFactory.java126
-rw-r--r--prototypes/org.eclipse.sirius.validation/src-gen/org/eclipse/sirius/validation/util/ValidationSwitch.java116
-rw-r--r--releng/org.eclipse.eef.releng/.project11
-rw-r--r--releng/org.eclipse.eef.releng/about.html28
-rw-r--r--releng/org.eclipse.eef.releng/codestyle/EEF.importorder6
-rw-r--r--releng/org.eclipse.eef.releng/codestyle/EEFCheckstyleConfiguration.xml338
-rw-r--r--releng/org.eclipse.eef.releng/codestyle/EEFCodeTemplates.xml5
-rw-r--r--releng/org.eclipse.eef.releng/codestyle/EEFFormatter.xml295
-rw-r--r--releng/org.eclipse.eef.releng/pom.xml105
-rwxr-xr-xreleng/org.eclipse.eef.releng/publish-nightly.sh130
-rw-r--r--releng/org.eclipse.eef.releng/targetplatforms/neon/neon.target43
-rw-r--r--releng/org.eclipse.eef.releng/targetplatforms/neon/neon.tpd36
-rw-r--r--releng/org.eclipse.eef.releng/targetplatforms/neon/pom.xml29
-rw-r--r--releng/org.eclipse.eef.update/.project17
-rw-r--r--releng/org.eclipse.eef.update/category.xml10
-rw-r--r--releng/org.eclipse.eef.update/pom.xml58
-rw-r--r--samples/sirius-custom-editor/org.eclipse.sirius.editor.custom/.classpath7
-rw-r--r--samples/sirius-custom-editor/org.eclipse.sirius.editor.custom/.project28
-rw-r--r--samples/sirius-custom-editor/org.eclipse.sirius.editor.custom/.settings/org.eclipse.jdt.core.prefs7
-rw-r--r--samples/sirius-custom-editor/org.eclipse.sirius.editor.custom/META-INF/MANIFEST.MF39
-rw-r--r--samples/sirius-custom-editor/org.eclipse.sirius.editor.custom/about.html28
-rw-r--r--samples/sirius-custom-editor/org.eclipse.sirius.editor.custom/build.properties6
-rw-r--r--samples/sirius-custom-editor/org.eclipse.sirius.editor.custom/icons/sample.gifbin0 -> 983 bytes
-rw-r--r--samples/sirius-custom-editor/org.eclipse.sirius.editor.custom/plugin.xml25
-rw-r--r--samples/sirius-custom-editor/org.eclipse.sirius.editor.custom/src/org/eclipse/sirius/editor/custom/editors/CustomEditor.java32
-rw-r--r--samples/sirius-custom-editor/org.eclipse.sirius.editor.custom/src/org/eclipse/sirius/editor/custom/editors/SiriusPropertySheetPage.java11
-rw-r--r--samples/sirius-custom-editor/org.eclipse.sirius.editor.properties/.classpath7
-rw-r--r--samples/sirius-custom-editor/org.eclipse.sirius.editor.properties/.project28
-rw-r--r--samples/sirius-custom-editor/org.eclipse.sirius.editor.properties/.settings/org.eclipse.jdt.core.prefs7
-rw-r--r--samples/sirius-custom-editor/org.eclipse.sirius.editor.properties/META-INF/MANIFEST.MF23
-rw-r--r--samples/sirius-custom-editor/org.eclipse.sirius.editor.properties/about.html28
-rw-r--r--samples/sirius-custom-editor/org.eclipse.sirius.editor.properties/build.properties5
-rw-r--r--samples/sirius-custom-editor/org.eclipse.sirius.editor.properties/plugin.xml13
-rw-r--r--samples/sirius-custom-editor/org.eclipse.sirius.editor.properties/src/org/eclipse/sirius/editor/properties/api/EEFTabDescriptorProvider.java41
-rw-r--r--samples/sirius-custom-editor/org.eclipse.sirius.editor.properties/src/org/eclipse/sirius/editor/properties/internal/EEFBundleActivator.java23
-rw-r--r--samples/sirius-custom-editor/org.eclipse.sirius.editor.properties/src/org/eclipse/sirius/editor/properties/internal/EEFViewDescriptionProvider.java43
-rw-r--r--tests/org.eclipse.eef.tests/.checkstyle10
-rw-r--r--tests/org.eclipse.eef.tests/.classpath7
-rw-r--r--tests/org.eclipse.eef.tests/.project34
-rw-r--r--tests/org.eclipse.eef.tests/.settings/org.eclipse.jdt.core.prefs398
-rw-r--r--tests/org.eclipse.eef.tests/.settings/org.eclipse.jdt.launching.prefs2
-rw-r--r--tests/org.eclipse.eef.tests/.settings/org.eclipse.jdt.ui.prefs67
-rw-r--r--tests/org.eclipse.eef.tests/.settings/org.eclipse.pde.prefs32
-rw-r--r--tests/org.eclipse.eef.tests/META-INF/MANIFEST.MF15
-rw-r--r--tests/org.eclipse.eef.tests/about.html28
-rw-r--r--tests/org.eclipse.eef.tests/build.properties13
-rw-r--r--tests/org.eclipse.eef.tests/plugin.properties9
-rw-r--r--tests/org.eclipse.eef.tests/pom.xml45
-rw-r--r--tests/org.eclipse.eef.tests/src/org/eclipse/eef/tests/internal/AllTests.java32
-rw-r--r--tests/org.eclipse.eef.tests/src/org/eclipse/eef/tests/internal/controllers/EEFTextControllerTests.java122
-rw-r--r--tests/org.eclipse.eef.tests/src/org/eclipse/eef/tests/internal/controllers/EvaluationResult.java76
448 files changed, 48541 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index 48258e7b9..6bf79930f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,3 +4,6 @@ screenshots
*~
*.rej
*.bak
+.DS_Store
+*._trace
+*.xtendbin
diff --git a/doc/org.eclipse.eef.documentation.validator/.classpath b/doc/org.eclipse.eef.documentation.validator/.classpath
new file mode 100644
index 000000000..eca7bdba8
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation.validator/.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/doc/org.eclipse.eef.documentation.validator/.project b/doc/org.eclipse.eef.documentation.validator/.project
new file mode 100644
index 000000000..0606e959b
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation.validator/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.eef.documentation.validator</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/doc/org.eclipse.eef.documentation.validator/.settings/org.eclipse.jdt.core.prefs b/doc/org.eclipse.eef.documentation.validator/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 000000000..0c68a61dc
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation.validator/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/doc/org.eclipse.eef.documentation.validator/META-INF/MANIFEST.MF b/doc/org.eclipse.eef.documentation.validator/META-INF/MANIFEST.MF
new file mode 100644
index 000000000..6ba10591b
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation.validator/META-INF/MANIFEST.MF
@@ -0,0 +1,9 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %Bundle-Name
+Bundle-SymbolicName: org.eclipse.eef.documentation.validator
+Bundle-Version: 1.0.0.qualifier
+Bundle-Vendor: %Bundle-Vendor
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Require-Bundle: org.eclipse.emf.ecore,
+ org.eclipse.emf.ecore.xmi
diff --git a/doc/org.eclipse.eef.documentation.validator/about.html b/doc/org.eclipse.eef.documentation.validator/about.html
new file mode 100644
index 000000000..f3a55ce5f
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation.validator/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>June 15, 2010</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/doc/org.eclipse.eef.documentation.validator/build.properties b/doc/org.eclipse.eef.documentation.validator/build.properties
new file mode 100644
index 000000000..34d2e4d2d
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation.validator/build.properties
@@ -0,0 +1,4 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .
diff --git a/doc/org.eclipse.eef.documentation.validator/src/org/eclipse/eef/documentation/validator/api/AbstractValidationStatus.java b/doc/org.eclipse.eef.documentation.validator/src/org/eclipse/eef/documentation/validator/api/AbstractValidationStatus.java
new file mode 100644
index 000000000..ed1619312
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation.validator/src/org/eclipse/eef/documentation/validator/api/AbstractValidationStatus.java
@@ -0,0 +1,22 @@
+package org.eclipse.eef.documentation.validator.api;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public abstract class AbstractValidationStatus {
+ private ValidationStatusKind validationStatusKind;
+
+ protected List<Object> additionalInformation = new ArrayList<>();
+
+ public AbstractValidationStatus(ValidationStatusKind validationStatusKind) {
+ this.validationStatusKind = validationStatusKind;
+ }
+
+ public ValidationStatusKind getValidationStatusKind() {
+ return validationStatusKind;
+ }
+
+ public List<Object> getAdditionalInformation() {
+ return additionalInformation;
+ }
+}
diff --git a/doc/org.eclipse.eef.documentation.validator/src/org/eclipse/eef/documentation/validator/api/DocumentationValidator.java b/doc/org.eclipse.eef.documentation.validator/src/org/eclipse/eef/documentation/validator/api/DocumentationValidator.java
new file mode 100644
index 000000000..85d7026c3
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation.validator/src/org/eclipse/eef/documentation/validator/api/DocumentationValidator.java
@@ -0,0 +1,154 @@
+package org.eclipse.eef.documentation.validator.api;
+
+import java.util.ArrayList;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Set;
+import java.util.stream.Stream;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EClassifier;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.resource.Resource;
+
+public class DocumentationValidator {
+ private Set<EClassifier> eClassifiers = new LinkedHashSet<>();
+ private Set<EStructuralFeature> eStructuralFeatures = new LinkedHashSet<>();
+
+ private List<AbstractValidationStatus> status = new ArrayList<>();
+
+ public void validateLines(Stream<String> lines, Resource resource) {
+ EObject eObject = resource.getContents().get(0);
+ if (eObject instanceof EPackage) {
+ EPackage ePackage = (EPackage) eObject;
+
+ // Validate the documentation
+ lines.forEach(line -> {
+ if (!line.contains("#")) {
+ validateEClassifier(line, ePackage);
+ } else {
+ validateEStructuralFeature(line, ePackage);
+ }
+ });
+
+ // Find the EClassifier that have not been documented
+ ePackage.getEClassifiers().forEach(eClassifier -> {
+ if (!eClassifiers.contains(eClassifier)) {
+ this.status.add(new EClassifierValidationStatus(eClassifier, ValidationStatusKind.UNDOCUMENTED_ECLASSIFIER));
+ System.out.println("Undocumented EClassifier \"" + eClassifier.getName() + "\"");
+ }
+
+ // Find the EStructuralFeature that have not been documented
+ if (eClassifier instanceof EClass) {
+ EClass eClass = (EClass) eClassifier;
+ eClass.getEStructuralFeatures().forEach(eStructuralFeature -> {
+ if (!eStructuralFeatures.contains(eStructuralFeature)) {
+ this.status.add(new EStructuralFeatureValidationStatus(eStructuralFeature, ValidationStatusKind.UNDOCUMENTED_ESTRUCTURAL_FEATURE));
+ System.out.println("Undocumented EStructuralFeature \"" + eClass.getName() + "#" + eStructuralFeature.getName() + "\"");
+ }
+ });
+ }
+ });
+
+ }
+ }
+
+ private String getQualifiedName(EStructuralFeature eStructuralFeature) {
+ return eStructuralFeature.getEContainingClass().getName() + "#" + eStructuralFeature.getName();
+ }
+
+ private void validateEClassifier(String line, EPackage ePackage) {
+ String eClassifierName = line.substring("* ".length()).trim();
+ EClassifier eClassifier = ePackage.getEClassifier(eClassifierName);
+ if (eClassifier == null) {
+ this.status.add(new EClassifierValidationStatus(eClassifier, ValidationStatusKind.ECLASSIFIER_NOT_FOUND));
+ System.err.println("EClassifier \"" + eClassifierName + "\" not found");
+ } else {
+ this.eClassifiers.add(eClassifier);
+ }
+ }
+
+ private void validateEStructuralFeature(String line, EPackage ePackage) {
+ String eStructuralFeatureDeclaration = line.substring("* ".length()).trim();
+ String eClassifierName = eStructuralFeatureDeclaration.substring(0, eStructuralFeatureDeclaration.indexOf('#'));
+ EClassifier eClassifier = ePackage.getEClassifier(eClassifierName);
+ if (eClassifier == null) {
+ this.status.add(new EClassifierValidationStatus(eClassifier, ValidationStatusKind.ECLASSIFIER_NOT_FOUND));
+ System.err.println("EClassifier \"" + eClassifierName + "\" not found");
+ } else {
+ // We won't add the EClassifier here, it needs to be referenced directly
+
+ String eStructuralFeatureName = eStructuralFeatureDeclaration.substring(eStructuralFeatureDeclaration.indexOf('#') + 1, eStructuralFeatureDeclaration.indexOf(':'));
+ if (eClassifier instanceof EClass) {
+ EClass eClass = (EClass) eClassifier;
+ EStructuralFeature eStructuralFeature = eClass.getEStructuralFeature(eStructuralFeatureName);
+ if (eStructuralFeature == null) {
+ this.status.add(new EStructuralFeatureValidationStatus(eStructuralFeature, ValidationStatusKind.ESTRUCUTURAL_FEATURE_NOT_FOUND));
+ System.err.println("EStructuralFeature \"" + eClassifierName + "#" + eStructuralFeatureName + "\" not found");
+ } else {
+ this.eStructuralFeatures.add(eStructuralFeature);
+
+ validateEStructuralFeatureProperties(eStructuralFeatureDeclaration, eStructuralFeature);
+ }
+ }
+ }
+ }
+
+ private void validateEStructuralFeatureProperties(String eStructuralFeatureDeclaration, EStructuralFeature eStructuralFeature) {
+ String properties = eStructuralFeatureDeclaration.substring(eStructuralFeatureDeclaration.indexOf(":") + 1).trim();
+ if (eStructuralFeature instanceof EAttribute) {
+ // <type> [<lowerBound>..<upperBound>] return <type> [<lowerBound>..<upperBound>]
+ EAttribute eAttribute = (EAttribute) eStructuralFeature;
+
+ String type = properties.substring(0, properties.indexOf("[")).trim();
+ String eAttributeType = eAttribute.getEAttributeType().getName();
+ if (!eAttributeType.equals(type)) {
+ this.status.add(new EStructuralFeatureValidationStatus(eStructuralFeature, ValidationStatusKind.INVALID_EATTRIBUTE_TYPE));
+ System.err.println("Invalid EAttributeType for \"" + this.getQualifiedName(eStructuralFeature) + "\" expected \"" + eAttributeType + "\" but found \"" + type + "\"");
+ }
+
+ // <lowerBound> & <upperBound>
+ String bounds = properties.substring(properties.indexOf("[") + 1, properties.indexOf("]"));
+ this.validateBounds(bounds, eStructuralFeature);
+ } else {
+ // <type> [<lowerBound>..<upperBound>] <containment>
+ EReference eReference = (EReference) eStructuralFeature;
+
+ // <type>
+ String type = properties.substring(0, properties.indexOf("[")).trim();
+ String eReferenceType = eReference.getEReferenceType().getName();
+ if (!eReferenceType.equals(type)) {
+ this.status.add(new EStructuralFeatureValidationStatus(eStructuralFeature, ValidationStatusKind.INVALID_EREFERENCE_TYPE));
+ System.err.println("Invalid EReferenceType for \"" + this.getQualifiedName(eStructuralFeature) + "\" expected \"" + eReferenceType + "\" but found \"" + type + "\"");
+ }
+
+ // <lowerBound> & <upperBound>
+ String bounds = properties.substring(properties.indexOf("[") + 1, properties.indexOf("]"));
+ this.validateBounds(bounds, eStructuralFeature);
+
+ if (eReference.isContainment() && !properties.contains("containment")) {
+ System.err.println("EReference \"" + this.getQualifiedName(eStructuralFeature) + "\" containment expected but non containment found");
+ }
+ if (properties.contains("containment") && !eReference.isContainment()) {
+ System.err.println("EReference \"" + this.getQualifiedName(eStructuralFeature) + "\" non containment expected but containment found");
+ }
+ }
+ }
+
+ private void validateBounds(String bounds, EStructuralFeature eStructuralFeature) {
+ int lowerBound = Integer.parseInt(bounds.substring(0, bounds.indexOf("..")));
+ int upperBound = Integer.parseInt(bounds.substring(bounds.indexOf("..") + 2));
+
+ if (eStructuralFeature.getLowerBound() != lowerBound) {
+ System.err.println("Invalid lower bound for \"" + this.getQualifiedName(eStructuralFeature) + "\" expected \"" + eStructuralFeature.getLowerBound() + "\" but found \"" + lowerBound + "\"");
+ }
+ if (eStructuralFeature.getUpperBound() != upperBound) {
+ System.err.println("Invalid upper bound for \"" + this.getQualifiedName(eStructuralFeature) + "\" expected \"" + eStructuralFeature.getUpperBound() + "\" but found \"" + upperBound + "\"");
+ }
+ }
+
+}
diff --git a/doc/org.eclipse.eef.documentation.validator/src/org/eclipse/eef/documentation/validator/api/EClassifierValidationStatus.java b/doc/org.eclipse.eef.documentation.validator/src/org/eclipse/eef/documentation/validator/api/EClassifierValidationStatus.java
new file mode 100644
index 000000000..e6b80d61d
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation.validator/src/org/eclipse/eef/documentation/validator/api/EClassifierValidationStatus.java
@@ -0,0 +1,18 @@
+package org.eclipse.eef.documentation.validator.api;
+
+import org.eclipse.emf.ecore.EClassifier;
+
+public class EClassifierValidationStatus extends AbstractValidationStatus {
+
+ private EClassifier eClassifier;
+
+ public EClassifierValidationStatus(EClassifier eClassifier, ValidationStatusKind validationStatusKind) {
+ super(validationStatusKind);
+ this.eClassifier = eClassifier;
+ }
+
+ public EClassifier getEClassifier() {
+ return eClassifier;
+ }
+
+}
diff --git a/doc/org.eclipse.eef.documentation.validator/src/org/eclipse/eef/documentation/validator/api/EStructuralFeatureValidationStatus.java b/doc/org.eclipse.eef.documentation.validator/src/org/eclipse/eef/documentation/validator/api/EStructuralFeatureValidationStatus.java
new file mode 100644
index 000000000..27d38f713
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation.validator/src/org/eclipse/eef/documentation/validator/api/EStructuralFeatureValidationStatus.java
@@ -0,0 +1,18 @@
+package org.eclipse.eef.documentation.validator.api;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+public class EStructuralFeatureValidationStatus extends AbstractValidationStatus {
+
+ private EStructuralFeature eStructuralFeature;
+
+ public EStructuralFeatureValidationStatus(EStructuralFeature eStructuralFeature, ValidationStatusKind validationStatusKind) {
+ super(validationStatusKind);
+ this.eStructuralFeature = eStructuralFeature;
+ }
+
+ public EStructuralFeature getEStructuralFeature() {
+ return eStructuralFeature;
+ }
+
+}
diff --git a/doc/org.eclipse.eef.documentation.validator/src/org/eclipse/eef/documentation/validator/api/ValidationStatusKind.java b/doc/org.eclipse.eef.documentation.validator/src/org/eclipse/eef/documentation/validator/api/ValidationStatusKind.java
new file mode 100644
index 000000000..785d457ce
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation.validator/src/org/eclipse/eef/documentation/validator/api/ValidationStatusKind.java
@@ -0,0 +1,13 @@
+package org.eclipse.eef.documentation.validator.api;
+
+public enum ValidationStatusKind {
+ UNDOCUMENTED_ECLASSIFIER,
+ UNDOCUMENTED_ESTRUCTURAL_FEATURE,
+ ECLASSIFIER_NOT_FOUND,
+ ESTRUCUTURAL_FEATURE_NOT_FOUND,
+ INVALID_EATTRIBUTE_TYPE,
+ INVALID_EREFERENCE_TYPE,
+ INVALID_LOWER_BOUND,
+ INVALID_UPPER_BOUND,
+ INVALID_EREFERENCE_CONTAINMENT
+}
diff --git a/doc/org.eclipse.eef.documentation.validator/src/org/eclipse/eef/documentation/validator/api/Validator.java b/doc/org.eclipse.eef.documentation.validator/src/org/eclipse/eef/documentation/validator/api/Validator.java
new file mode 100644
index 000000000..cadd5d614
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation.validator/src/org/eclipse/eef/documentation/validator/api/Validator.java
@@ -0,0 +1,36 @@
+package org.eclipse.eef.documentation.validator.api;
+
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.util.stream.Stream;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl;
+
+public class Validator {
+ public static void main(String[] args) {
+ String eefEcorePath = args[0];
+ String metamodelMdPath = args[1];
+
+ // Load the eef.ecore model
+ ResourceSet resourceSet = new ResourceSetImpl();
+ resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("ecore", new XMIResourceFactoryImpl());
+ URI uri = URI.createFileURI(new File(eefEcorePath).getAbsolutePath());
+ Resource resource = resourceSet.getResource(uri , true);
+
+ // Read the documentation
+ try {
+ Stream<String> lines = Files.lines(Paths.get(new File(metamodelMdPath).toURI())).filter(line -> line.startsWith("* "));
+ new DocumentationValidator().validateLines(lines, resource);
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+
+}
diff --git a/doc/org.eclipse.eef.documentation/.classpath b/doc/org.eclipse.eef.documentation/.classpath
new file mode 100644
index 000000000..710b27a72
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation/.classpath
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/doc/org.eclipse.eef.documentation/.project b/doc/org.eclipse.eef.documentation/.project
new file mode 100644
index 000000000..016e70aed
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.eef.documentation</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/doc/org.eclipse.eef.documentation/.settings/org.eclipse.jdt.core.prefs b/doc/org.eclipse.eef.documentation/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 000000000..f42de363a
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
+org.eclipse.jdt.core.compiler.compliance=1.7
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.7
diff --git a/doc/org.eclipse.eef.documentation/META-INF/MANIFEST.MF b/doc/org.eclipse.eef.documentation/META-INF/MANIFEST.MF
new file mode 100644
index 000000000..95decaf5c
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation/META-INF/MANIFEST.MF
@@ -0,0 +1,7 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.eef.documentation
+Bundle-Version: 2.0.0.qualifier
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
diff --git a/doc/org.eclipse.eef.documentation/about.html b/doc/org.eclipse.eef.documentation/about.html
new file mode 100644
index 000000000..f3a55ce5f
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>June 15, 2010</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/doc/org.eclipse.eef.documentation/build.properties b/doc/org.eclipse.eef.documentation/build.properties
new file mode 100644
index 000000000..65f02c56e
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation/build.properties
@@ -0,0 +1,14 @@
+#################################################################################
+# Copyright (c) 2015 Obeo.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+# Obeo - initial API and implementation
+#################################################################################
+bin.includes = META-INF/,\
+ .,\
+ about.html,\
+ plugin.properties
diff --git a/doc/org.eclipse.eef.documentation/plugin.properties b/doc/org.eclipse.eef.documentation/plugin.properties
new file mode 100644
index 000000000..5bba1d8f1
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation/plugin.properties
@@ -0,0 +1,12 @@
+#################################################################################
+# Copyright (c) 2015 Obeo.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+# Obeo - initial API and implementation
+#################################################################################
+pluginName=EEF Documentation
+providerName=Eclipse Modeling Project \ No newline at end of file
diff --git a/doc/org.eclipse.eef.documentation/pom.xml b/doc/org.eclipse.eef.documentation/pom.xml
new file mode 100644
index 000000000..955a3be73
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation/pom.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Copyright (c) 2015 Obeo.
+All rights reserved. This program and the accompanying materials
+are made available under the terms of the Eclipse Public License v1.0
+which accompanies this distribution, and is available at
+http://www.eclipse.org/legal/epl-v10.html
+
+Contributors:
+ Obeo - initial API and implementation
+-->
+<project
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.eclipse.eef</groupId>
+ <artifactId>org.eclipse.eef.parent</artifactId>
+ <version>2.0.0-SNAPSHOT</version>
+ <relativePath>../../releng/org.eclipse.eef.releng</relativePath>
+ </parent>
+
+ <artifactId>org.eclipse.eef.documentation</artifactId>
+ <packaging>eclipse-plugin</packaging>
+
+ <name>EEF Documentation</name>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>tycho-source-plugin</artifactId>
+ <version>${tycho-version}</version>
+ </plugin>
+ </plugins>
+ </build>
+</project> \ No newline at end of file
diff --git a/doc/org.eclipse.eef.documentation/sketches/US-1.screen b/doc/org.eclipse.eef.documentation/sketches/US-1.screen
new file mode 100644
index 000000000..51f3a0042
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation/sketches/US-1.screen
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<model:Screen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:model="http://wireframesketcher.com/1.0/model.ecore">
+ <widgets xsi:type="model:TabbedPane" id="2" x="64" y="80" width="529" height="377" text="Properties View" measuredWidth="529" measuredHeight="377" selection="0">
+ <items x="10" y="0" width="104" height="27" text="Properties View"/>
+ <font/>
+ </widgets>
+ <hRuler/>
+ <vRuler/>
+ <font size="12px"/>
+</model:Screen>
diff --git a/doc/org.eclipse.eef.documentation/sketches/US-10.screen b/doc/org.eclipse.eef.documentation/sketches/US-10.screen
new file mode 100644
index 000000000..9a4f409f5
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation/sketches/US-10.screen
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<model:Screen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:model="http://wireframesketcher.com/1.0/model.ecore">
+ <widgets xsi:type="model:TabbedPane" id="2" x="64" y="80" width="529" height="377" text="Properties View" measuredWidth="529" measuredHeight="377" selection="0">
+ <items x="10" y="0" width="104" height="27" text="Properties View"/>
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:TabbedPane" id="3" x="74" y="117" width="509" height="330" text="General" measuredWidth="509" measuredHeight="330" selection="0" position="left">
+ <items x="0" y="10" width="62" height="25" text="General"/>
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Group" id="4" x="146" y="127" width="427" height="145" text="ENamedElement" measuredWidth="427" measuredHeight="145">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Group" id="5" x="146" y="288" width="427" height="145" text="EClass" measuredWidth="427" measuredHeight="145">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Label" id="6" x="156" y="144" text="Name" measuredWidth="38" measuredHeight="23">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:TextField" id="7" x="193" y="144" width="361" text="MyEClass" measuredWidth="361" measuredHeight="23">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Checkbox" id="8" x="156" y="305" text="Abstract" measuredWidth="65" measuredHeight="23">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Label" id="9" x="156" y="176" text="Description This is the label description." measuredWidth="216" measuredHeight="23">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Link" id="10" x="156" y="198" text="Open documentation" measuredWidth="117" measuredHeight="23">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Label" id="13" x="156" y="218" text="The EClass image" measuredWidth="92" measuredHeight="58" textAlignment="Center" icon="image (large)" iconPosition="top">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Icon" id="14" x="227" y="324" width="55" height="51" measuredWidth="55" measuredHeight="51" icon="image (large)"/>
+ <widgets xsi:type="model:Label" id="15" x="156" y="327" text="Image picker" measuredWidth="75" measuredHeight="23">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Button" id="16" x="285" y="330" text="..." measuredWidth="29" measuredHeight="25">
+ <font/>
+ </widgets>
+ <hRuler/>
+ <vRuler/>
+ <font size="12px"/>
+</model:Screen>
diff --git a/doc/org.eclipse.eef.documentation/sketches/US-11.screen b/doc/org.eclipse.eef.documentation/sketches/US-11.screen
new file mode 100644
index 000000000..3a7090013
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation/sketches/US-11.screen
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<model:Screen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:model="http://wireframesketcher.com/1.0/model.ecore">
+ <widgets xsi:type="model:TabbedPane" id="2" x="64" y="80" width="529" height="393" text="Properties View" measuredWidth="529" measuredHeight="393" selection="0">
+ <items x="10" y="0" width="104" height="27" text="Properties View"/>
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:TabbedPane" id="3" x="74" y="117" width="509" height="348" text="General" measuredWidth="509" measuredHeight="348" selection="0" position="left">
+ <items x="0" y="10" width="62" height="25" text="General"/>
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Group" id="4" x="146" y="127" width="427" height="145" text="ENamedElement" measuredWidth="427" measuredHeight="145">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Group" id="5" x="146" y="288" width="427" height="169" text="EClass" measuredWidth="427" measuredHeight="169">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Label" id="6" x="156" y="144" text="Name" measuredWidth="38" measuredHeight="23">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:TextField" id="7" x="193" y="144" width="361" text="MyEClass" measuredWidth="361" measuredHeight="23">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Checkbox" id="8" x="156" y="305" text="Abstract" measuredWidth="65" measuredHeight="23">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Label" id="9" x="156" y="176" text="Description This is the label description." measuredWidth="216" measuredHeight="23">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Link" id="10" x="156" y="198" text="Open documentation" measuredWidth="117" measuredHeight="23">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Label" id="13" x="156" y="218" text="The EClass image" measuredWidth="92" measuredHeight="58" textAlignment="Center" icon="image (large)" iconPosition="top">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Icon" id="14" x="227" y="324" width="55" height="51" measuredWidth="55" measuredHeight="51" icon="image (large)"/>
+ <widgets xsi:type="model:Label" id="15" x="156" y="327" text="Image picker" measuredWidth="75" measuredHeight="23">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Button" id="16" x="285" y="330" text="..." measuredWidth="29" measuredHeight="25">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:List" id="17" x="208" y="374" text="(o) public class&#xA;( ) protected class&#xA;( ) private class" measuredWidth="110" measuredHeight="70" border="false" alpha="0">
+ <font/>
+ <items x="0" y="2" width="110" height="22" text="(o) public class"/>
+ <items x="0" y="24" width="110" height="22" text="( ) protected class"/>
+ <items x="0" y="46" width="110" height="22" text="( ) private class"/>
+ </widgets>
+ <widgets xsi:type="model:Label" id="18" x="156" y="397" text="Visibility" measuredWidth="50" measuredHeight="23">
+ <font/>
+ </widgets>
+ <hRuler/>
+ <vRuler/>
+ <font size="12px"/>
+</model:Screen>
diff --git a/doc/org.eclipse.eef.documentation/sketches/US-12.screen b/doc/org.eclipse.eef.documentation/sketches/US-12.screen
new file mode 100644
index 000000000..e96ac778a
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation/sketches/US-12.screen
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<model:Screen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:model="http://wireframesketcher.com/1.0/model.ecore">
+ <widgets xsi:type="model:TabbedPane" id="2" x="64" y="80" width="529" height="393" text="Properties View" measuredWidth="529" measuredHeight="393" selection="0">
+ <items x="10" y="0" width="104" height="27" text="Properties View"/>
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:TabbedPane" id="3" x="74" y="117" width="509" height="348" text="General" measuredWidth="509" measuredHeight="348" selection="0" position="left">
+ <items x="0" y="10" width="62" height="25" text="General"/>
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Group" id="4" x="146" y="127" width="427" height="328" text="EClass" measuredWidth="427" measuredHeight="328">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Label" id="19" x="156" y="144" text="Documentation" measuredWidth="89" measuredHeight="23">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:TextArea" id="21" x="244" y="144" width="319" height="65" text="A paragraph of text&#xA;A second row of text" measuredWidth="319" measuredHeight="65">
+ <font/>
+ </widgets>
+ <hRuler/>
+ <vRuler/>
+ <font size="12px"/>
+</model:Screen>
diff --git a/doc/org.eclipse.eef.documentation/sketches/US-13.screen b/doc/org.eclipse.eef.documentation/sketches/US-13.screen
new file mode 100644
index 000000000..86037936b
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation/sketches/US-13.screen
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<model:Screen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:model="http://wireframesketcher.com/1.0/model.ecore">
+ <widgets xsi:type="model:TabbedPane" id="2" x="64" y="80" width="529" height="393" text="Properties View" measuredWidth="529" measuredHeight="393" selection="0">
+ <items x="10" y="0" width="104" height="27" text="Properties View"/>
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:TabbedPane" id="3" x="74" y="117" width="509" height="348" text="General" measuredWidth="509" measuredHeight="348" selection="0" position="left">
+ <items x="0" y="10" width="62" height="25" text="General"/>
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Group" id="4" x="146" y="127" width="427" height="328" text="EClass" measuredWidth="427" measuredHeight="328">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Label" id="23" x="156" y="144" text="ESuperTypes" measuredWidth="73" measuredHeight="23">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:List" id="24" x="228" y="144" text="FirstEClass&#xA;|SecondEClass&#xA;|ThirdEClass" measuredWidth="82" measuredHeight="67">
+ <font/>
+ <items x="0" y="2" width="82" height="21" text="FirstEClass"/>
+ <items x="0" y="23" width="82" height="21" text="|SecondEClass"/>
+ <items x="0" y="44" width="82" height="21" text="|ThirdEClass"/>
+ </widgets>
+ <hRuler/>
+ <vRuler/>
+ <font size="12px"/>
+</model:Screen>
diff --git a/doc/org.eclipse.eef.documentation/sketches/US-14.screen b/doc/org.eclipse.eef.documentation/sketches/US-14.screen
new file mode 100644
index 000000000..a72646020
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation/sketches/US-14.screen
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<model:Screen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:model="http://wireframesketcher.com/1.0/model.ecore">
+ <widgets xsi:type="model:TabbedPane" id="2" x="64" y="80" width="529" height="393" text="Properties View" measuredWidth="529" measuredHeight="393" selection="0">
+ <items x="10" y="0" width="104" height="27" text="Properties View"/>
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:TabbedPane" id="3" x="74" y="117" width="509" height="348" text="General" measuredWidth="509" measuredHeight="348" selection="0" position="left">
+ <items x="0" y="10" width="62" height="25" text="General"/>
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Group" id="4" x="146" y="127" width="427" height="328" text="EClass" measuredWidth="427" measuredHeight="328">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Tree" id="25" x="222" y="148" text="v CurrentEClass&#xA;--FirstChildEAttribute&#xA;-SecondChildEAttribute&#xA;-FirstChildEReference&#xA;-SecondChildEReference" measuredWidth="178" measuredHeight="115">
+ <items x="0" y="5" width="178" height="21" text="v CurrentEClass"/>
+ <items x="0" y="26" width="178" height="21" text="--FirstChildEAttribute"/>
+ <items x="0" y="47" width="178" height="21" text="-SecondChildEAttribute"/>
+ <items x="0" y="68" width="178" height="21" text="-FirstChildEReference"/>
+ <items x="0" y="89" width="178" height="21" text="-SecondChildEReference"/>
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Label" id="26" x="156" y="148" text="EAllContent" measuredWidth="67" measuredHeight="23">
+ <font/>
+ </widgets>
+ <hRuler/>
+ <vRuler/>
+ <font size="12px"/>
+</model:Screen>
diff --git a/doc/org.eclipse.eef.documentation/sketches/US-15.screen b/doc/org.eclipse.eef.documentation/sketches/US-15.screen
new file mode 100644
index 000000000..3123e582f
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation/sketches/US-15.screen
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<model:Screen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:model="http://wireframesketcher.com/1.0/model.ecore">
+ <widgets xsi:type="model:TabbedPane" id="2" x="64" y="80" width="529" height="393" text="Properties View" measuredWidth="529" measuredHeight="393" selection="0">
+ <items x="10" y="0" width="104" height="27" text="Properties View"/>
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:TabbedPane" id="3" x="74" y="117" width="509" height="348" text="General" measuredWidth="509" measuredHeight="348" selection="0" position="left">
+ <items x="0" y="10" width="62" height="25" text="General"/>
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Group" id="4" x="146" y="127" width="427" height="328" text="EClass" measuredWidth="427" measuredHeight="328">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Label" id="26" x="156" y="148" text="EAllContent" measuredWidth="67" measuredHeight="23">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:List" id="27" x="222" y="148" width="163" text="FirstChildEAttribute&#xA;FirstChildEReference" measuredWidth="163" measuredHeight="46">
+ <font/>
+ <items x="0" y="2" width="163" height="21" text="FirstChildEAttribute"/>
+ <items x="0" y="23" width="163" height="21" text="FirstChildEReference"/>
+ </widgets>
+ <widgets xsi:type="model:Button" id="28" x="392" y="147" text="..." measuredWidth="29" measuredHeight="25">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Window" id="29" x="608" y="80" width="265" height="185" text="Select EAllContent" measuredWidth="265" measuredHeight="185"/>
+ <widgets xsi:type="model:Tree" id="30" x="688" y="107" text="v CurrentEClass&#xA;|--FirstChildEAttribute&#xA;-SecondChildEAttribute&#xA;|-FirstChildEReference&#xA;-SecondChildEReference" measuredWidth="178" measuredHeight="115" selection="3">
+ <items x="0" y="5" width="178" height="21" text="v CurrentEClass"/>
+ <items x="0" y="26" width="178" height="21" text="|--FirstChildEAttribute"/>
+ <items x="0" y="47" width="178" height="21" text="-SecondChildEAttribute"/>
+ <items x="0" y="68" width="178" height="21" text="|-FirstChildEReference"/>
+ <items x="0" y="89" width="178" height="21" text="-SecondChildEReference"/>
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Label" id="31" x="622" y="107" text="EAllContent" measuredWidth="67" measuredHeight="23">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Button" id="32" x="830" y="235" text="OK" measuredWidth="36" measuredHeight="25">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Button" id="33" x="772" y="235" text="Cancel" measuredWidth="55" measuredHeight="25">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Arrow" id="36" x="420" y="100" width="189" height="61" measuredWidth="189" measuredHeight="61" left="false" right="true" direction="bottom"/>
+ <hRuler/>
+ <vRuler/>
+ <font size="12px"/>
+</model:Screen>
diff --git a/doc/org.eclipse.eef.documentation/sketches/US-16.screen b/doc/org.eclipse.eef.documentation/sketches/US-16.screen
new file mode 100644
index 000000000..dd8a87bc1
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation/sketches/US-16.screen
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<model:Screen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:model="http://wireframesketcher.com/1.0/model.ecore">
+ <widgets xsi:type="model:TabbedPane" id="2" x="64" y="80" width="529" height="393" text="Properties View" measuredWidth="529" measuredHeight="393" selection="0">
+ <items x="10" y="0" width="104" height="27" text="Properties View"/>
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:TabbedPane" id="3" x="74" y="117" width="509" height="348" text="General" measuredWidth="509" measuredHeight="348" selection="0" position="left">
+ <items x="0" y="10" width="62" height="25" text="General"/>
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Group" id="4" x="146" y="127" width="427" height="328" text="EClass" measuredWidth="427" measuredHeight="328">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Label" id="26" x="156" y="148" text="EAllContent" measuredWidth="67" measuredHeight="23">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Table" id="37" x="156" y="170" text="Name,EType, Derived&#xA;FirstChildEAttribute,EBoolean,[]&#xA;SecondChildEAttribute,EString,[]&#xA;FirstChildEReference,MyEClass,[x]&#xA;SecondChildEReference,MyEClass,[]" measuredWidth="248" measuredHeight="113" alternative="#eeeeee">
+ <font/>
+ </widgets>
+ <hRuler/>
+ <vRuler/>
+ <font size="12px"/>
+</model:Screen>
diff --git a/doc/org.eclipse.eef.documentation/sketches/US-2.screen b/doc/org.eclipse.eef.documentation/sketches/US-2.screen
new file mode 100644
index 000000000..5f85ffe06
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation/sketches/US-2.screen
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<model:Screen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:model="http://wireframesketcher.com/1.0/model.ecore">
+ <widgets xsi:type="model:TabbedPane" id="2" x="64" y="80" width="529" height="377" text="Properties View" measuredWidth="529" measuredHeight="377" selection="0">
+ <items x="10" y="0" width="104" height="27" text="Properties View"/>
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:TabbedPane" id="3" x="74" y="117" width="509" height="330" text="General" measuredWidth="509" measuredHeight="330" selection="0" position="left">
+ <items x="0" y="10" width="62" height="25" text="General"/>
+ <font/>
+ </widgets>
+ <hRuler/>
+ <vRuler/>
+ <font size="12px"/>
+</model:Screen>
diff --git a/doc/org.eclipse.eef.documentation/sketches/US-3.screen b/doc/org.eclipse.eef.documentation/sketches/US-3.screen
new file mode 100644
index 000000000..55300e895
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation/sketches/US-3.screen
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<model:Screen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:model="http://wireframesketcher.com/1.0/model.ecore">
+ <widgets xsi:type="model:TabbedPane" id="2" x="64" y="80" width="529" height="377" text="Properties View" measuredWidth="529" measuredHeight="377" selection="0">
+ <items x="10" y="0" width="104" height="27" text="Properties View"/>
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:TabbedPane" id="3" x="74" y="117" width="509" height="330" text="General" measuredWidth="509" measuredHeight="330" selection="0" position="left">
+ <items x="0" y="10" width="62" height="25" text="General"/>
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Group" id="4" x="146" y="127" width="427" height="145" text="ENamedElement" measuredWidth="427" measuredHeight="145">
+ <font/>
+ </widgets>
+ <hRuler/>
+ <vRuler/>
+ <font size="12px"/>
+</model:Screen>
diff --git a/doc/org.eclipse.eef.documentation/sketches/US-4.screen b/doc/org.eclipse.eef.documentation/sketches/US-4.screen
new file mode 100644
index 000000000..88a766d3f
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation/sketches/US-4.screen
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<model:Screen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:model="http://wireframesketcher.com/1.0/model.ecore">
+ <widgets xsi:type="model:TabbedPane" id="2" x="64" y="80" width="529" height="377" text="Properties View" measuredWidth="529" measuredHeight="377" selection="0">
+ <items x="10" y="0" width="104" height="27" text="Properties View"/>
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:TabbedPane" id="3" x="74" y="117" width="509" height="330" text="General" measuredWidth="509" measuredHeight="330" selection="0" position="left">
+ <items x="0" y="10" width="62" height="25" text="General"/>
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Group" id="4" x="146" y="127" width="427" height="145" text="ENamedElement" measuredWidth="427" measuredHeight="145">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Group" id="5" x="146" y="288" width="427" height="145" text="EClass" measuredWidth="427" measuredHeight="145">
+ <font/>
+ </widgets>
+ <hRuler/>
+ <vRuler/>
+ <font size="12px"/>
+</model:Screen>
diff --git a/doc/org.eclipse.eef.documentation/sketches/US-5.screen b/doc/org.eclipse.eef.documentation/sketches/US-5.screen
new file mode 100644
index 000000000..2fb6e12db
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation/sketches/US-5.screen
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<model:Screen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:model="http://wireframesketcher.com/1.0/model.ecore">
+ <widgets xsi:type="model:TabbedPane" id="2" x="64" y="80" width="529" height="377" text="Properties View" measuredWidth="529" measuredHeight="377" selection="0">
+ <items x="10" y="0" width="104" height="27" text="Properties View"/>
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:TabbedPane" id="3" x="74" y="117" width="509" height="330" text="General" measuredWidth="509" measuredHeight="330" selection="0" position="left">
+ <items x="0" y="10" width="62" height="25" text="General"/>
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Group" id="4" x="146" y="127" width="427" height="145" text="ENamedElement" measuredWidth="427" measuredHeight="145">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Group" id="5" x="146" y="288" width="427" height="145" text="EClass" measuredWidth="427" measuredHeight="145">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Label" id="6" x="156" y="144" text="Name" measuredWidth="38" measuredHeight="23">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:TextField" id="7" x="193" y="144" width="361" text="MyEClass" measuredWidth="361" measuredHeight="23">
+ <font/>
+ </widgets>
+ <hRuler/>
+ <vRuler/>
+ <font size="12px"/>
+</model:Screen>
diff --git a/doc/org.eclipse.eef.documentation/sketches/US-6.screen b/doc/org.eclipse.eef.documentation/sketches/US-6.screen
new file mode 100644
index 000000000..600859c81
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation/sketches/US-6.screen
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<model:Screen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:model="http://wireframesketcher.com/1.0/model.ecore">
+ <widgets xsi:type="model:TabbedPane" id="2" x="64" y="80" width="529" height="377" text="Properties View" measuredWidth="529" measuredHeight="377" selection="0">
+ <items x="10" y="0" width="104" height="27" text="Properties View"/>
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:TabbedPane" id="3" x="74" y="117" width="509" height="330" text="General" measuredWidth="509" measuredHeight="330" selection="0" position="left">
+ <items x="0" y="10" width="62" height="25" text="General"/>
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Group" id="4" x="146" y="127" width="427" height="145" text="ENamedElement" measuredWidth="427" measuredHeight="145">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Group" id="5" x="146" y="288" width="427" height="145" text="EClass" measuredWidth="427" measuredHeight="145">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Label" id="6" x="156" y="144" text="Name" measuredWidth="38" measuredHeight="23">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:TextField" id="7" x="193" y="144" width="361" text="MyEClass" measuredWidth="361" measuredHeight="23">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Checkbox" id="8" x="156" y="305" text="Abstract" measuredWidth="65" measuredHeight="23">
+ <font/>
+ </widgets>
+ <hRuler/>
+ <vRuler/>
+ <font size="12px"/>
+</model:Screen>
diff --git a/doc/org.eclipse.eef.documentation/sketches/US-7.screen b/doc/org.eclipse.eef.documentation/sketches/US-7.screen
new file mode 100644
index 000000000..98f3e184d
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation/sketches/US-7.screen
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<model:Screen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:model="http://wireframesketcher.com/1.0/model.ecore">
+ <widgets xsi:type="model:TabbedPane" id="2" x="64" y="80" width="529" height="377" text="Properties View" measuredWidth="529" measuredHeight="377" selection="0">
+ <items x="10" y="0" width="104" height="27" text="Properties View"/>
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:TabbedPane" id="3" x="74" y="117" width="509" height="330" text="General" measuredWidth="509" measuredHeight="330" selection="0" position="left">
+ <items x="0" y="10" width="62" height="25" text="General"/>
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Group" id="4" x="146" y="127" width="427" height="145" text="ENamedElement" measuredWidth="427" measuredHeight="145">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Group" id="5" x="146" y="288" width="427" height="145" text="EClass" measuredWidth="427" measuredHeight="145">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Label" id="6" x="156" y="144" text="Name" measuredWidth="38" measuredHeight="23">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:TextField" id="7" x="193" y="144" width="361" text="MyEClass" measuredWidth="361" measuredHeight="23">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Checkbox" id="8" x="156" y="305" text="Abstract" measuredWidth="65" measuredHeight="23">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Label" id="9" x="156" y="176" text="Description This is the label description." measuredWidth="216" measuredHeight="23">
+ <font/>
+ </widgets>
+ <hRuler/>
+ <vRuler/>
+ <font size="12px"/>
+</model:Screen>
diff --git a/doc/org.eclipse.eef.documentation/sketches/US-8.screen b/doc/org.eclipse.eef.documentation/sketches/US-8.screen
new file mode 100644
index 000000000..ad176e324
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation/sketches/US-8.screen
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<model:Screen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:model="http://wireframesketcher.com/1.0/model.ecore">
+ <widgets xsi:type="model:TabbedPane" id="2" x="64" y="80" width="529" height="377" text="Properties View" measuredWidth="529" measuredHeight="377" selection="0">
+ <items x="10" y="0" width="104" height="27" text="Properties View"/>
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:TabbedPane" id="3" x="74" y="117" width="509" height="330" text="General" measuredWidth="509" measuredHeight="330" selection="0" position="left">
+ <items x="0" y="10" width="62" height="25" text="General"/>
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Group" id="4" x="146" y="127" width="427" height="145" text="ENamedElement" measuredWidth="427" measuredHeight="145">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Group" id="5" x="146" y="288" width="427" height="145" text="EClass" measuredWidth="427" measuredHeight="145">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Label" id="6" x="156" y="144" text="Name" measuredWidth="38" measuredHeight="23">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:TextField" id="7" x="193" y="144" width="361" text="MyEClass" measuredWidth="361" measuredHeight="23">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Checkbox" id="8" x="156" y="305" text="Abstract" measuredWidth="65" measuredHeight="23">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Label" id="9" x="156" y="176" text="Description This is the label description." measuredWidth="216" measuredHeight="23">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Link" id="10" x="156" y="198" text="Open documentation" measuredWidth="117" measuredHeight="23">
+ <font/>
+ </widgets>
+ <hRuler/>
+ <vRuler/>
+ <font size="12px"/>
+</model:Screen>
diff --git a/doc/org.eclipse.eef.documentation/sketches/US-9.screen b/doc/org.eclipse.eef.documentation/sketches/US-9.screen
new file mode 100644
index 000000000..f8b0d43d5
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation/sketches/US-9.screen
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<model:Screen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:model="http://wireframesketcher.com/1.0/model.ecore">
+ <widgets xsi:type="model:TabbedPane" id="2" x="64" y="80" width="529" height="377" text="Properties View" measuredWidth="529" measuredHeight="377" selection="0">
+ <items x="10" y="0" width="104" height="27" text="Properties View"/>
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:TabbedPane" id="3" x="74" y="117" width="509" height="330" text="General" measuredWidth="509" measuredHeight="330" selection="0" position="left">
+ <items x="0" y="10" width="62" height="25" text="General"/>
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Group" id="4" x="146" y="127" width="427" height="145" text="ENamedElement" measuredWidth="427" measuredHeight="145">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Group" id="5" x="146" y="288" width="427" height="145" text="EClass" measuredWidth="427" measuredHeight="145">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Label" id="6" x="156" y="144" text="Name" measuredWidth="38" measuredHeight="23">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:TextField" id="7" x="193" y="144" width="361" text="MyEClass" measuredWidth="361" measuredHeight="23">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Checkbox" id="8" x="156" y="305" text="Abstract" measuredWidth="65" measuredHeight="23">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Label" id="9" x="156" y="176" text="Description This is the label description." measuredWidth="216" measuredHeight="23">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Link" id="10" x="156" y="198" text="Open documentation" measuredWidth="117" measuredHeight="23">
+ <font/>
+ </widgets>
+ <widgets xsi:type="model:Label" id="13" x="156" y="218" text="The EClass image" measuredWidth="92" measuredHeight="58" textAlignment="Center" icon="image (large)" iconPosition="top">
+ <font/>
+ </widgets>
+ <hRuler/>
+ <vRuler/>
+ <font size="12px"/>
+</model:Screen>
diff --git a/doc/org.eclipse.eef.documentation/userstories/US-1.xmi b/doc/org.eclipse.eef.documentation/userstories/US-1.xmi
new file mode 100644
index 000000000..efa29d111
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation/userstories/US-1.xmi
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<eef:EEFViewDescription
+ xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:eef="http://www.eclipse.org/eef"
+ xsi:schemaLocation="http://www.eclipse.org/eef ../../org.eclipse.eef/model/eef.ecore"
+ identifier="org.eclipse.eef.ecore"
+ labelExpression="aql:viewSemanticCandidate.name">
+ <ePackageNsUris>http://www.eclipse.org/emf/2002/Ecore</ePackageNsUris>
+</eef:EEFViewDescription>
diff --git a/doc/org.eclipse.eef.documentation/userstories/US-10.xmi b/doc/org.eclipse.eef.documentation/userstories/US-10.xmi
new file mode 100644
index 000000000..e278f45ee
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation/userstories/US-10.xmi
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<eef:EEFViewDescription
+ xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:eef="http://www.eclipse.org/eef"
+ xsi:schemaLocation="http://www.eclipse.org/eef ../../org.eclipse.eef/model/eef.ecore"
+ identifier="org.eclipse.eef.ecore"
+ labelExpression="aql:viewSemanticCandidate.name">
+ <ePackageNsUris>http://www.eclipse.org/emf/2002/Ecore</ePackageNsUris>
+ <groups identifier="org.eclipse.eef.ecore.enamedelement"
+ labelExpression="aql:'ENamedElement'"
+ domainClass="ecore.ENamedElement"
+ semanticCandidateExpression="">
+ <container
+ identifier="org.eclipse.eef.ecore.enamedelement.container"
+ domainClass="ecore.ENamedElement">
+ <widgets
+ xsi:type="eef:EEFTextDescription"
+ identifier="org.eclipse.eef.ecore.enamedelement.name"
+ labelExpression="aql:'Name'"
+ valueExpression="aql:viewSemanticCandidate.name"
+ editExpression="aql:viewSemanticCandidate.eSet(viewSemanticCandidate.eClass().getEStructuralFeature('name'), newValue)"/>
+ <widgets
+ xsi:type="eef:EEFLabelDescription"
+ identifier="org.eclipse.eef.ecore.enamedelement.description"
+ labelExpression="aql:'Description'"
+ valueExpression="aql:'This is the label description.'"/>
+ <widgets
+ xsi:type="eef:EEFLinkDescription"
+ identifier="org.eclipse.eef.ecore.enamedelement.opendocumentation"
+ labelExpression="aql:'Open documentation'"
+ onClickExpression="aql:viewSemanticCandidate.openDocumentation()"/>
+ <widgets
+ xsi:type="eef:EEFImageDescription"
+ identifier="org.eclipse.eef.ecore.enamedelement.image"
+ labelExpression="aql:'The EClass image'"
+ valueExpression="aql:'platform:/plugins/org/eclipse/emf/icons/obj16/EClass.gif'"/>
+ </container>
+ </groups>
+ <groups identifier="org.eclipse.eef.ecore.eclass"
+ labelExpression="aql:'EClass'"
+ domainClass="ecore.EClass"
+ semanticCandidateExpression="">
+ <container
+ identifier="org.eclipse.eef.ecore.eclass.container">
+ <widgets
+ xsi:type="eef:EEFCheckboxDescription"
+ identifier="org.eclipse.eef.ecore.eclass.abstract"
+ labelExpression="aql:'Abstract'"
+ valueExpression="aql:viewSemanticCandidate.isAbstract"
+ editExpression="aql:viewSemanticCandidate.eSet(viewSemanticCandidate.eClass().getEStructuralFeature('abstract'), newValue)"/>
+ <widgets
+ xsi:type="eef:EEFImagePickerDescription"
+ identifier="org.eclipse.eef.ecore.eclass.imagepicker"
+ labelExpression="aql:'Image picker'"
+ valueExpression="aql:'platform:/plugins/org.eclipse.emf/icons/obj16/EClass.gif'"
+ editExpression="aql:viewSemanticCandidate.updateImage(newImage)"
+ candidatesExpression="aql:viewSemanticCandidate.getCandidateImages()"/>
+ </container>
+ </groups>
+ <pages identifier="org.eclipse.eef.ecore.general"
+ labelExpression="aql:'General'"
+ domainClass="ecore.EClass"/>
+</eef:EEFViewDescription>
diff --git a/doc/org.eclipse.eef.documentation/userstories/US-11.xmi b/doc/org.eclipse.eef.documentation/userstories/US-11.xmi
new file mode 100644
index 000000000..d7e87e9ad
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation/userstories/US-11.xmi
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<eef:EEFViewDescription
+ xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:eef="http://www.eclipse.org/eef"
+ xsi:schemaLocation="http://www.eclipse.org/eef ../../org.eclipse.eef/model/eef.ecore"
+ identifier="org.eclipse.eef.ecore"
+ labelExpression="aql:viewSemanticCandidate.name">
+ <ePackageNsUris>http://www.eclipse.org/emf/2002/Ecore</ePackageNsUris>
+ <groups identifier="org.eclipse.eef.ecore.enamedelement"
+ labelExpression="aql:'ENamedElement'"
+ domainClass="ecore.ENamedElement"
+ semanticCandidateExpression="">
+ <container
+ identifier="org.eclipse.eef.ecore.enamedelement.container"
+ domainClass="ecore.ENamedElement">
+ <widgets
+ xsi:type="eef:EEFTextDescription"
+ identifier="org.eclipse.eef.ecore.enamedelement.name"
+ labelExpression="aql:'Name'"
+ valueExpression="aql:viewSemanticCandidate.name"
+ editExpression="aql:viewSemanticCandidate.eSet(viewSemanticCandidate.eClass().getEStructuralFeature('name'), newName)"/>
+ <widgets
+ xsi:type="eef:EEFLabelDescription"
+ identifier="org.eclipse.eef.ecore.enamedelement.description"
+ labelExpression="aql:'Description'"
+ valueExpression="aql:'This is the label description.'"/>
+ <widgets
+ xsi:type="eef:EEFLinkDescription"
+ identifier="org.eclipse.eef.ecore.enamedelement.opendocumentation"
+ labelExpression="aql:'Open documentation'"
+ onClickExpression="aql:viewSemanticCandidate.openDocumentation()"/>
+ <widgets
+ xsi:type="eef:EEFImageDescription"
+ identifier="org.eclipse.eef.ecore.enamedelement.image"
+ labelExpression="aql:'The EClass image'"
+ valueExpression="aql:'platform:/plugins/org/eclipse/emf/icons/obj16/EClass.gif'"/>
+ </container>
+ </groups>
+ <groups identifier="org.eclipse.eef.ecore.eclass"
+ labelExpression="aql:'EClass'"
+ domainClass="ecore.EClass"
+ semanticCandidateExpression="">
+ <container
+ identifier="org.eclipse.eef.ecore.eclass.container">
+ <widgets
+ xsi:type="eef:EEFCheckboxDescription"
+ identifier="org.eclipse.eef.ecore.eclass.abstract"
+ labelExpression="aql:'Abstract'"
+ valueExpression="aql:viewSemanticCandidate.isAbstract"
+ editExpression="aql:viewSemanticCandidate.eSet(viewSemanticCandidate.eClass().getEStructuralFeature('abstract'), newValue)"/>
+ <widgets
+ xsi:type="eef:EEFImagePickerDescription"
+ identifier="org.eclipse.eef.ecore.eclass.imagepicker"
+ labelExpression="aql:'Image picker'"
+ valueExpression="aql:'platform:/plugins/org.eclipse.emf/icons/obj16/EClass.gif'"
+ editExpression="aql:viewSemanticCandidate.updateImage(newImage)"
+ candidatesExpression="aql:viewSemanticCandidate.getCandidateImages()"/>
+ <widgets
+ xsi:type="eef:EEFRadioDescription"
+ identifier="org.eclipse.eef.ecore.eclass.visibility"
+ labelExpression="aql:'Visibility'"
+ valueExpression="aql:viewSemanticCandidate.getVisibility()"
+ editExpression="aql:viewSemanticCandidate.updateVisibility(newVisibility)"
+ candidatesExpression="aql:Sequence{'public','protected', 'private'}"
+ candidateDisplayExpression="aql:visibility+' class'"/>
+ </container>
+ </groups>
+ <pages identifier="org.eclipse.eef.ecore.general"
+ labelExpression="aql:'General'"
+ domainClass="ecore.EClass"/>
+</eef:EEFViewDescription>
diff --git a/doc/org.eclipse.eef.documentation/userstories/US-12.xmi b/doc/org.eclipse.eef.documentation/userstories/US-12.xmi
new file mode 100644
index 000000000..41cad8afb
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation/userstories/US-12.xmi
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<eef:EEFViewDescription
+ xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:eef="http://www.eclipse.org/eef"
+ xsi:schemaLocation="http://www.eclipse.org/eef ../../org.eclipse.eef/model/eef.ecore"
+ identifier="org.eclipse.eef.ecore"
+ labelExpression="aql:viewSemanticCandidate.name">
+ <ePackageNsUris>http://www.eclipse.org/emf/2002/Ecore</ePackageNsUris>
+ <groups identifier="org.eclipse.eef.ecore.eclass"
+ labelExpression="aql:'EClass'"
+ domainClass="ecore.EClass"
+ semanticCandidateExpression="">
+ <container
+ identifier="org.eclipse.eef.ecore.eclass.container">
+ <widgets
+ xsi:type="eef:EEFTextDescription"
+ identifier="org.eclipse.eef.ecore.enamedelement.documentation"
+ labelExpression="aql:'Documentation'"
+ valueExpression="aql:viewSemanticCandidate.getDocumentation()"
+ editExpression="aql:viewSemanticCandidate.updateDocumentation(newValue)"
+ lineCount="4"/>
+ </container>
+ </groups>
+ <pages identifier="org.eclipse.eef.ecore.general"
+ labelExpression="aql:'General'"
+ domainClass="ecore.EClass"/>
+</eef:EEFViewDescription>
diff --git a/doc/org.eclipse.eef.documentation/userstories/US-13.xmi b/doc/org.eclipse.eef.documentation/userstories/US-13.xmi
new file mode 100644
index 000000000..18ead82ab
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation/userstories/US-13.xmi
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<eef:EEFViewDescription
+ xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:eef="http://www.eclipse.org/eef"
+ xsi:schemaLocation="http://www.eclipse.org/eef ../../org.eclipse.eef/model/eef.ecore"
+ identifier="org.eclipse.eef.ecore"
+ labelExpression="aql:viewSemanticCandidate.name">
+ <ePackageNsUris>http://www.eclipse.org/emf/2002/Ecore</ePackageNsUris>
+ <groups identifier="org.eclipse.eef.ecore.eclass"
+ labelExpression="aql:'EClass'"
+ domainClass="ecore.EClass"
+ semanticCandidateExpression="">
+ <container
+ identifier="org.eclipse.eef.ecore.eclass.container">
+ <widgets
+ xsi:type="eef:EEFSelectDescription"
+ identifier="org.eclipse.eef.ecore.eclass.esupertypes"
+ labelExpression="aql:'ESuperTypes'"
+ valueExpression="aql:viewSemanticCandidate.eSuperTypes"
+ editExpression="aql:viewSemanticCandidate.updateSuperTypes(newSuperTypes)"
+ candidatesExpression="aql:viewSemanticCandidate.eResource().eAllContents(ecore::EClass)"
+ multiple="true"
+ candidateDisplayExpression="aql:candidate.name"/>
+ </container>
+ </groups>
+ <pages identifier="org.eclipse.eef.ecore.general"
+ labelExpression="aql:'General'"
+ domainClass="ecore.EClass"/>
+</eef:EEFViewDescription>
diff --git a/doc/org.eclipse.eef.documentation/userstories/US-14.xmi b/doc/org.eclipse.eef.documentation/userstories/US-14.xmi
new file mode 100644
index 000000000..7746fdd37
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation/userstories/US-14.xmi
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<eef:EEFViewDescription
+ xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:eef="http://www.eclipse.org/eef"
+ xsi:schemaLocation="http://www.eclipse.org/eef ../../org.eclipse.eef/model/eef.ecore"
+ identifier="org.eclipse.eef.ecore"
+ labelExpression="aql:viewSemanticCandidate.name">
+ <ePackageNsUris>http://www.eclipse.org/emf/2002/Ecore</ePackageNsUris>
+ <groups identifier="org.eclipse.eef.ecore.eclass"
+ labelExpression="aql:'EClass'"
+ domainClass="ecore.EClass"
+ semanticCandidateExpression="">
+ <container
+ identifier="org.eclipse.eef.ecore.eclass.container">
+ <widgets
+ xsi:type="eef:EEFTreeDescription"
+ identifier="org.eclipse.eef.ecore.eclass.eallcontent"
+ labelExpression="aql:'EAllContent'"
+ valueExpression="aql:viewSemanticCandidate.getRelatedObjects()"
+ treeStructure="//@treeStructures.0"
+ editExpression="aql:viewSemanticCandidate.updateRelatedObjects(newValue)"/>
+ </container>
+ </groups>
+ <pages identifier="org.eclipse.eef.ecore.general"
+ labelExpression="aql:'General'"
+ domainClass="ecore.EClass"/>
+ <treeStructures
+ xsi:type="eef:EEFInterpretedTreeStructureDescription"
+ identifier="org.eclipse.eef.ecore.treestructure"
+ rootsExpression="aql:containerSemanticCandidate"
+ childrenExpression="aql:parent.eContents()"
+ selectablePredicateExpression="aql:candidate.ancestors.contains(containerSemanticCandidate)"
+ candidateDisplayExpression="aql:candidate.name"/>
+</eef:EEFViewDescription>
diff --git a/doc/org.eclipse.eef.documentation/userstories/US-15.xmi b/doc/org.eclipse.eef.documentation/userstories/US-15.xmi
new file mode 100644
index 000000000..0876ec959
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation/userstories/US-15.xmi
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<eef:EEFViewDescription
+ xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:eef="http://www.eclipse.org/eef"
+ xsi:schemaLocation="http://www.eclipse.org/eef ../../org.eclipse.eef/model/eef.ecore"
+ identifier="org.eclipse.eef.ecore"
+ labelExpression="aql:viewSemanticCandidate.name">
+ <ePackageNsUris>http://www.eclipse.org/emf/2002/Ecore</ePackageNsUris>
+ <groups identifier="org.eclipse.eef.ecore.eclass"
+ labelExpression="aql:'EClass'"
+ domainClass="ecore.EClass"
+ semanticCandidateExpression="">
+ <container
+ identifier="org.eclipse.eef.ecore.eclass.container">
+ <widgets
+ xsi:type="eef:EEFTreeDescription"
+ identifier="org.eclipse.eef.ecore.eclass.eallcontent"
+ labelExpression="aql:'EAllContent'"
+ valueExpression="aql:viewSemanticCandidate.getRelatedObjects()"
+ treeStructure="//@treeStructures.0"
+ editExpression="aql:viewSemanticCandidate.updateRelatedObjects(newValue)"/>
+ <widgets
+ xsi:type="eef:EEFTreeDialogSelectDescription"
+ labelExpression=""
+ semanticCandidateExpression=""
+ tree="//@groups.0/@container/@widgets.0"/>
+ </container>
+ </groups>
+ <pages identifier="org.eclipse.eef.ecore.general"
+ labelExpression="aql:'General'"
+ domainClass="ecore.EClass"/>
+ <treeStructures
+ xsi:type="eef:EEFInterpretedTreeStructureDescription"
+ identifier="org.eclipse.eef.ecore.treestructure"
+ rootsExpression="aql:containerSemanticCandidate"
+ childrenExpression="aql:parent.eContents()"
+ selectablePredicateExpression="aql:candidate.ancestors.contains(containerSemanticCandidate)"
+ candidateDisplayExpression="aql:candidate.name"/>
+</eef:EEFViewDescription>
diff --git a/doc/org.eclipse.eef.documentation/userstories/US-16.xmi b/doc/org.eclipse.eef.documentation/userstories/US-16.xmi
new file mode 100644
index 000000000..a18b05328
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation/userstories/US-16.xmi
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<eef:EEFViewDescription
+ xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:eef="http://www.eclipse.org/eef"
+ xsi:schemaLocation="http://www.eclipse.org/eef ../../org.eclipse.eef/model/eef.ecore"
+ identifier="org.eclipse.eef.ecore"
+ labelExpression="aql:viewSemanticCandidate.name">
+ <ePackageNsUris>http://www.eclipse.org/emf/2002/Ecore</ePackageNsUris>
+ <groups identifier="org.eclipse.eef.ecore.eclass"
+ labelExpression="aql:'EClass'"
+ domainClass="ecore.EClass"
+ semanticCandidateExpression="">
+ <container
+ identifier="org.eclipse.eef.ecore.eclass.container">
+ <widgets
+ xsi:type="eef:EEFTableDescription"
+ identifier="org.eclipse.eef.ecore.eclass.eallcontent"
+ labelExpression="aql:'EAllContent'"
+ valueExpression="aql:viewSemanticCandidate.getRelatedObjects()"
+ editExpression="aql:viewSemanticCandidate.updateRelatedObjects(selection)"
+ tableStructure="//@tableStructures.0"/>
+ <widgets
+ xsi:type="eef:EEFTextDescription"
+ identifier="org.eclipse.eef.ecore.tabledescription.name"
+ labelExpression=""
+ valueExpression="aql:viewSemanticCandidate.name"
+ editExpression="aql:viewSemanticCandidate.eSet(viewSemanticCandidate.eClass().getEStructuralFeature('name'), newValue)"/>
+ <widgets
+ xsi:type="eef:EEFTextDescription"
+ identifier="org.eclipse.eef.ecore.tabledescription.type"
+ labelExpression=""
+ valueExpression="aql:viewSemanticCandidate.eType"
+ editExpression="aql:viewSemanticCandidate.eSet(viewSemanticCandidate.eClass().getEStructuralFeature('eType'), newValue)"/>
+ <widgets
+ xsi:type="eef:EEFCheckboxDescription"
+ identifier="org.eclipse.eef.ecore.tabledescription.derived"
+ labelExpression=""
+ valueExpression="aql:viewSemanticCandidate.derived"
+ editExpression="aql:viewSemanticCandidate.eSet(viewSemanticCandidate.eClass().getEStructuralFeature('derived'), newValue)"/>
+ </container>
+ </groups>
+ <pages identifier="org.eclipse.eef.ecore.general"
+ labelExpression="aql:'General'"
+ domainClass="ecore.EClass"/>
+ <tableStructures
+ xsi:type="eef:EEFInterpretedTableStructureDescription"
+ identifier="org.eclipse.eef.ecore.tablestructure">
+ <columns
+ headerExpression="aql:'Name'"
+ cellWidget="//@groups.0/@container/@widgets.1"/>
+ <columns
+ headerExpression="aql:'EType'"
+ cellWidget="//@groups.0/@container/@widgets.2"/>
+ <columns
+ headerExpression="aql:'Derived'"
+ cellWidget="//@groups.0/@container/@widgets.3"/>
+ <line headerExpression=""
+ semanticCandidatesExpression="aql:viewSemanticCandidate.getRelatedObjects()"
+ domainClass="ecore::EClass"/>
+ </tableStructures>
+</eef:EEFViewDescription>
diff --git a/doc/org.eclipse.eef.documentation/userstories/US-2.xmi b/doc/org.eclipse.eef.documentation/userstories/US-2.xmi
new file mode 100644
index 000000000..d4ba96239
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation/userstories/US-2.xmi
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<eef:EEFViewDescription
+ xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:eef="http://www.eclipse.org/eef"
+ xsi:schemaLocation="http://www.eclipse.org/eef ../../org.eclipse.eef/model/eef.ecore"
+ identifier="org.eclipse.eef.ecore"
+ labelExpression="aql:viewSemanticCandidate.name">
+ <ePackageNsUris>http://www.eclipse.org/emf/2002/Ecore</ePackageNsUris>
+ <pages identifier="org.eclipse.eef.ecore.general"
+ labelExpression="aql:'General'"
+ domainClass="ecore.EClass"/>
+</eef:EEFViewDescription>
diff --git a/doc/org.eclipse.eef.documentation/userstories/US-3.xmi b/doc/org.eclipse.eef.documentation/userstories/US-3.xmi
new file mode 100644
index 000000000..2d6ebe703
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation/userstories/US-3.xmi
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<eef:EEFViewDescription
+ xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:eef="http://www.eclipse.org/eef"
+ xsi:schemaLocation="http://www.eclipse.org/eef ../../org.eclipse.eef/model/eef.ecore"
+ identifier="org.eclipse.eef.ecore"
+ labelExpression="aql:viewSemanticCandidate.name">
+ <ePackageNsUris>http://www.eclipse.org/emf/2002/Ecore</ePackageNsUris>
+ <groups identifier="org.eclipse.eef.ecore.properties"
+ labelExpression="aql:'ENamedElement'"
+ domainClass="ecore.ENamedElement"
+ semanticCandidateExpression=""/>
+ <pages identifier="org.eclipse.eef.ecore.general"
+ labelExpression="aql:'General'"
+ domainClass="ecore.EClass"/>
+</eef:EEFViewDescription>
diff --git a/doc/org.eclipse.eef.documentation/userstories/US-4.xmi b/doc/org.eclipse.eef.documentation/userstories/US-4.xmi
new file mode 100644
index 000000000..6acdc7a46
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation/userstories/US-4.xmi
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<eef:EEFViewDescription
+ xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:eef="http://www.eclipse.org/eef"
+ xsi:schemaLocation="http://www.eclipse.org/eef ../../org.eclipse.eef/model/eef.ecore"
+ identifier="org.eclipse.eef.ecore"
+ labelExpression="aql:viewSemanticCandidate.name">
+ <ePackageNsUris>http://www.eclipse.org/emf/2002/Ecore</ePackageNsUris>
+ <groups identifier="org.eclipse.eef.ecore.enamedelement"
+ labelExpression="aql:'ENamedElement'"
+ domainClass="ecore.ENamedElement"
+ semanticCandidateExpression=""/>
+ <groups identifier="org.eclipse.eef.ecore.eclass"
+ labelExpression="aql:'EClass'"
+ domainClass="ecore.EClass"
+ semanticCandidateExpression=""/>
+ <pages identifier="org.eclipse.eef.ecore.general"
+ labelExpression="aql:'General'"
+ domainClass="ecore.EClass"/>
+</eef:EEFViewDescription>
diff --git a/doc/org.eclipse.eef.documentation/userstories/US-5.xmi b/doc/org.eclipse.eef.documentation/userstories/US-5.xmi
new file mode 100644
index 000000000..b209e3480
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation/userstories/US-5.xmi
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<eef:EEFViewDescription
+ xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:eef="http://www.eclipse.org/eef"
+ xsi:schemaLocation="http://www.eclipse.org/eef ../../org.eclipse.eef/model/eef.ecore"
+ identifier="org.eclipse.eef.ecore"
+ labelExpression="aql:viewSemanticCandidate.name">
+ <ePackageNsUris>http://www.eclipse.org/emf/2002/Ecore</ePackageNsUris>
+ <groups identifier="org.eclipse.eef.ecore.enamedelement"
+ labelExpression="aql:'ENamedElement'"
+ domainClass="ecore.ENamedElement"
+ semanticCandidateExpression="">
+ <container
+ identifier="org.eclipse.eef.ecore.enamedelement.container"
+ domainClass="ecore.ENamedElement">
+ <widgets
+ xsi:type="eef:EEFTextDescription"
+ identifier="org.eclipse.eef.ecore.enamedelement.name"
+ labelExpression="aql:'Name'"
+ valueExpression="aql:viewSemanticCandidate.name"
+ editExpression="aql:viewSemanticCandidate.eSet(viewSemanticCandidate.eClass().getEStructuralFeature('name'), newValue)"/>
+ </container>
+ </groups>
+ <groups identifier="org.eclipse.eef.ecore.eclass"
+ labelExpression="aql:'EClass'"
+ domainClass="ecore.EClass"
+ semanticCandidateExpression=""/>
+ <pages identifier="org.eclipse.eef.ecore.general"
+ labelExpression="aql:'General'"
+ domainClass="ecore.EClass"/>
+</eef:EEFViewDescription>
diff --git a/doc/org.eclipse.eef.documentation/userstories/US-6.xmi b/doc/org.eclipse.eef.documentation/userstories/US-6.xmi
new file mode 100644
index 000000000..c38559882
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation/userstories/US-6.xmi
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<eef:EEFViewDescription
+ xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:eef="http://www.eclipse.org/eef"
+ xsi:schemaLocation="http://www.eclipse.org/eef ../../org.eclipse.eef/model/eef.ecore"
+ identifier="org.eclipse.eef.ecore"
+ labelExpression="aql:viewSemanticCandidate.name">
+ <ePackageNsUris>http://www.eclipse.org/emf/2002/Ecore</ePackageNsUris>
+ <groups identifier="org.eclipse.eef.ecore.enamedelement"
+ labelExpression="aql:'ENamedElement'"
+ domainClass="ecore.ENamedElement"
+ semanticCandidateExpression="">
+ <container
+ identifier="org.eclipse.eef.ecore.enamedelement.container"
+ domainClass="ecore.ENamedElement">
+ <widgets
+ xsi:type="eef:EEFTextDescription"
+ identifier="org.eclipse.eef.ecore.enamedelement.name"
+ labelExpression="aql:'Name'"
+ valueExpression="aql:viewSemanticCandidate.name"
+ editExpression="aql:viewSemanticCandidate.eSet(viewSemanticCandidate.eClass().getEStructuralFeature('name'), newName)"/>
+ </container>
+ </groups>
+ <groups identifier="org.eclipse.eef.ecore.eclass"
+ labelExpression="aql:'EClass'"
+ domainClass="ecore.EClass"
+ semanticCandidateExpression="">
+ <container
+ identifier="org.eclipse.eef.ecore.eclass.container">
+ <widgets
+ xsi:type="eef:EEFCheckboxDescription"
+ identifier="org.eclipse.eef.ecore.eclass.abstract"
+ labelExpression="aql:'Abstract'"
+ valueExpression="aql:viewSemanticCandidate.isAbstract"
+ editExpression="aql:viewSemanticCandidate.eSet(viewSemanticCandidate.eClass().getEStructuralFeature('abstract'), newAbstract)"/>
+ </container>
+ </groups>
+ <pages identifier="org.eclipse.eef.ecore.general"
+ labelExpression="aql:'General'"
+ domainClass="ecore.EClass"/>
+</eef:EEFViewDescription>
diff --git a/doc/org.eclipse.eef.documentation/userstories/US-7.xmi b/doc/org.eclipse.eef.documentation/userstories/US-7.xmi
new file mode 100644
index 000000000..6cb19e0e9
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation/userstories/US-7.xmi
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<eef:EEFViewDescription
+ xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:eef="http://www.eclipse.org/eef"
+ xsi:schemaLocation="http://www.eclipse.org/eef ../../org.eclipse.eef/model/eef.ecore"
+ identifier="org.eclipse.eef.ecore"
+ labelExpression="aql:viewSemanticCandidate.name">
+ <ePackageNsUris>http://www.eclipse.org/emf/2002/Ecore</ePackageNsUris>
+ <groups identifier="org.eclipse.eef.ecore.enamedelement"
+ labelExpression="aql:'ENamedElement'"
+ domainClass="ecore.ENamedElement"
+ semanticCandidateExpression="">
+ <container
+ identifier="org.eclipse.eef.ecore.enamedelement.container"
+ domainClass="ecore.ENamedElement">
+ <widgets
+ xsi:type="eef:EEFTextDescription"
+ identifier="org.eclipse.eef.ecore.enamedelement.name"
+ labelExpression="aql:'Name'"
+ valueExpression="aql:viewSemanticCandidate.name"
+ editExpression="aql:viewSemanticCandidate.eSet(viewSemanticCandidate.eClass().getEStructuralFeature('name'), newValue)"/>
+ <widgets
+ xsi:type="eef:EEFLabelDescription"
+ identifier="org.eclipse.eef.ecore.enamedelement.description"
+ labelExpression="aql:'Description'"
+ valueExpression="aql:'This is the label description.'"/>
+ </container>
+ </groups>
+ <groups identifier="org.eclipse.eef.ecore.eclass"
+ labelExpression="aql:'EClass'"
+ domainClass="ecore.EClass"
+ semanticCandidateExpression="">
+ <container
+ identifier="org.eclipse.eef.ecore.eclass.container">
+ <widgets
+ xsi:type="eef:EEFCheckboxDescription"
+ identifier="org.eclipse.eef.ecore.eclass.abstract"
+ labelExpression="aql:'Abstract'"
+ valueExpression="aql:viewSemanticCandidate.isAbstract"
+ editExpression="aql:viewSemanticCandidate.eSet(viewSemanticCandidate.eClass().getEStructuralFeature('abstract'), newValue)"/>
+ </container>
+ </groups>
+ <pages identifier="org.eclipse.eef.ecore.general"
+ labelExpression="aql:'General'"
+ domainClass="ecore.EClass"/>
+</eef:EEFViewDescription>
diff --git a/doc/org.eclipse.eef.documentation/userstories/US-8.xmi b/doc/org.eclipse.eef.documentation/userstories/US-8.xmi
new file mode 100644
index 000000000..9a372d748
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation/userstories/US-8.xmi
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<eef:EEFViewDescription
+ xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:eef="http://www.eclipse.org/eef"
+ xsi:schemaLocation="http://www.eclipse.org/eef ../../org.eclipse.eef/model/eef.ecore"
+ identifier="org.eclipse.eef.ecore"
+ labelExpression="aql:viewSemanticCandidate.name">
+ <ePackageNsUris>http://www.eclipse.org/emf/2002/Ecore</ePackageNsUris>
+ <groups identifier="org.eclipse.eef.ecore.enamedelement"
+ labelExpression="aql:'ENamedElement'"
+ domainClass="ecore.ENamedElement"
+ semanticCandidateExpression="">
+ <container
+ identifier="org.eclipse.eef.ecore.enamedelement.container"
+ domainClass="ecore.ENamedElement">
+ <widgets
+ xsi:type="eef:EEFTextDescription"
+ identifier="org.eclipse.eef.ecore.enamedelement.name"
+ labelExpression="aql:'Name'"
+ valueExpression="aql:viewSemanticCandidate.name"
+ editExpression="aql:viewSemanticCandidate.eSet(viewSemanticCandidate.eClass().getEStructuralFeature('name'), newValue)"/>
+ <widgets
+ xsi:type="eef:EEFLabelDescription"
+ identifier="org.eclipse.eef.ecore.enamedelement.description"
+ labelExpression="aql:'Description'"
+ valueExpression="aql:'This is the label description.'"/>
+ <widgets
+ xsi:type="eef:EEFLinkDescription"
+ identifier="org.eclipse.eef.ecore.enamedelement.opendocumentation"
+ labelExpression="aql:'Open documentation'"
+ onClickExpression="aql:viewSemanticCandidate.openDocumentation()"/>
+ </container>
+ </groups>
+ <groups identifier="org.eclipse.eef.ecore.eclass"
+ labelExpression="aql:'EClass'"
+ domainClass="ecore.EClass"
+ semanticCandidateExpression="">
+ <container
+ identifier="org.eclipse.eef.ecore.eclass.container">
+ <widgets
+ xsi:type="eef:EEFCheckboxDescription"
+ identifier="org.eclipse.eef.ecore.eclass.abstract"
+ labelExpression="aql:'Abstract'"
+ valueExpression="aql:viewSemanticCandidate.isAbstract"
+ editExpression="aql:viewSemanticCandidate.eSet(viewSemanticCandidate.eClass().getEStructuralFeature('abstract'), newValue)"/>
+ </container>
+ </groups>
+ <pages identifier="org.eclipse.eef.ecore.general"
+ labelExpression="aql:'General'"
+ domainClass="ecore.EClass"/>
+ <javaExtensions
+ qualifiedName="org.eclipse.eef.myview.Service"/>
+</eef:EEFViewDescription>
diff --git a/doc/org.eclipse.eef.documentation/userstories/US-9.xmi b/doc/org.eclipse.eef.documentation/userstories/US-9.xmi
new file mode 100644
index 000000000..a86109976
--- /dev/null
+++ b/doc/org.eclipse.eef.documentation/userstories/US-9.xmi
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<eef:EEFViewDescription
+ xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:eef="http://www.eclipse.org/eef"
+ xsi:schemaLocation="http://www.eclipse.org/eef ../../org.eclipse.eef/model/eef.ecore"
+ identifier="org.eclipse.eef.ecore"
+ labelExpression="aql:viewSemanticCandidate.name">
+ <ePackageNsUris>http://www.eclipse.org/emf/2002/Ecore</ePackageNsUris>
+ <groups identifier="org.eclipse.eef.ecore.enamedelement"
+ labelExpression="aql:'ENamedElement'"
+ domainClass="ecore.ENamedElement"
+ semanticCandidateExpression="">
+ <container
+ identifier="org.eclipse.eef.ecore.enamedelement.container"
+ domainClass="ecore.ENamedElement">
+ <widgets
+ xsi:type="eef:EEFTextDescription"
+ identifier="org.eclipse.eef.ecore.enamedelement.name"
+ labelExpression="aql:'Name'"
+ valueExpression="aql:viewSemanticCandidate.name"
+ editExpression="aql:viewSemanticCandidate.eSet(viewSemanticCandidate.eClass().getEStructuralFeature('name'), newValue)"/>
+ <widgets
+ xsi:type="eef:EEFLabelDescription"
+ identifier="org.eclipse.eef.ecore.enamedelement.description"
+ labelExpression="aql:'Description'"
+ valueExpression="aql:'This is the label description.'"/>
+ <widgets
+ xsi:type="eef:EEFLinkDescription"
+ identifier="org.eclipse.eef.ecore.enamedelement.opendocumentation"
+ labelExpression="aql:'Open documentation'"
+ onClickExpression="aql:viewSemanticCandidate.openDocumentation()"/>
+ <widgets
+ xsi:type="eef:EEFImageDescription"
+ identifier="org.eclipse.eef.ecore.enamedelement.image"
+ labelExpression="aql:'The EClass image'"
+ valueExpression="aql:'platform:/plugins/org/eclipse/emf/icons/obj16/EClass.gif'"/>
+ </container>
+ </groups>
+ <groups identifier="org.eclipse.eef.ecore.eclass"
+ labelExpression="aql:'EClass'"
+ domainClass="ecore.EClass"
+ semanticCandidateExpression="">
+ <container
+ identifier="org.eclipse.eef.ecore.eclass.container">
+ <widgets
+ xsi:type="eef:EEFCheckboxDescription"
+ identifier="org.eclipse.eef.ecore.eclass.abstract"
+ labelExpression="aql:'Abstract'"
+ valueExpression="aql:viewSemanticCandidate.isAbstract"
+ editExpression="aql:viewSemanticCandidate.eSet(viewSemanticCandidate.eClass().getEStructuralFeature('abstract'), newValue)"/>
+ </container>
+ </groups>
+ <pages identifier="org.eclipse.eef.ecore.general"
+ labelExpression="aql:'General'"
+ domainClass="ecore.EClass"/>
+</eef:EEFViewDescription>
diff --git a/features/org.eclipse.eef.sdk-feature/.project b/features/org.eclipse.eef.sdk-feature/.project
new file mode 100644
index 000000000..c816fbb0c
--- /dev/null
+++ b/features/org.eclipse.eef.sdk-feature/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.eef.sdk-feature</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.pde.FeatureBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.FeatureNature</nature>
+ </natures>
+</projectDescription>
diff --git a/features/org.eclipse.eef.sdk-feature/about.html b/features/org.eclipse.eef.sdk-feature/about.html
new file mode 100644
index 000000000..f3a55ce5f
--- /dev/null
+++ b/features/org.eclipse.eef.sdk-feature/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>June 15, 2010</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/features/org.eclipse.eef.sdk-feature/build.properties b/features/org.eclipse.eef.sdk-feature/build.properties
new file mode 100644
index 000000000..ccb677bd0
--- /dev/null
+++ b/features/org.eclipse.eef.sdk-feature/build.properties
@@ -0,0 +1,3 @@
+bin.includes = feature.xml,\
+ about.html,\
+ feature.properties
diff --git a/features/org.eclipse.eef.sdk-feature/feature.properties b/features/org.eclipse.eef.sdk-feature/feature.properties
new file mode 100644
index 000000000..d3c4fabef
--- /dev/null
+++ b/features/org.eclipse.eef.sdk-feature/feature.properties
@@ -0,0 +1,15 @@
+# Copyright (c) 2015 Obeo.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.htm
+
+featureName=EEF Feature
+featureProvider=Eclipse Modeling Project
+
+descriptionUrl=TODO
+description=TODO
+copyrightUrl=TODO
+copyright=TODO
+licenseUrl=TODO
+license=TODO \ No newline at end of file
diff --git a/features/org.eclipse.eef.sdk-feature/feature.xml b/features/org.eclipse.eef.sdk-feature/feature.xml
new file mode 100644
index 000000000..77f6aa010
--- /dev/null
+++ b/features/org.eclipse.eef.sdk-feature/feature.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+ id="org.eclipse.eef.sdk.feature"
+ label="%featureName"
+ version="2.0.0.qualifier"
+ provider-name="%featureProvider">
+
+ <description url="%descriptionUrl">
+ %description
+ </description>
+
+ <copyright url="%copyrightUrl">
+ %copyright
+ </copyright>
+
+ <license url="%licenseUrl">
+ %license
+ </license>
+
+ <plugin
+ id="org.eclipse.eef"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.eef.edit"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.eef.core"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.eef.documentation"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.eef.ide"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.eef.ide.ui"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+</feature>
diff --git a/features/org.eclipse.eef.sdk-feature/pom.xml b/features/org.eclipse.eef.sdk-feature/pom.xml
new file mode 100644
index 000000000..e229ed57f
--- /dev/null
+++ b/features/org.eclipse.eef.sdk-feature/pom.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Copyright (c) 2015 Obeo.
+All rights reserved. This program and the accompanying materials
+are made available under the terms of the Eclipse Public License v1.0
+which accompanies this distribution, and is available at
+http://www.eclipse.org/legal/epl-v10.html
+
+Contributors:
+ Obeo - initial API and implementation
+-->
+<project
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.eclipse.eef</groupId>
+ <artifactId>org.eclipse.eef.parent</artifactId>
+ <version>2.0.0-SNAPSHOT</version>
+ <relativePath>../../releng/org.eclipse.eef.releng</relativePath>
+ </parent>
+
+ <artifactId>org.eclipse.eef.sdk.feature</artifactId>
+ <packaging>eclipse-feature</packaging>
+
+ <name>EEF SDK Feature</name>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.eclipse.tycho.extras</groupId>
+ <artifactId>tycho-source-feature-plugin</artifactId>
+ <version>${tycho-version}</version>
+ </plugin>
+ </plugins>
+ </build>
+</project> \ No newline at end of file
diff --git a/plugins/org.eclipse.eef.core/.checkstyle b/plugins/org.eclipse.eef.core/.checkstyle
new file mode 100644
index 000000000..121faf77d
--- /dev/null
+++ b/plugins/org.eclipse.eef.core/.checkstyle
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<fileset-config file-format-version="1.2.0" simple-config="true" sync-formatter="false">
+ <local-check-config name="EEF" location="/org.eclipse.eef.releng/codestyle/EEFCheckstyleConfiguration.xml" type="project" description="">
+ <additional-data name="protect-config-file" value="false"/>
+ </local-check-config>
+ <fileset name="all" enabled="true" check-config-name="EEF" local="true">
+ <file-match-pattern match-pattern="." include-pattern="true"/>
+ </fileset>
+</fileset-config>
diff --git a/plugins/org.eclipse.eef.core/.classpath b/plugins/org.eclipse.eef.core/.classpath
new file mode 100644
index 000000000..ad32c83a7
--- /dev/null
+++ b/plugins/org.eclipse.eef.core/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/org.eclipse.eef.core/.project b/plugins/org.eclipse.eef.core/.project
new file mode 100644
index 000000000..7d4488af3
--- /dev/null
+++ b/plugins/org.eclipse.eef.core/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.eef.core</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>
+ <buildCommand>
+ <name>net.sf.eclipsecs.core.CheckstyleBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>net.sf.eclipsecs.core.CheckstyleNature</nature>
+ </natures>
+</projectDescription>
diff --git a/plugins/org.eclipse.eef.core/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.eef.core/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 000000000..fb8257839
--- /dev/null
+++ b/plugins/org.eclipse.eef.core/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,398 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+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.6
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=error
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=error
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=warning
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=error
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=error
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=error
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=warning
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=error
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=warning
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=warning
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=warning
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.source=1.6
+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=120
+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=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+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=150
+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=1
+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=true
+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
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/plugins/org.eclipse.eef.core/.settings/org.eclipse.jdt.launching.prefs b/plugins/org.eclipse.eef.core/.settings/org.eclipse.jdt.launching.prefs
new file mode 100644
index 000000000..3bb235278
--- /dev/null
+++ b/plugins/org.eclipse.eef.core/.settings/org.eclipse.jdt.launching.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.launching.PREF_STRICTLY_COMPATIBLE_JRE_NOT_AVAILABLE=ignore
diff --git a/plugins/org.eclipse.eef.core/.settings/org.eclipse.jdt.ui.prefs b/plugins/org.eclipse.eef.core/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 000000000..a7564c761
--- /dev/null
+++ b/plugins/org.eclipse.eef.core/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,68 @@
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_EEF
+formatter_settings_version=12
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=com;java;javax;org;
+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\="false" 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 *\n * @return the ${bare_field_name}\n */</template><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\n * Sets the ${bare_field_name}.\n *\n * @param ${param} the ${bare_field_name} to set\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\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) 2015 Obeo.\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 * Obeo - initial API and implementation\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 * {@inheritDoc}\n *\n * ${see_to_overridden}\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\n * ${tags}\n * ${see_to_target}\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\="false" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">EEFCorePlugin.getImplementation().logError(message, e);</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" 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}</template><template autoinsert\="false" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return this.${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>
+sp_cleanup.add_default_serial_version_id=false
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=false
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=true
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=false
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=false
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=false
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=false
+sp_cleanup.remove_redundant_type_arguments=false
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=true
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=false
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=false
+sp_cleanup.remove_unused_private_types=false
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=false
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=false
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=false
+sp_cleanup.use_type_arguments=false
diff --git a/plugins/org.eclipse.eef.core/.settings/org.eclipse.pde.core.prefs b/plugins/org.eclipse.eef.core/.settings/org.eclipse.pde.core.prefs
new file mode 100644
index 000000000..923c37fb8
--- /dev/null
+++ b/plugins/org.eclipse.eef.core/.settings/org.eclipse.pde.core.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+resolve.requirebundle=false
diff --git a/plugins/org.eclipse.eef.core/.settings/org.eclipse.pde.prefs b/plugins/org.eclipse.eef.core/.settings/org.eclipse.pde.prefs
new file mode 100644
index 000000000..3112e810d
--- /dev/null
+++ b/plugins/org.eclipse.eef.core/.settings/org.eclipse.pde.prefs
@@ -0,0 +1,32 @@
+compilers.f.unresolved-features=1
+compilers.f.unresolved-plugins=1
+compilers.incompatible-environment=1
+compilers.p.build=1
+compilers.p.build.bin.includes=1
+compilers.p.build.encodings=1
+compilers.p.build.java.compiler=1
+compilers.p.build.java.compliance=1
+compilers.p.build.missing.output=2
+compilers.p.build.output.library=1
+compilers.p.build.source.library=1
+compilers.p.build.src.includes=1
+compilers.p.deprecated=1
+compilers.p.discouraged-class=1
+compilers.p.internal=1
+compilers.p.missing-packages=1
+compilers.p.missing-version-export-package=0
+compilers.p.missing-version-import-package=0
+compilers.p.missing-version-require-bundle=0
+compilers.p.no-required-att=0
+compilers.p.not-externalized-att=0
+compilers.p.unknown-attribute=1
+compilers.p.unknown-class=1
+compilers.p.unknown-element=1
+compilers.p.unknown-identifier=1
+compilers.p.unknown-resource=1
+compilers.p.unresolved-ex-points=0
+compilers.p.unresolved-import=0
+compilers.s.create-docs=false
+compilers.s.doc-folder=doc
+compilers.s.open-tags=1
+eclipse.preferences.version=1
diff --git a/plugins/org.eclipse.eef.core/META-INF/MANIFEST.MF b/plugins/org.eclipse.eef.core/META-INF/MANIFEST.MF
new file mode 100644
index 000000000..72e025ea2
--- /dev/null
+++ b/plugins/org.eclipse.eef.core/META-INF/MANIFEST.MF
@@ -0,0 +1,18 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.eef.core
+Bundle-Version: 2.0.0.qualifier
+Bundle-Vendor: %providerName
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Require-Bundle: org.eclipse.emf.ecore;bundle-version="[2.8.0,3.0.0)",
+ org.eclipse.emf.transaction;bundle-version="[1.4.0,2.0.0)"
+Import-Package: com.google.common.base;version="[15.0.0,16.0.0)",
+ com.google.common.collect;version="[15.0.0,16.0.0)",
+ org.eclipse.eef;version="[2.0.0,3.0.0)",
+ org.eclipse.sirius.common.interpreter.api;version="1.0.0"
+Export-Package: org.eclipse.eef.core.api;version="2.0.0",
+ org.eclipse.eef.core.api.controllers;version="2.0.0",
+ org.eclipse.eef.core.internal;version="2.0.0";x-internal:=true,
+ org.eclipse.eef.core.internal.controllers;version="2.0.0"
+Bundle-Localization: plugin
diff --git a/plugins/org.eclipse.eef.core/about.html b/plugins/org.eclipse.eef.core/about.html
new file mode 100644
index 000000000..f3a55ce5f
--- /dev/null
+++ b/plugins/org.eclipse.eef.core/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>June 15, 2010</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/org.eclipse.eef.core/build.properties b/plugins/org.eclipse.eef.core/build.properties
new file mode 100644
index 000000000..a0a78460e
--- /dev/null
+++ b/plugins/org.eclipse.eef.core/build.properties
@@ -0,0 +1,15 @@
+# Copyright (c) 2015 Obeo.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.htm
+# Contributors: Obeo - initial API and implementation
+
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ about.html,\
+ plugin.properties
+javacProjectSettings = true
+additional.bundles = com.google.guava
diff --git a/plugins/org.eclipse.eef.core/plugin.properties b/plugins/org.eclipse.eef.core/plugin.properties
new file mode 100644
index 000000000..0a8dc5600
--- /dev/null
+++ b/plugins/org.eclipse.eef.core/plugin.properties
@@ -0,0 +1,9 @@
+# Copyright (c) 2015 Obeo.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.htm
+# Contributors: Obeo - initial API and implementation
+
+pluginName = EEF Core
+providerName = Eclipse Modeling Project
diff --git a/plugins/org.eclipse.eef.core/pom.xml b/plugins/org.eclipse.eef.core/pom.xml
new file mode 100644
index 000000000..7ac833b17
--- /dev/null
+++ b/plugins/org.eclipse.eef.core/pom.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Copyright (c) 2015 Obeo.
+All rights reserved. This program and the accompanying materials
+are made available under the terms of the Eclipse Public License v1.0
+which accompanies this distribution, and is available at
+http://www.eclipse.org/legal/epl-v10.html
+
+Contributors:
+ Obeo - initial API and implementation
+-->
+<project
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.eclipse.eef</groupId>
+ <artifactId>org.eclipse.eef.parent</artifactId>
+ <version>2.0.0-SNAPSHOT</version>
+ <relativePath>../../releng/org.eclipse.eef.releng</relativePath>
+ </parent>
+
+ <artifactId>org.eclipse.eef.core</artifactId>
+ <packaging>eclipse-plugin</packaging>
+
+ <name>EEF Core</name>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>tycho-source-plugin</artifactId>
+ <version>${tycho-version}</version>
+ </plugin>
+ </plugins>
+ </build>
+</project> \ No newline at end of file
diff --git a/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/api/EEFContainerParent.java b/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/api/EEFContainerParent.java
new file mode 100644
index 000000000..4f2ee56b4
--- /dev/null
+++ b/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/api/EEFContainerParent.java
@@ -0,0 +1,20 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.eef.core.api;
+
+/**
+ * This interface is used as the common parent of both {@link EEFContainer} and {@link EEFGroup}.
+ *
+ * @author sbegaudeau
+ */
+public interface EEFContainerParent {
+ // nothing
+}
diff --git a/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/api/EEFExpressionUtils.java b/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/api/EEFExpressionUtils.java
new file mode 100644
index 000000000..466c42595
--- /dev/null
+++ b/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/api/EEFExpressionUtils.java
@@ -0,0 +1,50 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.eef.core.api;
+
+/**
+ * Utility class containing the constants from the EEFExpression model.
+ *
+ * @author sbegaudeau
+ */
+public final class EEFExpressionUtils {
+
+ /**
+ * The self variable.
+ */
+ public static final String SELF = "self"; //$NON-NLS-1$
+
+ /**
+ * The constructor.
+ */
+ private EEFExpressionUtils() {
+ // prevent instantiation
+ }
+
+ /**
+ * Utility class containing the constants related to the {@link org.eclipse.eef.core.api.EEFText}.
+ *
+ * @author sbegaudeau
+ */
+ public final class EEFText {
+ /**
+ * The name of the variable newValue.
+ */
+ public static final String NEW_VALUE = "newValue"; //$NON-NLS-1$
+
+ /**
+ * The constructor.
+ */
+ private EEFText() {
+ // prevent instantiation
+ }
+ }
+}
diff --git a/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/api/EEFGroup.java b/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/api/EEFGroup.java
new file mode 100644
index 000000000..803995fc7
--- /dev/null
+++ b/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/api/EEFGroup.java
@@ -0,0 +1,57 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.eef.core.api;
+
+import org.eclipse.eef.EEFGroupDescription;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.sirius.common.interpreter.api.IInterpreter;
+
+/**
+ * The {@link EEFGroup} is used as the main structure within a page.
+ *
+ * @author sbegaudeau
+ */
+public interface EEFGroup extends EEFContainerParent {
+ /**
+ * Returns the description of the {@link EEFGroup}.
+ *
+ * @return The {@link EEFGroupDescription}
+ */
+ EEFGroupDescription getDescription();
+
+ /**
+ * Returns the page containing the group.
+ *
+ * @return The page containing the group
+ */
+ EEFPage getPage();
+
+ /**
+ * Returns the variable manager.
+ *
+ * @return The variable manager
+ */
+ IVariableManager getVariableManager();
+
+ /**
+ * Returns the interpreter.
+ *
+ * @return The interpreter
+ */
+ IInterpreter getInterpreter();
+
+ /**
+ * Returns the editing domain.
+ *
+ * @return The editing domain
+ */
+ TransactionalEditingDomain getEditingDomain();
+}
diff --git a/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/api/EEFPage.java b/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/api/EEFPage.java
new file mode 100644
index 000000000..416629a3d
--- /dev/null
+++ b/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/api/EEFPage.java
@@ -0,0 +1,58 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.eef.core.api;
+
+import java.util.List;
+
+import org.eclipse.eef.EEFPageDescription;
+
+/**
+ * The {@link EEFPage} will control the content of a tab.
+ *
+ * @author sbegaudeau
+ */
+public interface EEFPage {
+ /**
+ * Returns the description of the {@link EEFPage}.
+ *
+ * @return The {@link EEFPageDescription}
+ */
+ EEFPageDescription getDescription();
+
+ /**
+ * Returns the label.
+ *
+ * @return The label
+ */
+ String getLabel();
+
+ /**
+ * Returns the {@link EEFGroup} composing this {@link EEFPage}.
+ *
+ * @return The {@link EEFGroup}
+ */
+ List<EEFGroup> getGroups();
+
+ /**
+ * Returns the view containing the page.
+ *
+ * @return The view containing the page
+ */
+ EEFView getView();
+
+ /**
+ * Returns the variable manager.
+ *
+ * @return The variable manager
+ */
+ IVariableManager getVariableManager();
+
+}
diff --git a/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/api/EEFVariableManagerFactory.java b/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/api/EEFVariableManagerFactory.java
new file mode 100644
index 000000000..6736ccc0f
--- /dev/null
+++ b/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/api/EEFVariableManagerFactory.java
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.eef.core.api;
+
+import org.eclipse.eef.core.internal.EEFVariableManager;
+
+/**
+ * The factory used to create the {@link IVariableManager}.
+ *
+ * @author sbegaudeau
+ */
+public class EEFVariableManagerFactory {
+ /**
+ * Returns a new instance of the {@link IVariableManager}.
+ *
+ * @return A new instance of the {@link IVariableManager}
+ */
+ public IVariableManager createVariableManager() {
+ return new EEFVariableManager();
+ }
+}
diff --git a/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/api/EEFView.java b/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/api/EEFView.java
new file mode 100644
index 000000000..df2e51c4b
--- /dev/null
+++ b/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/api/EEFView.java
@@ -0,0 +1,51 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.eef.core.api;
+
+import java.util.List;
+
+import org.eclipse.eef.EEFViewDescription;
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * The view if the root concept of the EEF model.
+ *
+ * @author sbegaudeau
+ */
+public interface EEFView {
+
+ /**
+ * Initializes the view by creating the pages and groups used to compute the tab and section descriptors.
+ */
+ void initialize();
+
+ /**
+ * Sets the input of the view.
+ *
+ * @param eObject
+ * The input
+ */
+ void setInput(EObject eObject);
+
+ /**
+ * Returns the description of the {@link EEFView}.
+ *
+ * @return The {@link EEFViewDescription}
+ */
+ EEFViewDescription getDescription();
+
+ /**
+ * Returns the {@link EEFPage} to display in the {@link EEFView}.
+ *
+ * @return The {@link EEFPage}
+ */
+ List<EEFPage> getPages();
+}
diff --git a/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/api/EEFViewFactory.java b/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/api/EEFViewFactory.java
new file mode 100644
index 000000000..67a771c82
--- /dev/null
+++ b/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/api/EEFViewFactory.java
@@ -0,0 +1,50 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.eef.core.api;
+
+import java.util.List;
+
+import org.eclipse.eef.EEFViewDescription;
+import org.eclipse.eef.core.internal.EEFCompoundInterpreter;
+import org.eclipse.eef.core.internal.EEFViewImpl;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.sirius.common.interpreter.api.IInterpreterProvider;
+
+/**
+ * The factory used to create the {@link EEFView}.
+ *
+ * @author sbegaudeau
+ */
+public class EEFViewFactory {
+ /**
+ * Creates a new {@link EEFView} from the given {@link EEFViewDescription} and the {@link IEEFContext}.
+ *
+ * @param eefViewDescription
+ * The description of the {@link EEFView}
+ * @param variableManager
+ * The variable manager
+ * @param interpreterProviders
+ * The {@link IInterpreterProvider} available
+ * @param editingDomain
+ * The editing domain
+ * @param eObject
+ * The input
+ * @return The {@link EEFView} fully initialized
+ */
+ public EEFView createEEFView(EEFViewDescription eefViewDescription, IVariableManager variableManager,
+ List<IInterpreterProvider> interpreterProviders, TransactionalEditingDomain editingDomain, EObject eObject) {
+ EEFView eefView = new EEFViewImpl(eefViewDescription, variableManager, new EEFCompoundInterpreter(interpreterProviders), editingDomain);
+ eefView.setInput(eObject);
+ eefView.initialize();
+ return eefView;
+ }
+}
diff --git a/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/api/IVariableManager.java b/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/api/IVariableManager.java
new file mode 100644
index 000000000..4afe40a45
--- /dev/null
+++ b/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/api/IVariableManager.java
@@ -0,0 +1,51 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.eef.core.api;
+
+import java.util.Map;
+
+/**
+ * The variable manager is used to handle the state of the variables.
+ *
+ * @author sbegaudeau
+ */
+public interface IVariableManager {
+ /**
+ * Puts the new value of the variable.
+ *
+ * @param name
+ * The name of the variable
+ * @param value
+ * The value of the variable
+ * @return The previous value of the variable or <code>null</code> otherwise
+ */
+ Object put(String name, Object value);
+
+ /**
+ * Returns the variables.
+ *
+ * @return The variables
+ */
+ Map<String, Object> getVariables();
+
+ /**
+ * Creates a child {@link IVariableManager}.
+ *
+ * @return A child {@link IVariableManager}
+ */
+ IVariableManager createChild();
+
+ /**
+ * Clear the variable manager and its children.
+ */
+ void clear();
+
+}
diff --git a/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/api/controllers/EEFControllersFactory.java b/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/api/controllers/EEFControllersFactory.java
new file mode 100644
index 000000000..f0453850d
--- /dev/null
+++ b/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/api/controllers/EEFControllersFactory.java
@@ -0,0 +1,42 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.eef.core.api.controllers;
+
+import org.eclipse.eef.EEFTextDescription;
+import org.eclipse.eef.core.api.IVariableManager;
+import org.eclipse.eef.core.internal.controllers.EEFTextControllerImpl;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.sirius.common.interpreter.api.IInterpreter;
+
+/**
+ * This factory will be used to create the controllers.
+ *
+ * @author sbegaudeau
+ */
+public class EEFControllersFactory {
+ /**
+ * Creates a new text controller.
+ *
+ * @param description
+ * The description
+ * @param variableManager
+ * The variable manager
+ * @param interpreter
+ * The interpreter
+ * @param editingDomain
+ * The editing domain
+ * @return A text controller
+ */
+ public EEFTextController createTextController(EEFTextDescription description, IVariableManager variableManager, IInterpreter interpreter,
+ TransactionalEditingDomain editingDomain) {
+ return new EEFTextControllerImpl(description, variableManager, interpreter, editingDomain);
+ }
+}
diff --git a/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/api/controllers/EEFTextController.java b/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/api/controllers/EEFTextController.java
new file mode 100644
index 000000000..ff89909a0
--- /dev/null
+++ b/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/api/controllers/EEFTextController.java
@@ -0,0 +1,60 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.eef.core.api.controllers;
+
+/**
+ * The EEFTextController is responsible of supporting all the interactions with the widgets created for an
+ * EEFTextDescription.
+ *
+ * @author sbegaudeau
+ */
+public interface EEFTextController {
+
+ /**
+ * Update the value of the text.
+ *
+ * @param text
+ * The new value of the text
+ */
+ void updateValue(String text);
+
+ /**
+ * Register a consumer which will be called with the new value of the text when it will change.
+ *
+ * @param consumer
+ * The consumer of the new value of the text
+ */
+ void onNewValue(IConsumer<String> consumer);
+
+ /**
+ * Register a consumer which will be called with the new value of the label when it will change.
+ *
+ * @param consumer
+ * The consumer of the new value of the label
+ */
+ void onNewLabel(IConsumer<String> consumer);
+
+ /**
+ * Remove the consumer of the new value of the text.
+ */
+ void removeNewValueConsumer();
+
+ /**
+ * Remove the consumer of the new value of the label.
+ */
+ void removeNewLabelConsumer();
+
+ /**
+ * Refresh the label and the text.
+ */
+ void refresh();
+
+}
diff --git a/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/api/controllers/IConsumer.java b/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/api/controllers/IConsumer.java
new file mode 100644
index 000000000..bda83b59b
--- /dev/null
+++ b/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/api/controllers/IConsumer.java
@@ -0,0 +1,28 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.eef.core.api.controllers;
+
+/**
+ * The consumer is a functional type used to receive an Object of a specific type.
+ *
+ * @author sbegaudeau
+ * @param <T>
+ * The type of the Object that can be received
+ */
+public interface IConsumer<T> {
+ /**
+ * This operation is called in order to give to the consumer an Object.
+ *
+ * @param value
+ * The Object
+ */
+ void apply(T value);
+}
diff --git a/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/internal/EEFCompoundInterpreter.java b/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/internal/EEFCompoundInterpreter.java
new file mode 100644
index 000000000..d09fa69d9
--- /dev/null
+++ b/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/internal/EEFCompoundInterpreter.java
@@ -0,0 +1,92 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.eef.core.internal;
+
+import com.google.common.base.Optional;
+import com.google.common.base.Predicate;
+import com.google.common.collect.Iterables;
+
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.emf.common.util.Diagnostic;
+import org.eclipse.sirius.common.interpreter.api.IEvaluationResult;
+import org.eclipse.sirius.common.interpreter.api.IInterpreter;
+import org.eclipse.sirius.common.interpreter.api.IInterpreterProvider;
+
+/**
+ * Utility class encapsulating all the available interpreters.
+ *
+ * @author sbegaudeau
+ */
+public class EEFCompoundInterpreter implements IInterpreter {
+ /**
+ * The interpreter providers.
+ */
+ private List<IInterpreterProvider> interpreterProviders;
+
+ /**
+ * The constructor.
+ *
+ * @param interpreterProviders
+ * The interpreter providers.
+ */
+ public EEFCompoundInterpreter(List<IInterpreterProvider> interpreterProviders) {
+ this.interpreterProviders = interpreterProviders;
+ }
+
+ /**
+ * Returns the interpreter to use to evaluate the given expression body.
+ *
+ * @param expressionBody
+ * The body of the expression
+ * @return The {@link IInterpreter} found or <code>null</code> if no interpreter has been found for the evaluation
+ */
+ private IInterpreter getInterpreterForExpression(final String expressionBody) {
+ Predicate<IInterpreterProvider> canHandleExpressionPredicate = new Predicate<IInterpreterProvider>() {
+ @Override
+ public boolean apply(IInterpreterProvider interpreterProvider) {
+ return interpreterProvider.canHandle(expressionBody);
+ }
+ };
+ Optional<IInterpreterProvider> interpreterProvider = Iterables.tryFind(this.interpreterProviders, canHandleExpressionPredicate);
+ if (interpreterProvider.isPresent()) {
+ IInterpreterProvider provider = interpreterProvider.get();
+ return provider.createInterpreter();
+ }
+ return null;
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.eef.interpreter.api.IInterpreter#evaluateExpression(java.util.Map, java.lang.String)
+ */
+ @Override
+ public IEvaluationResult evaluateExpression(Map<String, Object> variables, String expressionBody) {
+ IInterpreter interpreter = this.getInterpreterForExpression(expressionBody);
+ if (interpreter != null) {
+ return interpreter.evaluateExpression(variables, expressionBody);
+ }
+ return new IEvaluationResult() {
+ @Override
+ public Object getValue() {
+ return null;
+ }
+
+ @Override
+ public Diagnostic getDiagnostic() {
+ return Diagnostic.CANCEL_INSTANCE;
+ }
+ };
+ }
+
+}
diff --git a/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/internal/EEFGroupImpl.java b/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/internal/EEFGroupImpl.java
new file mode 100644
index 000000000..775674413
--- /dev/null
+++ b/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/internal/EEFGroupImpl.java
@@ -0,0 +1,118 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.eef.core.internal;
+
+import org.eclipse.eef.EEFGroupDescription;
+import org.eclipse.eef.core.api.EEFGroup;
+import org.eclipse.eef.core.api.EEFPage;
+import org.eclipse.eef.core.api.IVariableManager;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.sirius.common.interpreter.api.IInterpreter;
+
+/**
+ * The implementation of the {@link EEFGroup}.
+ *
+ * @author sbegaudeau
+ */
+public class EEFGroupImpl implements EEFGroup {
+ /**
+ * The variable manager.
+ */
+ private IVariableManager variableManager;
+
+ /**
+ * The interpreter.
+ */
+ private IInterpreter interpreter;
+
+ /**
+ * The description.
+ */
+ private EEFGroupDescription eefGroupDescription;
+
+ /**
+ * The containing {@link EEFPage}.
+ */
+ private EEFPage eefPage;
+
+ /**
+ * The editing domain.
+ */
+ private TransactionalEditingDomain editingDomain;
+
+ /**
+ * The constructor.
+ *
+ * @param eefPage
+ * The containing {@link EEFPage}
+ * @param eefGroupDescription
+ * The description
+ * @param variableManager
+ * The variable manager.
+ * @param interpreter
+ * The interpreter
+ * @param editingDomain
+ * The editing domain
+ */
+ public EEFGroupImpl(EEFPage eefPage, EEFGroupDescription eefGroupDescription, IVariableManager variableManager, IInterpreter interpreter,
+ TransactionalEditingDomain editingDomain) {
+ this.variableManager = variableManager;
+ this.interpreter = interpreter;
+ this.eefPage = eefPage;
+ this.eefGroupDescription = eefGroupDescription;
+ this.editingDomain = editingDomain;
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.eef.core.api.EEFGroup#getDescription()
+ */
+ @Override
+ public EEFGroupDescription getDescription() {
+ return this.eefGroupDescription;
+ }
+
+ @Override
+ public EEFPage getPage() {
+ return this.eefPage;
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.eef.core.api.EEFGroup#getVariableManager()
+ */
+ @Override
+ public IVariableManager getVariableManager() {
+ return this.variableManager;
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.eef.core.api.EEFGroup#getInterpreter()
+ */
+ @Override
+ public IInterpreter getInterpreter() {
+ return this.interpreter;
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.eef.core.api.EEFGroup#getEditingDomain()
+ */
+ @Override
+ public TransactionalEditingDomain getEditingDomain() {
+ return this.editingDomain;
+ }
+}
diff --git a/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/internal/EEFPageImpl.java b/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/internal/EEFPageImpl.java
new file mode 100644
index 000000000..efa8e0a8f
--- /dev/null
+++ b/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/internal/EEFPageImpl.java
@@ -0,0 +1,174 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.eef.core.internal;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.eef.EEFGroupDescription;
+import org.eclipse.eef.EEFPageDescription;
+import org.eclipse.eef.core.api.EEFExpressionUtils;
+import org.eclipse.eef.core.api.EEFGroup;
+import org.eclipse.eef.core.api.EEFPage;
+import org.eclipse.eef.core.api.EEFView;
+import org.eclipse.eef.core.api.IVariableManager;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.sirius.common.interpreter.api.IEvaluationResult;
+import org.eclipse.sirius.common.interpreter.api.IInterpreter;
+
+/**
+ * The implementation of the {@link EEFPage}.
+ *
+ * @author sbegaudeau
+ */
+public class EEFPageImpl implements EEFPage {
+ /**
+ * The variable manager.
+ */
+ private IVariableManager variableManager;
+
+ /**
+ * The interpreter.
+ */
+ private IInterpreter interpreter;
+
+ /**
+ * The containing {@link EEFView}.
+ */
+ private EEFView eefView;
+
+ /**
+ * The description.
+ */
+ private EEFPageDescription eefPageDescription;
+
+ /**
+ * The {@link EEFGroup}.
+ */
+ private List<EEFGroup> eefGroups = new ArrayList<EEFGroup>();
+
+ /**
+ * The editing domain.
+ */
+ private TransactionalEditingDomain editingDomain;
+
+ /**
+ * The constructor.
+ *
+ * @param eefView
+ * The containing {@link EEFView}
+ * @param eefPageDescription
+ * The description
+ * @param variableManager
+ * The variable manager
+ * @param interpreter
+ * The interpreter
+ * @param editingDomain
+ * The editing domain
+ */
+ public EEFPageImpl(EEFView eefView, EEFPageDescription eefPageDescription, IVariableManager variableManager, IInterpreter interpreter,
+ TransactionalEditingDomain editingDomain) {
+ this.variableManager = variableManager;
+ this.interpreter = interpreter;
+ this.eefView = eefView;
+ this.eefPageDescription = eefPageDescription;
+ this.editingDomain = editingDomain;
+ }
+
+ /**
+ * Initialize the variables of the EEFPage.
+ */
+ public void initialize() {
+ List<EEFGroupDescription> eefGroupDescriptions = this.eefPageDescription.getGroups();
+ for (EEFGroupDescription eefGroupDescription : eefGroupDescriptions) {
+ String semanticCandidatesExpression = eefGroupDescription.getSemanticCandidateExpression();
+ if (semanticCandidatesExpression != null && semanticCandidatesExpression.trim().length() > 0) {
+ IEvaluationResult evaluationResult = this.interpreter.evaluateExpression(this.getVariableManager().getVariables(),
+ semanticCandidatesExpression);
+ if (evaluationResult.getValue() instanceof Iterable<?>) {
+ @SuppressWarnings("unchecked")
+ Iterable<Object> groupSemanticCandidates = (Iterable<Object>) evaluationResult.getValue();
+ for (Object groupSemanticCandidate : groupSemanticCandidates) {
+ IVariableManager childVariableManager = this.getVariableManager().createChild();
+ childVariableManager.put(EEFExpressionUtils.SELF, groupSemanticCandidate);
+ EEFGroupImpl eefGroupImpl = new EEFGroupImpl(this, eefGroupDescription, childVariableManager, this.interpreter,
+ this.editingDomain);
+ eefGroups.add(eefGroupImpl);
+ }
+ } else {
+ Object groupSemanticCandidate = evaluationResult.getValue();
+ IVariableManager childVariableManager = this.getVariableManager().createChild();
+ childVariableManager.put(EEFExpressionUtils.SELF, groupSemanticCandidate);
+ EEFGroupImpl eefGroupImpl = new EEFGroupImpl(this, eefGroupDescription, childVariableManager, this.interpreter,
+ this.editingDomain);
+ eefGroups.add(eefGroupImpl);
+ }
+ } else {
+ IVariableManager childVariableManager = this.getVariableManager().createChild();
+ EEFGroupImpl eefGroupImpl = new EEFGroupImpl(this, eefGroupDescription, childVariableManager, this.interpreter, this.editingDomain);
+ eefGroups.add(eefGroupImpl);
+ }
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.eef.core.api.EEFPage#getLabel()
+ */
+ @Override
+ public String getLabel() {
+ String labelExpression = this.eefPageDescription.getLabelExpression();
+ if (labelExpression != null) {
+ IEvaluationResult evaluationResult = this.interpreter.evaluateExpression(this.getVariableManager().getVariables(), labelExpression);
+ if (evaluationResult.getValue() != null) {
+ return evaluationResult.getValue().toString();
+ }
+ }
+ return labelExpression;
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.eef.core.api.EEFPage#getGroups()
+ */
+ @Override
+ public List<EEFGroup> getGroups() {
+ return this.eefGroups;
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.eef.core.api.EEFPage#getDescription()
+ */
+ @Override
+ public EEFPageDescription getDescription() {
+ return this.eefPageDescription;
+ }
+
+ @Override
+ public EEFView getView() {
+ return this.eefView;
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.eef.core.api.EEFPage#getVariableManager()
+ */
+ @Override
+ public IVariableManager getVariableManager() {
+ return this.variableManager;
+ }
+
+}
diff --git a/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/internal/EEFVariableManager.java b/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/internal/EEFVariableManager.java
new file mode 100644
index 000000000..c9e1f1479
--- /dev/null
+++ b/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/internal/EEFVariableManager.java
@@ -0,0 +1,112 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.eef.core.internal;
+
+import com.google.common.collect.Maps;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.eef.core.api.IVariableManager;
+
+/**
+ * The implementation of the {@link IVariableManager}.
+ *
+ * @author sbegaudeau
+ */
+public class EEFVariableManager implements IVariableManager {
+
+ /**
+ * The parent {@link IVariableManager}.
+ */
+ private IVariableManager parent;
+
+ /**
+ * The variables.
+ */
+ private Map<String, Object> variables = new HashMap<String, Object>();
+
+ /**
+ * The child variable manager.
+ */
+ private List<IVariableManager> children = new ArrayList<IVariableManager>();
+
+ /**
+ * The constructor.
+ */
+ public EEFVariableManager() {
+ // do nothing
+ }
+
+ /**
+ * The constructor.
+ *
+ * @param parent
+ * The parent of this {@link IVariableManager}.
+ */
+ public EEFVariableManager(IVariableManager parent) {
+ this.parent = parent;
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.eef.core.api.IVariableManager#put(java.lang.String, java.lang.Object)
+ */
+ @Override
+ public Object put(String name, Object value) {
+ Object previous = this.variables.put(name, value);
+ return previous;
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.eef.core.api.IVariableManager#getVariables()
+ */
+ @Override
+ public Map<String, Object> getVariables() {
+ if (this.parent != null) {
+ Map<String, Object> parentVariables = this.parent.getVariables();
+ parentVariables.putAll(this.variables);
+ return parentVariables;
+ }
+ return Maps.newHashMap(this.variables);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.eef.core.api.IVariableManager#createChild()
+ */
+ @Override
+ public IVariableManager createChild() {
+ IVariableManager variableManager = new EEFVariableManager(this);
+ this.children.add(variableManager);
+ return variableManager;
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.eef.core.api.IVariableManager#clear()
+ */
+ @Override
+ public void clear() {
+ this.variables.clear();
+
+ for (IVariableManager variableManager : children) {
+ variableManager.clear();
+ }
+ }
+}
diff --git a/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/internal/EEFViewImpl.java b/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/internal/EEFViewImpl.java
new file mode 100644
index 000000000..ec91947fb
--- /dev/null
+++ b/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/internal/EEFViewImpl.java
@@ -0,0 +1,194 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.eef.core.internal;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.eef.EEFPageDescription;
+import org.eclipse.eef.EEFViewDescription;
+import org.eclipse.eef.core.api.EEFExpressionUtils;
+import org.eclipse.eef.core.api.EEFGroup;
+import org.eclipse.eef.core.api.EEFPage;
+import org.eclipse.eef.core.api.EEFView;
+import org.eclipse.eef.core.api.IVariableManager;
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.common.command.CommandStack;
+import org.eclipse.emf.common.util.Diagnostic;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.transaction.RecordingCommand;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.sirius.common.interpreter.api.IEvaluationResult;
+import org.eclipse.sirius.common.interpreter.api.IInterpreter;
+
+/**
+ * The implementation of the {@link EEFView}.
+ *
+ * @author sbegaudeau
+ */
+public class EEFViewImpl implements EEFView {
+ /**
+ * The variable manager.
+ */
+ private IVariableManager variableManager;
+
+ /**
+ * The interpreter.
+ */
+ private IInterpreter interpreter;
+
+ /**
+ * The description.
+ */
+ private EEFViewDescription eefViewDescription;
+
+ /**
+ * The editing domain.
+ */
+ private TransactionalEditingDomain editingDomain;
+
+ /**
+ * The {@link EEFPage} of the view.
+ */
+ private List<EEFPage> eefPages = new ArrayList<EEFPage>();
+
+ /**
+ * The constructor.
+ *
+ * @param eefViewDescription
+ * The description
+ * @param variableManager
+ * The variable manager
+ * @param interpreter
+ * The interpreter
+ * @param editingDomain
+ * The editing domain
+ */
+ public EEFViewImpl(EEFViewDescription eefViewDescription, IVariableManager variableManager, IInterpreter interpreter,
+ TransactionalEditingDomain editingDomain) {
+ this.variableManager = variableManager;
+ this.interpreter = interpreter;
+ this.eefViewDescription = eefViewDescription;
+ this.editingDomain = editingDomain;
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.eef.core.api.EEFView#initialize()
+ */
+ @Override
+ public void initialize() {
+ Command command = new RecordingCommand(this.editingDomain) {
+ @Override
+ protected void doExecute() {
+ EEFViewImpl.this.doInitialize();
+ }
+ };
+
+ CommandStack commandStack = this.editingDomain.getCommandStack();
+ commandStack.execute(command);
+ }
+
+ /**
+ * Performs the initialization of the view by creating the necessary pages.
+ */
+ private void doInitialize() {
+ List<EEFPageDescription> eefPageDescriptions = EEFViewImpl.this.getDescription().getPages();
+ for (EEFPageDescription eefPageDescription : eefPageDescriptions) {
+ EEFPageImpl ePage = null;
+ final String semanticCandidateExpression = eefPageDescription.getSemanticCandidateExpression();
+ if (semanticCandidateExpression != null && semanticCandidateExpression.trim().length() > 0) {
+ IEvaluationResult evaluationResult = EEFViewImpl.this.interpreter.evaluateExpression(EEFViewImpl.this.variableManager.getVariables(),
+ semanticCandidateExpression);
+ if (Diagnostic.OK == evaluationResult.getDiagnostic().getSeverity() && evaluationResult.getValue() != null) {
+ IVariableManager childVariableManager = EEFViewImpl.this.variableManager.createChild();
+ childVariableManager.put(EEFExpressionUtils.SELF, evaluationResult.getValue());
+ ePage = new EEFPageImpl(EEFViewImpl.this, eefPageDescription, childVariableManager, EEFViewImpl.this.interpreter,
+ EEFViewImpl.this.editingDomain);
+ }
+ } else {
+ ePage = new EEFPageImpl(EEFViewImpl.this, eefPageDescription, EEFViewImpl.this.variableManager.createChild(),
+ EEFViewImpl.this.interpreter, EEFViewImpl.this.editingDomain);
+ }
+
+ if (ePage != null) {
+ ePage.initialize();
+ eefPages.add(ePage);
+ }
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.eef.core.api.EEFView#setInput(org.eclipse.emf.ecore.EObject)
+ */
+ @Override
+ public void setInput(EObject eObject) {
+ Object selfValue = this.variableManager.getVariables().get(EEFExpressionUtils.SELF);
+ if (eObject != selfValue) {
+ // Invalidate and update the content of the variable manager with the new input
+ this.variableManager.clear();
+
+ this.variableManager.put(EEFExpressionUtils.SELF, eObject);
+
+ for (EEFPage eefPage : eefPages) {
+ String pageSemanticCandidateExpression = eefPage.getDescription().getSemanticCandidateExpression();
+ if (pageSemanticCandidateExpression != null && pageSemanticCandidateExpression.trim().length() > 0) {
+
+ IEvaluationResult evaluationResult = EEFViewImpl.this.interpreter.evaluateExpression(
+ EEFViewImpl.this.variableManager.getVariables(), pageSemanticCandidateExpression);
+ if (Diagnostic.OK == evaluationResult.getDiagnostic().getSeverity() && evaluationResult.getValue() != null) {
+ eefPage.getVariableManager().put(EEFExpressionUtils.SELF, evaluationResult.getValue());
+ } else {
+ // Something is very wrong here...
+ }
+ }
+
+ List<EEFGroup> groups = eefPage.getGroups();
+ for (EEFGroup eefGroup : groups) {
+ String groupSemanticCandidateExpression = eefGroup.getDescription().getSemanticCandidateExpression();
+ if (groupSemanticCandidateExpression != null && groupSemanticCandidateExpression.trim().length() > 0) {
+
+ IEvaluationResult evaluationResult = EEFViewImpl.this.interpreter.evaluateExpression(eefPage.getVariableManager()
+ .getVariables(), groupSemanticCandidateExpression);
+ if (Diagnostic.OK == evaluationResult.getDiagnostic().getSeverity() && evaluationResult.getValue() != null) {
+ eefGroup.getVariableManager().put(EEFExpressionUtils.SELF, evaluationResult.getValue());
+ } else {
+ // Something is very wrong here...
+ }
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.eef.core.api.EEFView#getPages()
+ */
+ @Override
+ public List<EEFPage> getPages() {
+ return this.eefPages;
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.eef.core.api.EEFView#getDescription()
+ */
+ @Override
+ public EEFViewDescription getDescription() {
+ return this.eefViewDescription;
+ }
+}
diff --git a/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/internal/controllers/EEFTextControllerImpl.java b/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/internal/controllers/EEFTextControllerImpl.java
new file mode 100644
index 000000000..98fcc0ca3
--- /dev/null
+++ b/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/internal/controllers/EEFTextControllerImpl.java
@@ -0,0 +1,200 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.eef.core.internal.controllers;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.Executors;
+import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.ScheduledFuture;
+import java.util.concurrent.TimeUnit;
+
+import org.eclipse.eef.EEFTextDescription;
+import org.eclipse.eef.core.api.EEFExpressionUtils;
+import org.eclipse.eef.core.api.IVariableManager;
+import org.eclipse.eef.core.api.controllers.EEFTextController;
+import org.eclipse.eef.core.api.controllers.IConsumer;
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.common.command.CommandStack;
+import org.eclipse.emf.transaction.RecordingCommand;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.sirius.common.interpreter.api.IEvaluationResult;
+import org.eclipse.sirius.common.interpreter.api.IInterpreter;
+
+/**
+ * This class will be used in order to manage the behavior of the text.
+ *
+ * @author sbegaudeau
+ */
+public class EEFTextControllerImpl implements EEFTextController {
+ /**
+ * The description.
+ */
+ private EEFTextDescription description;
+
+ /**
+ * The variable manager.
+ */
+ private IVariableManager variableManager;
+
+ /**
+ * The interpreter.
+ */
+ private IInterpreter interpreter;
+
+ /**
+ * The editing domain.
+ */
+ private TransactionalEditingDomain editingDomain;
+
+ /**
+ * The consumer of a new value of the text.
+ */
+ private IConsumer<String> newValueConsumer;
+
+ /**
+ * The consumer of a new value of the label.
+ */
+ private IConsumer<String> newLabelConsumer;
+
+ /**
+ * Executor service used to run the update of the text field.
+ */
+ private ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
+
+ /**
+ * This future contains the update to be performed.
+ */
+ private ScheduledFuture<?> currentUpdatedValueFuture;
+
+ /**
+ * The constructor.
+ *
+ * @param description
+ * The description
+ * @param variableManager
+ * The variable manager
+ * @param interpreter
+ * The interpreter
+ * @param editingDomain
+ * The editing domain
+ */
+ public EEFTextControllerImpl(EEFTextDescription description, IVariableManager variableManager, IInterpreter interpreter,
+ TransactionalEditingDomain editingDomain) {
+ this.description = description;
+ this.variableManager = variableManager;
+ this.interpreter = interpreter;
+ this.editingDomain = editingDomain;
+ }
+
+ @Override
+ public void updateValue(final String text) {
+ if (this.currentUpdatedValueFuture != null && !this.currentUpdatedValueFuture.isDone()) {
+ this.currentUpdatedValueFuture.cancel(true);
+ }
+
+ final Command command = new RecordingCommand(this.editingDomain) {
+ @Override
+ protected void doExecute() {
+ String editExpression = EEFTextControllerImpl.this.description.getEditExpression();
+ if (editExpression != null) {
+ Map<String, Object> variables = new HashMap<String, Object>();
+ variables.putAll(EEFTextControllerImpl.this.variableManager.getVariables());
+ variables.put(EEFExpressionUtils.EEFText.NEW_VALUE, text);
+ //variables.put("selection", selection); //$NON-NLS-1$
+ EEFTextControllerImpl.this.interpreter.evaluateExpression(variables, editExpression);
+ }
+ }
+
+ @Override
+ public boolean canExecute() {
+ return true;
+ }
+ };
+
+ Runnable runnable = new Runnable() {
+ @Override
+ public void run() {
+ CommandStack commandStack = EEFTextControllerImpl.this.editingDomain.getCommandStack();
+ commandStack.execute(command);
+ }
+ };
+ final long scheduleTime = 500L;
+ this.currentUpdatedValueFuture = this.executor.schedule(runnable, scheduleTime, TimeUnit.MILLISECONDS);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.eef.core.api.controllers.EEFTextController#refresh()
+ */
+ @Override
+ public void refresh() {
+ String valueExpression = this.description.getValueExpression();
+ if (valueExpression != null) {
+ IEvaluationResult evaluationResult = this.interpreter.evaluateExpression(this.variableManager.getVariables(), valueExpression);
+ Object value = evaluationResult.getValue();
+ if (value instanceof String && this.newValueConsumer != null) {
+ this.newValueConsumer.apply((String) value);
+ }
+ }
+
+ String labelExpression = this.description.getLabelExpression();
+ if (labelExpression != null) {
+ IEvaluationResult evaluationResult = this.interpreter.evaluateExpression(this.variableManager.getVariables(), labelExpression);
+ Object value = evaluationResult.getValue();
+ if (value instanceof String && this.newLabelConsumer != null) {
+ this.newLabelConsumer.apply((String) value);
+ }
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.eef.core.api.controllers.EEFTextController#onNewValue(org.eclipse.eef.core.api.controllers.IConsumer)
+ */
+ @Override
+ public void onNewValue(IConsumer<String> consumer) {
+ this.newValueConsumer = consumer;
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.eef.core.api.controllers.EEFTextController#onNewLabel(org.eclipse.eef.core.api.controllers.IConsumer)
+ */
+ @Override
+ public void onNewLabel(IConsumer<String> consumer) {
+ this.newLabelConsumer = consumer;
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.eef.core.api.controllers.EEFTextController#removeNewValueConsumer()
+ */
+ @Override
+ public void removeNewValueConsumer() {
+ this.newValueConsumer = null;
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.eef.core.api.controllers.EEFTextController#removeNewLabelConsumer()
+ */
+ @Override
+ public void removeNewLabelConsumer() {
+ this.newLabelConsumer = null;
+ }
+
+}
diff --git a/plugins/org.eclipse.eef.edit/.checkstyle b/plugins/org.eclipse.eef.edit/.checkstyle
new file mode 100644
index 000000000..f1a81eec7
--- /dev/null
+++ b/plugins/org.eclipse.eef.edit/.checkstyle
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<fileset-config file-format-version="1.2.0" simple-config="true" sync-formatter="false">
+ <local-check-config name="EEF" location="/org.eclipse.eef.releng/codestyle/EEFCheckstyleConfiguration.xml" type="project" description="">
+ <additional-data name="protect-config-file" value="false"/>
+ </local-check-config>
+ <fileset name="all" enabled="true" check-config-name="EEF" local="true">
+ <file-match-pattern match-pattern="." include-pattern="true"/>
+ </fileset>
+ <filter name="FilesFromPackage" enabled="true">
+ <filter-data value="src-gen"/>
+ </filter>
+</fileset-config>
diff --git a/plugins/org.eclipse.eef.edit/.classpath b/plugins/org.eclipse.eef.edit/.classpath
new file mode 100644
index 000000000..6292ea58a
--- /dev/null
+++ b/plugins/org.eclipse.eef.edit/.classpath
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src-gen">
+ <attributes>
+ <attribute name="ignore_optional_problems" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/org.eclipse.eef.edit/.project b/plugins/org.eclipse.eef.edit/.project
new file mode 100644
index 000000000..b13e4d93b
--- /dev/null
+++ b/plugins/org.eclipse.eef.edit/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.eef.edit</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>net.sf.eclipsecs.core.CheckstyleBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>net.sf.eclipsecs.core.CheckstyleNature</nature>
+ </natures>
+</projectDescription>
diff --git a/plugins/org.eclipse.eef.edit/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.eef.edit/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 000000000..fb8257839
--- /dev/null
+++ b/plugins/org.eclipse.eef.edit/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,398 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+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.6
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=error
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=error
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=warning
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=error
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=error
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=error
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=warning
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=error
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=warning
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=warning
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=warning
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.source=1.6
+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=120
+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=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+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=150
+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=1
+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=true
+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
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/plugins/org.eclipse.eef.edit/.settings/org.eclipse.jdt.launching.prefs b/plugins/org.eclipse.eef.edit/.settings/org.eclipse.jdt.launching.prefs
new file mode 100644
index 000000000..3bb235278
--- /dev/null
+++ b/plugins/org.eclipse.eef.edit/.settings/org.eclipse.jdt.launching.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.launching.PREF_STRICTLY_COMPATIBLE_JRE_NOT_AVAILABLE=ignore
diff --git a/plugins/org.eclipse.eef.edit/.settings/org.eclipse.jdt.ui.prefs b/plugins/org.eclipse.eef.edit/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 000000000..e6ceed5c2
--- /dev/null
+++ b/plugins/org.eclipse.eef.edit/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,67 @@
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_settings_version=12
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=com;java;javax;org;
+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\="false" 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 *\n * @return the ${bare_field_name}\n */</template><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\n * Sets the ${bare_field_name}.\n *\n * @param ${param} the ${bare_field_name} to set\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\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) 2015 Obeo.\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 * Obeo - initial API and implementation\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 * {@inheritDoc}\n *\n * ${see_to_overridden}\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\n * ${tags}\n * ${see_to_target}\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\="false" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">EEFIdePlugin.getImplementation().logError(message, e);</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" 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}</template><template autoinsert\="false" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return this.${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>
+sp_cleanup.add_default_serial_version_id=false
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=false
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=true
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=false
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=false
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=false
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=false
+sp_cleanup.remove_redundant_type_arguments=false
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=true
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=false
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=false
+sp_cleanup.remove_unused_private_types=false
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=false
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=false
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=false
+sp_cleanup.use_type_arguments=false
diff --git a/plugins/org.eclipse.eef.edit/.settings/org.eclipse.pde.prefs b/plugins/org.eclipse.eef.edit/.settings/org.eclipse.pde.prefs
new file mode 100644
index 000000000..3112e810d
--- /dev/null
+++ b/plugins/org.eclipse.eef.edit/.settings/org.eclipse.pde.prefs
@@ -0,0 +1,32 @@
+compilers.f.unresolved-features=1
+compilers.f.unresolved-plugins=1
+compilers.incompatible-environment=1
+compilers.p.build=1
+compilers.p.build.bin.includes=1
+compilers.p.build.encodings=1
+compilers.p.build.java.compiler=1
+compilers.p.build.java.compliance=1
+compilers.p.build.missing.output=2
+compilers.p.build.output.library=1
+compilers.p.build.source.library=1
+compilers.p.build.src.includes=1
+compilers.p.deprecated=1
+compilers.p.discouraged-class=1
+compilers.p.internal=1
+compilers.p.missing-packages=1
+compilers.p.missing-version-export-package=0
+compilers.p.missing-version-import-package=0
+compilers.p.missing-version-require-bundle=0
+compilers.p.no-required-att=0
+compilers.p.not-externalized-att=0
+compilers.p.unknown-attribute=1
+compilers.p.unknown-class=1
+compilers.p.unknown-element=1
+compilers.p.unknown-identifier=1
+compilers.p.unknown-resource=1
+compilers.p.unresolved-ex-points=0
+compilers.p.unresolved-import=0
+compilers.s.create-docs=false
+compilers.s.doc-folder=doc
+compilers.s.open-tags=1
+eclipse.preferences.version=1
diff --git a/plugins/org.eclipse.eef.edit/META-INF/MANIFEST.MF b/plugins/org.eclipse.eef.edit/META-INF/MANIFEST.MF
new file mode 100644
index 000000000..3c2ff7aa7
--- /dev/null
+++ b/plugins/org.eclipse.eef.edit/META-INF/MANIFEST.MF
@@ -0,0 +1,17 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.eef.edit;singleton:=true
+Bundle-Version: 2.0.0.qualifier
+Bundle-ClassPath: .
+Bundle-Activator: org.eclipse.eef.provider.EefEditPlugin$Implementation
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Export-Package: org.eclipse.eef.provider;version="2.0.0"
+Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
+ org.eclipse.eef;bundle-version="[2.0.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecore;bundle-version="[2.8.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecore.edit;bundle-version="[2.8.0,3.0.0)";visibility:=reexport
+Bundle-ActivationPolicy: lazy
diff --git a/plugins/org.eclipse.eef.edit/about.html b/plugins/org.eclipse.eef.edit/about.html
new file mode 100644
index 000000000..f3a55ce5f
--- /dev/null
+++ b/plugins/org.eclipse.eef.edit/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>June 15, 2010</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/org.eclipse.eef.edit/build.properties b/plugins/org.eclipse.eef.edit/build.properties
new file mode 100644
index 000000000..bd07f4585
--- /dev/null
+++ b/plugins/org.eclipse.eef.edit/build.properties
@@ -0,0 +1,17 @@
+# Copyright (c) 2015 Obeo.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.htm
+# Contributors: Obeo - initial API and implementation
+
+bin.includes = .,\
+ icons/,\
+ META-INF/,\
+ plugin.xml,\
+ plugin.properties,\
+ about.html
+jars.compile.order = .
+source.. = src-gen/
+output.. = bin/
+javacProjectSettings = true
diff --git a/plugins/org.eclipse.eef.edit/icons/full/obj16/EEFContainerDescription.gif b/plugins/org.eclipse.eef.edit/icons/full/obj16/EEFContainerDescription.gif
new file mode 100644
index 000000000..5a9bc7514
--- /dev/null
+++ b/plugins/org.eclipse.eef.edit/icons/full/obj16/EEFContainerDescription.gif
Binary files differ
diff --git a/plugins/org.eclipse.eef.edit/icons/full/obj16/EEFGroupDescription.gif b/plugins/org.eclipse.eef.edit/icons/full/obj16/EEFGroupDescription.gif
new file mode 100644
index 000000000..9250fecbf
--- /dev/null
+++ b/plugins/org.eclipse.eef.edit/icons/full/obj16/EEFGroupDescription.gif
Binary files differ
diff --git a/plugins/org.eclipse.eef.edit/icons/full/obj16/EEFPageDescription.gif b/plugins/org.eclipse.eef.edit/icons/full/obj16/EEFPageDescription.gif
new file mode 100644
index 000000000..afb82ea48
--- /dev/null
+++ b/plugins/org.eclipse.eef.edit/icons/full/obj16/EEFPageDescription.gif
Binary files differ
diff --git a/plugins/org.eclipse.eef.edit/icons/full/obj16/EEFTextDescription.gif b/plugins/org.eclipse.eef.edit/icons/full/obj16/EEFTextDescription.gif
new file mode 100644
index 000000000..7b7c428c7
--- /dev/null
+++ b/plugins/org.eclipse.eef.edit/icons/full/obj16/EEFTextDescription.gif
Binary files differ
diff --git a/plugins/org.eclipse.eef.edit/icons/full/obj16/EEFViewDescription.gif b/plugins/org.eclipse.eef.edit/icons/full/obj16/EEFViewDescription.gif
new file mode 100644
index 000000000..35ef84e20
--- /dev/null
+++ b/plugins/org.eclipse.eef.edit/icons/full/obj16/EEFViewDescription.gif
Binary files differ
diff --git a/plugins/org.eclipse.eef.edit/icons/full/obj16/EEFWidgetDescription.gif b/plugins/org.eclipse.eef.edit/icons/full/obj16/EEFWidgetDescription.gif
new file mode 100644
index 000000000..c8d381f0b
--- /dev/null
+++ b/plugins/org.eclipse.eef.edit/icons/full/obj16/EEFWidgetDescription.gif
Binary files differ
diff --git a/plugins/org.eclipse.eef.edit/plugin.properties b/plugins/org.eclipse.eef.edit/plugin.properties
new file mode 100644
index 000000000..e6b86476a
--- /dev/null
+++ b/plugins/org.eclipse.eef.edit/plugin.properties
@@ -0,0 +1,44 @@
+# Copyright (c) 2015 Obeo.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.htm
+# Contributors: Obeo - initial API and implementation
+
+pluginName = EEF Edit Support
+providerName = Eclipse Modeling Project
+_UI_CreateChild_text = {0}
+_UI_CreateChild_text2 = {1} {0}
+_UI_CreateChild_text3 = {1}
+_UI_CreateChild_tooltip = Create New {0} Under {1} Feature
+_UI_CreateChild_description = Create a new child of type {0} for the {1} feature of the selected {2}.
+_UI_CreateSibling_description = Create a new sibling of type {0} for the selected {2}, under the {1} feature of their parent.
+_UI_PropertyDescriptor_description = The {0} of the {1}
+_UI_EEFViewDescription_type = EEF View Description
+_UI_EEFPageDescription_type = EEF Page Description
+_UI_EEFGroupDescription_type = EEF Group Description
+_UI_EEFContainerDescription_type = EEF Container Description
+_UI_EEFWidgetDescription_type = EEF Widget Description
+_UI_EEFTextDescription_type = EEF Text Description
+_UI_Unknown_type = Object
+_UI_Unknown_datatype= Value
+_UI_EEFViewDescription_identifier_feature = Identifier
+_UI_EEFViewDescription_labelExpression_feature = Label Expression
+_UI_EEFViewDescription_groups_feature = Groups
+_UI_EEFViewDescription_pages_feature = Pages
+_UI_EEFViewDescription_ePackages_feature = EPackages
+_UI_EEFPageDescription_identifier_feature = Identifier
+_UI_EEFPageDescription_labelExpression_feature = Label Expression
+_UI_EEFPageDescription_semanticCandidateExpression_feature = Semantic Candidate Expression
+_UI_EEFPageDescription_groups_feature = Groups
+_UI_EEFGroupDescription_identifier_feature = Identifier
+_UI_EEFGroupDescription_labelExpression_feature = Label Expression
+_UI_EEFGroupDescription_semanticCandidateExpression_feature = Semantic Candidate Expression
+_UI_EEFGroupDescription_container_feature = Container
+_UI_EEFContainerDescription_identifier_feature = Identifier
+_UI_EEFContainerDescription_widgets_feature = Widgets
+_UI_EEFWidgetDescription_identifier_feature = Identifier
+_UI_EEFWidgetDescription_labelExpression_feature = Label Expression
+_UI_EEFTextDescription_valueExpression_feature = Value Expression
+_UI_EEFTextDescription_editExpression_feature = Edit Expression
+_UI_Unknown_feature = Unspecified
diff --git a/plugins/org.eclipse.eef.edit/plugin.xml b/plugins/org.eclipse.eef.edit/plugin.xml
new file mode 100644
index 000000000..13c4e98b3
--- /dev/null
+++ b/plugins/org.eclipse.eef.edit/plugin.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+ Copyright (c) 2015 Obeo.
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License v1.0
+ which accompanies this distribution, and is available at
+ http://www.eclipse.org/legal/epl-v10.htm
+ Contributors: Obeo - initial API and implementation
+-->
+
+<plugin>
+
+ <extension point="org.eclipse.emf.edit.itemProviderAdapterFactories">
+ <!-- @generated eef -->
+ <factory
+ uri="http://www.eclipse.org/eef"
+ class="org.eclipse.eef.provider.EefItemProviderAdapterFactory"
+ supportedTypes=
+ "org.eclipse.emf.edit.provider.IEditingDomainItemProvider
+ org.eclipse.emf.edit.provider.IStructuredItemContentProvider
+ org.eclipse.emf.edit.provider.ITreeItemContentProvider
+ org.eclipse.emf.edit.provider.IItemLabelProvider
+ org.eclipse.emf.edit.provider.IItemPropertySource"/>
+ </extension>
+
+</plugin>
diff --git a/plugins/org.eclipse.eef.edit/pom.xml b/plugins/org.eclipse.eef.edit/pom.xml
new file mode 100644
index 000000000..4c8dc8bd7
--- /dev/null
+++ b/plugins/org.eclipse.eef.edit/pom.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Copyright (c) 2015 Obeo.
+All rights reserved. This program and the accompanying materials
+are made available under the terms of the Eclipse Public License v1.0
+which accompanies this distribution, and is available at
+http://www.eclipse.org/legal/epl-v10.html
+
+Contributors:
+ Obeo - initial API and implementation
+-->
+<project
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.eclipse.eef</groupId>
+ <artifactId>org.eclipse.eef.parent</artifactId>
+ <version>2.0.0-SNAPSHOT</version>
+ <relativePath>../../releng/org.eclipse.eef.releng</relativePath>
+ </parent>
+
+ <artifactId>org.eclipse.eef.edit</artifactId>
+ <packaging>eclipse-plugin</packaging>
+
+ <name>EEF Edit</name>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>tycho-source-plugin</artifactId>
+ <version>${tycho-version}</version>
+ </plugin>
+ </plugins>
+ </build>
+</project> \ No newline at end of file
diff --git a/plugins/org.eclipse.eef.edit/src-gen/org/eclipse/eef/provider/EEFContainerDescriptionItemProvider.java b/plugins/org.eclipse.eef.edit/src-gen/org/eclipse/eef/provider/EEFContainerDescriptionItemProvider.java
new file mode 100644
index 000000000..0378c97eb
--- /dev/null
+++ b/plugins/org.eclipse.eef.edit/src-gen/org/eclipse/eef/provider/EEFContainerDescriptionItemProvider.java
@@ -0,0 +1,185 @@
+/**
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.htm
+ * Contributors: Obeo - initial API and implementation
+ */
+package org.eclipse.eef.provider;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.eef.EEFContainerDescription;
+import org.eclipse.eef.EefFactory;
+import org.eclipse.eef.EefPackage;
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.eef.EEFContainerDescription} object. <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class EEFContainerDescriptionItemProvider extends ItemProviderAdapter
+ implements IEditingDomainItemProvider, IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EEFContainerDescriptionItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addIdentifierPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Identifier feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected void addIdentifierPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(), getString("_UI_EEFContainerDescription_identifier_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_EEFContainerDescription_identifier_feature", "_UI_EEFContainerDescription_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ EefPackage.Literals.EEF_CONTAINER_DESCRIPTION__IDENTIFIER, true, false, false, ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null,
+ null));
+ }
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+ if (childrenFeatures == null) {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(EefPackage.Literals.EEF_CONTAINER_DESCRIPTION__WIDGETS);
+ }
+ return childrenFeatures;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected EStructuralFeature getChildFeature(Object object, Object child) {
+ // Check the type of the specified child object and return the proper feature to use for
+ // adding (see {@link AddCommand}) it as a child.
+
+ return super.getChildFeature(object, child);
+ }
+
+ /**
+ * This returns EEFContainerDescription.gif. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/EEFContainerDescription")); //$NON-NLS-1$
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected boolean shouldComposeCreationImage() {
+ return true;
+ }
+
+ /**
+ * This returns the label text for the adapted class. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((EEFContainerDescription) object).getIdentifier();
+ return label == null || label.length() == 0 ? getString("_UI_EEFContainerDescription_type") //$NON-NLS-1$
+ : getString("_UI_EEFContainerDescription_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached children and by creating
+ * a viewer notification, which it passes to {@link #fireNotifyChanged}. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(EEFContainerDescription.class)) {
+ case EefPackage.EEF_CONTAINER_DESCRIPTION__IDENTIFIER:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ case EefPackage.EEF_CONTAINER_DESCRIPTION__WIDGETS:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children that can be created
+ * under this object. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+
+ newChildDescriptors
+ .add(createChildParameter(EefPackage.Literals.EEF_CONTAINER_DESCRIPTION__WIDGETS, EefFactory.eINSTANCE.createEEFTextDescription()));
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return EefEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/plugins/org.eclipse.eef.edit/src-gen/org/eclipse/eef/provider/EEFGroupDescriptionItemProvider.java b/plugins/org.eclipse.eef.edit/src-gen/org/eclipse/eef/provider/EEFGroupDescriptionItemProvider.java
new file mode 100644
index 000000000..f261ac405
--- /dev/null
+++ b/plugins/org.eclipse.eef.edit/src-gen/org/eclipse/eef/provider/EEFGroupDescriptionItemProvider.java
@@ -0,0 +1,216 @@
+/**
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.htm
+ * Contributors: Obeo - initial API and implementation
+ */
+package org.eclipse.eef.provider;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.eef.EEFGroupDescription;
+import org.eclipse.eef.EefFactory;
+import org.eclipse.eef.EefPackage;
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.eef.EEFGroupDescription} object. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class EEFGroupDescriptionItemProvider extends ItemProviderAdapter
+ implements IEditingDomainItemProvider, IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EEFGroupDescriptionItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addIdentifierPropertyDescriptor(object);
+ addLabelExpressionPropertyDescriptor(object);
+ addSemanticCandidateExpressionPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Identifier feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected void addIdentifierPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(), getString("_UI_EEFGroupDescription_identifier_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_EEFGroupDescription_identifier_feature", "_UI_EEFGroupDescription_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ EefPackage.Literals.EEF_GROUP_DESCRIPTION__IDENTIFIER, true, false, false, ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+ }
+
+ /**
+ * This adds a property descriptor for the Label Expression feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected void addLabelExpressionPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(), getString("_UI_EEFGroupDescription_labelExpression_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_EEFGroupDescription_labelExpression_feature", "_UI_EEFGroupDescription_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ EefPackage.Literals.EEF_GROUP_DESCRIPTION__LABEL_EXPRESSION, true, false, false, ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Semantic Candidate Expression feature. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ */
+ protected void addSemanticCandidateExpressionPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(), getString("_UI_EEFGroupDescription_semanticCandidateExpression_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_EEFGroupDescription_semanticCandidateExpression_feature", //$NON-NLS-1$//$NON-NLS-2$
+ "_UI_EEFGroupDescription_type"), //$NON-NLS-1$
+ EefPackage.Literals.EEF_GROUP_DESCRIPTION__SEMANTIC_CANDIDATE_EXPRESSION, true, false, false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+ }
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+ if (childrenFeatures == null) {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(EefPackage.Literals.EEF_GROUP_DESCRIPTION__CONTAINER);
+ }
+ return childrenFeatures;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected EStructuralFeature getChildFeature(Object object, Object child) {
+ // Check the type of the specified child object and return the proper feature to use for
+ // adding (see {@link AddCommand}) it as a child.
+
+ return super.getChildFeature(object, child);
+ }
+
+ /**
+ * This returns EEFGroupDescription.gif. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/EEFGroupDescription")); //$NON-NLS-1$
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected boolean shouldComposeCreationImage() {
+ return true;
+ }
+
+ /**
+ * This returns the label text for the adapted class. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((EEFGroupDescription) object).getIdentifier();
+ return label == null || label.length() == 0 ? getString("_UI_EEFGroupDescription_type") //$NON-NLS-1$
+ : getString("_UI_EEFGroupDescription_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached children and by creating
+ * a viewer notification, which it passes to {@link #fireNotifyChanged}. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(EEFGroupDescription.class)) {
+ case EefPackage.EEF_GROUP_DESCRIPTION__IDENTIFIER:
+ case EefPackage.EEF_GROUP_DESCRIPTION__LABEL_EXPRESSION:
+ case EefPackage.EEF_GROUP_DESCRIPTION__SEMANTIC_CANDIDATE_EXPRESSION:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ case EefPackage.EEF_GROUP_DESCRIPTION__CONTAINER:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children that can be created
+ * under this object. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+
+ newChildDescriptors.add(
+ createChildParameter(EefPackage.Literals.EEF_GROUP_DESCRIPTION__CONTAINER, EefFactory.eINSTANCE.createEEFContainerDescription()));
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return EefEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/plugins/org.eclipse.eef.edit/src-gen/org/eclipse/eef/provider/EEFPageDescriptionItemProvider.java b/plugins/org.eclipse.eef.edit/src-gen/org/eclipse/eef/provider/EEFPageDescriptionItemProvider.java
new file mode 100644
index 000000000..67554ba58
--- /dev/null
+++ b/plugins/org.eclipse.eef.edit/src-gen/org/eclipse/eef/provider/EEFPageDescriptionItemProvider.java
@@ -0,0 +1,191 @@
+/**
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.htm
+ * Contributors: Obeo - initial API and implementation
+ */
+package org.eclipse.eef.provider;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.eef.EEFPageDescription;
+import org.eclipse.eef.EefPackage;
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.eef.EEFPageDescription} object. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class EEFPageDescriptionItemProvider extends ItemProviderAdapter
+ implements IEditingDomainItemProvider, IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EEFPageDescriptionItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addIdentifierPropertyDescriptor(object);
+ addLabelExpressionPropertyDescriptor(object);
+ addSemanticCandidateExpressionPropertyDescriptor(object);
+ addGroupsPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Identifier feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected void addIdentifierPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(), getString("_UI_EEFPageDescription_identifier_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_EEFPageDescription_identifier_feature", "_UI_EEFPageDescription_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ EefPackage.Literals.EEF_PAGE_DESCRIPTION__IDENTIFIER, true, false, false, ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+ }
+
+ /**
+ * This adds a property descriptor for the Label Expression feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected void addLabelExpressionPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(), getString("_UI_EEFPageDescription_labelExpression_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_EEFPageDescription_labelExpression_feature", "_UI_EEFPageDescription_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ EefPackage.Literals.EEF_PAGE_DESCRIPTION__LABEL_EXPRESSION, true, false, false, ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Semantic Candidate Expression feature. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ */
+ protected void addSemanticCandidateExpressionPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(), getString("_UI_EEFPageDescription_semanticCandidateExpression_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_EEFPageDescription_semanticCandidateExpression_feature", //$NON-NLS-1$//$NON-NLS-2$
+ "_UI_EEFPageDescription_type"), //$NON-NLS-1$
+ EefPackage.Literals.EEF_PAGE_DESCRIPTION__SEMANTIC_CANDIDATE_EXPRESSION, true, false, false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+ }
+
+ /**
+ * This adds a property descriptor for the Groups feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected void addGroupsPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(), getString("_UI_EEFPageDescription_groups_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_EEFPageDescription_groups_feature", "_UI_EEFPageDescription_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ EefPackage.Literals.EEF_PAGE_DESCRIPTION__GROUPS, true, false, true, null, null, null));
+ }
+
+ /**
+ * This returns EEFPageDescription.gif. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/EEFPageDescription")); //$NON-NLS-1$
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected boolean shouldComposeCreationImage() {
+ return true;
+ }
+
+ /**
+ * This returns the label text for the adapted class. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((EEFPageDescription) object).getIdentifier();
+ return label == null || label.length() == 0 ? getString("_UI_EEFPageDescription_type") //$NON-NLS-1$
+ : getString("_UI_EEFPageDescription_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached children and by creating
+ * a viewer notification, which it passes to {@link #fireNotifyChanged}. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(EEFPageDescription.class)) {
+ case EefPackage.EEF_PAGE_DESCRIPTION__IDENTIFIER:
+ case EefPackage.EEF_PAGE_DESCRIPTION__LABEL_EXPRESSION:
+ case EefPackage.EEF_PAGE_DESCRIPTION__SEMANTIC_CANDIDATE_EXPRESSION:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children that can be created
+ * under this object. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return EefEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/plugins/org.eclipse.eef.edit/src-gen/org/eclipse/eef/provider/EEFTextDescriptionItemProvider.java b/plugins/org.eclipse.eef.edit/src-gen/org/eclipse/eef/provider/EEFTextDescriptionItemProvider.java
new file mode 100644
index 000000000..3676f6394
--- /dev/null
+++ b/plugins/org.eclipse.eef.edit/src-gen/org/eclipse/eef/provider/EEFTextDescriptionItemProvider.java
@@ -0,0 +1,144 @@
+/**
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.htm
+ * Contributors: Obeo - initial API and implementation
+ */
+package org.eclipse.eef.provider;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.eef.EEFTextDescription;
+import org.eclipse.eef.EefPackage;
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.eef.EEFTextDescription} object. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class EEFTextDescriptionItemProvider extends EEFWidgetDescriptionItemProvider {
+ /**
+ * This constructs an instance from a factory and a notifier. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EEFTextDescriptionItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addValueExpressionPropertyDescriptor(object);
+ addEditExpressionPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Value Expression feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected void addValueExpressionPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(), getString("_UI_EEFTextDescription_valueExpression_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_EEFTextDescription_valueExpression_feature", "_UI_EEFTextDescription_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ EefPackage.Literals.EEF_TEXT_DESCRIPTION__VALUE_EXPRESSION, true, false, false, ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Edit Expression feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected void addEditExpressionPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(), getString("_UI_EEFTextDescription_editExpression_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_EEFTextDescription_editExpression_feature", "_UI_EEFTextDescription_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ EefPackage.Literals.EEF_TEXT_DESCRIPTION__EDIT_EXPRESSION, true, false, false, ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null,
+ null));
+ }
+
+ /**
+ * This returns EEFTextDescription.gif. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/EEFTextDescription")); //$NON-NLS-1$
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected boolean shouldComposeCreationImage() {
+ return true;
+ }
+
+ /**
+ * This returns the label text for the adapted class. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((EEFTextDescription) object).getIdentifier();
+ return label == null || label.length() == 0 ? getString("_UI_EEFTextDescription_type") //$NON-NLS-1$
+ : getString("_UI_EEFTextDescription_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached children and by creating
+ * a viewer notification, which it passes to {@link #fireNotifyChanged}. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(EEFTextDescription.class)) {
+ case EefPackage.EEF_TEXT_DESCRIPTION__VALUE_EXPRESSION:
+ case EefPackage.EEF_TEXT_DESCRIPTION__EDIT_EXPRESSION:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children that can be created
+ * under this object. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/plugins/org.eclipse.eef.edit/src-gen/org/eclipse/eef/provider/EEFViewDescriptionItemProvider.java b/plugins/org.eclipse.eef.edit/src-gen/org/eclipse/eef/provider/EEFViewDescriptionItemProvider.java
new file mode 100644
index 000000000..6ec31361d
--- /dev/null
+++ b/plugins/org.eclipse.eef.edit/src-gen/org/eclipse/eef/provider/EEFViewDescriptionItemProvider.java
@@ -0,0 +1,217 @@
+/**
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.htm
+ * Contributors: Obeo - initial API and implementation
+ */
+package org.eclipse.eef.provider;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.eef.EEFViewDescription;
+import org.eclipse.eef.EefFactory;
+import org.eclipse.eef.EefPackage;
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.eef.EEFViewDescription} object. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class EEFViewDescriptionItemProvider extends ItemProviderAdapter
+ implements IEditingDomainItemProvider, IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EEFViewDescriptionItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addIdentifierPropertyDescriptor(object);
+ addLabelExpressionPropertyDescriptor(object);
+ addEPackagesPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Identifier feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected void addIdentifierPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(), getString("_UI_EEFViewDescription_identifier_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_EEFViewDescription_identifier_feature", "_UI_EEFViewDescription_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ EefPackage.Literals.EEF_VIEW_DESCRIPTION__IDENTIFIER, true, false, false, ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+ }
+
+ /**
+ * This adds a property descriptor for the Label Expression feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected void addLabelExpressionPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(), getString("_UI_EEFViewDescription_labelExpression_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_EEFViewDescription_labelExpression_feature", "_UI_EEFViewDescription_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ EefPackage.Literals.EEF_VIEW_DESCRIPTION__LABEL_EXPRESSION, true, false, false, ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the EPackages feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected void addEPackagesPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(), getString("_UI_EEFViewDescription_ePackages_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_EEFViewDescription_ePackages_feature", "_UI_EEFViewDescription_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ EefPackage.Literals.EEF_VIEW_DESCRIPTION__EPACKAGES, true, false, true, null, null, null));
+ }
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+ if (childrenFeatures == null) {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(EefPackage.Literals.EEF_VIEW_DESCRIPTION__GROUPS);
+ childrenFeatures.add(EefPackage.Literals.EEF_VIEW_DESCRIPTION__PAGES);
+ }
+ return childrenFeatures;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected EStructuralFeature getChildFeature(Object object, Object child) {
+ // Check the type of the specified child object and return the proper feature to use for
+ // adding (see {@link AddCommand}) it as a child.
+
+ return super.getChildFeature(object, child);
+ }
+
+ /**
+ * This returns EEFViewDescription.gif. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/EEFViewDescription")); //$NON-NLS-1$
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected boolean shouldComposeCreationImage() {
+ return true;
+ }
+
+ /**
+ * This returns the label text for the adapted class. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((EEFViewDescription) object).getIdentifier();
+ return label == null || label.length() == 0 ? getString("_UI_EEFViewDescription_type") //$NON-NLS-1$
+ : getString("_UI_EEFViewDescription_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached children and by creating
+ * a viewer notification, which it passes to {@link #fireNotifyChanged}. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(EEFViewDescription.class)) {
+ case EefPackage.EEF_VIEW_DESCRIPTION__IDENTIFIER:
+ case EefPackage.EEF_VIEW_DESCRIPTION__LABEL_EXPRESSION:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ case EefPackage.EEF_VIEW_DESCRIPTION__GROUPS:
+ case EefPackage.EEF_VIEW_DESCRIPTION__PAGES:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children that can be created
+ * under this object. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+
+ newChildDescriptors
+ .add(createChildParameter(EefPackage.Literals.EEF_VIEW_DESCRIPTION__GROUPS, EefFactory.eINSTANCE.createEEFGroupDescription()));
+
+ newChildDescriptors
+ .add(createChildParameter(EefPackage.Literals.EEF_VIEW_DESCRIPTION__PAGES, EefFactory.eINSTANCE.createEEFPageDescription()));
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return EefEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/plugins/org.eclipse.eef.edit/src-gen/org/eclipse/eef/provider/EEFWidgetDescriptionItemProvider.java b/plugins/org.eclipse.eef.edit/src-gen/org/eclipse/eef/provider/EEFWidgetDescriptionItemProvider.java
new file mode 100644
index 000000000..89221fea0
--- /dev/null
+++ b/plugins/org.eclipse.eef.edit/src-gen/org/eclipse/eef/provider/EEFWidgetDescriptionItemProvider.java
@@ -0,0 +1,161 @@
+/**
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.htm
+ * Contributors: Obeo - initial API and implementation
+ */
+package org.eclipse.eef.provider;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.eef.EEFWidgetDescription;
+import org.eclipse.eef.EefPackage;
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.eef.EEFWidgetDescription} object. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class EEFWidgetDescriptionItemProvider extends ItemProviderAdapter
+ implements IEditingDomainItemProvider, IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EEFWidgetDescriptionItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addIdentifierPropertyDescriptor(object);
+ addLabelExpressionPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Identifier feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected void addIdentifierPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(), getString("_UI_EEFWidgetDescription_identifier_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_EEFWidgetDescription_identifier_feature", "_UI_EEFWidgetDescription_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ EefPackage.Literals.EEF_WIDGET_DESCRIPTION__IDENTIFIER, true, false, false, ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+ }
+
+ /**
+ * This adds a property descriptor for the Label Expression feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected void addLabelExpressionPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(), getString("_UI_EEFWidgetDescription_labelExpression_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_EEFWidgetDescription_labelExpression_feature", "_UI_EEFWidgetDescription_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ EefPackage.Literals.EEF_WIDGET_DESCRIPTION__LABEL_EXPRESSION, true, false, false, ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null,
+ null));
+ }
+
+ /**
+ * This returns EEFWidgetDescription.gif. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/EEFWidgetDescription")); //$NON-NLS-1$
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected boolean shouldComposeCreationImage() {
+ return true;
+ }
+
+ /**
+ * This returns the label text for the adapted class. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((EEFWidgetDescription) object).getIdentifier();
+ return label == null || label.length() == 0 ? getString("_UI_EEFWidgetDescription_type") //$NON-NLS-1$
+ : getString("_UI_EEFWidgetDescription_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached children and by creating
+ * a viewer notification, which it passes to {@link #fireNotifyChanged}. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(EEFWidgetDescription.class)) {
+ case EefPackage.EEF_WIDGET_DESCRIPTION__IDENTIFIER:
+ case EefPackage.EEF_WIDGET_DESCRIPTION__LABEL_EXPRESSION:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children that can be created
+ * under this object. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return EefEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/plugins/org.eclipse.eef.edit/src-gen/org/eclipse/eef/provider/EefEditPlugin.java b/plugins/org.eclipse.eef.edit/src-gen/org/eclipse/eef/provider/EefEditPlugin.java
new file mode 100644
index 000000000..6188ae0cd
--- /dev/null
+++ b/plugins/org.eclipse.eef.edit/src-gen/org/eclipse/eef/provider/EefEditPlugin.java
@@ -0,0 +1,85 @@
+/**
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.htm
+ * Contributors: Obeo - initial API and implementation
+ */
+package org.eclipse.eef.provider;
+
+import org.eclipse.emf.common.EMFPlugin;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.ecore.provider.EcoreEditPlugin;
+
+/**
+ * This is the central singleton for the Eef edit plugin. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public final class EefEditPlugin extends EMFPlugin {
+ /**
+ * Keep track of the singleton. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public static final EefEditPlugin INSTANCE = new EefEditPlugin();
+
+ /**
+ * Keep track of the singleton. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private static Implementation plugin;
+
+ /**
+ * Create the instance. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EefEditPlugin() {
+ super(new ResourceLocator[] { EcoreEditPlugin.INSTANCE, });
+ }
+
+ /**
+ * Returns the singleton instance of the Eclipse plugin. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the singleton instance.
+ * @generated
+ */
+ @Override
+ public ResourceLocator getPluginResourceLocator() {
+ return EefEditPlugin.plugin;
+ }
+
+ /**
+ * Returns the singleton instance of the Eclipse plugin. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the singleton instance.
+ * @generated
+ */
+ public static Implementation getPlugin() {
+ return EefEditPlugin.plugin;
+ }
+
+ /**
+ * The actual implementation of the Eclipse <b>Plugin</b>. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public static class Implementation extends EclipsePlugin {
+ /**
+ * Creates an instance. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public Implementation() {
+ super();
+
+ // Remember the static instance.
+ //
+ EefEditPlugin.plugin = this;
+ }
+ }
+
+}
diff --git a/plugins/org.eclipse.eef.edit/src-gen/org/eclipse/eef/provider/EefItemProviderAdapterFactory.java b/plugins/org.eclipse.eef.edit/src-gen/org/eclipse/eef/provider/EefItemProviderAdapterFactory.java
new file mode 100644
index 000000000..2a9fa696c
--- /dev/null
+++ b/plugins/org.eclipse.eef.edit/src-gen/org/eclipse/eef/provider/EefItemProviderAdapterFactory.java
@@ -0,0 +1,308 @@
+/**
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.htm
+ * Contributors: Obeo - initial API and implementation
+ */
+package org.eclipse.eef.provider;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.eef.util.EefAdapterFactory;
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.edit.provider.ChangeNotifier;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.IChangeNotifier;
+import org.eclipse.emf.edit.provider.IDisposable;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.INotifyChangedListener;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the factory that is used to provide the interfaces needed to support Viewers. The adapters generated by this
+ * factory convert EMF adapter notifications into calls to {@link #fireNotifyChanged fireNotifyChanged}. The adapters
+ * also support Eclipse property sheets. Note that most of the adapters are shared among multiple instances. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class EefItemProviderAdapterFactory extends EefAdapterFactory implements ComposeableAdapterFactory, IChangeNotifier, IDisposable {
+ /**
+ * This keeps track of the root adapter factory that delegates to this adapter factory. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ */
+ protected ComposedAdapterFactory parentAdapterFactory;
+
+ /**
+ * This is used to implement {@link org.eclipse.emf.edit.provider.IChangeNotifier}. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ */
+ protected IChangeNotifier changeNotifier = new ChangeNotifier();
+
+ /**
+ * This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected Collection<Object> supportedTypes = new ArrayList<Object>();
+
+ /**
+ * This constructs an instance. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EefItemProviderAdapterFactory() {
+ supportedTypes.add(IEditingDomainItemProvider.class);
+ supportedTypes.add(IStructuredItemContentProvider.class);
+ supportedTypes.add(ITreeItemContentProvider.class);
+ supportedTypes.add(IItemLabelProvider.class);
+ supportedTypes.add(IItemPropertySource.class);
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.eef.EEFViewDescription} instances. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected EEFViewDescriptionItemProvider eefViewDescriptionItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.eef.EEFViewDescription}. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public Adapter createEEFViewDescriptionAdapter() {
+ if (eefViewDescriptionItemProvider == null) {
+ eefViewDescriptionItemProvider = new EEFViewDescriptionItemProvider(this);
+ }
+
+ return eefViewDescriptionItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.eef.EEFPageDescription} instances. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected EEFPageDescriptionItemProvider eefPageDescriptionItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.eef.EEFPageDescription}. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public Adapter createEEFPageDescriptionAdapter() {
+ if (eefPageDescriptionItemProvider == null) {
+ eefPageDescriptionItemProvider = new EEFPageDescriptionItemProvider(this);
+ }
+
+ return eefPageDescriptionItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.eef.EEFGroupDescription} instances. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected EEFGroupDescriptionItemProvider eefGroupDescriptionItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.eef.EEFGroupDescription}. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public Adapter createEEFGroupDescriptionAdapter() {
+ if (eefGroupDescriptionItemProvider == null) {
+ eefGroupDescriptionItemProvider = new EEFGroupDescriptionItemProvider(this);
+ }
+
+ return eefGroupDescriptionItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.eef.EEFContainerDescription} instances. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected EEFContainerDescriptionItemProvider eefContainerDescriptionItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.eef.EEFContainerDescription}. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public Adapter createEEFContainerDescriptionAdapter() {
+ if (eefContainerDescriptionItemProvider == null) {
+ eefContainerDescriptionItemProvider = new EEFContainerDescriptionItemProvider(this);
+ }
+
+ return eefContainerDescriptionItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.eef.EEFTextDescription} instances. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected EEFTextDescriptionItemProvider eefTextDescriptionItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.eef.EEFTextDescription}. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public Adapter createEEFTextDescriptionAdapter() {
+ if (eefTextDescriptionItemProvider == null) {
+ eefTextDescriptionItemProvider = new EEFTextDescriptionItemProvider(this);
+ }
+
+ return eefTextDescriptionItemProvider;
+ }
+
+ /**
+ * This returns the root adapter factory that contains this factory. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public ComposeableAdapterFactory getRootAdapterFactory() {
+ return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory();
+ }
+
+ /**
+ * This sets the composed adapter factory that contains this factory. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory) {
+ this.parentAdapterFactory = parentAdapterFactory;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public boolean isFactoryForType(Object type) {
+ return supportedTypes.contains(type) || super.isFactoryForType(type);
+ }
+
+ /**
+ * This implementation substitutes the factory itself as the key for the adapter. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public Adapter adapt(Notifier notifier, Object type) {
+ return super.adapt(notifier, this);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public Object adapt(Object object, Object type) {
+ if (isFactoryForType(type)) {
+ Object adapter = super.adapt(object, type);
+ if (!(type instanceof Class<?>) || (((Class<?>) type).isInstance(adapter))) {
+ return adapter;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * This adds a listener. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void addListener(INotifyChangedListener notifyChangedListener) {
+ changeNotifier.addListener(notifyChangedListener);
+ }
+
+ /**
+ * This removes a listener. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void removeListener(INotifyChangedListener notifyChangedListener) {
+ changeNotifier.removeListener(notifyChangedListener);
+ }
+
+ /**
+ * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void fireNotifyChanged(Notification notification) {
+ changeNotifier.fireNotifyChanged(notification);
+
+ if (parentAdapterFactory != null) {
+ parentAdapterFactory.fireNotifyChanged(notification);
+ }
+ }
+
+ /**
+ * This disposes all of the item providers created by this factory. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void dispose() {
+ if (eefViewDescriptionItemProvider != null) {
+ eefViewDescriptionItemProvider.dispose();
+ }
+ if (eefPageDescriptionItemProvider != null) {
+ eefPageDescriptionItemProvider.dispose();
+ }
+ if (eefGroupDescriptionItemProvider != null) {
+ eefGroupDescriptionItemProvider.dispose();
+ }
+ if (eefContainerDescriptionItemProvider != null) {
+ eefContainerDescriptionItemProvider.dispose();
+ }
+ if (eefTextDescriptionItemProvider != null) {
+ eefTextDescriptionItemProvider.dispose();
+ }
+ }
+
+}
diff --git a/plugins/org.eclipse.eef.ide.ui/.checkstyle b/plugins/org.eclipse.eef.ide.ui/.checkstyle
new file mode 100644
index 000000000..121faf77d
--- /dev/null
+++ b/plugins/org.eclipse.eef.ide.ui/.checkstyle
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<fileset-config file-format-version="1.2.0" simple-config="true" sync-formatter="false">
+ <local-check-config name="EEF" location="/org.eclipse.eef.releng/codestyle/EEFCheckstyleConfiguration.xml" type="project" description="">
+ <additional-data name="protect-config-file" value="false"/>
+ </local-check-config>
+ <fileset name="all" enabled="true" check-config-name="EEF" local="true">
+ <file-match-pattern match-pattern="." include-pattern="true"/>
+ </fileset>
+</fileset-config>
diff --git a/plugins/org.eclipse.eef.ide.ui/.classpath b/plugins/org.eclipse.eef.ide.ui/.classpath
new file mode 100644
index 000000000..ad32c83a7
--- /dev/null
+++ b/plugins/org.eclipse.eef.ide.ui/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/org.eclipse.eef.ide.ui/.project b/plugins/org.eclipse.eef.ide.ui/.project
new file mode 100644
index 000000000..2bc4ade00
--- /dev/null
+++ b/plugins/org.eclipse.eef.ide.ui/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.eef.ide.ui</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>net.sf.eclipsecs.core.CheckstyleBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>net.sf.eclipsecs.core.CheckstyleNature</nature>
+ </natures>
+</projectDescription>
diff --git a/plugins/org.eclipse.eef.ide.ui/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.eef.ide.ui/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 000000000..fb8257839
--- /dev/null
+++ b/plugins/org.eclipse.eef.ide.ui/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,398 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+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.6
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=error
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=error
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=warning
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=error
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=error
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=error
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=warning
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=error
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=warning
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=warning
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=warning
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.source=1.6
+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=120
+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=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+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=150
+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=1
+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=true
+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
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/plugins/org.eclipse.eef.ide.ui/.settings/org.eclipse.jdt.launching.prefs b/plugins/org.eclipse.eef.ide.ui/.settings/org.eclipse.jdt.launching.prefs
new file mode 100644
index 000000000..3bb235278
--- /dev/null
+++ b/plugins/org.eclipse.eef.ide.ui/.settings/org.eclipse.jdt.launching.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.launching.PREF_STRICTLY_COMPATIBLE_JRE_NOT_AVAILABLE=ignore
diff --git a/plugins/org.eclipse.eef.ide.ui/.settings/org.eclipse.jdt.ui.prefs b/plugins/org.eclipse.eef.ide.ui/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 000000000..16886bccd
--- /dev/null
+++ b/plugins/org.eclipse.eef.ide.ui/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,67 @@
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_settings_version=12
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=com;java;javax;org;
+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\="false" 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 *\n * @return the ${bare_field_name}\n */</template><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\n * Sets the ${bare_field_name}.\n *\n * @param ${param} the ${bare_field_name} to set\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\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) 2015 Obeo.\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 * Obeo - initial API and implementation\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 * {@inheritDoc}\n *\n * ${see_to_overridden}\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\n * ${tags}\n * ${see_to_target}\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\="false" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">EEFIdeUiPlugin.getImplementation().logError(message, e);</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" 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}</template><template autoinsert\="false" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return this.${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>
+sp_cleanup.add_default_serial_version_id=false
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=false
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=true
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=false
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=false
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=false
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=false
+sp_cleanup.remove_redundant_type_arguments=false
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=true
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=false
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=false
+sp_cleanup.remove_unused_private_types=false
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=false
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=false
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=false
+sp_cleanup.use_type_arguments=false
diff --git a/plugins/org.eclipse.eef.ide.ui/.settings/org.eclipse.pde.core.prefs b/plugins/org.eclipse.eef.ide.ui/.settings/org.eclipse.pde.core.prefs
new file mode 100644
index 000000000..923c37fb8
--- /dev/null
+++ b/plugins/org.eclipse.eef.ide.ui/.settings/org.eclipse.pde.core.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+resolve.requirebundle=false
diff --git a/plugins/org.eclipse.eef.ide.ui/.settings/org.eclipse.pde.prefs b/plugins/org.eclipse.eef.ide.ui/.settings/org.eclipse.pde.prefs
new file mode 100644
index 000000000..3112e810d
--- /dev/null
+++ b/plugins/org.eclipse.eef.ide.ui/.settings/org.eclipse.pde.prefs
@@ -0,0 +1,32 @@
+compilers.f.unresolved-features=1
+compilers.f.unresolved-plugins=1
+compilers.incompatible-environment=1
+compilers.p.build=1
+compilers.p.build.bin.includes=1
+compilers.p.build.encodings=1
+compilers.p.build.java.compiler=1
+compilers.p.build.java.compliance=1
+compilers.p.build.missing.output=2
+compilers.p.build.output.library=1
+compilers.p.build.source.library=1
+compilers.p.build.src.includes=1
+compilers.p.deprecated=1
+compilers.p.discouraged-class=1
+compilers.p.internal=1
+compilers.p.missing-packages=1
+compilers.p.missing-version-export-package=0
+compilers.p.missing-version-import-package=0
+compilers.p.missing-version-require-bundle=0
+compilers.p.no-required-att=0
+compilers.p.not-externalized-att=0
+compilers.p.unknown-attribute=1
+compilers.p.unknown-class=1
+compilers.p.unknown-element=1
+compilers.p.unknown-identifier=1
+compilers.p.unknown-resource=1
+compilers.p.unresolved-ex-points=0
+compilers.p.unresolved-import=0
+compilers.s.create-docs=false
+compilers.s.doc-folder=doc
+compilers.s.open-tags=1
+eclipse.preferences.version=1
diff --git a/plugins/org.eclipse.eef.ide.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.eef.ide.ui/META-INF/MANIFEST.MF
new file mode 100644
index 000000000..7206527ba
--- /dev/null
+++ b/plugins/org.eclipse.eef.ide.ui/META-INF/MANIFEST.MF
@@ -0,0 +1,26 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.eef.ide.ui;singleton:=true
+Bundle-Version: 2.0.0.qualifier
+Bundle-Vendor: %providerName
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Import-Package: org.eclipse.eef;version="[2.0.0,3.0.0)",
+ org.eclipse.eef.api;version="[2.0.0,3.0.0)",
+ org.eclipse.eef.core.api;version="[2.0.0,3.0.0)",
+ org.eclipse.eef.core.api.controllers;version="2.0.0",
+ org.eclipse.eef.ide.internal;version="[2.0.0,3.0.0)",
+ org.eclipse.eef.ide.internal.extensions;version="[2.0.0,3.0.0)",
+ org.eclipse.sirius.common.interpreter.api;version="1.0.0"
+Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
+ org.eclipse.ui.views.properties.tabbed;bundle-version="[3.0.0,4.0.0)",
+ org.eclipse.emf.common;bundle-version="[2.8.0,3.0.0)",
+ org.eclipse.emf.ecore;bundle-version="[2.8.0,3.0.0)",
+ org.eclipse.emf.transaction;bundle-version="[1.4.0,2.0.0)"
+Export-Package: org.eclipse.eef.ide.ui.api;version="2.0.0",
+ org.eclipse.eef.ide.ui.internal;version="2.0.0";x-internal:=true,
+ org.eclipse.eef.ide.ui.internal.properties;version="2.0.0";x-internal:=true,
+ org.eclipse.eef.ide.ui.internal.widgets;version="2.0.0"
+Bundle-Localization: plugin
+Bundle-ActivationPolicy: lazy
+Bundle-Activator: org.eclipse.eef.ide.ui.internal.EEFIdeUiPlugin$Implementation
diff --git a/plugins/org.eclipse.eef.ide.ui/about.html b/plugins/org.eclipse.eef.ide.ui/about.html
new file mode 100644
index 000000000..f3a55ce5f
--- /dev/null
+++ b/plugins/org.eclipse.eef.ide.ui/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>June 15, 2010</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/org.eclipse.eef.ide.ui/build.properties b/plugins/org.eclipse.eef.ide.ui/build.properties
new file mode 100644
index 000000000..fe056b0aa
--- /dev/null
+++ b/plugins/org.eclipse.eef.ide.ui/build.properties
@@ -0,0 +1,15 @@
+# Copyright (c) 2015 Obeo.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.htm
+# Contributors: Obeo - initial API and implementation
+
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ about.html,\
+ plugin.properties
+javacProjectSettings = true
+additional.bundles = org.eclipse.emf.transaction
diff --git a/plugins/org.eclipse.eef.ide.ui/plugin.properties b/plugins/org.eclipse.eef.ide.ui/plugin.properties
new file mode 100644
index 000000000..adc702834
--- /dev/null
+++ b/plugins/org.eclipse.eef.ide.ui/plugin.properties
@@ -0,0 +1,9 @@
+# Copyright (c) 2015 Obeo.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.htm
+# Contributors: Obeo - initial API and implementation
+
+pluginName=EEF IDE UI
+providerName=Eclipse Modeling Project
diff --git a/plugins/org.eclipse.eef.ide.ui/pom.xml b/plugins/org.eclipse.eef.ide.ui/pom.xml
new file mode 100644
index 000000000..dccbbba00
--- /dev/null
+++ b/plugins/org.eclipse.eef.ide.ui/pom.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Copyright (c) 2015 Obeo.
+All rights reserved. This program and the accompanying materials
+are made available under the terms of the Eclipse Public License v1.0
+which accompanies this distribution, and is available at
+http://www.eclipse.org/legal/epl-v10.html
+
+Contributors:
+ Obeo - initial API and implementation
+-->
+<project
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.eclipse.eef</groupId>
+ <artifactId>org.eclipse.eef.parent</artifactId>
+ <version>2.0.0-SNAPSHOT</version>
+ <relativePath>../../releng/org.eclipse.eef.releng</relativePath>
+ </parent>
+
+ <artifactId>org.eclipse.eef.ide.ui</artifactId>
+ <packaging>eclipse-plugin</packaging>
+
+ <name>EEF IDE UI</name>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>tycho-source-plugin</artifactId>
+ <version>${tycho-version}</version>
+ </plugin>
+ </plugins>
+ </build>
+</project> \ No newline at end of file
diff --git a/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/api/TabDescriptorFilter.java b/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/api/TabDescriptorFilter.java
new file mode 100644
index 000000000..d06f81a9f
--- /dev/null
+++ b/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/api/TabDescriptorFilter.java
@@ -0,0 +1,108 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.eef.ide.ui.api;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.eef.EEFViewDescription;
+import org.eclipse.eef.api.IEEFViewDescriptionProvider;
+import org.eclipse.eef.core.api.EEFPage;
+import org.eclipse.eef.core.api.EEFVariableManagerFactory;
+import org.eclipse.eef.core.api.EEFView;
+import org.eclipse.eef.core.api.EEFViewFactory;
+import org.eclipse.eef.core.api.IVariableManager;
+import org.eclipse.eef.ide.internal.EEFIdePlugin;
+import org.eclipse.eef.ide.internal.extensions.IItemDescriptor;
+import org.eclipse.eef.ide.internal.extensions.IItemRegistry;
+import org.eclipse.eef.ide.ui.internal.properties.EEFTabDescriptor;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.sirius.common.interpreter.api.IInterpreterProvider;
+import org.eclipse.ui.views.properties.tabbed.ITabDescriptor;
+
+/**
+ * Utility class used to filter all the tab descriptors to use for the given {@link IEEFContext}.
+ *
+ * @author sbegaudeau
+ */
+public class TabDescriptorFilter {
+
+ /**
+ * Returns the {@link ITabDescriptor} matching the given {@link IEEFContext}.
+ *
+ * @param objects
+ * The input objects
+ * @param editingDomain
+ * The editing domain
+ * @return The {@link ITabDescriptor} to use
+ */
+ public List<ITabDescriptor> getTabDescriptors(final Object[] objects, TransactionalEditingDomain editingDomain) {
+ List<EEFViewDescription> eefViewDescriptions = this.getEEFViewDescriptions();
+ List<IInterpreterProvider> interpreterProviders = this.getInterprerProviders();
+
+ List<ITabDescriptor> tabDescriptors = new ArrayList<ITabDescriptor>();
+ if (eefViewDescriptions.size() > 0 && objects.length > 0 && objects[0] instanceof EObject) {
+ EEFViewDescription eefViewDescription = eefViewDescriptions.get(0);
+ EObject eObject = (EObject) objects[0];
+
+ IVariableManager variableManager = new EEFVariableManagerFactory().createVariableManager();
+ EEFView eefView = new EEFViewFactory().createEEFView(eefViewDescription, variableManager, interpreterProviders, editingDomain, eObject);
+
+ List<EEFPage> eefPages = eefView.getPages();
+ for (EEFPage eefPage : eefPages) {
+ EEFTabDescriptor eefTabDescriptor = new EEFTabDescriptor(eefPage);
+ tabDescriptors.add(eefTabDescriptor);
+ }
+ }
+
+ return tabDescriptors;
+ }
+
+ /**
+ * Returns the list of all the available {@link EEFViewDescription}.
+ *
+ * @return The list of all the available {@link EEFViewDescription}.
+ */
+ private List<EEFViewDescription> getEEFViewDescriptions() {
+ List<EEFViewDescription> eefViewDescriptions = new ArrayList<EEFViewDescription>();
+
+ List<IEEFViewDescriptionProvider> eefViewDescriptionProviders = new ArrayList<IEEFViewDescriptionProvider>();
+ IItemRegistry<IEEFViewDescriptionProvider> eefViewDescriptionProviderRegistry = EEFIdePlugin.getImplementation()
+ .getEEFViewDescriptionProviderRegistry();
+ List<IItemDescriptor<IEEFViewDescriptionProvider>> itemDescriptors = eefViewDescriptionProviderRegistry.getItemDescriptors();
+ for (IItemDescriptor<IEEFViewDescriptionProvider> itemDescriptor : itemDescriptors) {
+ IEEFViewDescriptionProvider eefViewDescriptionProvider = itemDescriptor.getItem();
+ eefViewDescriptionProviders.add(eefViewDescriptionProvider);
+ }
+
+ for (IEEFViewDescriptionProvider eefViewDescriptionProvider : eefViewDescriptionProviders) {
+ eefViewDescriptions.add(eefViewDescriptionProvider.get());
+ }
+
+ return eefViewDescriptions;
+ }
+
+ /**
+ * Returns the list of all the available {@link IInterpreterProvider}.
+ *
+ * @return The list of all the available {@link IInterpreterProvider}
+ */
+ private List<IInterpreterProvider> getInterprerProviders() {
+ List<IInterpreterProvider> interpreterProviders = new ArrayList<IInterpreterProvider>();
+ List<IItemDescriptor<IInterpreterProvider>> descriptors = EEFIdePlugin.getImplementation().getInterpreterProviderRegistry()
+ .getItemDescriptors();
+ for (IItemDescriptor<IInterpreterProvider> itemDescriptor : descriptors) {
+ interpreterProviders.add(itemDescriptor.getItem());
+ }
+ return interpreterProviders;
+ }
+}
diff --git a/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/EEFIdeUiPlugin.java b/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/EEFIdeUiPlugin.java
new file mode 100644
index 000000000..f98052501
--- /dev/null
+++ b/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/EEFIdeUiPlugin.java
@@ -0,0 +1,97 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.eef.ide.ui.internal;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.emf.common.EMFPlugin;
+import org.eclipse.emf.common.util.ResourceLocator;
+
+/**
+ * The plugin class of the bundle.
+ *
+ * @author sbegaudeau
+ */
+public class EEFIdeUiPlugin extends EMFPlugin {
+
+ /**
+ * The identifier of the plugin.
+ */
+ public static final String PLUGIN_ID = "org.eclipse.eef.ide.ui"; //$NON-NLS-1$
+
+ /**
+ * The OSGi related implementation of the plugin.
+ */
+ private static Implementation plugin;
+
+ /**
+ * The constructor.
+ */
+ public EEFIdeUiPlugin() {
+ super(new ResourceLocator[0]);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.emf.common.EMFPlugin#getPluginResourceLocator()
+ */
+ @Override
+ public ResourceLocator getPluginResourceLocator() {
+ return plugin;
+ }
+
+ public static Implementation getImplementation() {
+ return plugin;
+ }
+
+ /**
+ * This class is used as the bundle activator of the plugin.
+ *
+ * @author sbegaudeau
+ */
+ public static class Implementation extends EclipsePlugin {
+ /**
+ * The constructor.
+ */
+ public Implementation() {
+ super();
+
+ EEFIdeUiPlugin.plugin = this;
+ }
+
+ /**
+ * Logs an error with the exception and the given message.
+ *
+ * @param message
+ * The message
+ * @param exception
+ * The exception
+ */
+ public void logError(String message, Exception exception) {
+ IStatus status = new Status(IStatus.ERROR, PLUGIN_ID, message, exception);
+ this.getLog().log(status);
+ }
+
+ /**
+ * Logs a warning with the exception and the given message.
+ *
+ * @param message
+ * The message
+ * @param exception
+ * The exception
+ */
+ public void logWarning(String message, Exception exception) {
+ IStatus status = new Status(IStatus.WARNING, PLUGIN_ID, message, exception);
+ this.getLog().log(status);
+ }
+ }
+}
diff --git a/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/properties/EEFSection.java b/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/properties/EEFSection.java
new file mode 100644
index 000000000..09f70586d
--- /dev/null
+++ b/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/properties/EEFSection.java
@@ -0,0 +1,162 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.eef.ide.ui.internal.properties;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.eef.EEFContainerDescription;
+import org.eclipse.eef.core.api.EEFGroup;
+import org.eclipse.eef.core.api.EEFPage;
+import org.eclipse.eef.ide.ui.internal.widgets.EEFContainerLifecycleManager;
+import org.eclipse.eef.ide.ui.internal.widgets.ILifecycleManager;
+import org.eclipse.emf.common.util.Diagnostic;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.sirius.common.interpreter.api.IEvaluationResult;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.forms.widgets.Section;
+import org.eclipse.ui.views.properties.tabbed.ISection;
+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage;
+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory;
+
+/**
+ * The implementation of {@link ISection} using the {@link EEFSectionDescriptor}.
+ *
+ * @author sbegaudeau
+ */
+public class EEFSection implements ISection {
+
+ /**
+ * The section descriptor.
+ */
+ private EEFSectionDescriptor eefSectionDescriptor;
+
+ /**
+ * The lifecycle managers of this section.
+ */
+ private List<ILifecycleManager> lifecycleManagers = new ArrayList<ILifecycleManager>();
+
+ /**
+ * The constructor.
+ *
+ * @param eefSectionDescriptor
+ * The section descriptor
+ */
+ public EEFSection(EEFSectionDescriptor eefSectionDescriptor) {
+ this.eefSectionDescriptor = eefSectionDescriptor;
+ }
+
+ @Override
+ public void createControls(Composite parent, TabbedPropertySheetPage tabbedPropertySheetPage) {
+ EEFGroup eefGroup = this.eefSectionDescriptor.getEEFGroup();
+ EEFContainerDescription eefContainerDescription = eefGroup.getDescription().getContainer();
+
+ if (eefContainerDescription != null) {
+ TabbedPropertySheetWidgetFactory widgetFactory = tabbedPropertySheetPage.getWidgetFactory();
+
+ Composite container = widgetFactory.createComposite(parent);
+ container.setLayout(new GridLayout(3, false));
+
+ Section section = widgetFactory.createSection(container, Section.TITLE_BAR | Section.TWISTIE | Section.EXPANDED);
+
+ String labelExpression = eefGroup.getDescription().getLabelExpression();
+ if (labelExpression != null) {
+ IEvaluationResult result = eefGroup.getInterpreter()
+ .evaluateExpression(eefGroup.getVariableManager().getVariables(), labelExpression);
+ if (result.getDiagnostic().getSeverity() == Diagnostic.OK && result.getValue() instanceof String) {
+ section.setText((String) result.getValue());
+ }
+ } else {
+ section.setText(""); //$NON-NLS-1$
+ }
+
+ GridData sectionLayoutData = new GridData(GridData.FILL_HORIZONTAL);
+ sectionLayoutData.horizontalSpan = 3;
+ section.setLayoutData(sectionLayoutData);
+ Composite group = widgetFactory.createComposite(section);
+ GridLayout groupLayout = new GridLayout();
+ groupLayout.numColumns = 3;
+ group.setLayout(groupLayout);
+ section.setClient(group);
+
+ EEFContainerLifecycleManager containerLifecycleManager = new EEFContainerLifecycleManager(eefContainerDescription, eefGroup
+ .getVariableManager().createChild(), eefGroup.getInterpreter(), eefGroup.getEditingDomain());
+ containerLifecycleManager.createControl(group, tabbedPropertySheetPage);
+
+ parent.layout();
+
+ this.lifecycleManagers.add(containerLifecycleManager);
+ }
+ }
+
+ @Override
+ public void aboutToBeShown() {
+ for (ILifecycleManager lifecycleManager : lifecycleManagers) {
+ lifecycleManager.aboutToBeShown();
+ }
+ }
+
+ @Override
+ public void setInput(IWorkbenchPart part, ISelection selection) {
+ if (selection instanceof IStructuredSelection) {
+ IStructuredSelection iStructuredSelection = (IStructuredSelection) selection;
+ Object object = iStructuredSelection.getFirstElement();
+
+ EObject eObject = Platform.getAdapterManager().getAdapter(object, EObject.class);
+
+ // Update the input of the view only
+ EEFGroup eefGroup = this.eefSectionDescriptor.getEEFGroup();
+ EEFPage eefPage = eefGroup.getPage();
+
+ // TODO we should create a whole context with the current selection etc for the context
+ eefPage.getView().setInput(eObject);
+ }
+ }
+
+ @Override
+ public void refresh() {
+ for (ILifecycleManager lifecycleManager : lifecycleManagers) {
+ lifecycleManager.refresh();
+ }
+ }
+
+ @Override
+ public void aboutToBeHidden() {
+ for (ILifecycleManager lifecycleManager : lifecycleManagers) {
+ lifecycleManager.aboutToBeHidden();
+ }
+ }
+
+ @Override
+ public void dispose() {
+ for (ILifecycleManager lifecycleManager : lifecycleManagers) {
+ lifecycleManager.dispose();
+ }
+ }
+
+ @Override
+ public int getMinimumHeight() {
+ return SWT.DEFAULT;
+ }
+
+ @Override
+ public boolean shouldUseExtraSpace() {
+ return true;
+ }
+
+}
diff --git a/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/properties/EEFSectionDescriptor.java b/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/properties/EEFSectionDescriptor.java
new file mode 100644
index 000000000..6f54d27d2
--- /dev/null
+++ b/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/properties/EEFSectionDescriptor.java
@@ -0,0 +1,94 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.eef.ide.ui.internal.properties;
+
+import org.eclipse.eef.core.api.EEFGroup;
+import org.eclipse.jface.viewers.IFilter;
+import org.eclipse.ui.views.properties.tabbed.AbstractSectionDescriptor;
+import org.eclipse.ui.views.properties.tabbed.ISection;
+
+/**
+ * The implementation of the {@link AbstractSectionDescriptor} using the {@link EEFGroup}.
+ *
+ * @author sbegaudeau
+ */
+public class EEFSectionDescriptor extends AbstractSectionDescriptor {
+
+ /**
+ * The EEFGroup.
+ */
+ private EEFGroup eefGroup;
+
+ /**
+ * The constructor.
+ *
+ * @param eefGroup
+ * The EEFGroup
+ */
+ public EEFSectionDescriptor(EEFGroup eefGroup) {
+ this.eefGroup = eefGroup;
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.ui.views.properties.tabbed.ISectionDescriptor#getId()
+ */
+ @Override
+ public String getId() {
+ return this.eefGroup.getDescription().getIdentifier();
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.ui.views.properties.tabbed.ISectionDescriptor#getSectionClass()
+ */
+ @Override
+ public ISection getSectionClass() {
+ return new EEFSection(this);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.ui.views.properties.tabbed.ISectionDescriptor#getTargetTab()
+ */
+ @Override
+ public String getTargetTab() {
+ return null;
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.ui.views.properties.tabbed.AbstractSectionDescriptor#getFilter()
+ */
+ @Override
+ public IFilter getFilter() {
+ return new IFilter() {
+
+ @Override
+ public boolean select(Object toTest) {
+ return true;
+ }
+ };
+ }
+
+ /**
+ * Returns the EEFGroup used to managed this section descriptor.
+ *
+ * @return The EEFGroup used to managed this section descriptor
+ */
+ public EEFGroup getEEFGroup() {
+ return eefGroup;
+ }
+}
diff --git a/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/properties/EEFTabDescriptor.java b/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/properties/EEFTabDescriptor.java
new file mode 100644
index 000000000..2d73d8da6
--- /dev/null
+++ b/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/properties/EEFTabDescriptor.java
@@ -0,0 +1,91 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.eef.ide.ui.internal.properties;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.eef.core.api.EEFGroup;
+import org.eclipse.eef.core.api.EEFPage;
+import org.eclipse.ui.views.properties.tabbed.AbstractTabDescriptor;
+import org.eclipse.ui.views.properties.tabbed.ISectionDescriptor;
+
+/**
+ * The implementation of the {@link AbstractTabDescriptor} using the {@link EEFPage}.
+ *
+ * @author sbegaudeau
+ */
+public class EEFTabDescriptor extends AbstractTabDescriptor {
+
+ /**
+ * The {@link EEFPage}.
+ */
+ private EEFPage eefPage;
+
+ /**
+ * The constructor.
+ *
+ * @param eefPage
+ * The EEFPage
+ */
+ public EEFTabDescriptor(EEFPage eefPage) {
+ this.eefPage = eefPage;
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.ui.views.properties.tabbed.ITabDescriptor#getId()
+ */
+ @Override
+ public String getId() {
+ return this.eefPage.getDescription().getIdentifier();
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.ui.views.properties.tabbed.ITabDescriptor#getLabel()
+ */
+ @Override
+ public String getLabel() {
+ return this.eefPage.getLabel();
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.ui.views.properties.tabbed.AbstractTabDescriptor#getSectionDescriptors()
+ */
+ @SuppressWarnings("rawtypes")
+ @Override
+ public List getSectionDescriptors() {
+ List<ISectionDescriptor> sectionDescriptors = new ArrayList<ISectionDescriptor>();
+
+ List<EEFGroup> eefGroups = this.eefPage.getGroups();
+ for (EEFGroup eefGroup : eefGroups) {
+ sectionDescriptors.add(new EEFSectionDescriptor(eefGroup));
+ }
+
+ return sectionDescriptors;
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.ui.views.properties.tabbed.ITabDescriptor#getCategory()
+ */
+ @Override
+ public String getCategory() {
+ return "EEF"; //$NON-NLS-1$
+ }
+
+}
diff --git a/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/widgets/EEFContainerLifecycleManager.java b/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/widgets/EEFContainerLifecycleManager.java
new file mode 100644
index 000000000..cf1f21ee2
--- /dev/null
+++ b/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/widgets/EEFContainerLifecycleManager.java
@@ -0,0 +1,147 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.eef.ide.ui.internal.widgets;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.eef.EEFContainerDescription;
+import org.eclipse.eef.EEFTextDescription;
+import org.eclipse.eef.EEFWidgetDescription;
+import org.eclipse.eef.core.api.IVariableManager;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.sirius.common.interpreter.api.IInterpreter;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage;
+
+/**
+ * This class will handle the lifecycle of the {@link EEFContainerDescription}.
+ *
+ * @author sbegaudeau
+ */
+public class EEFContainerLifecycleManager implements ILifecycleManager {
+
+ /**
+ * The variable manager.
+ */
+ private IVariableManager variableManager;
+
+ /**
+ * The interpreter.
+ */
+ private IInterpreter interpreter;
+
+ /**
+ * The editing domain.
+ */
+ private TransactionalEditingDomain editingDomain;
+
+ /**
+ * The description of the container.
+ */
+ private EEFContainerDescription description;
+
+ /**
+ * The lifecycle managers of the child of the container.
+ */
+ private List<ILifecycleManager> lifecycleManagers = new ArrayList<ILifecycleManager>();
+
+ /**
+ * The constructor.
+ *
+ * @param description
+ * The description of the container
+ * @param variableManager
+ * The variable manager
+ * @param interpreter
+ * The interpreter
+ * @param editingDomain
+ * The editing domain
+ */
+ public EEFContainerLifecycleManager(EEFContainerDescription description, IVariableManager variableManager, IInterpreter interpreter,
+ TransactionalEditingDomain editingDomain) {
+ this.description = description;
+ this.variableManager = variableManager;
+ this.interpreter = interpreter;
+ this.editingDomain = editingDomain;
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.eef.ide.ui.internal.widgets.ILifecycleManager#createControl(org.eclipse.swt.widgets.Composite,
+ * org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage)
+ */
+ @Override
+ public void createControl(Composite parent, TabbedPropertySheetPage tabbedPropertySheetPage) {
+ List<EEFWidgetDescription> widgets = this.description.getWidgets();
+ for (EEFWidgetDescription eefWidgetDescription : widgets) {
+ if (eefWidgetDescription instanceof EEFTextDescription) {
+ EEFTextDescription eefTextDescription = (EEFTextDescription) eefWidgetDescription;
+
+ EEFTextLifecycleManager eefTextLifecycleManager = new EEFTextLifecycleManager(eefTextDescription, variableManager.createChild(),
+ interpreter, editingDomain);
+ eefTextLifecycleManager.createControl(parent, tabbedPropertySheetPage);
+
+ this.lifecycleManagers.add(eefTextLifecycleManager);
+ }
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.eef.ide.ui.internal.widgets.ILifecycleManager#aboutToBeShown()
+ */
+ @Override
+ public void aboutToBeShown() {
+ for (ILifecycleManager lifecycleManager : lifecycleManagers) {
+ lifecycleManager.aboutToBeShown();
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.eef.ide.ui.internal.widgets.ILifecycleManager#refresh()
+ */
+ @Override
+ public void refresh() {
+ for (ILifecycleManager lifecycleManager : lifecycleManagers) {
+ lifecycleManager.refresh();
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.eef.ide.ui.internal.widgets.ILifecycleManager#aboutToBeHidden()
+ */
+ @Override
+ public void aboutToBeHidden() {
+ for (ILifecycleManager lifecycleManager : lifecycleManagers) {
+ lifecycleManager.aboutToBeHidden();
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.eef.ide.ui.internal.widgets.ILifecycleManager#dispose()
+ */
+ @Override
+ public void dispose() {
+ for (ILifecycleManager lifecycleManager : lifecycleManagers) {
+ lifecycleManager.dispose();
+ }
+ }
+
+}
diff --git a/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/widgets/EEFTextLifecycleManager.java b/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/widgets/EEFTextLifecycleManager.java
new file mode 100644
index 000000000..02f0698a0
--- /dev/null
+++ b/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/widgets/EEFTextLifecycleManager.java
@@ -0,0 +1,206 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.eef.ide.ui.internal.widgets;
+
+import org.eclipse.eef.EEFTextDescription;
+import org.eclipse.eef.core.api.IVariableManager;
+import org.eclipse.eef.core.api.controllers.EEFControllersFactory;
+import org.eclipse.eef.core.api.controllers.EEFTextController;
+import org.eclipse.eef.core.api.controllers.IConsumer;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.jface.resource.JFaceResources;
+import org.eclipse.sirius.common.interpreter.api.IInterpreter;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage;
+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory;
+
+/**
+ * This class will be used in order to manager the lifecycle of a text.
+ *
+ * @author sbegaudeau
+ */
+public class EEFTextLifecycleManager implements ILifecycleManager {
+ /**
+ * The key used for the help image.
+ */
+ private static final String DLG_IMG_HELP = "dialog_help_image"; //$NON-NLS-1$
+
+ /**
+ * The description.
+ */
+ private EEFTextDescription description;
+
+ /**
+ * The variable manager.
+ */
+ private IVariableManager variableManager;
+
+ /**
+ * The interpreter.
+ */
+ private IInterpreter interpreter;
+
+ /**
+ * The editing domain.
+ */
+ private TransactionalEditingDomain editingDomain;
+
+ /**
+ * The text.
+ */
+ private Text text;
+
+ /**
+ * The label.
+ */
+ private Label label;
+
+ /**
+ * The help label.
+ */
+ private Label help;
+
+ /**
+ * The controller.
+ */
+ private EEFTextController controller;
+
+ /**
+ * The listener on the text.
+ */
+ private ModifyListener modifyListener;
+
+ /**
+ * The constructor.
+ *
+ * @param description
+ * The description
+ * @param variableManager
+ * The variable manager
+ * @param interpreter
+ * The interpreter
+ * @param editingDomain
+ * The editing domain
+ */
+ public EEFTextLifecycleManager(EEFTextDescription description, IVariableManager variableManager, IInterpreter interpreter,
+ TransactionalEditingDomain editingDomain) {
+ this.description = description;
+ this.variableManager = variableManager;
+ this.interpreter = interpreter;
+ this.editingDomain = editingDomain;
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.eef.ide.ui.internal.widgets.ILifecycleManager#createControl(org.eclipse.swt.widgets.Composite,
+ * org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage)
+ */
+ @Override
+ public void createControl(Composite parent, TabbedPropertySheetPage tabbedPropertySheetPage) {
+ TabbedPropertySheetWidgetFactory widgetFactory = tabbedPropertySheetPage.getWidgetFactory();
+
+ this.label = widgetFactory.createLabel(parent, ""); //$NON-NLS-1$
+
+ this.text = widgetFactory.createText(parent, "", SWT.NONE); //$NON-NLS-1$
+ this.text.setData(FormToolkit.KEY_DRAW_BORDER, FormToolkit.TEXT_BORDER);
+ widgetFactory.paintBordersFor(parent);
+ GridData nameData = new GridData(GridData.FILL_HORIZONTAL);
+ this.text.setLayoutData(nameData);
+
+ this.help = widgetFactory.createLabel(parent, ""); //$NON-NLS-1$
+ Image image = JFaceResources.getImage(DLG_IMG_HELP);
+ help.setImage(image);
+ help.setToolTipText("There should be some help in this tooltip..."); //$NON-NLS-1$
+
+ this.controller = new EEFControllersFactory().createTextController(this.description, this.variableManager, this.interpreter,
+ this.editingDomain);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.eef.ide.ui.internal.widgets.ILifecycleManager#aboutToBeShown()
+ */
+ @Override
+ public void aboutToBeShown() {
+ this.modifyListener = new ModifyListener() {
+ @Override
+ public void modifyText(ModifyEvent event) {
+ controller.updateValue(text.getText());
+ }
+ };
+ this.text.addModifyListener(this.modifyListener);
+
+ this.controller.onNewValue(new IConsumer<String>() {
+ @Override
+ public void apply(String value) {
+ if (!text.isDisposed() && !(text.getText() != null && text.getText().equals(value))) {
+ text.setText(value);
+ if (!text.isEnabled()) {
+ text.setEnabled(true);
+ }
+ }
+ }
+ });
+
+ this.controller.onNewLabel(new IConsumer<String>() {
+ @Override
+ public void apply(String value) {
+ if (!label.isDisposed() && !(label.getText() != null && label.getText().equals(value))) {
+ label.setText(value);
+ }
+ }
+ });
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.eef.ide.ui.internal.widgets.ILifecycleManager#refresh()
+ */
+ @Override
+ public void refresh() {
+ this.controller.refresh();
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.eef.ide.ui.internal.widgets.ILifecycleManager#aboutToBeHidden()
+ */
+ @Override
+ public void aboutToBeHidden() {
+ if (!text.isDisposed()) {
+ this.text.removeModifyListener(this.modifyListener);
+ }
+ this.controller.removeNewValueConsumer();
+ this.controller.removeNewLabelConsumer();
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.eef.ide.ui.internal.widgets.ILifecycleManager#dispose()
+ */
+ @Override
+ public void dispose() {
+ // do nothing
+ }
+}
diff --git a/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/widgets/ILifecycleManager.java b/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/widgets/ILifecycleManager.java
new file mode 100644
index 000000000..2808c665a
--- /dev/null
+++ b/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/widgets/ILifecycleManager.java
@@ -0,0 +1,52 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.eef.ide.ui.internal.widgets;
+
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage;
+
+/**
+ * Implementations of this interface will be used to handle the lifecycle of the widgets and controllers created for a
+ * description.
+ *
+ * @author sbegaudeau
+ */
+public interface ILifecycleManager {
+ /**
+ * Creates the controls for the description.
+ *
+ * @param parent
+ * The composite parent
+ * @param tabbedPropertySheetPage
+ * The tabbed property sheet page
+ */
+ void createControl(Composite parent, TabbedPropertySheetPage tabbedPropertySheetPage);
+
+ /**
+ * Prepares for the widgets to be shown.
+ */
+ void aboutToBeShown();
+
+ /**
+ * Refresh the widgets.
+ */
+ void refresh();
+
+ /**
+ * Prepares for the widgets to be hidden.
+ */
+ void aboutToBeHidden();
+
+ /**
+ * Disposes the content created. The widgets created under the composite will be disposed by SWT already.
+ */
+ void dispose();
+}
diff --git a/plugins/org.eclipse.eef.ide/.checkstyle b/plugins/org.eclipse.eef.ide/.checkstyle
new file mode 100644
index 000000000..121faf77d
--- /dev/null
+++ b/plugins/org.eclipse.eef.ide/.checkstyle
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<fileset-config file-format-version="1.2.0" simple-config="true" sync-formatter="false">
+ <local-check-config name="EEF" location="/org.eclipse.eef.releng/codestyle/EEFCheckstyleConfiguration.xml" type="project" description="">
+ <additional-data name="protect-config-file" value="false"/>
+ </local-check-config>
+ <fileset name="all" enabled="true" check-config-name="EEF" local="true">
+ <file-match-pattern match-pattern="." include-pattern="true"/>
+ </fileset>
+</fileset-config>
diff --git a/plugins/org.eclipse.eef.ide/.classpath b/plugins/org.eclipse.eef.ide/.classpath
new file mode 100644
index 000000000..ad32c83a7
--- /dev/null
+++ b/plugins/org.eclipse.eef.ide/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/org.eclipse.eef.ide/.project b/plugins/org.eclipse.eef.ide/.project
new file mode 100644
index 000000000..0b4e1819c
--- /dev/null
+++ b/plugins/org.eclipse.eef.ide/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.eef.ide</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>
+ <buildCommand>
+ <name>net.sf.eclipsecs.core.CheckstyleBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>net.sf.eclipsecs.core.CheckstyleNature</nature>
+ </natures>
+</projectDescription>
diff --git a/plugins/org.eclipse.eef.ide/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.eef.ide/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 000000000..fb8257839
--- /dev/null
+++ b/plugins/org.eclipse.eef.ide/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,398 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+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.6
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=error
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=error
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=warning
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=error
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=error
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=error
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=warning
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=error
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=warning
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=warning
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=warning
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.source=1.6
+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=120
+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=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+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=150
+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=1
+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=true
+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
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/plugins/org.eclipse.eef.ide/.settings/org.eclipse.jdt.launching.prefs b/plugins/org.eclipse.eef.ide/.settings/org.eclipse.jdt.launching.prefs
new file mode 100644
index 000000000..3bb235278
--- /dev/null
+++ b/plugins/org.eclipse.eef.ide/.settings/org.eclipse.jdt.launching.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.launching.PREF_STRICTLY_COMPATIBLE_JRE_NOT_AVAILABLE=ignore
diff --git a/plugins/org.eclipse.eef.ide/.settings/org.eclipse.jdt.ui.prefs b/plugins/org.eclipse.eef.ide/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 000000000..e6ceed5c2
--- /dev/null
+++ b/plugins/org.eclipse.eef.ide/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,67 @@
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_settings_version=12
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=com;java;javax;org;
+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\="false" 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 *\n * @return the ${bare_field_name}\n */</template><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\n * Sets the ${bare_field_name}.\n *\n * @param ${param} the ${bare_field_name} to set\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\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) 2015 Obeo.\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 * Obeo - initial API and implementation\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 * {@inheritDoc}\n *\n * ${see_to_overridden}\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\n * ${tags}\n * ${see_to_target}\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\="false" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">EEFIdePlugin.getImplementation().logError(message, e);</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" 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}</template><template autoinsert\="false" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return this.${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>
+sp_cleanup.add_default_serial_version_id=false
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=false
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=true
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=false
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=false
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=false
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=false
+sp_cleanup.remove_redundant_type_arguments=false
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=true
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=false
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=false
+sp_cleanup.remove_unused_private_types=false
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=false
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=false
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=false
+sp_cleanup.use_type_arguments=false
diff --git a/plugins/org.eclipse.eef.ide/.settings/org.eclipse.pde.prefs b/plugins/org.eclipse.eef.ide/.settings/org.eclipse.pde.prefs
new file mode 100644
index 000000000..3112e810d
--- /dev/null
+++ b/plugins/org.eclipse.eef.ide/.settings/org.eclipse.pde.prefs
@@ -0,0 +1,32 @@
+compilers.f.unresolved-features=1
+compilers.f.unresolved-plugins=1
+compilers.incompatible-environment=1
+compilers.p.build=1
+compilers.p.build.bin.includes=1
+compilers.p.build.encodings=1
+compilers.p.build.java.compiler=1
+compilers.p.build.java.compliance=1
+compilers.p.build.missing.output=2
+compilers.p.build.output.library=1
+compilers.p.build.source.library=1
+compilers.p.build.src.includes=1
+compilers.p.deprecated=1
+compilers.p.discouraged-class=1
+compilers.p.internal=1
+compilers.p.missing-packages=1
+compilers.p.missing-version-export-package=0
+compilers.p.missing-version-import-package=0
+compilers.p.missing-version-require-bundle=0
+compilers.p.no-required-att=0
+compilers.p.not-externalized-att=0
+compilers.p.unknown-attribute=1
+compilers.p.unknown-class=1
+compilers.p.unknown-element=1
+compilers.p.unknown-identifier=1
+compilers.p.unknown-resource=1
+compilers.p.unresolved-ex-points=0
+compilers.p.unresolved-import=0
+compilers.s.create-docs=false
+compilers.s.doc-folder=doc
+compilers.s.open-tags=1
+eclipse.preferences.version=1
diff --git a/plugins/org.eclipse.eef.ide/META-INF/MANIFEST.MF b/plugins/org.eclipse.eef.ide/META-INF/MANIFEST.MF
new file mode 100644
index 000000000..3271736a5
--- /dev/null
+++ b/plugins/org.eclipse.eef.ide/META-INF/MANIFEST.MF
@@ -0,0 +1,18 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.eef.ide;singleton:=true
+Bundle-Version: 2.0.0.qualifier
+Bundle-Activator: org.eclipse.eef.ide.internal.EEFIdePlugin$Implementation
+Bundle-Vendor: %providerName
+Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.0.0,4.0.0)",
+ org.eclipse.emf.common;bundle-version="[2.8.0,3.0.0)"
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Bundle-ActivationPolicy: lazy
+Bundle-Localization: plugin
+Import-Package: org.eclipse.eef;version="[2.0.0,3.0.0)",
+ org.eclipse.eef.api;version="[2.0.0,3.0.0)",
+ org.eclipse.sirius.common.interpreter.api;version="1.0.0"
+Export-Package: org.eclipse.eef.ide.internal;version="2.0.0";x-friends:="org.eclipse.eef.ide.ui",
+ org.eclipse.eef.ide.internal.extensions;version="2.0.0";x-friends:="org.eclipse.eef.ide.ui",
+ org.eclipse.eef.ide.internal.extensions.impl;version="2.0.0";x-internal:=true
diff --git a/plugins/org.eclipse.eef.ide/about.html b/plugins/org.eclipse.eef.ide/about.html
new file mode 100644
index 000000000..f3a55ce5f
--- /dev/null
+++ b/plugins/org.eclipse.eef.ide/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>June 15, 2010</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/org.eclipse.eef.ide/build.properties b/plugins/org.eclipse.eef.ide/build.properties
new file mode 100644
index 000000000..7ff6173f1
--- /dev/null
+++ b/plugins/org.eclipse.eef.ide/build.properties
@@ -0,0 +1,15 @@
+# Copyright (c) 2015 Obeo.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.htm
+# Contributors: Obeo - initial API and implementation
+
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.properties,\
+ plugin.xml,\
+ about.html
+javacProjectSettings = true
diff --git a/plugins/org.eclipse.eef.ide/plugin.properties b/plugins/org.eclipse.eef.ide/plugin.properties
new file mode 100644
index 000000000..84644c30c
--- /dev/null
+++ b/plugins/org.eclipse.eef.ide/plugin.properties
@@ -0,0 +1,12 @@
+# Copyright (c) 2015 Obeo.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.htm
+# Contributors: Obeo - initial API and implementation
+
+pluginName=EEF IDE
+providerName=Eclipse Modeling Project
+
+PluginXML_eefViewDescriptionProviderExtensionPointName=EEF View Description Provider
+PluginXML_interpreterProviderExtensionPointName=Interpreter Provider \ No newline at end of file
diff --git a/plugins/org.eclipse.eef.ide/plugin.xml b/plugins/org.eclipse.eef.ide/plugin.xml
new file mode 100644
index 000000000..bb2621391
--- /dev/null
+++ b/plugins/org.eclipse.eef.ide/plugin.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+ <extension-point id="eefViewDescriptionProvider" name="%PluginXML_eefViewDescriptionProviderExtensionPointName" schema="schema/eefViewDescriptionProvider.exsd"/>
+ <extension-point id="interpreterProvider" name="%PluginXML_interpreterProviderExtensionPointName" schema="schema/interpreterProvider.exsd"/>
+
+</plugin>
diff --git a/plugins/org.eclipse.eef.ide/pom.xml b/plugins/org.eclipse.eef.ide/pom.xml
new file mode 100644
index 000000000..07d12c993
--- /dev/null
+++ b/plugins/org.eclipse.eef.ide/pom.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Copyright (c) 2015 Obeo.
+All rights reserved. This program and the accompanying materials
+are made available under the terms of the Eclipse Public License v1.0
+which accompanies this distribution, and is available at
+http://www.eclipse.org/legal/epl-v10.html
+
+Contributors:
+ Obeo - initial API and implementation
+-->
+<project
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.eclipse.eef</groupId>
+ <artifactId>org.eclipse.eef.parent</artifactId>
+ <version>2.0.0-SNAPSHOT</version>
+ <relativePath>../../releng/org.eclipse.eef.releng</relativePath>
+ </parent>
+
+ <artifactId>org.eclipse.eef.ide</artifactId>
+ <packaging>eclipse-plugin</packaging>
+
+ <name>EEF IDE</name>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>tycho-source-plugin</artifactId>
+ <version>${tycho-version}</version>
+ </plugin>
+ </plugins>
+ </build>
+</project> \ No newline at end of file
diff --git a/plugins/org.eclipse.eef.ide/schema/eefViewDescriptionProvider.exsd b/plugins/org.eclipse.eef.ide/schema/eefViewDescriptionProvider.exsd
new file mode 100644
index 000000000..dac3d7243
--- /dev/null
+++ b/plugins/org.eclipse.eef.ide/schema/eefViewDescriptionProvider.exsd
@@ -0,0 +1,123 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.eclipse.eef.ide" xmlns="http://www.w3.org/2001/XMLSchema">
+<annotation>
+ <appinfo>
+ <meta.schema plugin="org.eclipse.eef.ide" id="eefViewDescriptionProvider" name="EEF View Description Provider"/>
+ </appinfo>
+ <documentation>
+ [Enter description of this extension point.]
+ </documentation>
+ </annotation>
+
+ <element name="extension">
+ <annotation>
+ <appinfo>
+ <meta.element />
+ </appinfo>
+ </annotation>
+ <complexType>
+ <sequence>
+ <element ref="descriptor" minOccurs="1" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="point" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="id" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="name" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appinfo>
+ <meta.attribute translatable="true"/>
+ </appinfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <element name="descriptor">
+ <complexType>
+ <attribute name="id" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="label" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="description" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="class" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appinfo>
+ <meta.attribute kind="java" basedOn=":org.eclipse.eef.api.IEEFViewDescriptionProvider"/>
+ </appinfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="since"/>
+ </appinfo>
+ <documentation>
+ 2.0.0
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="examples"/>
+ </appinfo>
+ <documentation>
+ [Enter extension point usage example here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="apiinfo"/>
+ </appinfo>
+ <documentation>
+ [Enter API information here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="implementation"/>
+ </appinfo>
+ <documentation>
+ [Enter information about supplied implementation of this extension point.]
+ </documentation>
+ </annotation>
+
+
+</schema>
diff --git a/plugins/org.eclipse.eef.ide/schema/interpreterProvider.exsd b/plugins/org.eclipse.eef.ide/schema/interpreterProvider.exsd
new file mode 100644
index 000000000..413fa69b1
--- /dev/null
+++ b/plugins/org.eclipse.eef.ide/schema/interpreterProvider.exsd
@@ -0,0 +1,123 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.eclipse.eef.ide" xmlns="http://www.w3.org/2001/XMLSchema">
+<annotation>
+ <appinfo>
+ <meta.schema plugin="org.eclipse.eef.ide" id="interpreterProvider" name="%PluginXML_interpreterProviderExtensionPointName"/>
+ </appinfo>
+ <documentation>
+ [Enter description of this extension point.]
+ </documentation>
+ </annotation>
+
+ <element name="extension">
+ <annotation>
+ <appinfo>
+ <meta.element />
+ </appinfo>
+ </annotation>
+ <complexType>
+ <sequence>
+ <element ref="descriptor" minOccurs="1" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="point" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="id" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="name" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appinfo>
+ <meta.attribute translatable="true"/>
+ </appinfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <element name="descriptor">
+ <complexType>
+ <attribute name="id" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="label" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="description" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="class" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appinfo>
+ <meta.attribute kind="java" basedOn=":org.eclipse.eef.interpreter.api.IInterpreterProvider"/>
+ </appinfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="since"/>
+ </appinfo>
+ <documentation>
+ [Enter the first release in which this extension point appears.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="examples"/>
+ </appinfo>
+ <documentation>
+ [Enter extension point usage example here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="apiinfo"/>
+ </appinfo>
+ <documentation>
+ [Enter API information here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="implementation"/>
+ </appinfo>
+ <documentation>
+ [Enter information about supplied implementation of this extension point.]
+ </documentation>
+ </annotation>
+
+
+</schema>
diff --git a/plugins/org.eclipse.eef.ide/src/org/eclipse/eef/ide/internal/EEFIdePlugin.java b/plugins/org.eclipse.eef.ide/src/org/eclipse/eef/ide/internal/EEFIdePlugin.java
new file mode 100644
index 000000000..91a548af5
--- /dev/null
+++ b/plugins/org.eclipse.eef.ide/src/org/eclipse/eef/ide/internal/EEFIdePlugin.java
@@ -0,0 +1,209 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.eef.ide.internal;
+
+import org.eclipse.core.runtime.IExtensionRegistry;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.eef.api.IEEFViewDescriptionProvider;
+import org.eclipse.eef.ide.internal.extensions.AbstractRegistryEventListener;
+import org.eclipse.eef.ide.internal.extensions.IItemRegistry;
+import org.eclipse.eef.ide.internal.extensions.impl.DescriptorRegistryEventListener;
+import org.eclipse.eef.ide.internal.extensions.impl.ItemRegistry;
+import org.eclipse.emf.common.EMFPlugin;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.sirius.common.interpreter.api.IInterpreterProvider;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The plugin class of the bundle.
+ *
+ * @author sbegaudeau
+ */
+public class EEFIdePlugin extends EMFPlugin {
+
+ /**
+ * The identifier of the plugin.
+ */
+ public static final String PLUGIN_ID = "org.eclipse.eef.ide"; //$NON-NLS-1$
+
+ /**
+ * The sole instance of the plugin.
+ */
+ public static final EEFIdePlugin INSTANCE = new EEFIdePlugin();
+
+ /**
+ * The name of the extension point for the view provider.
+ */
+ private static final String EEF_VIEW_DESCRIPTION_PROVIDER_EXTENSION_POINT = "eefViewDescriptionProvider"; //$NON-NLS-1$
+
+ /**
+ * The name of the extension point for the interpreter provider.
+ */
+ private static final String INTERPRETER_PROVIDER_EXTENSION_POINT = "interpreterProvider"; //$NON-NLS-1$
+
+ /**
+ * The OSGi related implementation of the plugin.
+ */
+ private static Implementation plugin;
+
+ /**
+ * The constructor.
+ */
+ public EEFIdePlugin() {
+ super(new ResourceLocator[0]);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.emf.common.EMFPlugin#getPluginResourceLocator()
+ */
+ @Override
+ public ResourceLocator getPluginResourceLocator() {
+ return plugin;
+ }
+
+ /**
+ * Returns the OSGi related implementation.
+ *
+ * @return The OSGi related implementation
+ */
+ public static Implementation getImplementation() {
+ return plugin;
+ }
+
+ /**
+ * This class is used as the bundle activator of the plugin.
+ *
+ * @author sbegaudeau
+ */
+ public static class Implementation extends EclipsePlugin {
+ /**
+ * The {@link IItemRegistry} used to retrieve the EEF View Description providers.
+ */
+ private IItemRegistry<IEEFViewDescriptionProvider> eefViewDescriptionProviderRegistry;
+
+ /**
+ * The extension registry listener used to populate the registry of EEF View Description providers.
+ */
+ private AbstractRegistryEventListener eefViewDescriptionProviderListener;
+
+ /**
+ * The {@link IItemRegistry} used to retrieve the {@link IInterpreterProvider}.
+ */
+ private IItemRegistry<IInterpreterProvider> interpreterProviderRegistry;
+
+ /**
+ * The extension registry listener used to populate the registry of {@link IInterpreterProvider}.
+ */
+ private AbstractRegistryEventListener interpreterProviderListener;
+
+ /**
+ * The constructor.
+ */
+ public Implementation() {
+ super();
+
+ EEFIdePlugin.plugin = this;
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.core.runtime.Plugin#start(org.osgi.framework.BundleContext)
+ */
+ @Override
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+
+ IExtensionRegistry registry = Platform.getExtensionRegistry();
+
+ this.eefViewDescriptionProviderRegistry = new ItemRegistry<IEEFViewDescriptionProvider>();
+ this.eefViewDescriptionProviderListener = new DescriptorRegistryEventListener<IEEFViewDescriptionProvider>(PLUGIN_ID,
+ EEF_VIEW_DESCRIPTION_PROVIDER_EXTENSION_POINT, this.eefViewDescriptionProviderRegistry);
+ registry.addListener(this.eefViewDescriptionProviderListener, PLUGIN_ID + '.' + EEF_VIEW_DESCRIPTION_PROVIDER_EXTENSION_POINT);
+ this.eefViewDescriptionProviderListener.readRegistry(registry);
+
+ this.interpreterProviderRegistry = new ItemRegistry<IInterpreterProvider>();
+ this.interpreterProviderListener = new DescriptorRegistryEventListener<IInterpreterProvider>(PLUGIN_ID,
+ INTERPRETER_PROVIDER_EXTENSION_POINT, this.interpreterProviderRegistry);
+ registry.addListener(this.interpreterProviderListener, PLUGIN_ID + '.' + INTERPRETER_PROVIDER_EXTENSION_POINT);
+ this.interpreterProviderListener.readRegistry(registry);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.core.runtime.Plugin#stop(org.osgi.framework.BundleContext)
+ */
+ @Override
+ public void stop(BundleContext context) throws Exception {
+ super.stop(context);
+
+ IExtensionRegistry registry = Platform.getExtensionRegistry();
+
+ registry.removeListener(this.eefViewDescriptionProviderListener);
+ this.eefViewDescriptionProviderListener = null;
+ this.eefViewDescriptionProviderRegistry = null;
+
+ registry.removeListener(this.interpreterProviderListener);
+ this.interpreterProviderListener = null;
+ this.interpreterProviderRegistry = null;
+ }
+
+ /**
+ * Return the viewProviderRegistry.
+ *
+ * @return the viewProviderRegistry
+ */
+ public IItemRegistry<IEEFViewDescriptionProvider> getEEFViewDescriptionProviderRegistry() {
+ return this.eefViewDescriptionProviderRegistry;
+ }
+
+ /**
+ * Return the interpreterProviderRegistry.
+ *
+ * @return the interpreterProviderRegistry
+ */
+ public IItemRegistry<IInterpreterProvider> getInterpreterProviderRegistry() {
+ return this.interpreterProviderRegistry;
+ }
+
+ /**
+ * Logs an error with the exception and the given message.
+ *
+ * @param message
+ * The message
+ * @param exception
+ * The exception
+ */
+ public void logError(String message, Exception exception) {
+ IStatus status = new Status(IStatus.ERROR, PLUGIN_ID, message, exception);
+ this.getLog().log(status);
+ }
+
+ /**
+ * Logs a warning with the exception and the given message.
+ *
+ * @param message
+ * The message
+ * @param exception
+ * The exception
+ */
+ public void logWarning(String message, Exception exception) {
+ IStatus status = new Status(IStatus.WARNING, PLUGIN_ID, message, exception);
+ this.getLog().log(status);
+ }
+ }
+
+}
diff --git a/plugins/org.eclipse.eef.ide/src/org/eclipse/eef/ide/internal/I18N.java b/plugins/org.eclipse.eef.ide/src/org/eclipse/eef/ide/internal/I18N.java
new file mode 100644
index 000000000..6fab6c5ee
--- /dev/null
+++ b/plugins/org.eclipse.eef.ide/src/org/eclipse/eef/ide/internal/I18N.java
@@ -0,0 +1,144 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.eef.ide.internal;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+import java.lang.reflect.Field;
+import java.lang.reflect.Modifier;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
+
+import org.eclipse.emf.common.EMFPlugin;
+
+/**
+ * Helper class with bundle-independent code, that can be reused by other I18N classes local to each plug-in.
+ *
+ * @author pcdavid
+ */
+public final class I18N {
+ /**
+ * Used to mark a {@code public static String} field of a class as an externalized string, whose actual value will
+ * depend on the locale used at runtime. The optional value corresponds to the key in the {@code ResourceLocator};
+ * if absent, the name of the field itself is used as key.
+ *
+ * @author pcdavid
+ */
+ @Retention(RetentionPolicy.RUNTIME)
+ @Target(ElementType.FIELD)
+ public @interface TranslatableMessage {
+ /**
+ * The (optional) value of the message key. If absent, the key is assumed to be the same as the Java field's
+ * name.
+ */
+ String[] value() default {};
+ }
+
+ /**
+ * The constructor.
+ */
+ private I18N() {
+ // Prevent instantiation
+ }
+
+ /**
+ * Initializes the value of a class's {@code TranslatableMessage}s using the specified plugin as
+ * {@code ResourceLocator}.
+ *
+ * @param messagesClass
+ * the class which defines the fields to initialize.
+ * @param plugin
+ * the plugin from which to obtain the localized value of the fields.
+ */
+ public static void initializeMessages(final Class<?> messagesClass, final EMFPlugin plugin) {
+ if (System.getSecurityManager() == null) {
+ load(plugin, messagesClass);
+ return;
+ }
+ AccessController.doPrivileged(new PrivilegedAction<Void>() {
+ @Override
+ public Void run() {
+ load(plugin, messagesClass);
+ return null;
+ }
+ });
+ }
+
+ /**
+ * Loads the message class with the given {@link EMFPlugin}.
+ *
+ * @param plugin
+ * The plugin
+ * @param messagesClass
+ * The message class
+ */
+ private static void load(EMFPlugin plugin, Class<?> messagesClass) {
+ for (Field field : messagesClass.getDeclaredFields()) {
+ if (isMessageField(field)) {
+ initialize(field, plugin);
+ }
+ }
+ }
+
+ /**
+ * Indicates if the given field is a message field.
+ *
+ * @param field
+ * The field
+ * @return <code>true</code> if the given field is a message field, <code>false</code> otherwise.
+ */
+ private static boolean isMessageField(Field field) {
+ int mods = field.getModifiers();
+ boolean modsOK = Modifier.isPublic(mods) && Modifier.isStatic(mods) && !Modifier.isFinal(mods);
+ return modsOK && field.isAnnotationPresent(I18N.TranslatableMessage.class) && field.getType() == String.class;
+ }
+
+ /**
+ * Initializes the given field used the plugin.
+ *
+ * @param field
+ * The field to initialize
+ * @param plugin
+ * The plugin
+ */
+ private static void initialize(Field field, EMFPlugin plugin) {
+ String key = getKey(field);
+ String value = plugin.getString(key);
+ if (!field.isAccessible()) {
+ field.setAccessible(true);
+ }
+ try {
+ field.set(null, value);
+ } catch (IllegalArgumentException e) {
+ plugin.log(e);
+ } catch (IllegalAccessException e) {
+ plugin.log(e);
+ }
+ }
+
+ /**
+ * Returns the key for the given field.
+ *
+ * @param field
+ * The field
+ * @return The key of the field
+ */
+ private static String getKey(Field field) {
+ I18N.TranslatableMessage annot = field.getAnnotation(I18N.TranslatableMessage.class);
+ String[] key = annot.value();
+ if (key == null || key.length == 0) {
+ key = new String[] { field.getName() };
+ }
+ return key[0];
+ }
+}
diff --git a/plugins/org.eclipse.eef.ide/src/org/eclipse/eef/ide/internal/Messages.java b/plugins/org.eclipse.eef.ide/src/org/eclipse/eef/ide/internal/Messages.java
new file mode 100644
index 000000000..cd7ce1ed3
--- /dev/null
+++ b/plugins/org.eclipse.eef.ide/src/org/eclipse/eef/ide/internal/Messages.java
@@ -0,0 +1,45 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.eef.ide.internal;
+
+import org.eclipse.eef.ide.internal.I18N.TranslatableMessage;
+
+/**
+ * Utility class used to hold the messages of the bundle.
+ *
+ * @author sbegaudeau
+ */
+public final class Messages {
+
+ static {
+ I18N.initializeMessages(Messages.class, EEFIdePlugin.INSTANCE);
+ }
+
+ // CHECKSTYLE:OFF
+
+ @TranslatableMessage
+ public static String DescriptorRegistryEventListener_missingAttribute;
+
+ @TranslatableMessage
+ public static String DescriptorRegistryEventListener_cannotInstantiateExtension;
+
+ @TranslatableMessage
+ public static String DescriptorRegistryEventListener_extensionAlreadyContributed;
+
+ // CHECKSTYLE:ON
+
+ /**
+ * The constructor.
+ */
+ private Messages() {
+ // Prevents instantiation
+ }
+}
diff --git a/plugins/org.eclipse.eef.ide/src/org/eclipse/eef/ide/internal/extensions/AbstractRegistryEventListener.java b/plugins/org.eclipse.eef.ide/src/org/eclipse/eef/ide/internal/extensions/AbstractRegistryEventListener.java
new file mode 100644
index 000000000..c786bccb2
--- /dev/null
+++ b/plugins/org.eclipse.eef.ide/src/org/eclipse/eef/ide/internal/extensions/AbstractRegistryEventListener.java
@@ -0,0 +1,201 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.eef.ide.internal.extensions;
+
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.IExtension;
+import org.eclipse.core.runtime.IExtensionPoint;
+import org.eclipse.core.runtime.IExtensionRegistry;
+import org.eclipse.core.runtime.IRegistryEventListener;
+
+/**
+ * Utility superclass used to process extensions.
+ *
+ * @author sbegaudeau
+ */
+public abstract class AbstractRegistryEventListener implements IRegistryEventListener {
+ /**
+ * This enumeration will be used to distinguish the various states of an incoming event.
+ *
+ * @author sbegaudeau
+ */
+ protected enum Action {
+ /**
+ * An extension is being added.
+ */
+ ADD,
+
+ /**
+ * An extension is being removed.
+ */
+ REMOVE
+ }
+
+ /**
+ * The namespace of the extension point.
+ */
+ private final String namespace;
+
+ /**
+ * The identifier of the extension point.
+ */
+ private final String extensionPointID;
+
+ /**
+ * The constructor.
+ *
+ * @param namespace
+ * The namespace of the extension point
+ * @param extensionPointID
+ * The identifier of the extension point
+ */
+ public AbstractRegistryEventListener(String namespace, String extensionPointID) {
+ this.namespace = namespace;
+ this.extensionPointID = extensionPointID;
+ }
+
+ /**
+ * Reads the extension registry for the addition of new extensions.
+ *
+ * @param extensionRegistry
+ * The extension registry
+ */
+ public void readRegistry(IExtensionRegistry extensionRegistry) {
+ IExtensionPoint extensionPoint = extensionRegistry.getExtensionPoint(this.namespace, this.extensionPointID);
+ if (extensionPoint != null) {
+ IConfigurationElement[] configurationElements = extensionPoint.getConfigurationElements();
+ for (IConfigurationElement configurationElement : configurationElements) {
+ this.processConfigurationElement(configurationElement, Action.ADD);
+ }
+ }
+ }
+
+ /**
+ * Processes the configuration elements recursively.
+ *
+ * @param configurationElement
+ * The configuration element
+ * @param action
+ * Indicates whether we have an addition or a removal of the configuration element
+ */
+ private void processConfigurationElement(IConfigurationElement configurationElement, Action action) {
+ boolean isValid = this.readConfigurationElement(configurationElement, action);
+ if (isValid) {
+ IConfigurationElement[] children = configurationElement.getChildren();
+ for (IConfigurationElement childConfigurationElement : children) {
+ this.processConfigurationElement(childConfigurationElement, action);
+ }
+ }
+ }
+
+ /**
+ * Reads the given configuration element.
+ *
+ * @param configurationElement
+ * The configuration element.
+ * @param action
+ * Indicates wether we have an addition or a removal of the configuration element
+ * @return <code>true</code> if the configuration element has been read properly
+ */
+ private boolean readConfigurationElement(IConfigurationElement configurationElement, Action action) {
+ boolean isValid = false;
+ if (this.validateConfigurationElement(configurationElement)) {
+ if (Action.ADD == action) {
+ isValid = this.processAddition(configurationElement);
+ } else if (Action.REMOVE == action) {
+ isValid = this.processRemoval(configurationElement);
+ }
+ }
+ return isValid;
+ }
+
+ /**
+ * Validates the given configuration element.
+ *
+ * @param configurationElement
+ * The configuration element
+ * @return <code>true</code> if the configuration element is valid, <code>false</code> otherwise
+ */
+ protected abstract boolean validateConfigurationElement(IConfigurationElement configurationElement);
+
+ /**
+ * Processes the addition of the given configuration element.
+ *
+ * @param configurationElement
+ * The configuration element
+ * @return <code>true</code> if the configuration element has been properly added, <code>false</code> otherwise
+ */
+ protected abstract boolean processAddition(IConfigurationElement configurationElement);
+
+ /**
+ * Processes the removal of the given configuration element.
+ *
+ * @param configurationElement
+ * The configuration element
+ * @return <code>true</code> if the configuration element has been properly removed, <code>false</code> otherwise
+ */
+ protected abstract boolean processRemoval(IConfigurationElement configurationElement);
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.core.runtime.IRegistryEventListener#added(org.eclipse.core.runtime.IExtension[])
+ */
+ @Override
+ public void added(IExtension[] extensions) {
+ for (IExtension extension : extensions) {
+ if (extension.getExtensionPointUniqueIdentifier().equals(this.extensionPointID)) {
+ IConfigurationElement[] configurationElements = extension.getConfigurationElements();
+ for (IConfigurationElement configurationElement : configurationElements) {
+ this.processConfigurationElement(configurationElement, Action.ADD);
+ }
+ }
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.core.runtime.IRegistryEventListener#added(org.eclipse.core.runtime.IExtensionPoint[])
+ */
+ @Override
+ public void added(IExtensionPoint[] extensionPoints) {
+ // do nothing
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.core.runtime.IRegistryEventListener#removed(org.eclipse.core.runtime.IExtension[])
+ */
+ @Override
+ public void removed(IExtension[] extensions) {
+ for (IExtension extension : extensions) {
+ if (extension.getExtensionPointUniqueIdentifier().equals(this.extensionPointID)) {
+ IConfigurationElement[] configurationElements = extension.getConfigurationElements();
+ for (IConfigurationElement configurationElement : configurationElements) {
+ this.processConfigurationElement(configurationElement, Action.REMOVE);
+ }
+ }
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.core.runtime.IRegistryEventListener#removed(org.eclipse.core.runtime.IExtensionPoint[])
+ */
+ @Override
+ public void removed(IExtensionPoint[] extensionPoints) {
+ // do nothing
+ }
+
+}
diff --git a/plugins/org.eclipse.eef.ide/src/org/eclipse/eef/ide/internal/extensions/IItemDescriptor.java b/plugins/org.eclipse.eef.ide/src/org/eclipse/eef/ide/internal/extensions/IItemDescriptor.java
new file mode 100644
index 000000000..3664067b0
--- /dev/null
+++ b/plugins/org.eclipse.eef.ide/src/org/eclipse/eef/ide/internal/extensions/IItemDescriptor.java
@@ -0,0 +1,49 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.eef.ide.internal.extensions;
+
+/**
+ * The description of the Object.
+ *
+ * @author sbegaudeau
+ *
+ * @param <T>
+ * The type of the Object described
+ */
+public interface IItemDescriptor<T> {
+ /**
+ * Returns the identifier.
+ *
+ * @return The identifier
+ */
+ String getID();
+
+ /**
+ * Returns the label.
+ *
+ * @return The label
+ */
+ String getLabel();
+
+ /**
+ * Returns the description.
+ *
+ * @return The description
+ */
+ String getDescription();
+
+ /**
+ * Returns the item.
+ *
+ * @return The item
+ */
+ T getItem();
+}
diff --git a/plugins/org.eclipse.eef.ide/src/org/eclipse/eef/ide/internal/extensions/IItemRegistry.java b/plugins/org.eclipse.eef.ide/src/org/eclipse/eef/ide/internal/extensions/IItemRegistry.java
new file mode 100644
index 000000000..6f92d7cbe
--- /dev/null
+++ b/plugins/org.eclipse.eef.ide/src/org/eclipse/eef/ide/internal/extensions/IItemRegistry.java
@@ -0,0 +1,66 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.eef.ide.internal.extensions;
+
+import java.util.List;
+
+/**
+ * The registry used to track the descriptors of the extensions.
+ *
+ * @author sbegaudeau
+ *
+ * @param <T>
+ * The type of the Objects described
+ */
+public interface IItemRegistry<T> {
+ /**
+ * Returns all the {@link IItemDescriptor} of the registry.
+ *
+ * @return The list of all the {@link IItemDescriptor} of the registry
+ */
+ List<IItemDescriptor<T>> getItemDescriptors();
+
+ /**
+ * Returns the {@link IItemDescriptor} with the given identifier.
+ *
+ * @param id
+ * The identifier
+ * @return The {@link IItemDescriptor} with the given identifier or null if
+ * none could be found
+ */
+ IItemDescriptor<T> getItemDescriptor(String id);
+
+ /**
+ * Adds the given {@link IItemDescriptor} to the registry.
+ *
+ * @param descriptor
+ * The descriptior
+ * @return The previous {@link IItemDescriptor} with the same identifier, or
+ * null if no registered {@link IItemDescriptor} had the same
+ * identifier
+ */
+ IItemDescriptor<T> add(IItemDescriptor<T> descriptor);
+
+ /**
+ * Removes the {@link IItemDescriptor} with the given identifier.
+ *
+ * @param id
+ * The identifier
+ * @return The {@link IItemDescriptor} removed or null if no registered
+ * {@link IItemDescriptor} had an identifier matching the given one
+ */
+ IItemDescriptor<T> remove(String id);
+
+ /**
+ * Clears the registry.
+ */
+ void clear();
+}
diff --git a/plugins/org.eclipse.eef.ide/src/org/eclipse/eef/ide/internal/extensions/impl/DescriptorRegistryEventListener.java b/plugins/org.eclipse.eef.ide/src/org/eclipse/eef/ide/internal/extensions/impl/DescriptorRegistryEventListener.java
new file mode 100644
index 000000000..21393cc46
--- /dev/null
+++ b/plugins/org.eclipse.eef.ide/src/org/eclipse/eef/ide/internal/extensions/impl/DescriptorRegistryEventListener.java
@@ -0,0 +1,161 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.eef.ide.internal.extensions.impl;
+
+import java.text.MessageFormat;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.eef.ide.internal.EEFIdePlugin;
+import org.eclipse.eef.ide.internal.Messages;
+import org.eclipse.eef.ide.internal.extensions.AbstractRegistryEventListener;
+import org.eclipse.eef.ide.internal.extensions.IItemDescriptor;
+import org.eclipse.eef.ide.internal.extensions.IItemRegistry;
+
+/**
+ * Utility class used to retrieved the descriptors of extensions.
+ *
+ * @author adaussy
+ * @author sbegaudeau
+ *
+ * @param <T>
+ * The type of the Object described
+ */
+public class DescriptorRegistryEventListener<T> extends AbstractRegistryEventListener {
+ /** Id attribute of the extension point. */
+ public static final String ID_DESCRIPTOR_ATTR = "id"; //$NON-NLS-1$
+
+ /** Label attribute of extension point. */
+ public static final String LABEL_DESCRIPTOR_ATTR = "label"; //$NON-NLS-1$
+
+ /** Description attribute of extension point. */
+ public static final String DESCRIPTION_DESCRIPTOR_ATTR = "description"; //$NON-NLS-1$
+
+ /** Implementation class attribute of extension point. */
+ public static final String IMPL_CLASS_DESCRIPTOR_ATTR = "class"; //$NON-NLS-1$
+
+ /** Descriptor tag of extension point. */
+ public static final String TAG_DESCRIPTOR = "descriptor"; //$NON-NLS-1$
+
+ /**
+ * The item registry.
+ */
+ private IItemRegistry<T> itemRegistry;
+
+ /**
+ * The constructor.
+ *
+ * @param namespace
+ * The namespace of the extension point
+ * @param extensionPointID
+ * The identifier of the extension point
+ * @param itemRegistry
+ * The {@link IItemRegistry}
+ */
+ public DescriptorRegistryEventListener(String namespace, String extensionPointID, IItemRegistry<T> itemRegistry) {
+ super(namespace, extensionPointID);
+ this.itemRegistry = itemRegistry;
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.eef.ide.internal.extensions.AbstractRegistryEventListener#validateConfigurationElement(org.eclipse.core.runtime.IConfigurationElement)
+ */
+ @Override
+ protected boolean validateConfigurationElement(IConfigurationElement configurationElement) {
+ boolean isValid = false;
+
+ if (TAG_DESCRIPTOR.equals(configurationElement.getName())) {
+ if (!this.isValidAttribute(configurationElement, ID_DESCRIPTOR_ATTR)) {
+ String message = MessageFormat.format(Messages.DescriptorRegistryEventListener_missingAttribute,
+ configurationElement.getNamespaceIdentifier(), ID_DESCRIPTOR_ATTR);
+ EEFIdePlugin.getImplementation().logError(message, null);
+ } else if (!this.isValidAttribute(configurationElement, LABEL_DESCRIPTOR_ATTR)) {
+ String message = MessageFormat.format(Messages.DescriptorRegistryEventListener_missingAttribute,
+ configurationElement.getNamespaceIdentifier(), LABEL_DESCRIPTOR_ATTR);
+ EEFIdePlugin.getImplementation().logError(message, null);
+ } else if (!this.isValidAttribute(configurationElement, DESCRIPTION_DESCRIPTOR_ATTR)) {
+ String message = MessageFormat.format(Messages.DescriptorRegistryEventListener_missingAttribute,
+ configurationElement.getNamespaceIdentifier(), DESCRIPTION_DESCRIPTOR_ATTR);
+ EEFIdePlugin.getImplementation().logError(message, null);
+ } else if (!this.isValidAttribute(configurationElement, IMPL_CLASS_DESCRIPTOR_ATTR)) {
+ String message = MessageFormat.format(Messages.DescriptorRegistryEventListener_missingAttribute,
+ configurationElement.getNamespaceIdentifier(), IMPL_CLASS_DESCRIPTOR_ATTR);
+ EEFIdePlugin.getImplementation().logError(message, null);
+ } else {
+ isValid = true;
+ }
+ }
+
+ return isValid;
+ }
+
+ /**
+ * Indicates if an attribute of the configuration element is valid.
+ *
+ * @param configurationElement
+ * The configuration element
+ * @param attributeName
+ * The attribute name
+ * @return <code>true</code> if the attribute is valid, <code>false</code>
+ * otherwise
+ */
+ private boolean isValidAttribute(IConfigurationElement configurationElement, String attributeName) {
+ return configurationElement.getAttribute(attributeName) != null
+ && !"".equals(configurationElement.getAttribute(attributeName)); //$NON-NLS-1$
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.eef.ide.internal.extensions.AbstractRegistryEventListener#processAddition(org.eclipse.core.runtime.IConfigurationElement)
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ protected boolean processAddition(IConfigurationElement configurationElement) {
+ String id = configurationElement.getAttribute(ID_DESCRIPTOR_ATTR);
+ String label = configurationElement.getAttribute(LABEL_DESCRIPTOR_ATTR);
+ String description = configurationElement.getAttribute(DESCRIPTION_DESCRIPTOR_ATTR);
+
+ try {
+ T instance = (T) configurationElement.createExecutableExtension(IMPL_CLASS_DESCRIPTOR_ATTR);
+
+ ItemDescriptor<T> descriptor = new ItemDescriptor<T>(id, label, description, instance);
+ IItemDescriptor<T> previous = this.itemRegistry.add(descriptor);
+ if (previous != null) {
+ String message = MessageFormat.format(
+ Messages.DescriptorRegistryEventListener_extensionAlreadyContributed,
+ configurationElement.getAttribute(ID_DESCRIPTOR_ATTR));
+ EEFIdePlugin.getImplementation().logWarning(message, null);
+ }
+ } catch (CoreException e) {
+ String message = MessageFormat.format(Messages.DescriptorRegistryEventListener_cannotInstantiateExtension,
+ configurationElement.getAttribute(IMPL_CLASS_DESCRIPTOR_ATTR));
+ EEFIdePlugin.getImplementation().logError(message, e);
+
+ return false;
+ }
+
+ return true;
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.eef.ide.internal.extensions.AbstractRegistryEventListener#processRemoval(org.eclipse.core.runtime.IConfigurationElement)
+ */
+ @Override
+ protected boolean processRemoval(IConfigurationElement configurationElement) {
+ return this.itemRegistry.remove(configurationElement.getAttribute(ID_DESCRIPTOR_ATTR)) != null;
+ }
+
+}
diff --git a/plugins/org.eclipse.eef.ide/src/org/eclipse/eef/ide/internal/extensions/impl/ItemDescriptor.java b/plugins/org.eclipse.eef.ide/src/org/eclipse/eef/ide/internal/extensions/impl/ItemDescriptor.java
new file mode 100644
index 000000000..e10b91924
--- /dev/null
+++ b/plugins/org.eclipse.eef.ide/src/org/eclipse/eef/ide/internal/extensions/impl/ItemDescriptor.java
@@ -0,0 +1,104 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.eef.ide.internal.extensions.impl;
+
+import org.eclipse.eef.ide.internal.extensions.IItemDescriptor;
+
+/**
+ * The implementation of the {@link IItemDescriptor}.
+ *
+ * @author sbegaudeau
+ *
+ * @param <T>
+ * The type of the object described
+ */
+public class ItemDescriptor<T> implements IItemDescriptor<T> {
+
+ /**
+ * The identifier.
+ */
+ private String id;
+
+ /**
+ * The label.
+ */
+ private String label;
+
+ /**
+ * The description.
+ */
+ private String description;
+
+ /**
+ * The instance.
+ */
+ private T instance;
+
+ /**
+ * The constructor.
+ *
+ * @param id
+ * The identifier
+ * @param label
+ * The label
+ * @param description
+ * The description
+ * @param instance
+ * The instance
+ */
+ public ItemDescriptor(String id, String label, String description, T instance) {
+ this.id = id;
+ this.label = label;
+ this.description = description;
+ this.instance = instance;
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.eef.ide.internal.extensions.IItemDescriptor#getID()
+ */
+ @Override
+ public String getID() {
+ return this.id;
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.eef.ide.internal.extensions.IItemDescriptor#getLabel()
+ */
+ @Override
+ public String getLabel() {
+ return this.label;
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.eef.ide.internal.extensions.IItemDescriptor#getDescription()
+ */
+ @Override
+ public String getDescription() {
+ return this.description;
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.eef.ide.internal.extensions.IItemDescriptor#getItem()
+ */
+ @Override
+ public T getItem() {
+ return this.instance;
+ }
+
+}
diff --git a/plugins/org.eclipse.eef.ide/src/org/eclipse/eef/ide/internal/extensions/impl/ItemRegistry.java b/plugins/org.eclipse.eef.ide/src/org/eclipse/eef/ide/internal/extensions/impl/ItemRegistry.java
new file mode 100644
index 000000000..9404de4c6
--- /dev/null
+++ b/plugins/org.eclipse.eef.ide/src/org/eclipse/eef/ide/internal/extensions/impl/ItemRegistry.java
@@ -0,0 +1,93 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.eef.ide.internal.extensions.impl;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.eef.ide.internal.extensions.IItemDescriptor;
+import org.eclipse.eef.ide.internal.extensions.IItemRegistry;
+
+/**
+ * The implementation of the {@link IItemRegistry}.
+ *
+ * @author sbegaudeau
+ *
+ * @param <T>
+ * The type of the object described
+ */
+public class ItemRegistry<T> implements IItemRegistry<T> {
+
+ /**
+ * The map of the identifier of the description to the
+ * {@link IItemDescriptor}.
+ */
+ private Map<String, IItemDescriptor<T>> id2descriptors = new HashMap<String, IItemDescriptor<T>>();
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.eef.ide.internal.extensions.IItemRegistry#getItemDescriptors()
+ */
+ @Override
+ public List<IItemDescriptor<T>> getItemDescriptors() {
+ List<IItemDescriptor<T>> descriptors = new ArrayList<IItemDescriptor<T>>();
+ Collection<IItemDescriptor<T>> values = this.id2descriptors.values();
+ for (IItemDescriptor<T> iItemDescriptor : values) {
+ descriptors.add(iItemDescriptor);
+ }
+ return descriptors;
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.eef.ide.internal.extensions.IItemRegistry#getItemDescriptor(java.lang.String)
+ */
+ @Override
+ public IItemDescriptor<T> getItemDescriptor(String id) {
+ return this.id2descriptors.get(id);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.eef.ide.internal.extensions.IItemRegistry#add(org.eclipse.eef.ide.internal.extensions.IItemDescriptor)
+ */
+ @Override
+ public IItemDescriptor<T> add(IItemDescriptor<T> descriptor) {
+ return this.id2descriptors.put(descriptor.getID(), descriptor);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.eef.ide.internal.extensions.IItemRegistry#remove(java.lang.String)
+ */
+ @Override
+ public IItemDescriptor<T> remove(String id) {
+ return this.id2descriptors.remove(id);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.eef.ide.internal.extensions.IItemRegistry#clear()
+ */
+ @Override
+ public void clear() {
+ this.id2descriptors.clear();
+ }
+
+}
diff --git a/plugins/org.eclipse.eef/.checkstyle b/plugins/org.eclipse.eef/.checkstyle
new file mode 100644
index 000000000..f1a81eec7
--- /dev/null
+++ b/plugins/org.eclipse.eef/.checkstyle
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<fileset-config file-format-version="1.2.0" simple-config="true" sync-formatter="false">
+ <local-check-config name="EEF" location="/org.eclipse.eef.releng/codestyle/EEFCheckstyleConfiguration.xml" type="project" description="">
+ <additional-data name="protect-config-file" value="false"/>
+ </local-check-config>
+ <fileset name="all" enabled="true" check-config-name="EEF" local="true">
+ <file-match-pattern match-pattern="." include-pattern="true"/>
+ </fileset>
+ <filter name="FilesFromPackage" enabled="true">
+ <filter-data value="src-gen"/>
+ </filter>
+</fileset-config>
diff --git a/plugins/org.eclipse.eef/.classpath b/plugins/org.eclipse.eef/.classpath
new file mode 100644
index 000000000..42271a8c6
--- /dev/null
+++ b/plugins/org.eclipse.eef/.classpath
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src-gen">
+ <attributes>
+ <attribute name="ignore_optional_problems" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/org.eclipse.eef/.project b/plugins/org.eclipse.eef/.project
new file mode 100644
index 000000000..a8fd05ed6
--- /dev/null
+++ b/plugins/org.eclipse.eef/.project
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.eef</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <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>
+ <buildCommand>
+ <name>net.sf.eclipsecs.core.CheckstyleBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.sirius.nature.modelingproject</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>net.sf.eclipsecs.core.CheckstyleNature</nature>
+ <nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+ </natures>
+</projectDescription>
diff --git a/plugins/org.eclipse.eef/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.eef/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 000000000..fb8257839
--- /dev/null
+++ b/plugins/org.eclipse.eef/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,398 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+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.6
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=error
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=error
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=warning
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=error
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=error
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=error
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=warning
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=error
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=warning
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=warning
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=warning
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.source=1.6
+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=120
+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.j