Add o.p.esf.core.rcp for the rcp application base definition

Change-Id: I2438cb152484c5121eecf9ee140c777dcc9ca7b0
Signed-off-by: Jonathan Dumont <jonathan.dumont@all4tec.net>
diff --git a/core/org.polarsys.esf.core.rcp/.checkstyle b/core/org.polarsys.esf.core.rcp/.checkstyle
new file mode 100644
index 0000000..227a385
--- /dev/null
+++ b/core/org.polarsys.esf.core.rcp/.checkstyle
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<fileset-config file-format-version="1.2.0" simple-config="true" sync-formatter="false">
+  <fileset name="all" enabled="true" check-config-name="Checkstyle ESF" local="false">
+    <file-match-pattern match-pattern="." include-pattern="true"/>
+  </fileset>
+</fileset-config>
diff --git a/core/org.polarsys.esf.core.rcp/.classpath b/core/org.polarsys.esf.core.rcp/.classpath
new file mode 100644
index 0000000..a95e090
--- /dev/null
+++ b/core/org.polarsys.esf.core.rcp/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src/main/java"/>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/core/org.polarsys.esf.core.rcp/.project b/core/org.polarsys.esf.core.rcp/.project
new file mode 100644
index 0000000..529d087
--- /dev/null
+++ b/core/org.polarsys.esf.core.rcp/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.polarsys.esf.core.rcp</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>net.sf.eclipsecs.core.CheckstyleBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>net.sf.eclipsecs.core.CheckstyleNature</nature>
+	</natures>
+</projectDescription>
diff --git a/core/org.polarsys.esf.core.rcp/META-INF/MANIFEST.MF b/core/org.polarsys.esf.core.rcp/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..a374ab2
--- /dev/null
+++ b/core/org.polarsys.esf.core.rcp/META-INF/MANIFEST.MF
@@ -0,0 +1,15 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %Bundle-Name
+Bundle-SymbolicName: org.polarsys.esf.core.rcp;singleton:=true
+Bundle-Version: 0.7.0.qualifier
+Bundle-Activator: org.polarsys.esf.core.root.CoreRootActivator$Implementation
+Bundle-Vendor: %Bundle-Vendor
+Bundle-RequiredExecutionEnvironment: JavaSE-1.7
+Bundle-ActivationPolicy: lazy
+Require-Bundle: org.eclipse.core.resources;bundle-version="3.9.0",
+ org.eclipse.emf.common.ui;bundle-version="2.9.0",
+ org.eclipse.ui.themes;bundle-version="1.0.0",
+ org.polarsys.esf.core.framework;bundle-version="0.7.0";visibility:=reexport,
+ org.polarsys.esf.core.workspace;bundle-version="0.7.0";visibility:=reexport
+Bundle-Localization: src/main/resources/properties/plugin
diff --git a/core/org.polarsys.esf.core.rcp/about.html b/core/org.polarsys.esf.core.rcp/about.html
new file mode 100644
index 0000000..d35d5ae
--- /dev/null
+++ b/core/org.polarsys.esf.core.rcp/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>June 5, 2007</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
diff --git a/core/org.polarsys.esf.core.rcp/build.properties b/core/org.polarsys.esf.core.rcp/build.properties
new file mode 100644
index 0000000..d60e765
--- /dev/null
+++ b/core/org.polarsys.esf.core.rcp/build.properties
@@ -0,0 +1,8 @@
+output.. = target/classes/
+bin.includes = plugin.xml,\
+               META-INF/,\
+               .,\
+               splash.bmp,\
+               plugin_customization.ini,\
+               src/main/resources/
+source.. = src/main/java
diff --git a/core/org.polarsys.esf.core.rcp/plugin.xml b/core/org.polarsys.esf.core.rcp/plugin.xml
new file mode 100644
index 0000000..2d98f1d
--- /dev/null
+++ b/core/org.polarsys.esf.core.rcp/plugin.xml
@@ -0,0 +1,554 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+
+   <extension
+         id="application"
+         point="org.eclipse.core.runtime.applications">
+      <application>
+         <run
+               class="org.polarsys.esf.core.root.Application">
+         </run>
+      </application>
+   </extension>
+   <extension
+         id="esf"
+         name="%Product-name"
+         point="org.eclipse.core.runtime.products">
+      <product
+            application="org.polarsys.esf.core.root.application"
+            name="Eclipse Safety Framework">
+         <property
+               name="appName"
+               value="Eclipse Safety Framework">
+         </property>
+         <property
+               name="windowImages"
+               value="platform:/plugin/org.polarsys.esf.core.ui/icons/logos/icon_esf_16x16.png,platform:/plugin/org.polarsys.esf.core.ui/icons/logos/icon_esf_32x32.png,platform:/plugin/org.polarsys.esf.core.ui/icons/logos/icon_esf_48x48.png,platform:/plugin/org.polarsys.esf.core.ui/icons/logos/icon_esf_64x64.png,platform:/plugin/org.polarsys.esf.core.ui/icons/logos/icon_esf_128x128.png">
+         </property>
+         <property
+               name="startupForegroundColor"
+               value="FFFFFF">
+         </property>
+         <property
+               name="startupMessageRect"
+               value="5,295,470,20">
+         </property>
+         <property
+               name="startupProgressRect"
+               value="0,315,500,15">
+         </property>
+         <property
+               name="preferenceCustomization"
+               value="plugin_customization.ini">
+         </property>
+            <property
+               name="aboutImage"
+               value="platform:/plugin/org.polarsys.esf.core.ui/icons/about/logo_about.png">
+         </property>
+         <property name="cssTheme" value="org.eclipse.e4.ui.css.theme.e4_default"/>
+		 <property name="applicationCSSResources" value="platform:/plugin/org.eclipse.platform/images/"/>
+         <property
+               name="aboutText"
+               value="%Product-about">
+         </property>
+         <property
+               name="applicationXMI"
+               value="org.eclipse.platform/LegacyIDE.e4xmi">
+         </property>
+      </product>
+      
+   </extension>
+    <extension
+         id="org.polarsys.esf.project.nature"
+         name="ESF"
+         point="org.eclipse.core.resources.natures">
+      <runtime>
+         <run
+               class="org.polarsys.esf.core.root.nature.ESFProjectNature">
+         </run>
+      </runtime>
+      <content-type
+            id="org.polarsys.esf.core.SASource">
+      </content-type>
+      <content-type
+            id="org.polarsys.esf.core.PropagationTreeSource">
+      </content-type>
+   </extension>
+    <extension
+          point="org.eclipse.ui.bindings">
+       <scheme
+             id="org.polarsys.esf.core.root.scheme"
+             name="ESF Scheme">
+       </scheme>
+    </extension>
+      <extension point="org.eclipse.ui.bindings">
+      <key
+            commandId="org.eclipse.ui.newWizard"
+            sequence="M1+N"
+            schemeId="org.polarsys.esf.core.root.scheme" />
+      <key
+            commandId="org.eclipse.ui.file.close"
+            sequence="M1+W"
+            schemeId="org.polarsys.esf.core.root.scheme" />
+      <key
+            commandId="org.eclipse.ui.file.close"
+            sequence="M1+F4"
+            schemeId="org.polarsys.esf.core.root.scheme" />
+      <key
+            commandId="org.eclipse.ui.file.closeAll"
+            sequence="M1+M2+W"
+            schemeId="org.polarsys.esf.core.root.scheme" />
+      <key
+            commandId="org.eclipse.ui.file.closeAll"
+            sequence="M1+M2+F4"
+            schemeId="org.polarsys.esf.core.root.scheme" />
+      <key
+            commandId="org.eclipse.ui.file.save"
+            sequence="M1+S"
+            schemeId="org.polarsys.esf.core.root.scheme" />
+      <key
+            commandId="org.eclipse.ui.file.saveAll"
+            sequence="M1+M2+S"
+            schemeId="org.polarsys.esf.core.root.scheme" />
+      <key
+            commandId="org.eclipse.ui.edit.rename"
+            sequence="F2"
+            schemeId="org.polarsys.esf.core.root.scheme" />
+      <key
+            commandId="org.eclipse.ui.file.print"
+            sequence="M1+P"
+            schemeId="org.polarsys.esf.core.root.scheme" />
+      <key
+            commandId="org.eclipse.ui.file.properties"
+            sequence="M3+CR"
+            schemeId="org.polarsys.esf.core.root.scheme" />
+      <key
+            commandId="org.eclipse.ui.file.properties"
+            platform="cocoa"
+            schemeId="org.polarsys.esf.core.root.scheme"
+            sequence="M1+I"/>
+      <key
+            commandId="org.eclipse.ui.file.properties"
+            platform="carbon"
+            schemeId="org.polarsys.esf.core.root.scheme"
+            sequence="M1+I"/>
+      <key
+            commandId="org.eclipse.ui.file.refresh"
+            sequence="F5"
+            schemeId="org.polarsys.esf.core.root.scheme" />
+      <key
+            commandId="org.eclipse.ui.edit.undo"
+            contextId="org.eclipse.ui.contexts.dialogAndWindow"
+            sequence="M1+Z"
+            schemeId="org.polarsys.esf.core.root.scheme" />
+      <key
+            commandId="org.eclipse.ui.edit.redo"
+            contextId="org.eclipse.ui.contexts.dialogAndWindow"
+            sequence="M1+Y"
+            schemeId="org.polarsys.esf.core.root.scheme" />
+      <key
+            commandId="org.eclipse.ui.edit.redo"
+            contextId="org.eclipse.ui.contexts.dialogAndWindow"
+            sequence="M1+M2+Z"
+            schemeId="org.polarsys.esf.core.root.scheme" 
+            platform="carbon"/>
+      <key
+            commandId="org.eclipse.ui.edit.cut"
+            contextId="org.eclipse.ui.contexts.dialogAndWindow"
+            sequence="M1+X"
+            schemeId="org.polarsys.esf.core.root.scheme" />
+      <key
+            commandId="org.eclipse.ui.edit.copy"
+            contextId="org.eclipse.ui.contexts.dialogAndWindow"
+            sequence="M1+C"
+            schemeId="org.polarsys.esf.core.root.scheme" />
+      <key
+            commandId="org.eclipse.ui.edit.paste"
+            contextId="org.eclipse.ui.contexts.dialogAndWindow"
+            sequence="M1+V"
+            schemeId="org.polarsys.esf.core.root.scheme" />
+      <key
+            commandId="org.eclipse.ui.edit.selectAll"
+            contextId="org.eclipse.ui.contexts.dialogAndWindow"
+            sequence="M1+A"
+            schemeId="org.polarsys.esf.core.root.scheme" />
+      <key
+            commandId="org.eclipse.ui.edit.delete"
+            sequence="DEL"
+            schemeId="org.polarsys.esf.core.root.scheme" />
+      <key
+            commandId="org.eclipse.ui.edit.findReplace"
+            sequence="M1+F"
+            schemeId="org.polarsys.esf.core.root.scheme" />
+      <key
+            commandId="org.eclipse.ui.navigate.next"
+            sequence="M1+."
+            schemeId="org.polarsys.esf.core.root.scheme" />
+      <key
+            commandId="org.eclipse.ui.navigate.previous"
+            sequence="M1+,"
+            schemeId="org.polarsys.esf.core.root.scheme" />
+      <key
+            commandId="org.eclipse.ui.navigate.backwardHistory"
+            sequence="M3+ARROW_LEFT"
+            schemeId="org.polarsys.esf.core.root.scheme" />
+      <key
+            platform="carbon"
+            commandId="org.eclipse.ui.navigate.backwardHistory"
+            sequence="COMMAND+["
+            schemeId="org.polarsys.esf.core.root.scheme" />
+      <key
+            platform="carbon"
+            commandId="org.eclipse.ui.navigate.backwardHistory"
+            sequence="COMMAND+ALT+ARROW_LEFT"
+            schemeId="org.polarsys.esf.core.root.scheme" />
+      <key
+            commandId="org.eclipse.ui.navigate.forwardHistory"
+            sequence="M3+ARROW_RIGHT"
+            schemeId="org.polarsys.esf.core.root.scheme" />
+      <key
+            platform="carbon"
+            commandId="org.eclipse.ui.navigate.forwardHistory"
+            sequence="COMMAND+]"
+            schemeId="org.polarsys.esf.core.root.scheme" />
+      <key
+            platform="carbon"
+            commandId="org.eclipse.ui.navigate.forwardHistory"
+            sequence="COMMAND+ALT+ARROW_RIGHT"
+            schemeId="org.polarsys.esf.core.root.scheme" />
+      <key
+            commandId="org.eclipse.ui.window.switchToEditor"
+            sequence="M1+M2+E"
+            schemeId="org.polarsys.esf.core.root.scheme" />
+      <key
+            commandId="org.eclipse.ui.window.showSystemMenu"
+            sequence="M3+-"
+            schemeId="org.polarsys.esf.core.root.scheme" />
+      <key
+            commandId="org.eclipse.ui.window.showSystemMenu"
+            platform="carbon"
+            sequence="M1+M2+F10"
+            schemeId="org.polarsys.esf.core.root.scheme" />
+      <key
+            commandId="org.eclipse.ui.window.showViewMenu"
+            sequence="M1+F10"
+            contextId="org.eclipse.ui.contexts.dialogAndWindow"
+            schemeId="org.polarsys.esf.core.root.scheme" />
+      <key
+            commandId="org.eclipse.ui.window.activateEditor"
+            sequence="F12"
+            schemeId="org.polarsys.esf.core.root.scheme" />
+      <!-- F12 is the Dashboard on carbon -->
+      <key
+            commandId="org.eclipse.ui.window.activateEditor"
+            platform="carbon"
+            sequence="M1+F12"
+            schemeId="org.polarsys.esf.core.root.scheme" />
+      <key
+            commandId="org.eclipse.ui.window.maximizePart"
+            sequence="M1+M"
+            schemeId="org.polarsys.esf.core.root.scheme" />
+      <!-- Cmd+M is used for Minimize Window in cocoa -->
+      <key
+            commandId="org.eclipse.ui.window.maximizePart"
+            platform="cocoa"
+            sequence="M4+M"
+            schemeId="org.polarsys.esf.core.root.scheme" />
+      <key
+            commandId="org.eclipse.ui.window.nextEditor"
+            sequence="M1+F6"
+            schemeId="org.polarsys.esf.core.root.scheme" />
+      <key
+            commandId="org.eclipse.ui.window.previousEditor"
+            sequence="M1+M2+F6"
+            schemeId="org.polarsys.esf.core.root.scheme" />
+      <key
+            commandId="org.eclipse.ui.window.nextView"
+            sequence="M1+F7"
+            schemeId="org.polarsys.esf.core.root.scheme" />
+      <key
+            commandId="org.eclipse.ui.window.previousView"
+            sequence="M1+M2+F7"
+            schemeId="org.polarsys.esf.core.root.scheme" />
+      <key
+            commandId="org.eclipse.ui.window.nextPerspective"
+            sequence="M1+F8"
+            schemeId="org.polarsys.esf.core.root.scheme" />
+      <key
+            commandId="org.eclipse.ui.window.previousPerspective"
+            sequence="M1+M2+F8"
+            schemeId="org.polarsys.esf.core.root.scheme" />
+      <key
+            commandId="org.eclipse.ui.navigate.previous"
+            platform="carbon"
+            sequence="M1+M2+."
+            schemeId="org.polarsys.esf.core.root.scheme" />
+      <key
+            commandId="org.eclipse.ui.edit.cut"
+            contextId="org.eclipse.ui.contexts.dialogAndWindow"
+            sequence="M2+DEL"
+            schemeId="org.polarsys.esf.core.root.scheme" />
+      <key
+            commandId="org.eclipse.ui.edit.copy"
+            contextId="org.eclipse.ui.contexts.dialogAndWindow"
+            sequence="M1+INSERT"
+            schemeId="org.polarsys.esf.core.root.scheme" />
+      <key
+            commandId="org.eclipse.ui.edit.paste"
+            contextId="org.eclipse.ui.contexts.dialogAndWindow"
+            sequence="M2+INSERT"
+            schemeId="org.polarsys.esf.core.root.scheme" />
+
+	  <key
+	        commandId="org.eclipse.ui.edit.text.contentAssist.proposals"
+	        contextId="org.eclipse.ui.contexts.dialogAndWindow"
+			schemeId="org.polarsys.esf.core.root.scheme"
+	        sequence="CTRL+SPACE"/>	<!-- Command+SPACE+* is reserved on carbon, hardcode to CTRL -->
+
+	  <key
+	        commandId="org.eclipse.ui.edit.text.contentAssist.contextInformation"
+	        contextId="org.eclipse.ui.contexts.dialogAndWindow"
+			schemeId="org.polarsys.esf.core.root.scheme"
+	        sequence="CTRL+M2+SPACE"/>	<!-- Command+SPACE+* is reserved on carbon, hardcode to CTRL -->
+
+      <!-- Special content assist key bindings for the Chinese language to prevent conflict with IME -->
+      <key
+            locale="zh"
+            commandId="org.eclipse.ui.edit.text.contentAssist.proposals"
+            contextId="org.eclipse.ui.contexts.dialogAndWindow"
+            schemeId="org.polarsys.esf.core.root.scheme"
+            sequence="M3+/"/>
+      <key
+            locale="zh"
+            commandId="org.eclipse.ui.edit.text.contentAssist.contextInformation"
+            schemeId="org.polarsys.esf.core.root.scheme"
+            sequence="M3+?"/>
+      <key
+            locale="zh"
+            commandId="org.eclipse.ui.edit.text.contentAssist.contextInformation"
+            schemeId="org.polarsys.esf.core.root.scheme"
+            sequence="M2+M3+?"/>
+
+      <!-- Content assist key binding for the Japanese language to prevent conflict with IME on GTK -->
+      <key
+            locale="ja"
+            platform="gtk"
+            commandId="org.eclipse.ui.edit.text.contentAssist.proposals"
+            contextId="org.eclipse.ui.contexts.dialogAndWindow"
+            schemeId="org.polarsys.esf.core.root.scheme"
+            sequence="M3+/"/>
+      <key
+            locale="ja"
+            platform="gtk"
+            commandId="org.eclipse.ui.edit.text.contentAssist.contextInformation"
+            schemeId="org.polarsys.esf.core.root.scheme"
+            sequence="M3+?"/>
+      <key
+            locale="ja"
+            platform="gtk"
+            commandId="org.eclipse.ui.edit.text.contentAssist.contextInformation"
+            schemeId="org.polarsys.esf.core.root.scheme"
+            sequence="M2+M3+?"/>
+
+      <!-- Content assist key binding for the Korean language to prevent conflict with IME on GTK -->
+      <key
+            locale="ko"
+            platform="gtk"
+            commandId="org.eclipse.ui.edit.text.contentAssist.proposals"
+            contextId="org.eclipse.ui.contexts.dialogAndWindow"
+            schemeId="org.polarsys.esf.core.root.scheme"
+            sequence="M3+/"/>
+      <key
+            locale="ko"
+            platform="gtk"
+            commandId="org.eclipse.ui.edit.text.contentAssist.contextInformation"
+            schemeId="org.polarsys.esf.core.root.scheme"
+            sequence="M3+?"/>
+      <key
+            locale="ko"
+            platform="gtk"
+            commandId="org.eclipse.ui.edit.text.contentAssist.contextInformation"
+            schemeId="org.polarsys.esf.core.root.scheme"
+            sequence="M2+M3+?"/>
+            
+      <!-- Content assist key binding for the Japanese language to prevent conflict with IME on Motif -->
+      <key
+            locale="ja"
+            platform="motif"
+            commandId="org.eclipse.ui.edit.text.contentAssist.proposals"
+            contextId="org.eclipse.ui.contexts.dialogAndWindow"
+            schemeId="org.polarsys.esf.core.root.scheme"
+            sequence="M3+/"/>
+      <key
+            locale="ja"
+            platform="motif"
+            commandId="org.eclipse.ui.edit.text.contentAssist.contextInformation"
+            schemeId="org.polarsys.esf.core.root.scheme"
+            sequence="M3+?"/>
+      <key
+            locale="ja"
+            platform="motif"
+            commandId="org.eclipse.ui.edit.text.contentAssist.contextInformation"
+            schemeId="org.polarsys.esf.core.root.scheme"
+            sequence="M2+M3+?"/>
+
+      <!-- Content assist key binding for the Korean language to prevent conflict with IME on Motif -->
+      <key
+            locale="ko"
+            platform="motif"
+            commandId="org.eclipse.ui.edit.text.contentAssist.proposals"
+            contextId="org.eclipse.ui.contexts.dialogAndWindow"
+            schemeId="org.polarsys.esf.core.root.scheme"
+            sequence="M3+/"/>
+      <key
+            locale="ko"
+            platform="motif"
+            commandId="org.eclipse.ui.edit.text.contentAssist.contextInformation"
+            schemeId="org.polarsys.esf.core.root.scheme"
+            sequence="M3+?"/>
+      <key
+            locale="ko"
+            platform="motif"
+            commandId="org.eclipse.ui.edit.text.contentAssist.contextInformation"
+            schemeId="org.polarsys.esf.core.root.scheme"
+            sequence="M2+M3+?"/>
+      
+      <key
+            commandId="org.eclipse.ui.file.close"
+            sequence="CTRL+X K"
+            schemeId="org.eclipse.ui.emacsAcceleratorConfiguration" />
+      <key
+            commandId="org.eclipse.ui.file.closeAll"
+            sequence="CTRL+X CTRL+C"
+            schemeId="org.eclipse.ui.emacsAcceleratorConfiguration" />
+      <key
+            commandId="org.eclipse.ui.file.save"
+            sequence="CTRL+X CTRL+S"
+            schemeId="org.eclipse.ui.emacsAcceleratorConfiguration" />
+      <key
+            commandId="org.eclipse.ui.file.saveAll"
+            sequence="CTRL+X S"
+            schemeId="org.eclipse.ui.emacsAcceleratorConfiguration" />
+      <key
+            commandId="org.eclipse.ui.file.print"
+            sequence="M3+F9"
+            schemeId="org.eclipse.ui.emacsAcceleratorConfiguration" />
+      <key
+            commandId="org.eclipse.ui.file.print"
+            sequence="ESC F9"
+            schemeId="org.eclipse.ui.emacsAcceleratorConfiguration" />
+      <key
+            commandId="org.eclipse.ui.edit.undo"
+            sequence="F9"
+            schemeId="org.eclipse.ui.emacsAcceleratorConfiguration" />
+      <key
+            commandId="org.eclipse.ui.edit.undo"
+            sequence="CTRL+X U"
+            schemeId="org.eclipse.ui.emacsAcceleratorConfiguration" />
+      <key
+            commandId="org.eclipse.ui.edit.undo"
+            sequence="CTRL+M2+-"
+            schemeId="org.eclipse.ui.emacsAcceleratorConfiguration" />
+      <key
+            commandId="org.eclipse.ui.edit.redo"
+            sequence="F10"
+            schemeId="org.eclipse.ui.emacsAcceleratorConfiguration" />
+      <key
+            commandId="org.eclipse.ui.edit.redo"
+            sequence="CTRL+X R"
+            schemeId="org.eclipse.ui.emacsAcceleratorConfiguration" />
+      <key
+            commandId="org.eclipse.ui.edit.redo"
+            sequence="CTRL+M2++"
+            schemeId="org.eclipse.ui.emacsAcceleratorConfiguration" />
+      <key
+            commandId="org.eclipse.ui.edit.cut"
+            contextId="org.eclipse.ui.contexts.dialogAndWindow"
+            sequence="CTRL+W"
+            schemeId="org.eclipse.ui.emacsAcceleratorConfiguration" />
+      <key
+            commandId="org.eclipse.ui.edit.copy"
+            contextId="org.eclipse.ui.contexts.dialogAndWindow"
+            sequence="M3+W"
+            schemeId="org.eclipse.ui.emacsAcceleratorConfiguration" />
+      <key
+            commandId="org.eclipse.ui.edit.copy"
+            contextId="org.eclipse.ui.contexts.dialogAndWindow"
+            sequence="ESC W"
+            schemeId="org.eclipse.ui.emacsAcceleratorConfiguration" />
+      <key
+            commandId="org.eclipse.ui.edit.paste"
+            contextId="org.eclipse.ui.contexts.dialogAndWindow"
+            sequence="CTRL+Y"
+            schemeId="org.eclipse.ui.emacsAcceleratorConfiguration" />
+      <key
+            commandId="org.eclipse.ui.edit.selectAll"
+            contextId="org.eclipse.ui.contexts.dialogAndWindow"
+            sequence="CTRL+X H"
+            schemeId="org.eclipse.ui.emacsAcceleratorConfiguration" />
+      <key
+            commandId="org.eclipse.ui.edit.findReplace"
+            sequence="M3+R"
+            schemeId="org.eclipse.ui.emacsAcceleratorConfiguration" />
+      <key
+            commandId="org.eclipse.ui.edit.findReplace"
+            sequence="ESC R"
+            schemeId="org.eclipse.ui.emacsAcceleratorConfiguration" />
+      <key
+            commandId="org.eclipse.ui.edit.text.contentAssist.proposals"
+	        contextId="org.eclipse.ui.contexts.dialogAndWindow"
+            sequence="ALT+/"
+            schemeId="org.eclipse.ui.emacsAcceleratorConfiguration"/>
+      <key
+            commandId="org.eclipse.ui.edit.text.contentAssist.contextInformation"
+            sequence="ALT+?"
+            schemeId="org.eclipse.ui.emacsAcceleratorConfiguration"/>
+      <key
+            commandId="org.eclipse.ui.edit.text.contentAssist.contextInformation"
+            sequence="ALT+SHIFT+?"
+            schemeId="org.eclipse.ui.emacsAcceleratorConfiguration"/>
+      <key
+            commandId="org.eclipse.ui.window.openEditorDropDown"
+            sequence="CTRL+X B"
+            schemeId="org.eclipse.ui.emacsAcceleratorConfiguration" />
+      <key
+            commandId="org.eclipse.ui.window.switchToEditor"
+            sequence="CTRL+X CTRL+B"
+            schemeId="org.eclipse.ui.emacsAcceleratorConfiguration" />
+      <key
+            commandId="org.eclipse.ui.navigate.collapseAll"
+            contextId="org.eclipse.ui.contexts.window"
+            schemeId="org.polarsys.esf.core.root.scheme"
+            sequence="M1+M2+NUMPAD_DIVIDE">
+      </key>
+      <key
+            commandId="org.eclipse.ui.navigate.expandAll"
+            contextId="org.eclipse.ui.contexts.window"
+            schemeId="org.polarsys.esf.core.root.scheme"
+            sequence="M1+M2+NUMPAD_MULTIPLY">
+      </key>
+      <key
+            commandId="org.eclipse.ui.navigate.nextSubTab"
+            contextId="org.eclipse.ui.contexts.dialogAndWindow"
+            schemeId="org.polarsys.esf.core.root.scheme"
+            sequence="M3+PAGE_DOWN">
+      </key>
+      <key
+            commandId="org.eclipse.ui.navigate.previousSubTab"
+            contextId="org.eclipse.ui.contexts.dialogAndWindow"
+            schemeId="org.polarsys.esf.core.root.scheme"
+            sequence="M3+PAGE_UP">
+      </key>
+      <key
+            commandId="org.eclipse.ui.part.nextPage"
+            schemeId="org.polarsys.esf.core.root.scheme"
+            sequence="M3+F7">
+      </key>
+      <key
+            commandId="org.eclipse.ui.part.previousPage"
+            schemeId="org.polarsys.esf.core.root.scheme"
+            sequence="M2+M3+F7">
+      </key>
+   </extension>
+</plugin>
diff --git a/core/org.polarsys.esf.core.rcp/plugin_customization.ini b/core/org.polarsys.esf.core.rcp/plugin_customization.ini
new file mode 100644
index 0000000..cf6f95e
--- /dev/null
+++ b/core/org.polarsys.esf.core.rcp/plugin_customization.ini
@@ -0,0 +1,20 @@
+# plugin_customization.ini 
+# sets default values for plug-in-specific preferences 
+# keys are qualified by	plug-in id 
+# e.g.,	com.example.acmeplugin/myproperty=myvalue 
+# java.io.Properties file (ISO 8859-1 with "\" escapes) 
+# "%key" are externalized strings defined in plugin_customization.properties 
+# This file does not need to be translated.
+
+# Property "org.eclipse.ui/defaultPerspectiveId" controls the 
+# perspective that the workbench opens initially
+#org.eclipse.ui/defaultPerspectiveId=org.eclipse.ui.resourcePerspective
+org.eclipse.ui/SHOW_TEXT_ON_PERSPECTIVE_BAR=true
+org.eclipse.ui/DOCK_PERSPECTIVE_BAR=TOP_RIGHT
+org.eclipse.ui/SHOW_MEMORY_MONITOR=false
+org.eclipse.ui/ENABLE_NEW_MIN_MAX=true
+org.eclipse.ui/SHOW_PROGRESS_ON_STARTUP=true
+org.eclipse.ui/OPEN_NEW_PERSPECTIVE=OPEN_PERSPECTIVE_WINDOW
+org.eclipse.ui/SHOW_TRADITIONAL_STYLE_TABS=false
+org.eclipse.ui/SHOW_OTHER_IN_PERSPECTIVE_MENU=true
+org.eclipse.ui/KEY_CONFIGURATION_ID=org.polarsys.esf.core.root.scheme
diff --git a/core/org.polarsys.esf.core.rcp/pom.xml b/core/org.polarsys.esf.core.rcp/pom.xml
new file mode 100644
index 0000000..065108e
--- /dev/null
+++ b/core/org.polarsys.esf.core.rcp/pom.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
+  xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <modelVersion>4.0.0</modelVersion>
+  
+  <parent>
+    <groupId>org.polarsys.esf</groupId>
+    <artifactId>esf-infra.core</artifactId>
+    <version>0.7.0-SNAPSHOT</version>
+  </parent>
+
+  <groupId>org.polarsys.esf</groupId>
+  <artifactId>org.polarsys.esf.core.rcp</artifactId>
+  <packaging>eclipse-plugin</packaging>
+
+  <build>
+    <!-- Resources configuration to filter the plugin.properties with the Hudson 
+      variables -->
+    <resources>
+      <resource>
+        <directory>./properties</directory>
+        <filtering>true</filtering>
+        <targetPath>./properties</targetPath>
+      </resource>
+    </resources>
+  </build>
+  
+</project>
diff --git a/core/org.polarsys.esf.core.rcp/splash.bmp b/core/org.polarsys.esf.core.rcp/splash.bmp
new file mode 100644
index 0000000..1bc4148
--- /dev/null
+++ b/core/org.polarsys.esf.core.rcp/splash.bmp
Binary files differ
diff --git a/core/org.polarsys.esf.core.rcp/src/main/java/org/polarsys/esf/core/root/Application.java b/core/org.polarsys.esf.core.rcp/src/main/java/org/polarsys/esf/core/root/Application.java
new file mode 100644
index 0000000..6be8c03
--- /dev/null
+++ b/core/org.polarsys.esf.core.rcp/src/main/java/org/polarsys/esf/core/root/Application.java
@@ -0,0 +1,144 @@
+/*******************************************************************************
+ * Copyright (c) 2015 ALL4TEC.
+ * 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:
+ *     Jonathan Dumont (ALL4TEC) - initial API and implementation
+ ******************************************************************************/
+package org.polarsys.esf.core.root;
+
+import java.net.URL;
+
+import org.apache.commons.lang3.StringUtils;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.equinox.app.IApplication;
+import org.eclipse.equinox.app.IApplicationContext;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.osgi.service.datalocation.Location;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.PlatformUI;
+import org.polarsys.esf.core.workspace.utils.WorkspaceUtils;
+
+/**
+ * This class controls all aspects of the application's execution.
+ *
+ * When the application is started, it will ensure that the user can select a valid workspace.
+ *
+ * <p>
+ * As this class is the one specified in the extension point 'org.eclipse.core.runtime.applications', it will be the
+ * first called, just after the Eclipse RCP framework initialisation. It can be modified, for example to add a login
+ * dialog.
+ * </p>
+ *
+ * @author $Author: jdumont $
+ * @version $Revision: 83 $
+ */
+public class Application
+    implements IApplication {
+
+    /** Prefix used to build an URL with a file context. */
+    private static final String URL_FILE_PREFIX = "file"; //$NON-NLS-1$
+
+    /** Message title when an error occurred with the workspace selection. */
+    private static final String WORKSPACE_ERROR_TITLE =
+        CoreRootActivator.getMessages().getString("Application.workspace.error.title"); //$NON-NLS-1$
+
+    /** Message when no valid workspace is found. */
+    private static final String WORKSPACE_ERROR_MESSAGE =
+        CoreRootActivator.getMessages().getString("Application.workspace.error.message"); //$NON-NLS-1$
+
+    /**
+     * Default constructor.
+     */
+    public Application() {
+    }
+
+    /**
+     * {@inheritDoc}
+     *
+     * Customise the start behaviour, to let the user choose the workspace location with
+     * a prompt dialog is no default location is given with the "-data" argument. If a location
+     * is directly given in the command line, use it.
+     *
+     * @see org.eclipse.equinox.app.IApplication#start(org.eclipse.equinox.app.IApplicationContext)
+     */
+    @Override
+    public final Object start(final IApplicationContext pContext) throws Exception {
+
+        // Create the exit object indicating the application state when exiting
+        Integer vExitObject = IApplication.EXIT_OK;
+        boolean vRunWorkbench = true;
+
+        // First, create the platform display
+        final Display vDisplay = PlatformUI.createDisplay();
+
+        // Get the current workspace location, which may be modified after
+        Location vWorkspaceLocation = Platform.getInstanceLocation();
+
+        // Check if a default location is already given or not with the command line argument
+        // If no default location is set, use the user preferences to define the workspace location
+        if (!vWorkspaceLocation.isSet()) {
+
+            // Get the workspace location wanted by the user or saved previously as a preference
+            String vWorkspacePath = WorkspaceUtils.getInstance().getWorkspacePath();
+
+            if (StringUtils.isNotBlank(vWorkspacePath)) {
+                // Update the workspace location with the value found and continue
+                vWorkspaceLocation.set(new URL(URL_FILE_PREFIX, null, vWorkspacePath), false);
+
+            } else {
+                // Open a dialog message to display the error
+                MessageDialog.openError(vDisplay.getActiveShell(), WORKSPACE_ERROR_TITLE, WORKSPACE_ERROR_MESSAGE);
+
+                // Remember to not run the workbench
+                vRunWorkbench = false;
+            }
+        }
+
+        // Finally, if the configuration is correct, try to create and run the application workbench
+        if (vRunWorkbench) {
+            try {
+                final int vReturnCode =
+                    PlatformUI.createAndRunWorkbench(vDisplay, new ApplicationWorkbenchAdvisor());
+                if (vReturnCode == PlatformUI.RETURN_RESTART) {
+                    vExitObject = IApplication.EXIT_RESTART;
+                }
+            } finally {
+                vDisplay.dispose();
+            }
+
+        } else {
+            // Close the application as there is no valid workspace
+            System.exit(0);
+        }
+
+        return vExitObject;
+    }
+
+    /**
+     * {@inheritDoc}
+     *
+     * @see org.eclipse.equinox.app.IApplication#stop()
+     */
+    @Override
+    public final void stop() {
+        if (!PlatformUI.isWorkbenchRunning()) {
+            return;
+        }
+        final IWorkbench vWorkbench = PlatformUI.getWorkbench();
+        final Display vDisplay = vWorkbench.getDisplay();
+        vDisplay.syncExec(new Runnable() {
+
+            @Override
+            public void run() {
+                if (!vDisplay.isDisposed()) {
+                    vWorkbench.close();
+                }
+            }
+        });
+    }
+}
diff --git a/core/org.polarsys.esf.core.rcp/src/main/java/org/polarsys/esf/core/root/ApplicationActionBarAdvisor.java b/core/org.polarsys.esf.core.rcp/src/main/java/org/polarsys/esf/core/root/ApplicationActionBarAdvisor.java
new file mode 100644
index 0000000..0b299ae
--- /dev/null
+++ b/core/org.polarsys.esf.core.rcp/src/main/java/org/polarsys/esf/core/root/ApplicationActionBarAdvisor.java
@@ -0,0 +1,285 @@
+/*******************************************************************************
+ * Copyright (c) 2015 ALL4TEC.
+ * 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:
+ *     Jonathan Dumont (ALL4TEC) - initial API and implementation
+ ******************************************************************************/
+package org.polarsys.esf.core.root;
+
+import org.eclipse.jface.action.ContributionItem;
+import org.eclipse.jface.action.GroupMarker;
+import org.eclipse.jface.action.ICoolBarManager;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.jface.action.ToolBarContributionItem;
+import org.eclipse.jface.action.ToolBarManager;
+import org.eclipse.swt.SWT;
+import org.eclipse.ui.IWorkbenchActionConstants;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.actions.ActionFactory;
+import org.eclipse.ui.actions.ActionFactory.IWorkbenchAction;
+import org.eclipse.ui.actions.ContributionItemFactory;
+import org.eclipse.ui.application.ActionBarAdvisor;
+import org.eclipse.ui.application.IActionBarConfigurer;
+
+/**
+ * This class allow the manual build of the main menu and of the buttons bar.
+ * 
+ * <p>
+ * It's generally used to define the menu's main structure, by displaying the standard items used in Eclipse framework
+ * ('Exit', 'About', 'Preferences', ...). Custom actions can be added can be added by coding them manually, but it's
+ * advisable to use the extensions points 'org.eclipse.ui.menus' with the commands.
+ * </p>
+ * 
+ * @author $Author: jdumont $
+ * @version $Revision: 83 $
+ */
+public class ApplicationActionBarAdvisor
+    extends ActionBarAdvisor {
+
+    /** Label of the menu File. */
+    private static final String MENU_FILE_LABEL = CoreRootActivator.getMessages().getString(
+        "ApplicationActionBarAdvisor.file"); //$NON-NLS-N$
+
+    /** Label of the menu Edit. */
+    private static final String MENU_EDIT_LABEL = CoreRootActivator.getMessages().getString(
+        "ApplicationActionBarAdvisor.edit"); //$NON-NLS-N$
+
+    /** Label of the menu Window. */
+    private static final String MENU_WINDOW_LABEL = CoreRootActivator.getMessages().getString(
+        "ApplicationActionBarAdvisor.window"); //$NON-NLS-N$
+
+    /** Label of the menu Window. */
+    private static final String MENU_SHOWVIEW_LABEL = CoreRootActivator.getMessages().getString(
+        "ApplicationActionBarAdvisor.window.showview"); //$NON-NLS-N$
+
+    /** Label of the menu Window. */
+    private static final String MENU_OPENPERSPECTIVE_LABEL = CoreRootActivator.getMessages().getString(
+        "ApplicationActionBarAdvisor.window.openperspective"); //$NON-NLS-N$
+
+    /** Label of the menu Help. */
+    private static final String MENU_HELP_LABEL = CoreRootActivator.getMessages().getString(
+        "ApplicationActionBarAdvisor.help"); //$NON-NLS-N$
+
+    /** Label of the New menu. */
+    private static final String MENU_FILE_NEW_LABEL = CoreRootActivator.getMessages().getString(
+        "ApplicationActionBarAdvisor.file.new"); //$NON-NLS-N$
+    
+    /** Views short list contribution. */
+    private ContributionItem mShowViewsContribution = null;
+
+    /** Perspectives short list contribution. */
+    private ContributionItem mOpenPerspectivesContribution = null;
+
+    /** New wizard with drop down action. */
+    private IWorkbenchAction mNewWizardDropDownAction = null;
+
+    /** Help contents action. */
+    private IWorkbenchAction mHelpContentsAction = null;
+
+    /** Help search action. */
+    private IWorkbenchAction mHelpSearchAction = null;
+    
+    /** Dynamic help action. */
+    private IWorkbenchAction mDynamicHelpAction = null;
+    
+    /** Lock toolbar action. */
+    private IWorkbenchAction mLockToolBarAction = null;
+
+    /** Hide toolbar action. */
+    private IWorkbenchAction mToggleCoolBarAction = null;
+
+    /**
+     * Default constructor.
+     * 
+     * @param pConfigurer The action bar configurer
+     */
+    public ApplicationActionBarAdvisor(final IActionBarConfigurer pConfigurer) {
+        super(pConfigurer);
+    }
+
+    /**
+     * @see org.eclipse.ui.application.ActionBarAdvisor#makeActions(org.eclipse.ui.IWorkbenchWindow)
+     * 
+     * Method used to build the actions to add to the menu and to the toolbar. 
+     * NB : The ActionFactory class is used to get the standard actions
+     * 
+     * @param pWindow The workbench window
+     */
+    @Override
+    protected final void makeActions(final IWorkbenchWindow pWindow) {
+
+        /*
+         * Create the contribution items to allow their use after
+         */
+        mShowViewsContribution = (ContributionItem) ContributionItemFactory.VIEWS_SHORTLIST.create(pWindow);
+        mOpenPerspectivesContribution =
+            (ContributionItem) ContributionItemFactory.PERSPECTIVES_SHORTLIST.create(pWindow);
+
+        /*
+         * Create each action and register it to allow their use in menu, toolbar, etc.
+         */
+
+        // The new wizard action can't be managed by a command,
+        // that's why its manually added in the menu bar after
+        // Moreover, the menu text is overloaded to make it more user friendly
+        mNewWizardDropDownAction = ActionFactory.NEW_WIZARD_DROP_DOWN.create(pWindow);
+        mNewWizardDropDownAction.setText(MENU_FILE_NEW_LABEL);
+        register(mNewWizardDropDownAction);
+
+        // The help content command isn't fully functional : it doesn't have its icon
+        // that's why its created by an action
+        mHelpContentsAction = ActionFactory.HELP_CONTENTS.create(pWindow);
+        register(mHelpContentsAction);
+
+        // The help search command isn't fully functional : it doesn't have its icon
+        // that's why its created by an action
+        mHelpSearchAction = ActionFactory.HELP_SEARCH.create(pWindow);
+        register(mHelpSearchAction);
+
+        // The dynamic help action is created and registered as an action 
+        mDynamicHelpAction = ActionFactory.DYNAMIC_HELP.create(pWindow);
+        register(mDynamicHelpAction);
+        
+        // The lock tool bar is created and registered as an action to be used
+        // in the cool bar context menu
+        mLockToolBarAction = ActionFactory.LOCK_TOOL_BAR.create(pWindow);
+        register(mLockToolBarAction);
+
+        // The toggle cool bar is created and registered as an action to be used
+        // in the cool bar context menu
+        mToggleCoolBarAction = ActionFactory.TOGGLE_COOLBAR.create(pWindow);
+        register(mToggleCoolBarAction);
+
+        // Register the action to ensure that the associated command is working
+        register(ActionFactory.RESET_PERSPECTIVE.create(pWindow));
+        register(ActionFactory.SAVE_PERSPECTIVE.create(pWindow));
+        register(ActionFactory.SHOW_EDITOR.create(pWindow));
+        register(ActionFactory.REVERT.create(pWindow));
+        register(ActionFactory.SAVE.create(pWindow));
+        register(ActionFactory.SAVE_AS.create(pWindow));
+        register(ActionFactory.SAVE_ALL.create(pWindow));
+        register(ActionFactory.MOVE.create(pWindow));
+        register(ActionFactory.REFRESH.create(pWindow));
+        register(ActionFactory.UNDO.create(pWindow));
+        register(ActionFactory.REDO.create(pWindow));
+        register(ActionFactory.CUT.create(pWindow));
+        register(ActionFactory.COPY.create(pWindow));
+        register(ActionFactory.PASTE.create(pWindow));
+        register(ActionFactory.DELETE.create(pWindow));
+
+    }
+
+    /**
+     * @see org.eclipse.ui.application.ActionBarAdvisor#fillMenuBar(org.eclipse.jface.action.IMenuManager)
+     * 
+     * Method used to build add the content to the menu bar given in parameter.
+     * 
+     * @param pMenuBar The menu bar to fill
+     */
+    @Override
+    protected final void fillMenuBar(final IMenuManager pMenuBar) {
+
+        /*
+         * File menu
+         */
+        final MenuManager vFileMenuMgr = new MenuManager(MENU_FILE_LABEL, IWorkbenchActionConstants.M_FILE);
+        pMenuBar.add(vFileMenuMgr);
+
+        // Add the new wizards menu in the file menu
+        vFileMenuMgr.add(mNewWizardDropDownAction);
+
+        /*
+         * Edit menu
+         */
+        final MenuManager vEditMenu = new MenuManager(MENU_EDIT_LABEL, IWorkbenchActionConstants.M_EDIT);
+
+        // Add the group marker used by open text file menu
+        vEditMenu.add(new GroupMarker(IWorkbenchActionConstants.FIND_EXT));
+        
+        pMenuBar.add(vEditMenu);
+        
+        /*
+         * Separator to prepare the menu insertion, for example from EMF, etc.
+         */
+        pMenuBar.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS));
+
+        /*
+         * Window menu
+         */
+        final MenuManager vWindowMenuMgr = new MenuManager(MENU_WINDOW_LABEL, IWorkbenchActionConstants.M_WINDOW);
+        pMenuBar.add(vWindowMenuMgr);
+
+        final MenuManager vShowViewsMenu = new MenuManager(MENU_SHOWVIEW_LABEL);
+        vShowViewsMenu.add(mShowViewsContribution);
+
+        final MenuManager vOpenPerspectiveMenu = new MenuManager(MENU_OPENPERSPECTIVE_LABEL);
+        vOpenPerspectiveMenu.add(mOpenPerspectivesContribution);
+
+        vWindowMenuMgr.add(vOpenPerspectiveMenu);
+        vWindowMenuMgr.add(vShowViewsMenu);
+
+        /*
+         * Help menu
+         */
+        createHelpMenu(pMenuBar);
+    }
+    
+    /**
+     * Create the help menu and its content.
+     * 
+     * @param pMenuBar The parent menu manager which will contain the help menu
+     */
+    private void createHelpMenu(final IMenuManager pMenuBar) {
+        // Create the help menu and add it to the parent
+        final MenuManager vHelpMenuMgr = new MenuManager(MENU_HELP_LABEL, IWorkbenchActionConstants.M_HELP);
+        pMenuBar.add(vHelpMenuMgr);
+
+        // First add the main help actions
+        vHelpMenuMgr.add(mHelpContentsAction);
+        vHelpMenuMgr.add(mHelpSearchAction);
+        vHelpMenuMgr.add(mDynamicHelpAction);
+        
+        // Then add the standard group marker and separator used by external contributions
+        vHelpMenuMgr.add(new Separator(IWorkbenchActionConstants.HELP_START));
+        vHelpMenuMgr.add(new GroupMarker("group.main.ext")); //$NON-NLS-1$
+        vHelpMenuMgr.add(new GroupMarker("group.tutorials")); //$NON-NLS-1$
+        vHelpMenuMgr.add(new GroupMarker("group.tools")); //$NON-NLS-1$
+        vHelpMenuMgr.add(new GroupMarker("group.updates")); //$NON-NLS-1$
+        vHelpMenuMgr.add(new GroupMarker(IWorkbenchActionConstants.HELP_END));
+        vHelpMenuMgr.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS));
+        
+        // Finally, add the About group at the bottom
+        vHelpMenuMgr.add(new Separator("group.about")); //$NON-NLS-1$
+    }
+
+    /**
+     * @see org.eclipse.ui.application.ActionBarAdvisor#fillCoolBar(org.eclipse.jface.action.ICoolBarManager)
+     * @param pCoolBar The coolbar to fill
+     */
+    @Override
+    protected final void fillCoolBar(final ICoolBarManager pCoolBar) {
+        /*
+         * File part in the toolbar
+         */
+        final IToolBarManager vFileToolBar = new ToolBarManager(SWT.FLAT | SWT.RIGHT);
+        pCoolBar.add(new ToolBarContributionItem(vFileToolBar, IWorkbenchActionConstants.TOOLBAR_FILE));
+
+        vFileToolBar.add(mNewWizardDropDownAction);
+
+        /*
+         * Cool bar context menu (right click)
+         */
+        final MenuManager vContextMenuMgr = new MenuManager();
+        pCoolBar.setContextMenuManager(vContextMenuMgr);
+
+        vContextMenuMgr.add(mLockToolBarAction);
+        vContextMenuMgr.add(mToggleCoolBarAction);
+    }
+}
diff --git a/core/org.polarsys.esf.core.rcp/src/main/java/org/polarsys/esf/core/root/ApplicationWorkbenchAdvisor.java b/core/org.polarsys.esf.core.rcp/src/main/java/org/polarsys/esf/core/root/ApplicationWorkbenchAdvisor.java
new file mode 100644
index 0000000..a7bc395
--- /dev/null
+++ b/core/org.polarsys.esf.core.rcp/src/main/java/org/polarsys/esf/core/root/ApplicationWorkbenchAdvisor.java
@@ -0,0 +1,75 @@
+/*******************************************************************************
+ * Copyright (c) 2015 ALL4TEC.
+ * 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:
+ *     Jonathan Dumont (ALL4TEC) - initial API and implementation
+ ******************************************************************************/
+package org.polarsys.esf.core.root;
+
+import org.eclipse.ui.application.IWorkbenchConfigurer;
+import org.eclipse.ui.application.IWorkbenchWindowConfigurer;
+import org.eclipse.ui.application.WorkbenchWindowAdvisor;
+import org.polarsys.esf.core.framework.workbenchadvisor.AbstractWorkbenchAdvisorWithImages;
+
+/**
+ * First class to be called during the workbench initialisation. 
+ * It allows the customisation of some methods linked to
+ * the Workbench life cycle.
+ * 
+ * <p>
+ * It's in this class that the default perspective ID is defined.
+ * </p>
+ * 
+ * @author $Author: jdumont $
+ * @version $Revision: 90 $
+ */
+public class ApplicationWorkbenchAdvisor
+    extends AbstractWorkbenchAdvisorWithImages {
+
+    /** Id of the perspective to open by default. */
+    private static final String PERSPECTIVE_ID = "org.polarsys.esf.core.ui.perspective.design"; //$NON-NLS-1$
+
+    /**
+     * Default constructor.
+     */
+    public ApplicationWorkbenchAdvisor() {
+    }
+
+    /**
+     * @see org.eclipse.ui.application.WorkbenchAdvisor#createWorkbenchWindowAdvisor(IWorkbenchWindowConfigurer)
+     * 
+     * @param pConfigurer The configuration class
+     * @return WorkbenchWindowAdvisor The created object
+     */
+    @Override
+    public final WorkbenchWindowAdvisor createWorkbenchWindowAdvisor(final IWorkbenchWindowConfigurer pConfigurer) {
+        return new ApplicationWorkbenchWindowAdvisor(pConfigurer);
+    }
+
+    /**
+     * @see org.eclipse.ui.application.WorkbenchAdvisor#getInitialWindowPerspectiveId()
+     * 
+     * Method used to get the initial perspective id, which will be opened with the application
+     * @return String Id of the default perspective
+     */
+    @Override
+    public final String getInitialWindowPerspectiveId() {
+        return PERSPECTIVE_ID;
+    }
+
+    /**
+     * @see org.eclipse.ui.application.WorkbenchAdvisor#initialize(org.eclipse.ui.application.IWorkbenchConfigurer)
+     * 
+     * Method used to initialise the ApplicationWorkbench with some specific configurations.
+     * @param pConfigurer The configuration class
+     */
+    @Override
+    public final void initialize(final IWorkbenchConfigurer pConfigurer) {
+        // Call the parent method
+        super.initialize(pConfigurer);
+    }
+}
diff --git a/core/org.polarsys.esf.core.rcp/src/main/java/org/polarsys/esf/core/root/ApplicationWorkbenchWindowAdvisor.java b/core/org.polarsys.esf.core.rcp/src/main/java/org/polarsys/esf/core/root/ApplicationWorkbenchWindowAdvisor.java
new file mode 100644
index 0000000..ce9ff4e
--- /dev/null
+++ b/core/org.polarsys.esf.core.rcp/src/main/java/org/polarsys/esf/core/root/ApplicationWorkbenchWindowAdvisor.java
@@ -0,0 +1,80 @@
+/*******************************************************************************
+ * Copyright (c) 2015 ALL4TEC.
+ * 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:
+ *     Jonathan Dumont (ALL4TEC) - initial API and implementation
+ ******************************************************************************/
+package org.polarsys.esf.core.root;
+
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.ui.application.ActionBarAdvisor;
+import org.eclipse.ui.application.IActionBarConfigurer;
+import org.eclipse.ui.application.IWorkbenchWindowConfigurer;
+import org.eclipse.ui.application.WorkbenchWindowAdvisor;
+
+/**
+ * Second class to be called during the workbench initialization. For example, it allows the customisation of how the
+ * window is displayed, just before its opening
+ *
+ * @author $Author: jdumont $
+ * @version $Revision: 83 $
+ */
+public class ApplicationWorkbenchWindowAdvisor
+    extends WorkbenchWindowAdvisor {
+
+    /**
+     * Default constructor.
+     *
+     * @param pConfigurer The configuration class
+     */
+    public ApplicationWorkbenchWindowAdvisor(final IWorkbenchWindowConfigurer pConfigurer) {
+        super(pConfigurer);
+    }
+
+    /**
+     * @see org.eclipse.ui.application.WorkbenchWindowAdvisor#createActionBarAdvisor(org.eclipse.ui.application.IActionBarConfigurer)
+     * @param pConfigurer The configuration class
+     * @return ActionBarAdvisor The object created
+     */
+    @Override
+    public final ActionBarAdvisor createActionBarAdvisor(final IActionBarConfigurer pConfigurer) {
+        return new ApplicationActionBarAdvisor(pConfigurer);
+    }
+
+    /**
+     * @see org.eclipse.ui.application.WorkbenchWindowAdvisor#preWindowOpen()
+     *
+     * This method is called before the window opening. Thus, it's here that the window presentation must be customised.
+     */
+    @Override
+    public final void preWindowOpen() {
+        // Get the windows configurer
+        final IWorkbenchWindowConfigurer vConfigurer = getWindowConfigurer();
+
+        // Set the window presentation
+        vConfigurer.setInitialSize(new Point(800, 600));
+        vConfigurer.setShowCoolBar(true);
+        vConfigurer.setShowStatusLine(true);
+        vConfigurer.setShowPerspectiveBar(true);
+        vConfigurer.setShowProgressIndicator(true);
+
+        // The values in product file are unreachable. Then the window title management must be done manually to
+        // personalize it
+        vConfigurer.setTitle("ESF " + CoreRootActivator.getMessages().getString("Application.version"));
+    }
+
+    /**
+     * @see org.eclipse.ui.application.WorkbenchWindowAdvisor#postWindowOpen()
+     *
+     * This method is called after the window opening. It can be used to set some values, etc.
+     */
+    @Override
+    public final void postWindowOpen() {
+
+    }
+
+}
diff --git a/core/org.polarsys.esf.core.rcp/src/main/java/org/polarsys/esf/core/root/CoreRootActivator.java b/core/org.polarsys.esf.core.rcp/src/main/java/org/polarsys/esf/core/root/CoreRootActivator.java
new file mode 100644
index 0000000..bd01739
--- /dev/null
+++ b/core/org.polarsys.esf.core.rcp/src/main/java/org/polarsys/esf/core/root/CoreRootActivator.java
@@ -0,0 +1,139 @@
+/*******************************************************************************
+ * Copyright (c) 2015 ALL4TEC.
+ * 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:
+ *     Jonathan Dumont (ALL4TEC) - initial API and implementation
+ ******************************************************************************/
+package org.polarsys.esf.core.root;
+
+import java.util.ResourceBundle;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.emf.common.EMFPlugin;
+import org.eclipse.emf.common.ui.EclipseUIPlugin;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.polarsys.esf.core.common.messages.Messages;
+
+/**
+ * 
+ * The activator class controls the plug-in life cycle.
+ * It also provide an access to utility methods.
+ * 
+ * @author $Author: jdumont $
+ * @version $Revision: 83 $
+ * 
+ */
+public class CoreRootActivator
+    extends EMFPlugin {
+
+    /** The plug-in ID. */
+    public static final String PLUGIN_ID = "org.polarsys.esf.core.root"; //$NON-NLS-1$
+
+    /** /** The singleton instance of this class. */
+    private static final CoreRootActivator INSTANCE = new CoreRootActivator();
+
+    /** The shared instance of this plugin. */
+    private static Implementation sPlugin = null;
+
+    /** Messages class used to find localised string. */
+    private static Messages sMessages = new Messages(ResourceBundle.getBundle(Messages.BUNDLE_NAME));
+
+    /**
+     * The default constructor.
+     */
+    public CoreRootActivator() {
+        super(new ResourceLocator[] {});
+    }
+
+    /**
+     * Returns the singleton instance of the Eclipse plugin.
+     * 
+     * @return The singleton instance
+     */
+    public static Implementation getPlugin() {
+        return sPlugin;
+    }
+
+    /**
+     * Returns the singleton instance of the Eclipse plugin.
+     * 
+     * @return The singleton instance
+     */
+    @Override
+    public ResourceLocator getPluginResourceLocator() {
+        return sPlugin;
+    }
+
+    /**
+     * @return The messages class used to return localised string
+     */
+    public static Messages getMessages() {
+        return sMessages;
+    }
+
+    /**
+     * Create an Error status with the data given in parameter and log it.
+     * 
+     * @param pMessage The message to log
+     * @param pException The exception to log
+     */
+    public static void logError(final String pMessage, final Exception pException) {
+        // Create the Error status
+        IStatus vStatus = new Status(IStatus.ERROR, PLUGIN_ID, IStatus.ERROR, pMessage, pException);
+
+        // Log it
+        INSTANCE.log(vStatus);
+    }
+
+    /**
+     * Create a Warning status with the data given in parameter and log it.
+     * 
+     * @param pMessage The message to log
+     * @param pException The exception to log
+     */
+    public static void logWarning(final String pMessage, final Exception pException) {
+        // Create the Warning status
+        IStatus vStatus = new Status(IStatus.WARNING, PLUGIN_ID, IStatus.WARNING, pMessage, pException);
+
+        // Log it
+        INSTANCE.log(vStatus);
+    }
+
+    /**
+     * Create an Info status with the data given in parameter and log it.
+     * 
+     * @param pMessage The message to log
+     * @param pException The exception to log
+     */
+    public static void logInfo(final String pMessage, final Exception pException) {
+        // Create the Info status
+        IStatus vStatus = new Status(IStatus.INFO, PLUGIN_ID, IStatus.INFO, pMessage, pException);
+
+        // Log it
+        INSTANCE.log(vStatus);
+    }
+
+    /**
+     * The actual implementation of the Eclipse <b>Plugin</b>.
+     */
+    public static class Implementation
+        extends EclipseUIPlugin {
+
+        /**
+         * Default constructor.
+         */
+        public Implementation() {
+            super();
+
+            // Remember static instance
+            sPlugin = this;
+        }
+
+    }
+
+}
diff --git a/core/org.polarsys.esf.core.rcp/src/main/java/org/polarsys/esf/core/root/nature/ESFProjectNature.java b/core/org.polarsys.esf.core.rcp/src/main/java/org/polarsys/esf/core/root/nature/ESFProjectNature.java
new file mode 100644
index 0000000..6094755
--- /dev/null
+++ b/core/org.polarsys.esf.core.rcp/src/main/java/org/polarsys/esf/core/root/nature/ESFProjectNature.java
@@ -0,0 +1,68 @@
+/*******************************************************************************
+ * Copyright (c) 2015 ALL4TEC.
+ * 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:
+ *     Jonathan Dumont (ALL4TEC) - initial API and implementation
+ ******************************************************************************/
+package org.polarsys.esf.core.root.nature;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IProjectNature;
+import org.eclipse.core.runtime.CoreException;
+
+/**
+ * Configure ESF nature for project in workspace.
+ * 
+ * @author $Author: jdumont $
+ * @version $Revision: 83 $
+ */
+public class ESFProjectNature
+    implements IProjectNature {
+
+    /** Project register as ESF project. */
+    private IProject mProject = null;
+
+    /**
+     * Default constructor.
+     */
+    public ESFProjectNature() {
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void configure() throws CoreException {
+        // Nothing to do
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void deconfigure() throws CoreException {
+        // Nothing to do
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public IProject getProject() {
+        return mProject;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void setProject(final IProject pProject) {
+        mProject = pProject;
+
+    }
+
+}
diff --git a/core/org.polarsys.esf.core.rcp/src/main/resources/properties/nls/messages.properties b/core/org.polarsys.esf.core.rcp/src/main/resources/properties/nls/messages.properties
new file mode 100644
index 0000000..814af47
--- /dev/null
+++ b/core/org.polarsys.esf.core.rcp/src/main/resources/properties/nls/messages.properties
@@ -0,0 +1,17 @@
+
+ApplicationActionBarAdvisor.edit                   = &Edit
+ApplicationActionBarAdvisor.file                   = &File
+ApplicationActionBarAdvisor.help                   = &Help
+ApplicationActionBarAdvisor.window                 = &Window
+ApplicationActionBarAdvisor.window.openperspective = Open Perspective
+ApplicationActionBarAdvisor.window.showview        = Show View
+ApplicationActionBarAdvisor.file.new               = New
+
+ApplicationWorkbenchAdvisor.error.check  = .elbaliava eb lliw nekot a nehw tcetihcrA ytefaS tratser esaelP
+ApplicationWorkbenchAdvisor.error.dialog = rorrE esneciL
+ApplicationWorkbenchAdvisor.error.token  = .elbaliava nekot oN
+
+Application.workspace.error.title = Error
+Application.workspace.error.message = The application can not start without a workspace and will now exit.
+
+Application.version = ${product.version}
\ No newline at end of file
diff --git a/core/org.polarsys.esf.core.rcp/src/main/resources/properties/plugin.properties b/core/org.polarsys.esf.core.rcp/src/main/resources/properties/plugin.properties
new file mode 100644
index 0000000..758ff56
--- /dev/null
+++ b/core/org.polarsys.esf.core.rcp/src/main/resources/properties/plugin.properties
@@ -0,0 +1,17 @@
+#Properties file for org.polarsys.esf.core.root
+Bundle-Vendor = Polarsys
+Bundle-Name = ESF Root
+Product-name = ESF
+Product-about = Automatic generation of failures tree.\n \
+\n \
+ESF is a tool which allows to model and\n \
+analyse risk of complex system by working on physical or functional\n \
+architecture. It offers support for FMEA and generate automatically\n \
+the failures tree associated to hazardous events.\n \
+\n \
+Icons from : http://www.famfamfam.com/\n \
+\n \
+ESF - ${product.version} - Build : ${env.BUILD_NUMBER} - ${env.BUILD_ID}
+
+content-type.sa.name = ESF source
+content-type.propagationtree.name = Propagation Tree source
\ No newline at end of file
diff --git a/core/org.polarsys.esf.core.rcp/src/main/resources/sa.cert b/core/org.polarsys.esf.core.rcp/src/main/resources/sa.cert
new file mode 100644
index 0000000..a5cb828
--- /dev/null
+++ b/core/org.polarsys.esf.core.rcp/src/main/resources/sa.cert
Binary files differ