[492985] Sirius based Properties views support

First iteration:
- support for everything in Ecore except EGenericTypes
- support for any EAnnotations
- support for documentation annotations
- support for genmodel attributes
- link to navigate to generated code
- actions to launch the Java codegen

Bug: 492985
Change-Id: Ib8c9c49777524e1e3f191b38d875cf1f824ba65e
diff --git a/org.eclipse.emf.ecoretools.build/luna.target b/org.eclipse.emf.ecoretools.build/luna.target
index 0fd16db..c62ef06 100644
--- a/org.eclipse.emf.ecoretools.build/luna.target
+++ b/org.eclipse.emf.ecoretools.build/luna.target
@@ -1,13 +1,14 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <?pde?>
 <!-- generated with https://github.com/mbarbero/fr.obeo.releng.targetplatform -->
-<target name="Luna Target Platform For EcoreTools" sequenceNumber="1494859703">
+<target name="Luna Target Platform For EcoreTools" sequenceNumber="1494860493">
   <locations>
     <location includeMode="planner" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
       <unit id="org.eclipse.sirius.runtime.aql.feature.group" version="0.0.0"/>
       <unit id="org.eclipse.sirius.runtime.feature.group" version="0.0.0"/>
       <unit id="org.eclipse.sirius.runtime.ide.ui.feature.group" version="0.0.0"/>
       <unit id="org.eclipse.sirius.runtime.ide.ui.acceleo.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.sirius.properties.feature.feature.group" version="0.0.0"/>
       <repository id="Sirius" location="http://download.eclipse.org/sirius/updates/nightly/4.0.x/neon"/>
     </location>
     <location includeMode="planner" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
diff --git a/org.eclipse.emf.ecoretools.build/luna.tpd b/org.eclipse.emf.ecoretools.build/luna.tpd
index 3405ffe..476614f 100644
--- a/org.eclipse.emf.ecoretools.build/luna.tpd
+++ b/org.eclipse.emf.ecoretools.build/luna.tpd
@@ -4,6 +4,7 @@
 	org.eclipse.sirius.runtime.feature.group lazy
 	org.eclipse.sirius.runtime.ide.ui.feature.group lazy
 	org.eclipse.sirius.runtime.ide.ui.acceleo.feature.group lazy
+	org.eclipse.sirius.properties.feature.feature.group lazy
 	
 }
 location "http://download.eclipse.org/modeling/emft/eef/updates/milestones/1.5/S201412231052/" EEF {
diff --git a/org.eclipse.emf.ecoretools.build/mars.target b/org.eclipse.emf.ecoretools.build/mars.target
index c8e2c53..f25cd8c 100644
--- a/org.eclipse.emf.ecoretools.build/mars.target
+++ b/org.eclipse.emf.ecoretools.build/mars.target
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <?pde?>
 <!-- generated with https://github.com/mbarbero/fr.obeo.releng.targetplatform -->
-<target name="Mars Target Platform For EcoreTools" sequenceNumber="1494859703">
+<target name="Mars Target Platform For EcoreTools" sequenceNumber="1494860493">
   <locations>
     <location includeMode="planner" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
       <unit id="org.eclipse.sirius.runtime.aql.feature.group" version="0.0.0"/>
@@ -9,6 +9,7 @@
       <unit id="org.eclipse.sirius.runtime.ide.ui.feature.group" version="0.0.0"/>
       <unit id="org.eclipse.sirius.runtime.ide.eef.feature.group" version="0.0.0"/>
       <unit id="org.eclipse.sirius.runtime.ide.ui.acceleo.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.sirius.properties.feature.feature.group" version="0.0.0"/>
       <repository location="http://download.eclipse.org/sirius/updates/nightly/4.0.x/neon"/>
     </location>
     <location includeMode="planner" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
diff --git a/org.eclipse.emf.ecoretools.build/mars.tpd b/org.eclipse.emf.ecoretools.build/mars.tpd
index e12bbfd..b7b817e 100644
--- a/org.eclipse.emf.ecoretools.build/mars.tpd
+++ b/org.eclipse.emf.ecoretools.build/mars.tpd
@@ -5,6 +5,7 @@
 	org.eclipse.sirius.runtime.ide.ui.feature.group lazy
 	org.eclipse.sirius.runtime.ide.eef.feature.group lazy
 	org.eclipse.sirius.runtime.ide.ui.acceleo.feature.group lazy
+	org.eclipse.sirius.properties.feature.feature.group lazy
 }
 location "http://download.eclipse.org/modeling/emft/eef/updates/milestones/1.5/S201412231052/" EEF {
 	org.eclipse.emf.eef.runtime-feature.feature.group lazy
diff --git a/org.eclipse.emf.ecoretools.build/neon.target b/org.eclipse.emf.ecoretools.build/neon.target
index 2668793..338f93a 100644
--- a/org.eclipse.emf.ecoretools.build/neon.target
+++ b/org.eclipse.emf.ecoretools.build/neon.target
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <?pde?>
 <!-- generated with https://github.com/mbarbero/fr.obeo.releng.targetplatform -->
-<target name="Neon Target Platform For EcoreTools" sequenceNumber="1494859703">
+<target name="Neon Target Platform For EcoreTools" sequenceNumber="1494860493">
   <locations>
     <location includeMode="planner" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
       <unit id="org.eclipse.sirius.runtime.aql.feature.group" version="0.0.0"/>
@@ -9,6 +9,7 @@
       <unit id="org.eclipse.sirius.runtime.ide.ui.feature.group" version="0.0.0"/>
       <unit id="org.eclipse.sirius.runtime.ide.eef.feature.group" version="0.0.0"/>
       <unit id="org.eclipse.sirius.runtime.ide.ui.acceleo.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.sirius.properties.feature.feature.group" version="0.0.0"/>
       <repository location="http://download.eclipse.org/sirius/updates/nightly/4.1.x/neon"/>
     </location>
     <location includeMode="planner" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
diff --git a/org.eclipse.emf.ecoretools.build/neon.tpd b/org.eclipse.emf.ecoretools.build/neon.tpd
index e57da87..173cc48 100644
--- a/org.eclipse.emf.ecoretools.build/neon.tpd
+++ b/org.eclipse.emf.ecoretools.build/neon.tpd
@@ -5,6 +5,7 @@
 	org.eclipse.sirius.runtime.ide.ui.feature.group lazy
 	org.eclipse.sirius.runtime.ide.eef.feature.group lazy
 	org.eclipse.sirius.runtime.ide.ui.acceleo.feature.group lazy
+	org.eclipse.sirius.properties.feature.feature.group lazy
 }
 
 location "http://download.eclipse.org/acceleo/updates/nightly/latest" Acceleo {
diff --git a/org.eclipse.emf.ecoretools.build/oxygen.target b/org.eclipse.emf.ecoretools.build/oxygen.target
index 8e04e6d..8c6569d 100644
--- a/org.eclipse.emf.ecoretools.build/oxygen.target
+++ b/org.eclipse.emf.ecoretools.build/oxygen.target
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <?pde?>
 <!-- generated with https://github.com/mbarbero/fr.obeo.releng.targetplatform -->
-<target name="Oxygen Target Platform For EcoreTools" sequenceNumber="1494859831">
+<target name="Oxygen Target Platform For EcoreTools" sequenceNumber="1494860493">
   <locations>
     <location includeMode="planner" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
       <unit id="org.eclipse.sirius.runtime.aql.feature.group" version="0.0.0"/>
@@ -9,6 +9,7 @@
       <unit id="org.eclipse.sirius.runtime.ide.ui.feature.group" version="0.0.0"/>
       <unit id="org.eclipse.sirius.runtime.ide.eef.feature.group" version="0.0.0"/>
       <unit id="org.eclipse.sirius.runtime.ide.ui.acceleo.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.sirius.properties.feature.feature.group" version="0.0.0"/>
       <repository location="http://download.eclipse.org/sirius/updates/nightly/5.0.x/oxygen"/>
     </location>
     <location includeMode="planner" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
diff --git a/org.eclipse.emf.ecoretools.build/oxygen.tpd b/org.eclipse.emf.ecoretools.build/oxygen.tpd
index 2c5401d..cde891f 100644
--- a/org.eclipse.emf.ecoretools.build/oxygen.tpd
+++ b/org.eclipse.emf.ecoretools.build/oxygen.tpd
@@ -5,6 +5,7 @@
 	org.eclipse.sirius.runtime.ide.ui.feature.group lazy
 	org.eclipse.sirius.runtime.ide.eef.feature.group lazy
 	org.eclipse.sirius.runtime.ide.ui.acceleo.feature.group lazy
+	org.eclipse.sirius.properties.feature.feature.group lazy
 }
 
 location "http://download.eclipse.org/acceleo/updates/nightly/latest" Acceleo {
diff --git a/org.eclipse.emf.ecoretools.design-feature/feature.xml b/org.eclipse.emf.ecoretools.design-feature/feature.xml
index 1b32f15..11fcb38 100644
--- a/org.eclipse.emf.ecoretools.design-feature/feature.xml
+++ b/org.eclipse.emf.ecoretools.design-feature/feature.xml
@@ -34,9 +34,10 @@
    </license>
 
    <requires>
-      <import feature="org.eclipse.sirius.runtime" version="2.0.0" match="greaterOrEqual"/>
-      <import feature="org.eclipse.sirius.runtime.aql" version="2.0.0" match="greaterOrEqual"/>
-      <import feature="org.eclipse.sirius.runtime.ide.ui" version="2.0.0" match="greaterOrEqual"/>
+      <import feature="org.eclipse.sirius.runtime" version="5.0.0" match="greaterOrEqual"/>
+      <import feature="org.eclipse.sirius.runtime.aql" version="5.0.0" match="greaterOrEqual"/>
+      <import feature="org.eclipse.sirius.runtime.ide.ui" version="5.0.0" match="greaterOrEqual"/>
+      <import feature="org.eclipse.sirius.properties.feature" version="5.0.0" match="greaterOrEqual"/>
    </requires>
 
    <plugin
@@ -59,13 +60,13 @@
          install-size="0"
          version="0.0.0"
          unpack="false"/>
-         
+
    <plugin
          id="org.eclipse.emf.ecoretools.design.ui"
          download-size="0"
          install-size="0"
          version="0.0.0"
-         unpack="false"/>         
+         unpack="false"/>
 
    <plugin
          id="org.eclipse.emf.ecoretools.doc"
@@ -73,26 +74,6 @@
          install-size="0"
          version="0.0.0"
          unpack="false"/>
-
-   <plugin
-         id="org.eclipse.emf.ecoretools.properties"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.emf.ecoretools.tabbedproperties"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.emf.ecoretools.design.properties"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
+ 
 
 </feature>
diff --git a/org.eclipse.emf.ecoretools.design.properties/plugin.xml b/org.eclipse.emf.ecoretools.design.properties/plugin.xml
index cbc83dd..d4185aa 100644
--- a/org.eclipse.emf.ecoretools.design.properties/plugin.xml
+++ b/org.eclipse.emf.ecoretools.design.properties/plugin.xml
@@ -1,402 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <?eclipse version="3.4"?>
 <plugin>
-  <!-- EEF extensions -->
-   <extension point="org.eclipse.emf.edit.itemProviderAdapterFactories">
-      <factory
-            uri="http://www.eclipse.org/emf/2002/Ecore"
-            class="org.eclipse.emf.ecoretools.design.properties.ecore.providers.EcoreEEFAdapterFactory"
-            supportedTypes="org.eclipse.emf.eef.runtime.providers.PropertiesEditingProvider"/>
-   </extension>
-   <extension
-         point="org.eclipse.emf.eef.runtime.PropertiesEditionPartProvider">
-      <PropertiesEditionPartProvider
-            providerClass="org.eclipse.emf.ecoretools.design.properties.ecore.providers.EcorePropertiesEditionPartProvider">
-      </PropertiesEditionPartProvider>
-   </extension>
-
-  <!-- EEF Tabbed properties views extension -->
-   <extension
-         point="org.eclipse.ui.views.properties.tabbed.propertyContributor">
-      <propertyContributor
-            contributorId="org.eclipse.sirius.diagram.ui"
-            labelProvider="org.eclipse.sirius.diagram.ui.internal.sheet.SiriusSheetLabelProvider">               
-      </propertyContributor>
-   </extension>
-   <extension
-         point="org.eclipse.ui.views.properties.tabbed.propertyTabs">
-      <propertyTabs
-            contributorId="org.eclipse.sirius.diagram.ui">
-         <propertyTab
-               id="Base"
-               label="Model"
-               category="semantic &amp; extension"
-               >
-         </propertyTab>
-
-         <propertyTab
-               id="Instanciation"
-               label="Instantiation"
-               indented="true"
-               category="semantic &amp; extension"
-               afterTab="Base">
-         </propertyTab>
-
-         <propertyTab
-               id="Data Type"
-               label="Data Type"
-               indented="true"
-               category="semantic &amp; extension">
-         </propertyTab>
-
-         <propertyTab
-               id="Operation Element"
-               indented="true"
-               label="Operation Element"
-               category="semantic &amp; extension">
-         </propertyTab>
-
-         <propertyTab
-               id="Exceptions"
-               label="Exceptions"
-               indented="true"
-               category="semantic &amp; extension"
-               afterTab="Operation Element">
-         </propertyTab>
-<!-- tabs from EcoreTools 1.x -->
-
-
-         <propertyTab
-               afterTab="Base"
-               category="semantic &amp; extension"
-               indented="true"
-               id="org.eclipse.emf.ecoretools.design.properties.modelTab.parameterTab"
-               label="%propertyTab.parameter"/>
-         <propertyTab
-               afterTab="org.eclipse.emf.ecoretools.design.properties.modelTab.parameterTab"
-               category="semantic &amp; extension"
-               indented="true"
-               id="org.eclipse.emf.ecoretools.design.properties.eAnnotationTab"
-               image="icons/view16/eannotation_tab.gif"
-               label="%propertyTab.annotation">
-         </propertyTab>
-         <propertyTab
-               afterTab="org.eclipse.emf.ecoretools.design.properties.eAnnotationTab"
-               category="semantic &amp; extension"
-               indented="true"               
-               id="org.eclipse.emf.ecoretools.design.properties.ecore.properties.extendedMetadata"
-               label="%propertyTab.extended.metadata"/>
-         <propertyTab
-               afterTab="org.eclipse.emf.ecoretools.design.properties.ecore.properties.extendedMetadata"
-               category="semantic &amp; extension"
-               indented="true"               
-               id="org.eclipse.emf.ecoretools.design.properties.genModelDoc"
-               image="icons/view16/doc_tab.gif"
-               label="%propertyTab.genmodel.doc">
-         </propertyTab>
-         <propertyTab
-               category="semantic &amp; extension"
-               id="org.eclipse.emf.ecoretools.design.properties.genModel"
-               label="%propertyTab.genmodel">
-         </propertyTab>
-      </propertyTabs>
-   </extension>
-   <extension
-         point="org.eclipse.ui.views.properties.tabbed.propertySections">
-      <propertySections
-            contributorId="org.eclipse.sirius.diagram.ui">
-         <propertySection
-               class="org.eclipse.emf.ecoretools.design.properties.parts.forms.EAttributePropertiesEditionPartForm"
-               filter="org.eclipse.emf.ecoretools.design.properties.ecore.providers.EAttributePropertiesEditionProvider$EditionFilter"
-               id="org.eclipse.emf.ecore.section.EAttribute"
-               tab="Base">
-         </propertySection>
-         <propertySection
-               class="org.eclipse.emf.ecoretools.design.properties.parts.forms.EAnnotationPropertiesEditionPartForm"
-               filter="org.eclipse.emf.ecoretools.design.properties.ecore.providers.EAnnotationPropertiesEditionProvider$EditionFilter"
-               id="org.eclipse.emf.ecore.section.EAnnotation"
-               tab="Base">
-         </propertySection>
-         <propertySection
-               class="org.eclipse.emf.ecoretools.design.properties.parts.forms.EClassPropertiesEditionPartForm"
-               filter="org.eclipse.emf.ecoretools.design.properties.ecore.providers.EClassPropertiesEditionProvider$EditionFilter"
-               id="org.eclipse.emf.ecore.section.EClass"
-               tab="Base">
-         </propertySection>
-         <propertySection
-               class="org.eclipse.emf.ecoretools.design.properties.parts.forms.InstanciationPropertiesEditionPartForm"
-               filter="org.eclipse.emf.ecoretools.design.properties.ecore.providers.EClassPropertiesEditionProvider$EditionFilter"
-               id="org.eclipse.emf.ecore.section.EClass"
-               tab="Instanciation">
-         </propertySection>
-         <propertySection
-               class="org.eclipse.emf.ecoretools.design.properties.parts.forms.DataTypePropertiesEditionPartForm"
-               filter="org.eclipse.emf.ecoretools.design.properties.ecore.providers.EDataTypePropertiesEditionProvider$EditionFilter"
-               id="org.eclipse.emf.ecore.section.EDataType"
-               tab="Data Type">
-         </propertySection>
-         <propertySection
-               class="org.eclipse.emf.ecoretools.design.properties.parts.forms.InstanciationPropertiesEditionPartForm"
-               filter="org.eclipse.emf.ecoretools.design.properties.ecore.providers.EDataTypePropertiesEditionProvider$EditionFilter"
-               id="org.eclipse.emf.ecore.section.EDataType"
-               tab="Instanciation">
-         </propertySection>
-         <propertySection
-               class="org.eclipse.emf.ecoretools.design.properties.parts.forms.DataTypePropertiesEditionPartForm"
-               filter="org.eclipse.emf.ecoretools.design.properties.ecore.providers.EEnumPropertiesEditionProvider$EditionFilter"
-               id="org.eclipse.emf.ecore.section.EEnum"
-               tab="Data Type">
-         </propertySection>
-         <propertySection
-               class="org.eclipse.emf.ecoretools.design.properties.parts.forms.InstanciationPropertiesEditionPartForm"
-               filter="org.eclipse.emf.ecoretools.design.properties.ecore.providers.EEnumPropertiesEditionProvider$EditionFilter"
-               id="org.eclipse.emf.ecore.section.EEnum"
-               tab="Instanciation">
-         </propertySection>
-         <propertySection
-               class="org.eclipse.emf.ecoretools.design.properties.parts.forms.EEnumLiteralPropertiesEditionPartForm"
-               filter="org.eclipse.emf.ecoretools.design.properties.ecore.providers.EEnumLiteralPropertiesEditionProvider$EditionFilter"
-               id="org.eclipse.emf.ecore.section.EEnumLiteral"
-               tab="Base">
-         </propertySection>
-         <propertySection
-               class="org.eclipse.emf.ecoretools.design.properties.parts.forms.OperationElementPropertiesEditionPartForm"
-               filter="org.eclipse.emf.ecoretools.design.properties.ecore.providers.EOperationPropertiesEditionProvider$EditionFilter"
-               id="org.eclipse.emf.ecore.section.EOperation"
-               tab="Operation Element">
-         </propertySection>
-         <propertySection
-               class="org.eclipse.emf.ecoretools.design.properties.parts.forms.ExceptionsPropertiesEditionPartForm"
-               filter="org.eclipse.emf.ecoretools.design.properties.ecore.providers.EOperationPropertiesEditionProvider$EditionFilter"
-               id="org.eclipse.emf.ecore.section.EOperation"
-               tab="Exceptions">
-         </propertySection>
-         <propertySection
-               class="org.eclipse.emf.ecoretools.design.properties.parts.forms.EPackagePropertiesEditionPartForm"
-               filter="org.eclipse.emf.ecoretools.design.properties.ecore.providers.EPackagePropertiesEditionProvider$EditionFilter"
-               id="org.eclipse.emf.ecore.section.EPackage"
-               tab="Base">
-         </propertySection>
-         <propertySection
-               class="org.eclipse.emf.ecoretools.design.properties.parts.forms.OperationElementPropertiesEditionPartForm"
-               filter="org.eclipse.emf.ecoretools.design.properties.ecore.providers.EParameterPropertiesEditionProvider$EditionFilter"
-               id="org.eclipse.emf.ecore.section.EParameter"
-               tab="Operation Element">
-         </propertySection>
-         <propertySection
-               class="org.eclipse.emf.ecoretools.design.properties.parts.forms.EReferencePropertiesEditionPartForm"
-               filter="org.eclipse.emf.ecoretools.design.properties.ecore.providers.EReferencePropertiesEditionProvider$EditionFilter"
-               id="org.eclipse.emf.ecore.section.EReference"
-               tab="Base">
-         </propertySection>
-      </propertySections>
-   </extension>
-   
-   <!--EcoreTools 1 property views -->
-   
-   
-   <extension point="org.eclipse.ui.views.properties.tabbed.propertyContributor" id="prop-contrib">
-      <propertyContributor
-            contributorId="org.eclipse.sirius.diagram.ui"
-            labelProvider="org.eclipse.sirius.diagram.ui.internal.sheet.SiriusSheetLabelProvider" 
-            typeMapper="org.eclipse.emf.ecoretools.tabbedproperties.TabbedPropertiesTypeMapper">
-         <propertyCategory
-               category="semantic &amp; extension">
-         </propertyCategory>
-         <propertyCategory
-               category="semantic">
-         </propertyCategory>
-         <propertyCategory
-               category="extension">
-         </propertyCategory>
-         <propertyCategory
-               category="behaviors">
-         </propertyCategory>
-         <propertyCategory
-               category="documentation">
-         </propertyCategory>
-         <!--
-         <propertyCategory category="validation"/>
-         -->
-         <propertyCategory
-               category="style">
-         </propertyCategory>
-         <propertyCategory category="visual"/>
-         <propertyCategory category="domain"/>
-         <propertyCategory category="extra"/>
-         <propertyCategory
-               category="misc">
-         </propertyCategory>
-      </propertyContributor>
-   </extension>
-
-
-   <extension point="org.eclipse.ui.views.properties.tabbed.propertySections">
-      <propertySections contributorId="org.eclipse.sirius.diagram.ui">	    
-      <propertySection
-            class="org.eclipse.emf.ecoretools.properties.internal.sections.EOperationParameterSection"
-            id="org.eclipse.emf.ecoretools.design.properties.ecore.parameterSection"
-            tab="org.eclipse.emf.ecoretools.design.properties.modelTab.parameterTab">
-         <input type="org.eclipse.emf.ecore.EOperation"/>
-      </propertySection>	          
-
-		  <!-- Extended Metadata Sections -->
-	     <propertySection
-	        class="org.eclipse.emf.ecoretools.properties.internal.metadata.QualifiedSection"
-	        id="org.eclipse.emf.ecoretools.design.properties.ecore.properties.extendedMetadata.Qualified"
-	        tab="org.eclipse.emf.ecoretools.design.properties.ecore.properties.extendedMetadata">
-	        <input type="org.eclipse.emf.ecore.EPackage"/>
-	     </propertySection>
-	     <propertySection
-	        class="org.eclipse.emf.ecoretools.properties.internal.metadata.AffiliationSection"
-	        id="org.eclipse.emf.ecoretools.design.properties.ecore.properties.extendedMetadata.Affiliation"
-	        tab="org.eclipse.emf.ecoretools.design.properties.ecore.properties.extendedMetadata">
-	        <input type="org.eclipse.emf.ecore.EStructuralFeature"/>
-	     </propertySection>
-	     <propertySection
-	        class="org.eclipse.emf.ecoretools.properties.internal.metadata.WildcardsSection"
-	        id="org.eclipse.emf.ecoretools.design.properties.ecore.properties.extendedMetadata.Wildcards"
-	        tab="org.eclipse.emf.ecoretools.design.properties.ecore.properties.extendedMetadata">
-	        <input type="org.eclipse.emf.ecore.EStructuralFeature"/>
-	     </propertySection>
-	     <propertySection
-	        class="org.eclipse.emf.ecoretools.properties.internal.metadata.PatternFacetSection"
-	        id="org.eclipse.emf.ecoretools.design.properties.ecore.properties.extendedMetadata.PatternFacet"
-	        tab="org.eclipse.emf.ecoretools.design.properties.ecore.properties.extendedMetadata">
-	        <input type="org.eclipse.emf.ecore.EDataType"/>
-	     </propertySection>
-	     <propertySection
-	        class="org.eclipse.emf.ecoretools.properties.internal.metadata.EnumerationFacetSection"
-	        id="org.eclipse.emf.ecoretools.design.properties.ecore.properties.extendedMetadata.EnumerationFacet"
-	        tab="org.eclipse.emf.ecoretools.design.properties.ecore.properties.extendedMetadata">
-	        <input type="org.eclipse.emf.ecore.EDataType"/>
-	     </propertySection>
-	     <!-- TODO add Member Types Section : EDatatype List -->
-	     <propertySection
-	        class="org.eclipse.emf.ecoretools.properties.internal.metadata.TotalDigitsSection"
-	        id="org.eclipse.emf.ecoretools.design.properties.ecore.properties.extendedMetadata.TotalDigits"
-	        tab="org.eclipse.emf.ecoretools.design.properties.ecore.properties.extendedMetadata">
-	        <input type="org.eclipse.emf.ecore.EDataType"/>
-	     </propertySection>
-	     <propertySection
-	        class="org.eclipse.emf.ecoretools.properties.internal.metadata.FractionDigitsSection"
-	        id="org.eclipse.emf.ecoretools.design.properties.ecore.properties.extendedMetadata.FractionDigits"
-	        tab="org.eclipse.emf.ecoretools.design.properties.ecore.properties.extendedMetadata">
-	        <input type="org.eclipse.emf.ecore.EDataType"/>
-	     </propertySection>
-	     <propertySection
-	        class="org.eclipse.emf.ecoretools.properties.internal.metadata.WhitespaceSection"
-	        id="org.eclipse.emf.ecoretools.design.properties.ecore.properties.extendedMetadata.Whitespace"
-	        tab="org.eclipse.emf.ecoretools.design.properties.ecore.properties.extendedMetadata">
-	        <input type="org.eclipse.emf.ecore.EDataType"/>
-	     </propertySection>
-	     <propertySection
-	        class="org.eclipse.emf.ecoretools.properties.internal.metadata.MinExclusiveSection"
-	        id="org.eclipse.emf.ecoretools.design.properties.ecore.properties.extendedMetadata.MinExclusive"
-	        tab="org.eclipse.emf.ecoretools.design.properties.ecore.properties.extendedMetadata">
-	        <input type="org.eclipse.emf.ecore.EDataType"/>
-	     </propertySection>
-	     <propertySection
-	        class="org.eclipse.emf.ecoretools.properties.internal.metadata.MinInclusiveSection"
-	        id="org.eclipse.emf.ecoretools.design.properties.ecore.properties.extendedMetadata.MinInclusive"
-	        tab="org.eclipse.emf.ecoretools.design.properties.ecore.properties.extendedMetadata">
-	        <input type="org.eclipse.emf.ecore.EDataType"/>
-	     </propertySection>
-	     <propertySection
-	        class="org.eclipse.emf.ecoretools.properties.internal.metadata.MaxInclusiveSection"
-	        id="org.eclipse.emf.ecoretools.design.properties.ecore.properties.extendedMetadata.MaxInclusive"
-	        tab="org.eclipse.emf.ecoretools.design.properties.ecore.properties.extendedMetadata">
-	        <input type="org.eclipse.emf.ecore.EDataType"/>
-	     </propertySection>
-	     <propertySection
-	        class="org.eclipse.emf.ecoretools.properties.internal.metadata.MaxExclusiveSection"
-	        id="org.eclipse.emf.ecoretools.design.properties.ecore.properties.extendedMetadata.MaxExclusive"
-	        tab="org.eclipse.emf.ecoretools.design.properties.ecore.properties.extendedMetadata">
-	        <input type="org.eclipse.emf.ecore.EDataType"/>
-	     </propertySection>
-	     <propertySection
-	        class="org.eclipse.emf.ecoretools.properties.internal.metadata.MaxLengthSection"
-	        id="org.eclipse.emf.ecoretools.design.properties.ecore.properties.extendedMetadata.MaxLength"
-	        tab="org.eclipse.emf.ecoretools.design.properties.ecore.properties.extendedMetadata">
-	        <input type="org.eclipse.emf.ecore.EDataType"/>
-	     </propertySection>
-	     <propertySection
-	        class="org.eclipse.emf.ecoretools.properties.internal.metadata.LengthSection"
-	        id="org.eclipse.emf.ecoretools.design.properties.ecore.properties.extendedMetadata.Length"
-	        tab="org.eclipse.emf.ecoretools.design.properties.ecore.properties.extendedMetadata">
-	        <input type="org.eclipse.emf.ecore.EDataType"/>
-	     </propertySection>
-	     <propertySection
-	        class="org.eclipse.emf.ecoretools.properties.internal.metadata.MinLengthSection"
-	        id="org.eclipse.emf.ecoretools.design.properties.ecore.properties.extendedMetadata.MinLength"
-	        tab="org.eclipse.emf.ecoretools.design.properties.ecore.properties.extendedMetadata">
-	        <input type="org.eclipse.emf.ecore.EDataType"/>
-	     </propertySection>
-	     <propertySection
-	        class="org.eclipse.emf.ecoretools.properties.internal.metadata.ItemTypeSection"
-	        id="org.eclipse.emf.ecoretools.design.properties.ecore.properties.extendedMetadata.ItemType"
-	        tab="org.eclipse.emf.ecoretools.design.properties.ecore.properties.extendedMetadata">
-	        <input type="org.eclipse.emf.ecore.EDataType"/>
-	     </propertySection>
-	     <propertySection
-	        class="org.eclipse.emf.ecoretools.properties.internal.metadata.BaseTypeSection"
-	        id="org.eclipse.emf.ecoretools.design.properties.ecore.properties.extendedMetadata.BaseType"
-	        tab="org.eclipse.emf.ecoretools.design.properties.ecore.properties.extendedMetadata">
-	        <input type="org.eclipse.emf.ecore.EDataType"/>
-	     </propertySection>
-	     <propertySection
-	        class="org.eclipse.emf.ecoretools.properties.internal.metadata.ProcessingKindSection"
-	        id="org.eclipse.emf.ecoretools.design.properties.ecore.properties.extendedMetadata.ProcessingKind"
-	        tab="org.eclipse.emf.ecoretools.design.properties.ecore.properties.extendedMetadata">
-	        <input type="org.eclipse.emf.ecore.EStructuralFeature"/>
-	     </propertySection>
-	     <propertySection
-	        class="org.eclipse.emf.ecoretools.properties.internal.metadata.GroupSection"
-	        id="org.eclipse.emf.ecoretools.design.properties.ecore.properties.extendedMetadata.Group"
-	        tab="org.eclipse.emf.ecoretools.design.properties.ecore.properties.extendedMetadata">
-	        <input type="org.eclipse.emf.ecore.EStructuralFeature"/>
-	     </propertySection>
-	     <propertySection
-	        class="org.eclipse.emf.ecoretools.properties.internal.metadata.FeatureKindSection"
-	        id="org.eclipse.emf.ecoretools.design.properties.ecore.properties.extendedMetadata.FeatureKind"
-	        tab="org.eclipse.emf.ecoretools.design.properties.ecore.properties.extendedMetadata">
-	        <input type="org.eclipse.emf.ecore.EStructuralFeature"/>
-	     </propertySection>
-	     <propertySection
-	        class="org.eclipse.emf.ecoretools.properties.internal.metadata.NamespaceSection"
-	        id="org.eclipse.emf.ecoretools.design.properties.ecore.properties.extendedMetadata.Namespace"
-	        tab="org.eclipse.emf.ecoretools.design.properties.ecore.properties.extendedMetadata">
-	        <input type="org.eclipse.emf.ecore.EStructuralFeature"/>
-	     </propertySection>
-	     <propertySection
-	        class="org.eclipse.emf.ecoretools.properties.internal.metadata.ContentKindSection"
-	        id="org.eclipse.emf.ecoretools.design.properties.ecore.properties.extendedMetadata.ContentKind"
-	        tab="org.eclipse.emf.ecoretools.design.properties.ecore.properties.extendedMetadata">
-	        <input type="org.eclipse.emf.ecore.EClass"/>
-	     </propertySection>
-	     <propertySection
-	        class="org.eclipse.emf.ecoretools.properties.internal.metadata.NameSection"
-	        id="org.eclipse.emf.ecoretools.design.properties.ecore.properties.extendedMetadata.Name"
-	        tab="org.eclipse.emf.ecoretools.design.properties.ecore.properties.extendedMetadata">
-	        <input type="org.eclipse.emf.ecore.EStructuralFeature"/>
-	        <input type="org.eclipse.emf.ecore.EClassifier"/>
-	     </propertySection>
-      <propertySection
-            class="org.eclipse.emf.ecoretools.properties.internal.sections.GenModelDocumentationPropertySection"
-            id="org.eclipse.emf.ecoretools.design.properties.genModelDoc"
-            tab="org.eclipse.emf.ecoretools.design.properties.genModelDoc">
-         <input
-               type="org.eclipse.emf.ecore.EModelElement">
-         </input>
-      </propertySection>
-      <propertySection
-            class="org.eclipse.emf.ecoretools.properties.internal.sections.EAnnotationPropertySection"
-            id="org.eclipse.emf.ecoretools.design.properties.eAnnotationSection"
-            tab="org.eclipse.emf.ecoretools.design.properties.eAnnotationTab">
-         <input
-               type="org.eclipse.emf.ecore.EModelElement">
-         </input>
-      </propertySection>
-	  </propertySections>
-   </extension>
+ 
 </plugin>
diff --git a/org.eclipse.emf.ecoretools.design.tests/META-INF/MANIFEST.MF b/org.eclipse.emf.ecoretools.design.tests/META-INF/MANIFEST.MF
index 9df42da..27c9e2a 100644
--- a/org.eclipse.emf.ecoretools.design.tests/META-INF/MANIFEST.MF
+++ b/org.eclipse.emf.ecoretools.design.tests/META-INF/MANIFEST.MF
@@ -3,7 +3,6 @@
 Bundle-Name: EcoreTools 2.0 Tests
 Bundle-SymbolicName: org.eclipse.emf.ecoretools.design.tests
 Bundle-Version: 3.3.0.qualifier
-Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Require-Bundle: org.junit,
  org.eclipse.emf.ecore;bundle-version="2.9.1",
  org.eclipse.emf.ecoretools.design;bundle-version="2.0.0",
@@ -12,3 +11,4 @@
  org.eclipse.sirius,
  org.eclipse.sirius.diagram;bundle-version="1.0.0"
 Import-Package: org.eclipse.sirius.ecore.extender.tool.api
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
diff --git a/org.eclipse.emf.ecoretools.design.ui/plugin.xml b/org.eclipse.emf.ecoretools.design.ui/plugin.xml
index 2bfa27d..f2ffe13 100644
--- a/org.eclipse.emf.ecoretools.design.ui/plugin.xml
+++ b/org.eclipse.emf.ecoretools.design.ui/plugin.xml
@@ -40,6 +40,14 @@
             actionClass="org.eclipse.emf.ecoretools.design.ui.action.OpenConfirmationDialogAction"
             id="org.eclipse.emf.ecoretools.design.action.openConfirmationDialogID">
       </javaActions>
+      <javaActions
+            actionClass="org.eclipse.emf.ecoretools.design.ui.action.OpenFileInEditorAction"
+            id="org.eclipse.emf.ecoretools.design.action.openFileInEditorID">
+      </javaActions>
+      <javaActions
+            actionClass="org.eclipse.emf.ecoretools.design.ui.action.OpenSelectModelElementAction"
+            id="org.eclipse.emf.ecoretools.design.action.openSelectModelElementID">
+      </javaActions>
    </extension>
    <!--
    <extension
diff --git a/org.eclipse.emf.ecoretools.design.ui/src/org/eclipse/emf/ecoretools/design/ui/action/OpenFileInEditorAction.java b/org.eclipse.emf.ecoretools.design.ui/src/org/eclipse/emf/ecoretools/design/ui/action/OpenFileInEditorAction.java
new file mode 100644
index 0000000..aa2fab3
--- /dev/null
+++ b/org.eclipse.emf.ecoretools.design.ui/src/org/eclipse/emf/ecoretools/design/ui/action/OpenFileInEditorAction.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (c) 2017 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.emf.ecoretools.design.ui.action;
+
+import java.util.Collection;
+import java.util.Map;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.sirius.tools.api.ui.IExternalJavaAction;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.ide.IDE;
+
+public class OpenFileInEditorAction implements IExternalJavaAction {
+
+	public boolean canExecute(Collection<? extends EObject> selections) {
+		return true;
+	}
+
+	public void execute(Collection<? extends EObject> selections, final Map<String, Object> parameters) {
+
+		Object wksPath = parameters.get("path");
+
+		if (wksPath instanceof String) {
+			final String path = (String) wksPath;
+			Display.getDefault().syncExec(new Runnable() {
+
+				public void run() {
+
+					IFile workspaceFile = ResourcesPlugin.getWorkspace().getRoot().getFile(new Path(path.toString()));
+					if (workspaceFile != null) {
+						IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
+						try {
+							IEditorPart openEditor = IDE.openEditor(page, workspaceFile);
+						} catch (PartInitException e) {
+						}
+					}
+				}
+			});
+
+		}
+
+	}
+
+}
diff --git a/org.eclipse.emf.ecoretools.design.ui/src/org/eclipse/emf/ecoretools/design/ui/action/OpenSelectModelElementAction.java b/org.eclipse.emf.ecoretools.design.ui/src/org/eclipse/emf/ecoretools/design/ui/action/OpenSelectModelElementAction.java
new file mode 100644
index 0000000..cfe2443
--- /dev/null
+++ b/org.eclipse.emf.ecoretools.design.ui/src/org/eclipse/emf/ecoretools/design/ui/action/OpenSelectModelElementAction.java
@@ -0,0 +1,89 @@
+/*******************************************************************************
+ * Copyright (c) 2017 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.emf.ecoretools.design.ui.action;
+
+import java.util.Collection;
+import java.util.Map;
+
+import org.eclipse.core.runtime.OperationCanceledException;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.jface.window.Window;
+import org.eclipse.jface.wizard.WizardDialog;
+import org.eclipse.sirius.common.ui.tools.api.selection.EObjectSelectionWizard;
+import org.eclipse.sirius.diagram.ui.provider.DiagramUIPlugin;
+import org.eclipse.sirius.tools.api.ui.IExternalJavaAction;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.PlatformUI;
+
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Lists;
+
+public class OpenSelectModelElementAction implements IExternalJavaAction {
+
+	public boolean canExecute(Collection<? extends EObject> selections) {
+		return true;
+	}
+
+	public void execute(Collection<? extends EObject> selections, final Map<String, Object> parameters) {
+
+		Object messageObj = parameters.get("message");
+		Object titleObj = parameters.get("title");
+		Object candidates = parameters.get("candidates");
+		final Collection<EObject> toSelectFrom = Lists.newArrayList();
+		if (candidates instanceof EObject) {
+			toSelectFrom.add((EObject) candidates);
+		} else if (candidates instanceof Iterable) {
+			for (EObject eObject : Iterables.filter((Iterable) candidates, EObject.class)) {
+				toSelectFrom.add(eObject);
+			}
+		}
+		if (messageObj instanceof String) {
+			final String message = (String) messageObj;
+			final String title = getTitleFromParameter(titleObj);
+			Display.getDefault().syncExec(new Runnable() {
+
+				public void run() {
+					Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
+					final EObjectSelectionWizard wizard = new EObjectSelectionWizard(title, message, null, toSelectFrom,
+							DiagramUIPlugin.getPlugin().getItemProvidersAdapterFactory());
+					wizard.setMany(false);
+					final WizardDialog dlg = new WizardDialog(shell, wizard);
+					final int result = dlg.open();
+					if (result == Window.OK) {
+
+						Object featureObj = parameters.get("feature");
+						Object hostObj = parameters.get("host");
+						if (featureObj instanceof EStructuralFeature && hostObj instanceof EObject) {
+							((EObject) hostObj).eSet((EStructuralFeature) featureObj, wizard.getSelectedEObject());
+						}
+
+					} else {
+						throw new OperationCanceledException("user canceled");
+					}
+
+				}
+			});
+
+		}
+
+	}
+
+	private String getTitleFromParameter(Object titleObj) {
+		String title = "Select Model Element";
+		if (titleObj instanceof String) {
+			title = (String) titleObj;
+		}
+		return title;
+	}
+
+}
diff --git a/org.eclipse.emf.ecoretools.design/META-INF/MANIFEST.MF b/org.eclipse.emf.ecoretools.design/META-INF/MANIFEST.MF
index c0c8f85..a2864f8 100644
--- a/org.eclipse.emf.ecoretools.design/META-INF/MANIFEST.MF
+++ b/org.eclipse.emf.ecoretools.design/META-INF/MANIFEST.MF
@@ -3,11 +3,15 @@
 Bundle-SymbolicName: org.eclipse.emf.ecoretools.design;singleton:=true
 Bundle-Version: 3.3.0.qualifier
 Bundle-Localization: plugin
-Require-Bundle: org.eclipse.sirius.common;bundle-version="4.1.0",
- org.eclipse.sirius.ecore.extender;bundle-version="4.1.0",
- org.eclipse.sirius;bundle-version="4.1.0",
- org.eclipse.sirius.common.acceleo.aql;bundle-version="4.1.0",
- org.eclipse.sirius.diagram;bundle-version="4.1.0",
+Require-Bundle: org.eclipse.sirius.common;bundle-version="5.0.0",
+ org.eclipse.sirius.ecore.extender;bundle-version="5.0.0",
+ org.eclipse.sirius;bundle-version="5.0.0",
+ org.eclipse.sirius.common.acceleo.aql;bundle-version="5.0.0",
+ org.eclipse.sirius.diagram;bundle-version="5.0.0",
+ org.eclipse.sirius.ext.base;bundle-version="5.0.0",
+ org.eclipse.sirius.ext.emf;bundle-version="5.0.0",
+ org.eclipse.sirius.table;bundle-version="5.0.0",
+ org.eclipse.sirius.properties;bundle-version="5.0.0",
  org.eclipse.core.runtime,
  org.eclipse.core.resources,
  org.eclipse.emf.ecore.xmi,
@@ -15,10 +19,7 @@
  org.eclipse.emf.importer.ecore,
  org.eclipse.emf.transaction,
  org.eclipse.gmf.runtime.notation,
- com.google.guava;bundle-version="11.0.0",
- org.eclipse.sirius.ext.base;bundle-version="4.1.0",
- org.eclipse.sirius.ext.emf;bundle-version="4.1.0",
- org.eclipse.sirius.table
+ com.google.guava;bundle-version="11.0.0"
 Bundle-ManifestVersion: 2
 Bundle-Vendor: %providerName
 Eclipse-LazyStart: true
diff --git a/org.eclipse.emf.ecoretools.design/description/ecore.odesign b/org.eclipse.emf.ecoretools.design/description/ecore.odesign
index 3365005..1c5fee3 100644
--- a/org.eclipse.emf.ecoretools.design/description/ecore.odesign
+++ b/org.eclipse.emf.ecoretools.design/description/ecore.odesign
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="ASCII"?>
-<description:Group xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:description="http://www.eclipse.org/sirius/description/1.1.0" xmlns:description_1="http://www.eclipse.org/sirius/diagram/description/1.1.0" xmlns:description_2="http://www.eclipse.org/sirius/table/description/1.1.0" xmlns:filter="http://www.eclipse.org/sirius/diagram/description/filter/1.1.0" xmlns:style="http://www.eclipse.org/sirius/diagram/description/style/1.1.0" xmlns:tool="http://www.eclipse.org/sirius/description/tool/1.1.0" xmlns:tool_1="http://www.eclipse.org/sirius/diagram/description/tool/1.1.0" xmlns:validation="http://www.eclipse.org/sirius/description/validation/1.1.0" documentation="FORCE_LEGACY_PROPERTIES" name="EcoreTools" version="11.1.1.201610211630">
+<description:Group xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:description="http://www.eclipse.org/sirius/description/1.1.0" xmlns:description_1="http://www.eclipse.org/sirius/diagram/description/1.1.0" xmlns:description_2="http://www.eclipse.org/sirius/table/description/1.1.0" xmlns:filter="http://www.eclipse.org/sirius/diagram/description/filter/1.1.0" xmlns:properties="http://www.eclipse.org/sirius/properties/1.0.0" xmlns:properties-ext-widgets-reference="http://www.eclipse.org/sirius/properties/1.0.0/ext/widgets/reference" xmlns:style="http://www.eclipse.org/sirius/diagram/description/style/1.1.0" xmlns:tool="http://www.eclipse.org/sirius/description/tool/1.1.0" xmlns:tool_1="http://www.eclipse.org/sirius/diagram/description/tool/1.1.0" xmlns:validation="http://www.eclipse.org/sirius/description/validation/1.1.0" name="EcoreTools" version="12.0.0.2017041100">
   <ownedViewpoints endUserDocumentation="&lt;html>&#xA;&lt;head>&#xA;&lt;/head>&#xA;&lt;body>&#xA;&lt;p>Provides graphical and tabular representation to design an Ecore model.&lt;/p>&#xA;&lt;br>&#xA;&lt;img src=&quot;/icons/full/wizban/entities.png&quot;/>&#xA;&lt;img src=&quot;/icons/full/wizban/classes.png&quot;/>&#xA;&lt;/body>&#xA;&lt;/html>&#xA;&#xA;&#xA;" name="Design" modelFileExtension="ecore xcore ecorebin">
     <ownedRepresentations xsi:type="description_1:DiagramDescription" dropDescriptions="//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@toolSections.0/@ownedTools[name='External%20EClass%20from%20treeview'] //@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@additionalLayers[name='Package']/@toolSections.0/@ownedTools[name='Drop%20EClassifier%20into%20EPackage']" documentation="&lt;html>&#xA;&lt;head>&#xA;&lt;/head>&#xA;&lt;body>&#xA;&lt;p>Provides a class diagram to represent EClasses, EDatatypes, EAttributes and their relationships.&lt;/p>&#xA;&lt;br>&#xA;&lt;img src=&quot;/icons/full/wizban/entities.png&quot;/>&#xA;&lt;/body>&#xA;&lt;/html>&#xA;&#xA;&#xA;" endUserDocumentation="A class diagram to represent EClasses, EDatatypes, EAttributes and their relationships." name="Entities" label="Entities in a Class Diagram" titleExpression="aql:self.name + ' class diagram'" pasteDescriptions="//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@toolSections.0/@ownedTools[name='Paste%20Anything']" domainClass="ecore.EPackage" enablePopupBars="true">
       <metamodel href="http://www.eclipse.org/emf/2002/Ecore#/"/>
@@ -761,12 +761,24 @@
               <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="service:performEdit(arg0)"/>
             </initialOperation>
           </ownedTools>
-          <ownedTools xsi:type="tool_1:DoubleClickDescription" name="ShowPropertiesView" mappings="//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass'] //@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute'] //@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='Operation'] //@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EDataType'] //@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum'] //@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral'] //@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EReferenceNode']">
+          <ownedTools xsi:type="tool_1:DoubleClickDescription" name="ShowPropertiesView" mappings="//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass'] //@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute'] //@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='Operation'] //@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EDataType'] //@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum'] //@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral'] //@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EReferenceNode'] //@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@additionalLayers[name='Package']/@containerMappings[name='Dropped%20Package']">
             <element name="element"/>
             <elementView name="elementView"/>
             <initialOperation>
               <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="var:element">
-                <subModelOperations xsi:type="tool:ExternalJavaAction" name="Open EEF" id="org.eclipse.sirius.eef.actions.openPropertiesWizard"/>
+                <subModelOperations xsi:type="properties:DialogModelOperation" titleExpression="aql:'Properties for '  + input.emfEditServices(self).getText()">
+                  <buttons labelExpression="Cancel" closeDialogOnClick="true" rollbackChangesOnClose="true">
+                    <initialOperation>
+                      <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="var:self"/>
+                    </initialOperation>
+                  </buttons>
+                  <buttons labelExpression="OK" default="true" closeDialogOnClick="true">
+                    <initialOperation>
+                      <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="var:self"/>
+                    </initialOperation>
+                  </buttons>
+                  <page name="Default Page" labelExpression="aql:input.emfEditServices(self).getText()" semanticCandidateExpression="var:self" extends="//@extensions.0/@categories.0/@pages.0"/>
+                </subModelOperations>
               </firstModelOperations>
             </initialOperation>
           </ownedTools>
@@ -811,7 +823,7 @@
           </ownedTools>
         </toolSections>
         <decorationDescriptionsSet>
-          <decorationDescriptions xsi:type="description:SemanticBasedDecoration" name="External" position="NORTH_EAST" decoratorPath="/org.eclipse.emf.ecoretools.design/icons/full/ovr16/shortcut.gif" preconditionExpression="service:viewContainerNotSemanticContainer(diagram,containerView)" domainClass="ecore.EClassifier"/>
+          <decorationDescriptions xsi:type="description:SemanticBasedDecoration" name="External" position="NORTH_EAST" preconditionExpression="service:viewContainerNotSemanticContainer(diagram,containerView)" imageExpression="/org.eclipse.emf.ecoretools.design/icons/full/ovr16/shortcut.gif" domainClass="ecore.EClassifier"/>
         </decorationDescriptionsSet>
         <customization>
           <vsmElementCustomizations xsi:type="description:VSMElementCustomization" predicateExpression="feature:required">
@@ -839,7 +851,7 @@
         </customization>
       </defaultLayer>
       <additionalLayers endUserDocumentation="Add support for sub-packages." name="Package" activeByDefault="true">
-        <containerMappings name="Dropped Package" detailDescriptions="//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@toolSections.3/@ownedTools[name='New%20Package%20Entities']" pasteDescriptions="//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@toolSections.0/@ownedTools[name='Paste%20Anything']" labelDirectEdit="//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@toolSections.5/@ownedTools[name='Edit%20Name%20no%20CamelCase']" createElements="false" domainClass="ecore.EPackage" dropDescriptions="//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@additionalLayers[name='Package']/@toolSections.0/@ownedTools[name='Drop%20EClassifier%20into%20EPackage'] //@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@additionalLayers[name='Package']/@toolSections.0/@ownedTools[name='Drop%20EPackage%20into%20EPackage']" reusedContainerMappings="//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass'] //@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EDataType'] //@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']">
+        <containerMappings name="Dropped Package" detailDescriptions="//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@toolSections.3/@ownedTools[name='New%20Package%20Entities']" pasteDescriptions="//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@toolSections.0/@ownedTools[name='Paste%20Anything']" labelDirectEdit="//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@toolSections.5/@ownedTools[name='Edit%20Name%20no%20CamelCase']" createElements="false" doubleClickDescription="//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@toolSections.5/@ownedTools[name='ShowPropertiesView']" domainClass="ecore.EPackage" dropDescriptions="//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@additionalLayers[name='Package']/@toolSections.0/@ownedTools[name='Drop%20EClassifier%20into%20EPackage'] //@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@additionalLayers[name='Package']/@toolSections.0/@ownedTools[name='Drop%20EPackage%20into%20EPackage']" reusedContainerMappings="//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass'] //@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EDataType'] //@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']">
           <style xsi:type="style:FlatContainerStyleDescription" arcWidth="1" arcHeight="1" borderSizeComputationExpression="1" borderColor="//@userColorsPalettes[name='Ecore%20Palette']/@entries[name='Dark%20EPackage']" labelExpression="aql:self.name" labelAlignment="LEFT" widthComputationExpression="24" heightComputationExpression="16" backgroundStyle="Liquid" foregroundColor="//@userColorsPalettes[name='Ecore%20Palette']/@entries[name='EPackage']">
             <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
             <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='white']"/>
@@ -1061,6 +1073,8 @@
       </additionalLayers>
     </ownedRepresentations>
     <ownedRepresentations xsi:type="description_2:EditionTableDescription" documentation="&lt;html>&#xA;&lt;head>&#xA;&lt;/head>&#xA;&lt;body>&#xA;&lt;p>A tabular editor (spreadsheet-like) of the entities in an Ecore model.&lt;/p>&#xA;&lt;br>&#xA;&lt;img src=&quot;/icons/full/wizban/classes.png&quot;/>&#xA;&lt;/body>&#xA;&lt;/html>&#xA;&#xA;&#xA;" endUserDocumentation="A tabular editor (spreadsheet-like) of the entities in an Ecore model." name="Classes" label="Classes in a spreadsheet" titleExpression="aql:self.name + ' class table'" domainClass="ecore.EPackage">
+      <metamodel href="http://www.eclipse.org/emf/2002/GenModel#/"/>
+      <metamodel href="http://www.eclipse.org/emf/2002/Ecore#/"/>
       <ownedLineMappings name="Classes lines" reusedInMappings="//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Classes']/@ownedLineMappings[name='Package']" domainClass="ecore.EClass" semanticCandidatesExpression="feature:eContents">
         <foregroundConditionalStyle predicateExpression="feature:abstract">
           <style labelSize="10">
@@ -1089,6 +1103,8 @@
     </ownedRepresentations>
     <ownedJavaExtensions qualifiedClassName="org.eclipse.emf.ecoretools.design.service.DesignServices"/>
     <ownedJavaExtensions qualifiedClassName="org.eclipse.sirius.common.tools.api.interpreter.StandardServices"/>
+    <ownedJavaExtensions qualifiedClassName="org.eclipse.emf.ecoretools.design.service.PropertiesServices"/>
+    <ownedJavaExtensions qualifiedClassName="org.eclipse.emf.ecoretools.design.service.ALEServices"/>
   </ownedViewpoints>
   <ownedViewpoints endUserDocumentation="Add support for archetypes-based modeling to the Entities modeler." name="Archetype" modelFileExtension="ecore xcore ecorebin">
     <ownedRepresentationExtensions xsi:type="description_1:DiagramExtensionDescription" name="Entities With Archetypes" viewpointURI="viewpoint:/org.eclipse.emf.ecoretools.design/Design" representationName="Entities">
@@ -1185,6 +1201,8 @@
       </layers>
     </ownedRepresentationExtensions>
     <ownedJavaExtensions qualifiedClassName="org.eclipse.emf.ecoretools.design.service.ArchetypeServices"/>
+    <ownedJavaExtensions qualifiedClassName="org.eclipse.emf.ecoretools.design.service.PropertiesServices"/>
+    <ownedJavaExtensions qualifiedClassName="org.eclipse.emf.ecoretools.design.service.ALEServices"/>
   </ownedViewpoints>
   <ownedViewpoints endUserDocumentation="Provides representation to document and review Ecore models." name="Review" modelFileExtension="ecore xcore ecorebin">
     <ownedRepresentations xsi:type="description_2:CrossTableDescription" documentation="&lt;html>&#xA;&lt;head>&#xA;&lt;/head>&#xA;&lt;body>&#xA;&lt;p>Document the concepts in a package.&lt;/p>&#xA;&lt;br>&#xA;&lt;img src=&quot;/icons/full/wizban/documentation_table.png&quot;/>&#xA;&lt;/body>&#xA;&lt;/html>&#xA;&#xA;&#xA;" name="Documentation" label="Documentation annotations in a spreadsheet" titleExpression="aql:self.name + ' documentation table'" domainClass="ecore.EPackage">
@@ -1202,6 +1220,8 @@
       <ownedColumnMappings name="Doc Root" headerLabelExpression="Domain Documentation" domainClass="ecore.EPackage" semanticCandidatesExpression="service:getRootContainer"/>
       <intersection name="EModelElements to Doc Annotation" semanticElements="var:self" lineMapping="//@ownedViewpoints[name='Review']/@ownedRepresentations[name='Documentation']/@ownedLineMappings[name='Doc%20EClassifiers'] //@ownedViewpoints[name='Review']/@ownedRepresentations[name='Documentation']/@ownedLineMappings[name='Doc%20EClassifiers']/@ownedSubLines[name='Doc%20EStructural%20Features']" columnMapping="//@ownedViewpoints[name='Review']/@ownedRepresentations[name='Documentation']/@ownedColumnMappings.0" labelExpression="aql:self.value" useDomainClass="true" columnFinderExpression="service:getRootContainer" lineFinderExpression="aql:self.eContainer(ecore::EAnnotation).eContainer()" semanticCandidatesExpression="aql:self.eAllContents(ecore::EAnnotation)->select(a | a.source = 'http://www.eclipse.org/emf/2002/GenModel').details->select(a | a.key = 'documentation')" domainClass="ecore.EStringToStringMapEntry">
         <directEdit>
+          <variables name="table" documentation="The current DTable."/>
+          <variables name="line" documentation="The DLine of the current DCell."/>
           <variables name="element" documentation="The currently edited element."/>
           <variables name="lineSemantic" documentation="The semantic element corresponding to the line."/>
           <variables name="columnSemantic" documentation="The semantic element corresponding to the column (only available for Intersection Mapping)."/>
@@ -1321,6 +1341,8 @@
       </defaultLayer>
     </ownedRepresentations>
     <ownedJavaExtensions qualifiedClassName="org.eclipse.emf.ecoretools.design.service.ReviewServices"/>
+    <ownedJavaExtensions qualifiedClassName="org.eclipse.emf.ecoretools.design.service.PropertiesServices"/>
+    <ownedJavaExtensions qualifiedClassName="org.eclipse.emf.ecoretools.design.service.ALEServices"/>
   </ownedViewpoints>
   <ownedViewpoints endUserDocumentation="Adds support for EMF GenModel configuration." name="Generation" modelFileExtension="genmodel">
     <ownedRepresentations xsi:type="description_2:EditionTableDescription" documentation="&lt;html>&#xA;&lt;head>&#xA;&lt;/head>&#xA;&lt;body>&#xA;&lt;p>To set generation related parameters:&lt;/p>&#xA;&lt;ul>&#xA;  &lt;li>the property category&lt;/li>&#xA;  &lt;li>the user facing documentation for each property&lt;/li>&#xA;&lt;/ul>&#xA;&lt;br>&#xA;&lt;/body>&#xA;&lt;/html>&#xA;&#xA;&#xA;" name="GenPackage Attributes" label="Properties attributes and categories" titleExpression="aql:self.prefix + ' generation table'" domainClass="genmodel.GenPackage">
@@ -1339,6 +1361,8 @@
       <ownedColumnMappings name="Decription" headerLabelExpression="Description" canEdit="aql:self.oclIsTypeOf(genmodel::GenFeature)" featureName="propertyDescription" labelExpression="aql:self->filter(genmodel::GenFeature).propertyDescription->first()"/>
     </ownedRepresentations>
     <ownedJavaExtensions qualifiedClassName="org.eclipse.emf.ecoretools.design.service.GenerationServices"/>
+    <ownedJavaExtensions qualifiedClassName="org.eclipse.emf.ecoretools.design.service.PropertiesServices"/>
+    <ownedJavaExtensions qualifiedClassName="org.eclipse.emf.ecoretools.design.service.ALEServices"/>
   </ownedViewpoints>
   <userColorsPalettes name="Ecore Palette">
     <entries xsi:type="description:InterpolatedColor" name="Size Based Color" minValueComputationExpression="aql:0" maxValueComputationExpression="aql:10"/>
@@ -1360,4 +1384,449 @@
     <entries xsi:type="description:UserFixedColor" red="228" green="228" blue="228" name="Abstract EClass"/>
     <entries xsi:type="description:UserFixedColor" name="Inherited"/>
   </userColorsPalettes>
+  <extensions xsi:type="properties:ViewExtensionDescription" name="ecoretools">
+    <metamodels href="http://www.eclipse.org/emf/2002/Ecore#/"/>
+    <metamodels href="http://www.eclipse.org/emf/2002/GenModel#/"/>
+    <categories name="Default">
+      <pages name="ecore_page" labelExpression="Ecore" semanticCandidateExpression="var:self" groups="//@extensions.0/@categories.0/@groups.0 //@extensions.0/@categories.0/@groups.5">
+        <validationSet>
+          <semanticValidationRules name="NoNameOrInvalid" level="ERROR" message="aql:' The '  + self.eClass().name +  ' should have a name which is a valid Java identifier.'" targetClass="ecore::ENamedElement">
+            <audits auditExpression="aql: (not self.oclIsKindOf(ecore::ENamedElement) ) or (self.name &lt;> null and self.name.size() > 0)"/>
+          </semanticValidationRules>
+        </validationSet>
+      </pages>
+      <pages name="parameters_page" labelExpression="Parameters" domainClass="ecore::EOperation" semanticCandidateExpression="var:self" groups="//@extensions.0/@categories.0/@groups.9" indented="true">
+        <validationSet>
+          <semanticValidationRules name="NoNameOrInvalid" level="ERROR" message="aql:' The '  + self.eClass().name +  ' should have a name which is a valid Java identifier.'" targetClass="ecore::ENamedElement">
+            <audits auditExpression="aql:(not self.oclIsKindOf(ecore::ENamedElement) ) or self.name &lt;> null and self.name.size() > 0"/>
+          </semanticValidationRules>
+        </validationSet>
+      </pages>
+      <pages name="documentation_page" labelExpression="Documentation" semanticCandidateExpression="var:self" groups="//@extensions.0/@categories.0/@groups.2" indented="true"/>
+      <pages name="annotation_page" labelExpression="Annotation" semanticCandidateExpression="var:self" groups="//@extensions.0/@categories.0/@groups.10" indented="true">
+        <actions tooltipExpression="Add EAnnotation" imageExpression="/org.eclipse.emf.ecore.edit/icons/full/ctool16/CreateEModelElement_eAnnotations_EAnnotation.gif">
+          <initialOperation>
+            <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="var:self">
+              <subModelOperations xsi:type="tool:CreateInstance" typeName="ecore::EAnnotation" referenceName="eAnnotations"/>
+            </firstModelOperations>
+          </initialOperation>
+        </actions>
+      </pages>
+      <pages name="generation_page" labelExpression="Generation" semanticCandidateExpression="aql:self" preconditionExpression="aql:self.eInverse()->select( g | g.eClass().ePackage.nsURI->includes('http://www.eclipse.org/emf/2002/GenModel'))->asSet()->size() > 0" groups="//@extensions.0/@categories.0/@groups.4 //@extensions.0/@categories.0/@groups.1 //@extensions.0/@categories.0/@groups.3 //@extensions.0/@categories.0/@groups.6">
+        <actions tooltipExpression="Generate Model" imageExpression="/org.eclipse.emf.ecoretools.design/icons/full/etools16/generate_single.gif">
+          <initialOperation>
+            <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="var:self">
+              <subModelOperations xsi:type="tool:ExternalJavaAction" name="Generate Model Properties" id="org.eclipse.emf.ecoretools.design.action.generateAllID">
+                <parameters name="genmodels" value="aql:self.eInverse()->select( g | g.eClass().ePackage.nsURI->includes('http://www.eclipse.org/emf/2002/GenModel'))->asSet().eContainerOrSelf(genmodel::GenModel)->asSet()"/>
+                <parameters name="scope" value="model"/>
+              </subModelOperations>
+            </firstModelOperations>
+          </initialOperation>
+        </actions>
+        <actions tooltipExpression="Generate Edit" imageExpression="/org.eclipse.emf.ecoretools.design/icons/full/etools16/generate_single.gif">
+          <initialOperation>
+            <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="var:self">
+              <subModelOperations xsi:type="tool:ExternalJavaAction" name="Generate Edit Properties" id="org.eclipse.emf.ecoretools.design.action.generateAllID">
+                <parameters name="genmodels" value="aql:self.eInverse()->select( g | g.eClass().ePackage.nsURI->includes('http://www.eclipse.org/emf/2002/GenModel'))->asSet().eContainerOrSelf(genmodel::GenModel)->asSet()"/>
+                <parameters name="scope" value="edit"/>
+              </subModelOperations>
+            </firstModelOperations>
+          </initialOperation>
+        </actions>
+        <actions tooltipExpression="Generate Editor" imageExpression="/org.eclipse.emf.ecoretools.design/icons/full/etools16/generate_single.gif">
+          <initialOperation>
+            <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="var:self">
+              <subModelOperations xsi:type="tool:ExternalJavaAction" name="Generate Editor Properties" id="org.eclipse.emf.ecoretools.design.action.generateAllID">
+                <parameters name="genmodels" value="aql:self.eInverse()->select( g | g.eClass().ePackage.nsURI->includes('http://www.eclipse.org/emf/2002/GenModel'))->asSet().eContainerOrSelf(genmodel::GenModel)->asSet()"/>
+                <parameters name="scope" value="editor"/>
+              </subModelOperations>
+            </firstModelOperations>
+          </initialOperation>
+        </actions>
+        <actions tooltipExpression="Generate All" imageExpression="/org.eclipse.emf.ecoretools.design/icons/full/etools16/generate.gif">
+          <initialOperation>
+            <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="var:self">
+              <subModelOperations xsi:type="tool:ExternalJavaAction" name="Generate All Properties" id="org.eclipse.emf.ecoretools.design.action.generateAllID">
+                <parameters name="genmodels" value="aql:self.eInverse()->select( g | g.eClass().ePackage.nsURI->includes('http://www.eclipse.org/emf/2002/GenModel'))->asSet().eContainerOrSelf(genmodel::GenModel)->asSet()"/>
+                <parameters name="scope" value="model, edit, editor, tests"/>
+              </subModelOperations>
+            </firstModelOperations>
+          </initialOperation>
+        </actions>
+      </pages>
+      <pages name="execution_page" labelExpression="Execution" semanticCandidateExpression="var:self" preconditionExpression="aql:self.eContainerOrSelf(ecore::EPackage).isConfiguredForALE()" groups="//@extensions.0/@categories.0/@groups.7 //@extensions.0/@categories.0/@groups.8"/>
+      <groups name="default rules" labelExpression="aql:input.emfEditServices(self).getText()" semanticCandidateExpression="aql:self.removeSemanticElementsToHide(input.getAllSemanticElements())" preconditionExpression="">
+        <controls xsi:type="properties:DynamicMappingForDescription" name="sirius_default_rules_structural_features_for" iterator="eStructuralFeature" iterableExpression="aql:self.removeFeaturesToHide(input.emfEditServices(self).getEStructuralFeatures())">
+          <ifs name="sirius_default_rules_mono_string_if" predicateExpression="aql:input.emfEditServices(self).needsTextWidget(eStructuralFeature) and not input.emfEditServices(self).isMultiline(eStructuralFeature)">
+            <widget xsi:type="properties:TextDescription" name="sirius_default_rules_mono_string" labelExpression="aql:input.emfEditServices(self).getText(eStructuralFeature)+':'" helpExpression="aql:input.emfEditServices(self).getDescription(eStructuralFeature)" isEnabledExpression="aql:eStructuralFeature.changeable" valueExpression="aql:if eStructuralFeature.name = 'upperBound' and self.oclIsKindOf(ecore::ETypedElement) then self.upperBoundDisplay() else self.eGet(eStructuralFeature.name) endif">
+              <initialOperation>
+                <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="var:self">
+                  <subModelOperations xsi:type="tool:Switch">
+                    <cases conditionExpression="aql:eStructuralFeature.name = 'upperBound' and self.oclIsKindOf(ecore::ETypedElement)">
+                      <subModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:self.setUpperBound(newValue)"/>
+                    </cases>
+                    <default>
+                      <subModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:input.emfEditServices(self).setValue(eStructuralFeature, newValue)"/>
+                    </default>
+                  </subModelOperations>
+                </firstModelOperations>
+              </initialOperation>
+              <conditionalStyles preconditionExpression="aql:eStructuralFeature.lowerBound==1">
+                <style>
+                  <labelFontFormat>bold</labelFontFormat>
+                </style>
+              </conditionalStyles>
+            </widget>
+          </ifs>
+          <ifs name="sirius_default_rules_multi_string_if" predicateExpression="aql:input.emfEditServices(self).needsTextWidget(eStructuralFeature) and input.emfEditServices(self).isMultiline(eStructuralFeature)">
+            <widget xsi:type="properties:TextAreaDescription" name="sirius_default_rules_multi_string" labelExpression="aql:input.emfEditServices(self).getText(eStructuralFeature)+':'" helpExpression="aql:input.emfEditServices(self).getDescription(eStructuralFeature)" isEnabledExpression="aql:eStructuralFeature.changeable" valueExpression="aql:self.eGet(eStructuralFeature.name)">
+              <initialOperation>
+                <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:input.emfEditServices(self).setValue(eStructuralFeature, newValue)"/>
+              </initialOperation>
+              <conditionalStyles preconditionExpression="aql:eStructuralFeature.lowerBound==1">
+                <style>
+                  <labelFontFormat>bold</labelFontFormat>
+                </style>
+              </conditionalStyles>
+            </widget>
+          </ifs>
+          <ifs name="sirius_default_rules_mono_boolean" predicateExpression="aql:input.emfEditServices(self).needsCheckboxWidget(eStructuralFeature)">
+            <widget xsi:type="properties:CheckboxDescription" name="sirius_default_rules_mono_boolean" labelExpression="aql:input.emfEditServices(self).getText(eStructuralFeature)" helpExpression="aql:input.emfEditServices(self).getDescription(eStructuralFeature)" isEnabledExpression="aql:eStructuralFeature.changeable" valueExpression="aql:self.eGet(eStructuralFeature.name)">
+              <initialOperation>
+                <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:input.emfEditServices(self).setValue(eStructuralFeature, newValue)"/>
+              </initialOperation>
+              <conditionalStyles preconditionExpression="aql:eStructuralFeature.lowerBound==1">
+                <style>
+                  <labelFontFormat>bold</labelFontFormat>
+                </style>
+              </conditionalStyles>
+            </widget>
+          </ifs>
+          <ifs name="sirius_default_rules_enum_if" predicateExpression="aql:eStructuralFeature.eType.oclIsKindOf(ecore::EEnum) and not(eStructuralFeature.many)">
+            <widget xsi:type="properties:RadioDescription" name="sirius_default_rules_enum" labelExpression="aql:input.emfEditServices(self).getText(eStructuralFeature)+':'" helpExpression="aql:input.emfEditServices(self).getDescription(eStructuralFeature)" isEnabledExpression="aql:eStructuralFeature.changeable" valueExpression="aql:eStructuralFeature.eType.oclAsType(ecore::EEnum).getEEnumLiteralByLiteral(self.eGet(eStructuralFeature.name).toString())" candidatesExpression="aql:eStructuralFeature.eType.oclAsType(ecore::EEnum).eLiterals" candidateDisplayExpression="aql:candidate.name" numberOfColumns="5">
+              <initialOperation>
+                <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:input.emfEditServices(self).setValue(eStructuralFeature, newValue.instance)"/>
+              </initialOperation>
+              <conditionalStyles preconditionExpression="aql:eStructuralFeature.lowerBound==1">
+                <style>
+                  <labelFontFormat>bold</labelFontFormat>
+                </style>
+              </conditionalStyles>
+            </widget>
+          </ifs>
+          <ifs name="sirius_default_rules_eattribute_many_if" predicateExpression="aql:eStructuralFeature.oclIsKindOf(ecore::EAttribute) and eStructuralFeature.many">
+            <widget xsi:type="properties:ListDescription" name="sirius_default_rules_eattribute_many" labelExpression="aql:input.emfEditServices(self).getText(eStructuralFeature)+':'" helpExpression="aql:input.emfEditServices(self).getDescription(eStructuralFeature)" isEnabledExpression="aql:eStructuralFeature.changeable" valueExpression="aql:self.eGet(eStructuralFeature.name)" displayExpression="var:value"/>
+          </ifs>
+          <ifs name="sirius_default_rules_ereference_if" predicateExpression="aql:eStructuralFeature.oclIsKindOf(ecore::EReference) and eStructuralFeature.many = true">
+            <widget xsi:type="properties-ext-widgets-reference:ExtReferenceDescription" name="sirius_default_rules_ereference" labelExpression="aql:input.emfEditServices(self).getText(eStructuralFeature)+':'" helpExpression="aql:input.emfEditServices(self).getDescription(eStructuralFeature)" referenceNameExpression="aql:eStructuralFeature.name"/>
+          </ifs>
+          <ifs name="ecoretools_etype_ereference" predicateExpression="aql:eStructuralFeature.oclIsKindOf(ecore::EReference) and eStructuralFeature.many = false">
+            <widget xsi:type="properties:LabelDescription" name="etype label" labelExpression="aql:input.emfEditServices(self).getText(eStructuralFeature)+':'" helpExpression="aql:input.emfEditServices(self).getDescription(eStructuralFeature)" valueExpression="aql:self.eGetMonoRef(eStructuralFeature)" displayExpression="aql:if self.eGetMonoRef(eStructuralFeature) &lt;> null then input.emfEditServices(self.eGetMonoRef(eStructuralFeature)).getText() else '' endif">
+              <actions labelExpression="...">
+                <initialOperation>
+                  <firstModelOperations xsi:type="tool:ExternalJavaAction" name="open select etype dialog" id="org.eclipse.emf.ecoretools.design.action.openSelectModelElementID">
+                    <parameters name="message" value="aql:'Select an ' + eStructuralFeature.eType.name +  ' for the ' + eStructuralFeature.name +  ' reference.'"/>
+                    <parameters name="title" value="aql:'Select ' + eStructuralFeature.eType.name "/>
+                    <parameters name="candidates" value="aql:input.emfEditServices(self).getChoiceOfValues(eStructuralFeature)"/>
+                    <parameters name="feature" value="var:eStructuralFeature"/>
+                    <parameters name="host" value="var:self"/>
+                  </firstModelOperations>
+                </initialOperation>
+              </actions>
+              <actions labelExpression="&#x2205;">
+                <initialOperation>
+                  <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="var:self">
+                    <subModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:input.emfEditServices(self).setValue(eStructuralFeature, null)"/>
+                  </firstModelOperations>
+                </initialOperation>
+              </actions>
+            </widget>
+          </ifs>
+        </controls>
+        <style barStyle="NO_TITLE" toggleStyle="NONE" expandedByDefault="true"/>
+      </groups>
+      <groups name="genmodel opposite instance" labelExpression="aql:self.eClass().name" semanticCandidateExpression="aql:self.eInverse()->select( g | g.eClass().ePackage.nsURI->includes('http://www.eclipse.org/emf/2002/GenModel'))->asSet()" preconditionExpression="" extends="//@extensions.0/@categories.0/@groups.0">
+        <style expandedByDefault="true"/>
+      </groups>
+      <groups name="documentation" labelExpression="Documentation" domainClass="ecore::EModelElement">
+        <controls xsi:type="properties:ContainerDescription" name="documentation_container">
+          <controls xsi:type="properties:TextAreaDescription" name="doc_area" lineCount="16" valueExpression="aql:self.getVisibleDocAnnotations().value">
+            <initialOperation>
+              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:self.setDocAnnotation(newValue)"/>
+            </initialOperation>
+          </controls>
+        </controls>
+        <style barStyle="NO_TITLE" toggleStyle="NONE" expandedByDefault="true"/>
+      </groups>
+      <groups name="generation_navigation" semanticCandidateExpression="aql:self.eInverse()->select( g | g.eClass().ePackage.nsURI->includes('http://www.eclipse.org/emf/2002/GenModel'))->asSet()">
+        <controls xsi:type="properties:ContainerDescription" name="generation_navigation_container">
+          <controls xsi:type="properties:HyperlinkDescription" name="goto sourcecode" isEnabledExpression="aql:self.isJavaFileGenerated()" valueExpression="aql:self" displayExpression="aql:if self.isJavaFileGenerated() then 'Open Java Implementation' else '' endif">
+            <initialOperation>
+              <firstModelOperations xsi:type="tool:ExternalJavaAction" name="open java editor" id="org.eclipse.emf.ecoretools.design.action.openFileInEditorID">
+                <parameters name="path" value="aql:self.getJavaImplementationPath()"/>
+              </firstModelOperations>
+            </initialOperation>
+          </controls>
+        </controls>
+        <style barStyle="NO_TITLE" toggleStyle="NONE" expandedByDefault="true"/>
+      </groups>
+      <groups name="genmodel_directories" labelExpression="Directories" domainClass="genmodel.GenModel" semanticCandidateExpression="aql:(OrderedSet{self} + self.eInverse()  + self.eInverse().eContainer()- self.eContents()- OrderedSet{self.eContainer()})->select(e | e.eClass().ePackage.nsURI->includes('http://www.eclipse.org/emf/2002/GenModel'))->asSet()">
+        <controls xsi:type="properties:TextDescription" name="modelDirectory" labelExpression="Model" valueExpression="aql:self.modelDirectory">
+          <initialOperation>
+            <firstModelOperations xsi:type="tool:SetValue" featureName="modelDirectory" valueExpression="var:newValue"/>
+          </initialOperation>
+        </controls>
+        <controls xsi:type="properties:TextDescription" name="editDirectory" labelExpression="Edit" valueExpression="feature:editDirectory">
+          <initialOperation>
+            <firstModelOperations xsi:type="tool:SetValue" featureName="editDirectory" valueExpression="var:newValue"/>
+          </initialOperation>
+        </controls>
+        <controls xsi:type="properties:TextDescription" name="editorDirectory" labelExpression="Editor" valueExpression="feature:editorDirectory">
+          <initialOperation>
+            <firstModelOperations xsi:type="tool:SetValue" featureName="editorDirectory" valueExpression="var:newValue"/>
+          </initialOperation>
+        </controls>
+        <style barStyle="SHORT_TITLE_BAR" expandedByDefault="true"/>
+      </groups>
+      <groups name="egeneric supertypes-TBD" labelExpression="aql:'EGenericType : ' + input.emfEditServices(self).getText()" domainClass="ecore::EGenericType" semanticCandidateExpression="aql: input.getSemanticElement()->filter(ecore::EClass).eGenericSuperTypes" preconditionExpression="aql:false and self.oclIsKindOf(ecore::EClass)">
+        <controls xsi:type="properties:LabelDescription" name="etypeparameter label" labelExpression="EType Parameter:" valueExpression="aql:self.eTypeArguments->first().eTypeParameter" displayExpression="aql:self.eTypeArguments->first().eTypeParameter.name">
+          <actions labelExpression="...">
+            <initialOperation>
+              <firstModelOperations xsi:type="tool:Let" variableName="eStructuralFeature" valueExpression="aql:self.eClass().getEStructuralFeature('eTypeParameter')">
+                <subModelOperations xsi:type="tool:ExternalJavaAction" name="open select etype dialog" id="org.eclipse.emf.ecoretools.design.action.openSelectModelElementID">
+                  <parameters name="message" value="aql:'Select an ' + eStructuralFeature.eType.name +  ' for the ' + eStructuralFeature.name +  ' reference.'"/>
+                  <parameters name="title" value="aql:'Select ' + eStructuralFeature.eType.name "/>
+                  <parameters name="candidates" value="aql:input.emfEditServices(self).getChoiceOfValues(eStructuralFeature)"/>
+                  <parameters name="feature" value="var:eStructuralFeature"/>
+                  <parameters name="host" value="var:self"/>
+                </subModelOperations>
+              </firstModelOperations>
+            </initialOperation>
+          </actions>
+        </controls>
+        <controls xsi:type="properties:LabelDescription" name="EClassifier label" labelExpression="Classifier:" valueExpression="aql:self.eTypeArguments->at(2).eClassifier" displayExpression="aql:self.eTypeArguments->at(2).eClassifier.name">
+          <actions labelExpression="...">
+            <initialOperation>
+              <firstModelOperations xsi:type="tool:Let" variableName="eStructuralFeature" valueExpression="aql:self.eClass().getEStructuralFeature('eClassifier')">
+                <subModelOperations xsi:type="tool:ExternalJavaAction" name="open select etype dialog" id="org.eclipse.emf.ecoretools.design.action.openSelectModelElementID">
+                  <parameters name="message" value="aql:'Select an ' + eStructuralFeature.eType.name +  ' for the ' + eStructuralFeature.name +  ' reference.'"/>
+                  <parameters name="title" value="aql:'Select ' + eStructuralFeature.eType.name "/>
+                  <parameters name="candidates" value="aql:input.emfEditServices(self).getChoiceOfValues(eStructuralFeature)"/>
+                  <parameters name="feature" value="var:eStructuralFeature"/>
+                  <parameters name="host" value="var:self"/>
+                </subModelOperations>
+              </firstModelOperations>
+            </initialOperation>
+          </actions>
+        </controls>
+      </groups>
+      <groups name="genmodel root" labelExpression="aql:self.eClass().name" semanticCandidateExpression="aql:self->select(e | e.oclIsKindOf(ecore::EPackage)).eInverse()->select( g | g.eClass().ePackage.nsURI->includes('http://www.eclipse.org/emf/2002/GenModel')).eContainer(genmodel::GenModel)->asSet()" preconditionExpression="" extends="//@extensions.0/@categories.0/@groups.0">
+        <style expandedByDefault="true"/>
+      </groups>
+      <groups name="execution_body" labelExpression="aql:self.getExecutableName()" semanticCandidateExpression="aql:OrderedSet{self}->filter(ecore::EClassifier).getAllExecutables()">
+        <controls xsi:type="properties:ContainerDescription" name="container_execution_body">
+          <controls xsi:type="properties:TextAreaDescription" name="executable_body" lineCount="14" valueExpression="aql:self.getExecutableBody()">
+            <initialOperation>
+              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="var:self">
+                <subModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:self.setExecutableBody(newValue)"/>
+              </firstModelOperations>
+            </initialOperation>
+          </controls>
+        </controls>
+        <validationSet>
+          <semanticValidationRules name="isValidSyntax" level="ERROR" message="Syntax error in body" targetClass="EObject">
+            <audits auditExpression="aql:self.isValidBody()"/>
+          </semanticValidationRules>
+        </validationSet>
+        <style barStyle="NO_TITLE" toggleStyle="NONE" expandedByDefault="true"/>
+      </groups>
+      <groups name="execution_imports" labelExpression="Imports" domainClass="ecore::EModelElement" semanticCandidateExpression="aql:OrderedSet{self}->filter(ecore::EPackage)->select(p | p.getJavaImports()->size() > 0)">
+        <controls xsi:type="properties:ButtonDescription" name="execution_button_addimport" buttonLabelExpression="Add New Import">
+          <initialOperation>
+            <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="var:self"/>
+          </initialOperation>
+        </controls>
+        <controls xsi:type="properties:ContainerDescription" name="execution_imports_container">
+          <controls xsi:type="properties:DynamicMappingForDescription" name="iterate over imports" iterator="jImport" iterableExpression="aql:self.getJavaImports()">
+            <ifs name="true" predicateExpression="aql:true">
+              <widget xsi:type="properties:TextDescription" name="java_import" labelExpression="Qualified Class Name: " valueExpression="aql:jImport.getQualifiedName()">
+                <initialOperation>
+                  <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:jImport.setQualifiedName(newValue)"/>
+                </initialOperation>
+              </widget>
+            </ifs>
+            <ifs name="true" predicateExpression="aql:true">
+              <widget xsi:type="properties:ButtonDescription" name="execution_remove_import" buttonLabelExpression="Remove Import">
+                <initialOperation>
+                  <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="var:jImport">
+                    <subModelOperations xsi:type="tool:RemoveElement"/>
+                  </firstModelOperations>
+                </initialOperation>
+              </widget>
+            </ifs>
+          </controls>
+          <layout xsi:type="properties:FillLayoutDescription" orientation="HORIZONTAL"/>
+        </controls>
+        <style expandedByDefault="true"/>
+      </groups>
+      <groups name="eoperation parameters dynamic mapping" labelExpression="Parameters" domainClass="ecore::EOperation" semanticCandidateExpression="var:self">
+        <controls xsi:type="properties:ContainerDescription" name="parameters_container">
+          <controls xsi:type="properties:DynamicMappingForDescription" name="foreach parameter" iterator="self" iterableExpression="aql:self.eParameters" forceRefresh="true">
+            <ifs name="always true" predicateExpression="aql:true">
+              <widget xsi:type="properties:TextDescription" name="param_name" labelExpression="Name: " valueExpression="aql:self.name">
+                <initialOperation>
+                  <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="var:self">
+                    <subModelOperations xsi:type="tool:SetValue" featureName="name" valueExpression="var:newValue"/>
+                  </firstModelOperations>
+                </initialOperation>
+                <style labelFontSizeExpression="8">
+                  <labelFontFormat>italic</labelFontFormat>
+                </style>
+              </widget>
+            </ifs>
+            <ifs name="always true" predicateExpression="aql:true">
+              <widget xsi:type="properties:LabelDescription" name="etype label" labelExpression="EType: " valueExpression="aql:self.eGet('eType')" displayExpression="aql:self.eGet('eType').name">
+                <style labelFontSizeExpression="8">
+                  <labelFontFormat>italic</labelFontFormat>
+                </style>
+                <actions labelExpression="...">
+                  <initialOperation>
+                    <firstModelOperations xsi:type="tool:ExternalJavaAction" name="open select etype dialog" id="org.eclipse.emf.ecoretools.design.action.openSelectModelElementID">
+                      <parameters name="message" value="aql:'Select an EClass for the eType reference.'"/>
+                      <parameters name="title" value="aql:'Select EClass'"/>
+                      <parameters name="candidates" value="aql:input.emfEditServices(self).getChoiceOfValues(self.eClass().getEStructuralFeature('eType'))"/>
+                      <parameters name="feature" value="aql:self.eClass().getEStructuralFeature('eType')"/>
+                      <parameters name="host" value="var:self"/>
+                    </firstModelOperations>
+                  </initialOperation>
+                </actions>
+                <actions labelExpression="&#x2205;">
+                  <initialOperation>
+                    <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="var:self">
+                      <subModelOperations xsi:type="tool:SetValue" featureName="eType" valueExpression="aql:null"/>
+                    </firstModelOperations>
+                  </initialOperation>
+                </actions>
+              </widget>
+            </ifs>
+            <ifs name="always true" predicateExpression="aql:true">
+              <widget xsi:type="properties:ButtonDescription" name="up" isEnabledExpression="aql:self.precedingSiblings()->filter(ecore::EParameter)->size() > 0" imageExpression="/org.eclipse.emf.ecoretools.design/icons/full/etools16/up.gif">
+                <initialOperation>
+                  <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="var:self">
+                    <subModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:self.moveUpInContainer()"/>
+                  </firstModelOperations>
+                </initialOperation>
+              </widget>
+            </ifs>
+            <ifs name="always true" predicateExpression="aql:true">
+              <widget xsi:type="properties:ButtonDescription" name="down" isEnabledExpression="aql:self.precedingSiblings()->filter(ecore::EParameter)->size() +1 &lt; self.eContainer(ecore::EOperation).eParameters->size()" imageExpression="/org.eclipse.emf.ecoretools.design/icons/full/etools16/down.gif">
+                <initialOperation>
+                  <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="var:self">
+                    <subModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:self.moveDownInContainer()"/>
+                  </firstModelOperations>
+                </initialOperation>
+              </widget>
+            </ifs>
+            <ifs name="always true" predicateExpression="aql:true">
+              <widget xsi:type="properties:ButtonDescription" name="del" imageExpression="/org.eclipse.emf.ecoretools.design/icons/full/etools16/unset.gif">
+                <initialOperation>
+                  <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="var:self">
+                    <subModelOperations xsi:type="tool:RemoveElement"/>
+                  </firstModelOperations>
+                </initialOperation>
+              </widget>
+            </ifs>
+          </controls>
+          <layout xsi:type="properties:GridLayoutDescription" numberOfColumns="5"/>
+        </controls>
+        <controls xsi:type="properties:DynamicMappingForDescription" name="dummy_workaround_bug515586" iterator="d" iterableExpression="aql:self" forceRefresh="true">
+          <ifs name="always false" predicateExpression="aql:false">
+            <widget xsi:type="properties:TextDescription" name="dummy">
+              <initialOperation>
+                <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="var:self"/>
+              </initialOperation>
+            </widget>
+          </ifs>
+        </controls>
+        <style expandedByDefault="true"/>
+        <actions tooltipExpression="Add New Parameter" imageExpression="/org.eclipse.emf.ecore.edit/icons/full/ctool16/CreateEOperation_eParameters_EParameter.gif">
+          <initialOperation>
+            <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="var:self">
+              <subModelOperations xsi:type="tool:CreateInstance" typeName="ecore::EParameter" referenceName="eParameters">
+                <subModelOperations xsi:type="tool:SetValue" featureName="name" valueExpression="aql:'param' + self.eContainer().eContents()->filter(ecore::EParameter)->size()"/>
+              </subModelOperations>
+            </firstModelOperations>
+          </initialOperation>
+        </actions>
+      </groups>
+      <groups name="eannotation dynamic" labelExpression="aql:'EAnnotation ' + self.source" domainClass="ecore::EAnnotation" semanticCandidateExpression="aql:input.getSemanticElement()->filter(ecore::EModelElement).eAnnotations">
+        <controls xsi:type="properties:TextDescription" name="source" labelExpression="Source:" helpExpression="aql:input.emfEditServices(self).getDescription(self.eClass().getEStructuralFeature('source'))" valueExpression="aql:self.source">
+          <initialOperation>
+            <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="var:self">
+              <subModelOperations xsi:type="tool:SetValue" featureName="source" valueExpression="var:newValue"/>
+            </firstModelOperations>
+          </initialOperation>
+        </controls>
+        <controls xsi:type="properties-ext-widgets-reference:ExtReferenceDescription" name="references ref" labelExpression="aql:input.emfEditServices(self).getText(self.eClass().getEStructuralFeature('references'))+':'" helpExpression="aql:input.emfEditServices(self).getDescription(self.eClass().getEStructuralFeature('references'))" referenceNameExpression="references" referenceOwnerExpression="aql:self"/>
+        <controls xsi:type="properties:ContainerDescription" name="eannota_buttons">
+          <controls xsi:type="properties:ButtonDescription" name="eannotation_add_entry" buttonLabelExpression="Add Entry">
+            <initialOperation>
+              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="var:self">
+                <subModelOperations xsi:type="tool:CreateInstance" typeName="ecore.EStringToStringMapEntry" referenceName="details"/>
+              </firstModelOperations>
+            </initialOperation>
+          </controls>
+        </controls>
+        <controls xsi:type="properties:ContainerDescription" name="eannotation_conainer_entries">
+          <controls xsi:type="properties:DynamicMappingForDescription" name="iterate over entries" iterator="self" iterableExpression="aql:self.details" forceRefresh="true">
+            <ifs name="always_true" predicateExpression="aql:true">
+              <widget xsi:type="properties:TextDescription" name="detail_key" labelExpression="Key:" valueExpression="aql:self.key">
+                <initialOperation>
+                  <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="var:self">
+                    <subModelOperations xsi:type="tool:SetValue" featureName="key" valueExpression="var:newValue"/>
+                  </firstModelOperations>
+                </initialOperation>
+              </widget>
+            </ifs>
+            <ifs name="always_true" predicateExpression="aql:true">
+              <widget xsi:type="properties:TextDescription" name="detail_value" labelExpression="Value:" valueExpression="aql:self.value">
+                <initialOperation>
+                  <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="var:self">
+                    <subModelOperations xsi:type="tool:SetValue" featureName="value" valueExpression="var:newValue"/>
+                  </firstModelOperations>
+                </initialOperation>
+              </widget>
+            </ifs>
+            <ifs name="always_true" predicateExpression="aql:true">
+              <widget xsi:type="properties:ButtonDescription" name="del" helpExpression="Delete the entry" imageExpression="/org.eclipse.emf.ecoretools.design/icons/full/etools16/unset.gif">
+                <initialOperation>
+                  <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="var:self">
+                    <subModelOperations xsi:type="tool:RemoveElement"/>
+                  </firstModelOperations>
+                </initialOperation>
+              </widget>
+            </ifs>
+          </controls>
+          <layout xsi:type="properties:GridLayoutDescription" numberOfColumns="3"/>
+        </controls>
+        <controls xsi:type="properties:DynamicMappingForDescription" name="dummy_workaround_bug515586" iterator="d" iterableExpression="aql:self" forceRefresh="true">
+          <ifs name="always false" predicateExpression="aql:false">
+            <widget xsi:type="properties:TextDescription" name="dummy_text">
+              <initialOperation>
+                <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="var:self"/>
+              </initialOperation>
+            </widget>
+          </ifs>
+        </controls>
+        <style toggleStyle="TREE_NODE" expandedByDefault="true"/>
+        <actions tooltipExpression="Delete EAnnotation" imageExpression="/org.eclipse.emf.ecoretools.design/icons/full/etools16/unset.gif">
+          <initialOperation>
+            <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="var:self">
+              <subModelOperations xsi:type="tool:RemoveElement"/>
+            </firstModelOperations>
+          </initialOperation>
+        </actions>
+      </groups>
+    </categories>
+  </extensions>
 </description:Group>
diff --git a/org.eclipse.emf.ecoretools.design/icons/full/etools16/create.gif b/org.eclipse.emf.ecoretools.design/icons/full/etools16/create.gif
new file mode 100644
index 0000000..252d7eb
--- /dev/null
+++ b/org.eclipse.emf.ecoretools.design/icons/full/etools16/create.gif
Binary files differ
diff --git a/org.eclipse.emf.ecoretools.design/icons/full/etools16/down.gif b/org.eclipse.emf.ecoretools.design/icons/full/etools16/down.gif
new file mode 100644
index 0000000..072b184
--- /dev/null
+++ b/org.eclipse.emf.ecoretools.design/icons/full/etools16/down.gif
Binary files differ
diff --git a/org.eclipse.emf.ecoretools.design/icons/full/etools16/generate.gif b/org.eclipse.emf.ecoretools.design/icons/full/etools16/generate.gif
new file mode 100644
index 0000000..48e6dc4
--- /dev/null
+++ b/org.eclipse.emf.ecoretools.design/icons/full/etools16/generate.gif
Binary files differ
diff --git a/org.eclipse.emf.ecoretools.design/icons/full/etools16/generate_single.gif b/org.eclipse.emf.ecoretools.design/icons/full/etools16/generate_single.gif
new file mode 100644
index 0000000..57a3150
--- /dev/null
+++ b/org.eclipse.emf.ecoretools.design/icons/full/etools16/generate_single.gif
Binary files differ
diff --git a/org.eclipse.emf.ecoretools.design/icons/full/etools16/unset.gif b/org.eclipse.emf.ecoretools.design/icons/full/etools16/unset.gif
new file mode 100644
index 0000000..b6922ac
--- /dev/null
+++ b/org.eclipse.emf.ecoretools.design/icons/full/etools16/unset.gif
Binary files differ
diff --git a/org.eclipse.emf.ecoretools.design/icons/full/etools16/up.gif b/org.eclipse.emf.ecoretools.design/icons/full/etools16/up.gif
new file mode 100644
index 0000000..0716475
--- /dev/null
+++ b/org.eclipse.emf.ecoretools.design/icons/full/etools16/up.gif
Binary files differ
diff --git a/org.eclipse.emf.ecoretools.design/src/org/eclipse/emf/ecoretools/design/service/ALEServices.java b/org.eclipse.emf.ecoretools.design/src/org/eclipse/emf/ecoretools/design/service/ALEServices.java
new file mode 100644
index 0000000..8c13d71
--- /dev/null
+++ b/org.eclipse.emf.ecoretools.design/src/org/eclipse/emf/ecoretools/design/service/ALEServices.java
@@ -0,0 +1,133 @@
+/*******************************************************************************
+ * Copyright (c) 2017 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.emf.ecoretools.design.service;
+
+import java.util.List;
+
+import org.eclipse.emf.ecore.EClassifier;
+import org.eclipse.emf.ecore.EModelElement;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import com.google.common.collect.Lists;
+
+public class ALEServices {
+
+	public static boolean isConfiguredForALE(EPackage pak) {
+		return false;
+	}
+
+	public static void configureForALE(EPackage pak) {
+	}
+
+	/**
+	 * Should return all the "things" which can be launched from the given
+	 * EClassifier.
+	 * 
+	 * @param clazz
+	 * @return
+	 */
+	public static List<? extends EObject> getAllExecutables(EClassifier clazz) {
+		return Lists.newArrayList(clazz);
+	}
+
+	public static EObject addExecutable(EClassifier clazz) {
+		return null;
+	}
+
+	/**
+	 * return the simple name for something which can be executed, a name which
+	 * would be unambiguous for a user which has to pick among many.
+	 * 
+	 * @param anExecutable
+	 * @return the simple name for something which can be executed.
+	 */
+	public static String getExecutableName(EObject anExecutable) {
+		return "ALE body";
+	}
+
+	/**
+	 * Return the executable body as text from the given EObject.
+	 * 
+	 * @param anExecutable
+	 *            something which can be executed.
+	 * @return Return the executable body as text.
+	 */
+	public static String getExecutableBody(EObject anExecutable) {
+		return "";
+	}
+
+	/**
+	 * Set the executable body for the given EObject.
+	 * 
+	 * @param anExecutable
+	 *            something which can be executed.
+	 * @param newBody:
+	 *            body to set.
+	 */
+	public static void setExecutableBody(EObject anExecutable, String newBody) {
+	}
+
+	/**
+	 * return true if the body is syntactically and semantically correct.
+	 * 
+	 * @param anExecutable
+	 *            something which can be executed.
+	 */
+	public static boolean isValidBody(EObject anExecutable) {
+		return false;
+	}
+
+	/**
+	 * return true if some executables are associated with this element.
+	 * 
+	 * @param e
+	 *            any thing from Ecore.
+	 * @return true if some executables are associated with this element.
+	 */
+	public static boolean hasExecutables(EModelElement e) {
+		return false;
+	}
+
+	public static List<EObject> getJavaImports(EModelElement e) {
+		List<EObject> result = Lists.newArrayList();
+		if (e instanceof EPackage) {
+			result.add(e);
+		}
+		return result;
+	}
+
+	public static String getQualifiedName(EObject javaImport) {
+		return "com.mycompany.dsl.Service";
+	}
+
+	public static EObject setQualifiedName(EObject javaImport, String newVal) {
+		return javaImport;
+	}
+
+	public static boolean isValidImport(EObject javaImport) {
+		return true;
+	}
+
+	/**
+	 * Configure a sourceviewer to provide completion & validation, might be
+	 * called each time the selection changes.
+	 * 
+	 * @param anExecutable
+	 *            something which can be executed.
+	 * @param sourceViewer
+	 *            the sourceViewer
+	 */
+	public static void configureSourceViewer(EObject anExecutable, Object sourceViewer) {
+
+	}
+
+}
diff --git a/org.eclipse.emf.ecoretools.design/src/org/eclipse/emf/ecoretools/design/service/DesignServices.java b/org.eclipse.emf.ecoretools.design/src/org/eclipse/emf/ecoretools/design/service/DesignServices.java
index 821606b..c56674b 100644
--- a/org.eclipse.emf.ecoretools.design/src/org/eclipse/emf/ecoretools/design/service/DesignServices.java
+++ b/org.eclipse.emf.ecoretools.design/src/org/eclipse/emf/ecoretools/design/service/DesignServices.java
@@ -110,20 +110,20 @@
 	 *         or an empty collection if <code>any</code> is not inside a
 	 *         resource-set.
 	 */
-	public Collection<EObject> allRoots(EObject any) {
+	public List<EObject> allRoots(EObject any) {
 		Resource res = any.eResource();
 		if (res != null && res.getResourceSet() != null) {
-			Collection<EObject> roots = new ArrayList<EObject>();
+			List<EObject> roots = new ArrayList<EObject>();
 			for (Resource childRes : res.getResourceSet().getResources()) {
 				roots.addAll(childRes.getContents());
 			}
 			return roots;
 		} else {
-			return Collections.emptySet();
+			return Collections.emptyList();
 		}
 	}
 
-	public Collection<EPackage> rootEPackages(EObject any) {
+	public Set<EPackage> rootEPackages(EObject any) {
 		return Sets.newLinkedHashSet(Iterables.filter(allRoots(any), EPackage.class));
 	}
 
@@ -164,7 +164,7 @@
 		return null;
 	}
 
-	public Collection<EStringToStringMapEntryImpl> getVisibleDocAnnotations(EObject self, DSemanticDiagram diag) {
+	public Set<EStringToStringMapEntryImpl> getVisibleDocAnnotations(EObject self, DSemanticDiagram diag) {
 		// [diagram.getDisplayedEModelElements().oclAsType(ecore::EModelElement).eAnnotations.details->select(key
 		// = 'documentation')/]
 		Set<EStringToStringMapEntryImpl> result = Sets.newLinkedHashSet();
@@ -186,7 +186,7 @@
 		return result;
 	}
 
-	public Collection<EStringToStringMapEntryImpl> getVisibleConstraintsAnnotations(EObject self,
+	public Set<EStringToStringMapEntryImpl> getVisibleConstraintsAnnotations(EObject self,
 			DSemanticDiagram diag) {
 		Set<EStringToStringMapEntryImpl> result = Sets.newLinkedHashSet();
 		for (EModelElement displayed : getDisplayedEModelElements(diag)) {
@@ -319,7 +319,7 @@
 		return result;
 	}
 
-	public Collection<EClass> getExternalEClasses(EPackage root, DSemanticDiagram diagram) {
+	public Set<EClass> getExternalEClasses(EPackage root, DSemanticDiagram diagram) {
 
 		Set<EClass> related = Sets.newLinkedHashSet();
 		Set<EClass> eClasses = getInternalEClasses(diagram);
@@ -333,7 +333,7 @@
 		return Sets.difference(related, eClasses);
 	}
 
-	public Collection<EReference> getEReferencesToDisplay(EPackage root, DSemanticDiagram diagram) {
+	public Set<EReference> getEReferencesToDisplay(EPackage root, DSemanticDiagram diagram) {
 		// [diagram.getDisplayedEClasses().oclAsType(ecore::EClass).eAllReferences->flatten()/]
 		Collection<EClass> eClasses = getDisplayedEClasses(diagram);
 		Set<EReference> eRefs = Sets.newLinkedHashSet();
@@ -366,7 +366,7 @@
 		}).sortedCopy(allRefs);
 	}
 
-	public Collection<EModelElement> getDisplayedEModelElements(DSemanticDiagram diagram) {
+	public Set<EModelElement> getDisplayedEModelElements(DSemanticDiagram diagram) {
 		Set<EModelElement> modelelements = Sets.newLinkedHashSet();
 		Iterator<DSemanticDecorator> it = Iterators.filter(Iterators.concat(Iterators.singletonIterator(diagram),
 				new DDiagramQuery(diagram).getAllDiagramElements().iterator()), DSemanticDecorator.class);
@@ -388,7 +388,7 @@
 		return allValidSessionElements(element, validForClassDiagram);
 	}
 
-	public Collection<EObject> getRelated(EObject firstView, List<EObject> allSelectedViews, DDiagram diag) {
+	public Set<EObject> getRelated(EObject firstView, List<EObject> allSelectedViews, DDiagram diag) {
 		Set<EObject> relateds = Sets.newLinkedHashSet();
 		for (DSemanticDecorator decorator : Iterables.filter(allSelectedViews, DSemanticDecorator.class)) {
 			relateds.addAll(new RelatedElementsSwitch().getRelatedElements(decorator.getTarget()));
@@ -396,7 +396,7 @@
 		return relateds;
 	}
 
-	public Collection<EObject> getRelated(EObject firstView, EObject aView, DDiagram diag) {
+	public Set<EObject> getRelated(EObject firstView, EObject aView, DDiagram diag) {
 		return getRelated(firstView, Lists.newArrayList(aView), diag);
 	}
 
diff --git a/org.eclipse.emf.ecoretools.design/src/org/eclipse/emf/ecoretools/design/service/EReferenceServices.java b/org.eclipse.emf.ecoretools.design/src/org/eclipse/emf/ecoretools/design/service/EReferenceServices.java
index e398896..e9c3df6 100644
--- a/org.eclipse.emf.ecoretools.design/src/org/eclipse/emf/ecoretools/design/service/EReferenceServices.java
+++ b/org.eclipse.emf.ecoretools.design/src/org/eclipse/emf/ecoretools/design/service/EReferenceServices.java
@@ -318,7 +318,7 @@
         } else {
             try {
                 return Integer.parseInt(bound.trim());
-            } catch (NumberFormatException _) {
+            } catch (NumberFormatException e) {
                 return null;
             }
         }
diff --git a/org.eclipse.emf.ecoretools.design/src/org/eclipse/emf/ecoretools/design/service/PropertiesServices.java b/org.eclipse.emf.ecoretools.design/src/org/eclipse/emf/ecoretools/design/service/PropertiesServices.java
new file mode 100644
index 0000000..e09f22d
--- /dev/null
+++ b/org.eclipse.emf.ecoretools.design/src/org/eclipse/emf/ecoretools/design/service/PropertiesServices.java
@@ -0,0 +1,262 @@
+/*******************************************************************************
+ * Copyright (c) 2017 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.emf.ecoretools.design.service;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.List;
+
+import org.eclipse.emf.codegen.ecore.genmodel.GenClass;
+import org.eclipse.emf.codegen.ecore.genmodel.GenClassifier;
+import org.eclipse.emf.codegen.ecore.genmodel.GenEnum;
+import org.eclipse.emf.codegen.ecore.genmodel.GenEnumLiteral;
+import org.eclipse.emf.codegen.ecore.genmodel.GenFeature;
+import org.eclipse.emf.codegen.ecore.genmodel.GenModelPackage;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EAnnotation;
+import org.eclipse.emf.ecore.EModelElement;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EParameter;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.ETypedElement;
+import org.eclipse.emf.ecore.EcoreFactory;
+import org.eclipse.emf.ecore.EcorePackage;
+import org.eclipse.emf.ecore.impl.EStringToStringMapEntryImpl;
+
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Ordering;
+
+/**
+ * The services class used by the Properties View support.
+ */
+public class PropertiesServices {
+
+	protected static final String GEN_MODEL_PACKAGE_NS_URI = "http://www.eclipse.org/emf/2002/GenModel";
+
+	public List<EStructuralFeature> removeFeaturesToHide(EObject ctx, Collection<EStructuralFeature> unfiltered) {
+		List<EStructuralFeature> toBeFilterd = Lists.newArrayList(unfiltered);
+		toBeFilterd.remove(GenModelPackage.Literals.GEN_CLASS__ECORE_CLASS);
+		toBeFilterd.remove(GenModelPackage.Literals.GEN_PACKAGE__ECORE_PACKAGE);
+		toBeFilterd.remove(GenModelPackage.Literals.GEN_CLASS__ECORE_CLASS);
+		toBeFilterd.remove(GenModelPackage.Literals.GEN_FEATURE__ECORE_FEATURE);
+		if (ctx instanceof EReference) {
+			toBeFilterd.remove(EcorePackage.Literals.ESTRUCTURAL_FEATURE__DEFAULT_VALUE_LITERAL);
+		}
+		toBeFilterd.remove(GenModelPackage.Literals.GEN_ENUM__ECORE_ENUM);
+		toBeFilterd.remove(GenModelPackage.Literals.GEN_TYPE_PARAMETER__ECORE_TYPE_PARAMETER);
+
+		PriorityComparator<EStructuralFeature> comparator = new PriorityComparator<EStructuralFeature>(ImmutableList.of(
+				EcorePackage.Literals.ENAMED_ELEMENT__NAME, EcorePackage.Literals.ETYPED_ELEMENT__ETYPE,
+				EcorePackage.Literals.ETYPED_ELEMENT__LOWER_BOUND, EcorePackage.Literals.ETYPED_ELEMENT__UPPER_BOUND,
+				EcorePackage.Literals.ECLASSIFIER__INSTANCE_CLASS_NAME,
+				EcorePackage.Literals.ECLASSIFIER__INSTANCE_TYPE_NAME,
+				EcorePackage.Literals.ESTRUCTURAL_FEATURE__DEFAULT_VALUE_LITERAL,
+				EcorePackage.Literals.EREFERENCE__EOPPOSITE, EcorePackage.Literals.EREFERENCE__CONTAINMENT,
+				EcorePackage.Literals.ESTRUCTURAL_FEATURE__TRANSIENT,
+				EcorePackage.Literals.ESTRUCTURAL_FEATURE__DERIVED));
+		/*
+		 * reorder features
+		 */
+
+		return Ordering.from(comparator).sortedCopy(toBeFilterd);
+	}
+
+	class PriorityComparator<T> implements Comparator<T> {
+		private final List<T> values;
+
+		public PriorityComparator(List<T> values) {
+			this.values = values;
+		}
+
+		@Override
+		public int compare(T o1, T o2) {
+			int idx1 = values.indexOf(o1);
+			int idx2 = values.indexOf(o2);
+			if (idx1 > -1) {
+				return idx2 > -1 ? idx1 - idx2 : -1;
+			}
+			return idx2 > -1 ? 1 : 0;
+		}
+	}
+
+	public List<EObject> removeSemanticElementsToHide(EObject ctx, Collection<EObject> unfiltered) {
+		List<EObject> filtered = Lists.newArrayList();
+		for (EObject eObject : unfiltered) {
+			if (!(eObject instanceof EParameter)) {
+				filtered.add(eObject);
+			}
+		}
+		return filtered;
+	}
+
+	public EStringToStringMapEntryImpl getVisibleDocAnnotations(EObject self) {
+		if (self instanceof EModelElement) {
+			EAnnotation eAnnot = ((EModelElement) self).getEAnnotation(GEN_MODEL_PACKAGE_NS_URI);
+			if (eAnnot != null) {
+				for (EStringToStringMapEntryImpl mapEntry : Iterables.filter(eAnnot.getDetails(),
+						EStringToStringMapEntryImpl.class)) {
+					if ("documentation".equals(mapEntry.getKey())) {
+						return mapEntry;
+					}
+				}
+			}
+
+		} else if (self instanceof EAnnotation) {
+			for (EStringToStringMapEntryImpl mapEntry : Iterables.filter(((EAnnotation) self).getDetails(),
+					EStringToStringMapEntryImpl.class)) {
+				if ("documentation".equals(mapEntry.getKey())) {
+					return mapEntry;
+				}
+			}
+		} else if (self instanceof EStringToStringMapEntryImpl) {
+			if ("documentation".equals(((EStringToStringMapEntryImpl) self).getKey())) {
+				return (EStringToStringMapEntryImpl) self;
+			}
+		}
+		return null;
+	}
+
+	public EObject setDocAnnotation(EObject self, String value) {
+		if (self instanceof EModelElement) {
+			EAnnotation eAnnot = ((EModelElement) self).getEAnnotation(GEN_MODEL_PACKAGE_NS_URI);
+			if (eAnnot != null) {
+				for (EStringToStringMapEntryImpl mapEntry : Iterables.filter(eAnnot.getDetails(),
+						EStringToStringMapEntryImpl.class)) {
+					if ("documentation".equals(mapEntry.getKey())) {
+						mapEntry.setValue(value);
+					}
+				}
+			} else {
+				EAnnotation newAnnot = EcoreFactory.eINSTANCE.createEAnnotation();
+				newAnnot.setSource(GEN_MODEL_PACKAGE_NS_URI);
+				newAnnot.getDetails().put("documentation", value);
+				((EModelElement) self).getEAnnotations().add(newAnnot);
+			}
+
+		} else if (self instanceof EAnnotation) {
+			for (EStringToStringMapEntryImpl mapEntry : Iterables.filter(((EAnnotation) self).getDetails(),
+					EStringToStringMapEntryImpl.class)) {
+				if ("documentation".equals(mapEntry.getKey())) {
+					mapEntry.setValue(value);
+				}
+			}
+
+		} else if (self instanceof EStringToStringMapEntryImpl) {
+			if ("documentation".equals(((EStringToStringMapEntryImpl) self).getKey())) {
+				((EStringToStringMapEntryImpl) self).setValue(value);
+			}
+		}
+		return self;
+	}
+
+	public boolean isJavaFileGenerated(EObject cur) {
+		URI javaImplementationURI = getJavaImplementationURI(cur);
+		if (javaImplementationURI != null && cur.eResource() != null && cur.eResource().getResourceSet() != null
+				&& cur.eResource().getResourceSet().getURIConverter() != null) {
+			return cur.eResource().getResourceSet().getURIConverter().exists(javaImplementationURI,
+					Collections.EMPTY_MAP);
+		}
+		return false;
+	}
+
+	public String getJavaImplementationPath(EObject cur) {
+		URI targetFile = getJavaImplementationURI(cur);
+		if (targetFile != null) {
+			return targetFile.toString();
+		}
+		return null;
+	}
+
+	private URI getJavaImplementationURI(EObject cur) {
+		GenClassifier gClass = null;
+		if (cur instanceof GenFeature) {
+			gClass = ((GenFeature) cur).getGenClass();
+		}
+		if (cur instanceof GenEnumLiteral) {
+			gClass = ((GenEnumLiteral) cur).getGenEnum();
+		}
+		if (cur instanceof GenClassifier) {
+			gClass = (GenClassifier) cur;
+		}
+		if (cur instanceof GenEnum) {
+			gClass = (GenClassifier) cur;
+		}
+		String className = "";
+		if (gClass instanceof GenClass) {
+			className = ((GenClass) gClass).getClassName();
+		} else if (gClass instanceof GenEnum) {
+			className = ((GenEnum) gClass).getClassifierInstanceName();
+		}
+
+		if (gClass != null && gClass.getGenPackage() != null) {
+			String packageName = gClass.getGenPackage().getClassPackageName();
+			URI targetDirectory = URI.createURI(gClass.getGenPackage().getGenModel().getModelDirectory())
+					.appendSegments(packageName.split("\\."));
+			URI targetFile = targetDirectory.appendSegment(className + ".java");
+			return targetFile;
+		}
+		return null;
+	}
+
+	public String upperBoundDisplay(ETypedElement host) {
+		if (host.getUpperBound() == -1) {
+			return "*";
+		}
+		return Integer.valueOf(host.getUpperBound()).toString();
+	}
+
+	public ETypedElement setUpperBound(ETypedElement host, String newValue) {
+		if ("*".equals(newValue)) {
+			host.setUpperBound(-1);
+		} else {
+			host.setUpperBound(Integer.valueOf(newValue));
+		}
+		return host;
+	}
+
+	public EObject eGetMonoRef(EObject cur, EStructuralFeature ref) {
+		return (EObject) cur.eGet(ref);
+	}
+
+	public EObject moveUpInContainer(EObject cur) {
+		EObject container = cur.eContainer();
+		if (container != null) {
+			EList<EObject> siblings = (EList<EObject>) container.eGet(cur.eContainingFeature());
+			int oldPosition = siblings.indexOf(cur);
+			int newPosition = oldPosition - 1;
+			if (newPosition < 0) {
+				newPosition = 0;
+			}
+			siblings.move(newPosition, cur);
+		}
+		return cur;
+	}
+
+	public EObject moveDownInContainer(EObject cur) {
+		EObject container = cur.eContainer();
+		if (container != null) {
+			EList<EObject> siblings = (EList<EObject>) container.eGet(cur.eContainingFeature());
+			int oldPosition = siblings.indexOf(cur);
+			int newPosition = oldPosition + 1;
+			if (newPosition > siblings.size() - 1) {
+				newPosition = siblings.size() - 1;
+			}
+			siblings.move(newPosition, cur);
+		}
+		return cur;
+	}
+
+}
diff --git a/org.eclipse.emf.ecoretools.properties/plugin.xml b/org.eclipse.emf.ecoretools.properties/plugin.xml
index bb14e0f..3cabc68 100644
--- a/org.eclipse.emf.ecoretools.properties/plugin.xml
+++ b/org.eclipse.emf.ecoretools.properties/plugin.xml
@@ -12,209 +12,5 @@
   $Id: plugin.xml,v 1.7 2009/05/06 13:16:50 jlescot Exp $
 -->
 <plugin>
-   <extension point="org.eclipse.ui.views.properties.tabbed.propertyTabs">
-      <propertyTabs contributorId="org.eclipse.emf.ecoretools.diagram">        
-         <propertyTab
-               afterTab="Base"
-               category="domain"
-               id="org.eclipse.emf.ecoretools.diagram.modelTab.parameterTab"
-               indented="true"
-               label="%propertyTab.parameter"/>
-         <propertyTab
-               afterTab="org.eclipse.emf.ecoretools.diagram.modelTab.parameterTab"
-               category="domain"
-               id="org.eclipse.emf.ecoretools.diagram.eAnnotationTab"
-               image="icons/view16/eannotation_tab.gif"
-               label="%propertyTab.annotation">
-         </propertyTab>
-         <propertyTab
-               afterTab="org.eclipse.emf.ecoretools.diagram.eAnnotationTab"
-               category="domain"
-               id="org.eclipse.emf.ecoretools.diagram.ecore.properties.extendedMetadata"
-               indented="true"
-               label="%propertyTab.extended.metadata"/>
-         <propertyTab
-               afterTab="org.eclipse.emf.ecoretools.diagram.ecore.properties.extendedMetadata"
-               category="domain"
-               id="org.eclipse.emf.ecoretools.diagram.genModelDoc"
-               image="icons/view16/doc_tab.gif"
-               indented="true"
-               label="%propertyTab.genmodel.doc">
-         </propertyTab>
-         <propertyTab
-               category="documentation"
-               id="org.eclipse.emf.ecoretools.diagram.genModel"
-               label="%propertyTab.genmodel">
-         </propertyTab>
-      </propertyTabs>
-   </extension>
 
-   <extension point="org.eclipse.ui.views.properties.tabbed.propertySections">
-      <propertySections contributorId="org.eclipse.emf.ecoretools.diagram">
-      <propertySection
-            class="org.eclipse.emf.ecoretools.properties.internal.sections.EOperationParameterSection"
-            id="org.eclipse.emf.ecoretools.diagram.ecore.parameterSection"
-            tab="org.eclipse.emf.ecoretools.diagram.modelTab.parameterTab">
-         <input type="org.eclipse.emf.ecore.EOperation"/>
-      </propertySection>	          
-
-		  <!-- Extended Metadata Sections -->
-	     <propertySection
-	        class="org.eclipse.emf.ecoretools.properties.internal.metadata.QualifiedSection"
-	        id="org.eclipse.emf.ecoretools.diagram.ecore.properties.extendedMetadata.Qualified"
-	        tab="org.eclipse.emf.ecoretools.diagram.ecore.properties.extendedMetadata">
-	        <input type="org.eclipse.emf.ecore.EPackage"/>
-	     </propertySection>
-	     <propertySection
-	        class="org.eclipse.emf.ecoretools.properties.internal.metadata.AffiliationSection"
-	        id="org.eclipse.emf.ecoretools.diagram.ecore.properties.extendedMetadata.Affiliation"
-	        tab="org.eclipse.emf.ecoretools.diagram.ecore.properties.extendedMetadata">
-	        <input type="org.eclipse.emf.ecore.EStructuralFeature"/>
-	     </propertySection>
-	     <propertySection
-	        class="org.eclipse.emf.ecoretools.properties.internal.metadata.WildcardsSection"
-	        id="org.eclipse.emf.ecoretools.diagram.ecore.properties.extendedMetadata.Wildcards"
-	        tab="org.eclipse.emf.ecoretools.diagram.ecore.properties.extendedMetadata">
-	        <input type="org.eclipse.emf.ecore.EStructuralFeature"/>
-	     </propertySection>
-	     <propertySection
-	        class="org.eclipse.emf.ecoretools.properties.internal.metadata.PatternFacetSection"
-	        id="org.eclipse.emf.ecoretools.diagram.ecore.properties.extendedMetadata.PatternFacet"
-	        tab="org.eclipse.emf.ecoretools.diagram.ecore.properties.extendedMetadata">
-	        <input type="org.eclipse.emf.ecore.EDataType"/>
-	     </propertySection>
-	     <propertySection
-	        class="org.eclipse.emf.ecoretools.properties.internal.metadata.EnumerationFacetSection"
-	        id="org.eclipse.emf.ecoretools.diagram.ecore.properties.extendedMetadata.EnumerationFacet"
-	        tab="org.eclipse.emf.ecoretools.diagram.ecore.properties.extendedMetadata">
-	        <input type="org.eclipse.emf.ecore.EDataType"/>
-	     </propertySection>
-	     <!-- TODO add Member Types Section : EDatatype List -->
-	     <propertySection
-	        class="org.eclipse.emf.ecoretools.properties.internal.metadata.TotalDigitsSection"
-	        id="org.eclipse.emf.ecoretools.diagram.ecore.properties.extendedMetadata.TotalDigits"
-	        tab="org.eclipse.emf.ecoretools.diagram.ecore.properties.extendedMetadata">
-	        <input type="org.eclipse.emf.ecore.EDataType"/>
-	     </propertySection>
-	     <propertySection
-	        class="org.eclipse.emf.ecoretools.properties.internal.metadata.FractionDigitsSection"
-	        id="org.eclipse.emf.ecoretools.diagram.ecore.properties.extendedMetadata.FractionDigits"
-	        tab="org.eclipse.emf.ecoretools.diagram.ecore.properties.extendedMetadata">
-	        <input type="org.eclipse.emf.ecore.EDataType"/>
-	     </propertySection>
-	     <propertySection
-	        class="org.eclipse.emf.ecoretools.properties.internal.metadata.WhitespaceSection"
-	        id="org.eclipse.emf.ecoretools.diagram.ecore.properties.extendedMetadata.Whitespace"
-	        tab="org.eclipse.emf.ecoretools.diagram.ecore.properties.extendedMetadata">
-	        <input type="org.eclipse.emf.ecore.EDataType"/>
-	     </propertySection>
-	     <propertySection
-	        class="org.eclipse.emf.ecoretools.properties.internal.metadata.MinExclusiveSection"
-	        id="org.eclipse.emf.ecoretools.diagram.ecore.properties.extendedMetadata.MinExclusive"
-	        tab="org.eclipse.emf.ecoretools.diagram.ecore.properties.extendedMetadata">
-	        <input type="org.eclipse.emf.ecore.EDataType"/>
-	     </propertySection>
-	     <propertySection
-	        class="org.eclipse.emf.ecoretools.properties.internal.metadata.MinInclusiveSection"
-	        id="org.eclipse.emf.ecoretools.diagram.ecore.properties.extendedMetadata.MinInclusive"
-	        tab="org.eclipse.emf.ecoretools.diagram.ecore.properties.extendedMetadata">
-	        <input type="org.eclipse.emf.ecore.EDataType"/>
-	     </propertySection>
-	     <propertySection
-	        class="org.eclipse.emf.ecoretools.properties.internal.metadata.MaxInclusiveSection"
-	        id="org.eclipse.emf.ecoretools.diagram.ecore.properties.extendedMetadata.MaxInclusive"
-	        tab="org.eclipse.emf.ecoretools.diagram.ecore.properties.extendedMetadata">
-	        <input type="org.eclipse.emf.ecore.EDataType"/>
-	     </propertySection>
-	     <propertySection
-	        class="org.eclipse.emf.ecoretools.properties.internal.metadata.MaxExclusiveSection"
-	        id="org.eclipse.emf.ecoretools.diagram.ecore.properties.extendedMetadata.MaxExclusive"
-	        tab="org.eclipse.emf.ecoretools.diagram.ecore.properties.extendedMetadata">
-	        <input type="org.eclipse.emf.ecore.EDataType"/>
-	     </propertySection>
-	     <propertySection
-	        class="org.eclipse.emf.ecoretools.properties.internal.metadata.MaxLengthSection"
-	        id="org.eclipse.emf.ecoretools.diagram.ecore.properties.extendedMetadata.MaxLength"
-	        tab="org.eclipse.emf.ecoretools.diagram.ecore.properties.extendedMetadata">
-	        <input type="org.eclipse.emf.ecore.EDataType"/>
-	     </propertySection>
-	     <propertySection
-	        class="org.eclipse.emf.ecoretools.properties.internal.metadata.LengthSection"
-	        id="org.eclipse.emf.ecoretools.diagram.ecore.properties.extendedMetadata.Length"
-	        tab="org.eclipse.emf.ecoretools.diagram.ecore.properties.extendedMetadata">
-	        <input type="org.eclipse.emf.ecore.EDataType"/>
-	     </propertySection>
-	     <propertySection
-	        class="org.eclipse.emf.ecoretools.properties.internal.metadata.MinLengthSection"
-	        id="org.eclipse.emf.ecoretools.diagram.ecore.properties.extendedMetadata.MinLength"
-	        tab="org.eclipse.emf.ecoretools.diagram.ecore.properties.extendedMetadata">
-	        <input type="org.eclipse.emf.ecore.EDataType"/>
-	     </propertySection>
-	     <propertySection
-	        class="org.eclipse.emf.ecoretools.properties.internal.metadata.ItemTypeSection"
-	        id="org.eclipse.emf.ecoretools.diagram.ecore.properties.extendedMetadata.ItemType"
-	        tab="org.eclipse.emf.ecoretools.diagram.ecore.properties.extendedMetadata">
-	        <input type="org.eclipse.emf.ecore.EDataType"/>
-	     </propertySection>
-	     <propertySection
-	        class="org.eclipse.emf.ecoretools.properties.internal.metadata.BaseTypeSection"
-	        id="org.eclipse.emf.ecoretools.diagram.ecore.properties.extendedMetadata.BaseType"
-	        tab="org.eclipse.emf.ecoretools.diagram.ecore.properties.extendedMetadata">
-	        <input type="org.eclipse.emf.ecore.EDataType"/>
-	     </propertySection>
-	     <propertySection
-	        class="org.eclipse.emf.ecoretools.properties.internal.metadata.ProcessingKindSection"
-	        id="org.eclipse.emf.ecoretools.diagram.ecore.properties.extendedMetadata.ProcessingKind"
-	        tab="org.eclipse.emf.ecoretools.diagram.ecore.properties.extendedMetadata">
-	        <input type="org.eclipse.emf.ecore.EStructuralFeature"/>
-	     </propertySection>
-	     <propertySection
-	        class="org.eclipse.emf.ecoretools.properties.internal.metadata.GroupSection"
-	        id="org.eclipse.emf.ecoretools.diagram.ecore.properties.extendedMetadata.Group"
-	        tab="org.eclipse.emf.ecoretools.diagram.ecore.properties.extendedMetadata">
-	        <input type="org.eclipse.emf.ecore.EStructuralFeature"/>
-	     </propertySection>
-	     <propertySection
-	        class="org.eclipse.emf.ecoretools.properties.internal.metadata.FeatureKindSection"
-	        id="org.eclipse.emf.ecoretools.diagram.ecore.properties.extendedMetadata.FeatureKind"
-	        tab="org.eclipse.emf.ecoretools.diagram.ecore.properties.extendedMetadata">
-	        <input type="org.eclipse.emf.ecore.EStructuralFeature"/>
-	     </propertySection>
-	     <propertySection
-	        class="org.eclipse.emf.ecoretools.properties.internal.metadata.NamespaceSection"
-	        id="org.eclipse.emf.ecoretools.diagram.ecore.properties.extendedMetadata.Namespace"
-	        tab="org.eclipse.emf.ecoretools.diagram.ecore.properties.extendedMetadata">
-	        <input type="org.eclipse.emf.ecore.EStructuralFeature"/>
-	     </propertySection>
-	     <propertySection
-	        class="org.eclipse.emf.ecoretools.properties.internal.metadata.ContentKindSection"
-	        id="org.eclipse.emf.ecoretools.diagram.ecore.properties.extendedMetadata.ContentKind"
-	        tab="org.eclipse.emf.ecoretools.diagram.ecore.properties.extendedMetadata">
-	        <input type="org.eclipse.emf.ecore.EClass"/>
-	     </propertySection>
-	     <propertySection
-	        class="org.eclipse.emf.ecoretools.properties.internal.metadata.NameSection"
-	        id="org.eclipse.emf.ecoretools.diagram.ecore.properties.extendedMetadata.Name"
-	        tab="org.eclipse.emf.ecoretools.diagram.ecore.properties.extendedMetadata">
-	        <input type="org.eclipse.emf.ecore.EStructuralFeature"/>
-	        <input type="org.eclipse.emf.ecore.EClassifier"/>
-	     </propertySection>
-      <propertySection
-            class="org.eclipse.emf.ecoretools.properties.internal.sections.GenModelDocumentationPropertySection"
-            id="org.eclipse.emf.ecoretools.diagram.genModelDoc"
-            tab="org.eclipse.emf.ecoretools.diagram.genModelDoc">
-         <input
-               type="org.eclipse.emf.ecore.EModelElement">
-         </input>
-      </propertySection>
-      <propertySection
-            class="org.eclipse.emf.ecoretools.properties.internal.sections.EAnnotationPropertySection"
-            id="org.eclipse.emf.ecoretools.diagram.eAnnotationSection"
-            tab="org.eclipse.emf.ecoretools.diagram.eAnnotationTab">
-         <input
-               type="org.eclipse.emf.ecore.EModelElement">
-         </input>
-      </propertySection>
-	  </propertySections>
-   </extension>
 </plugin>