added e4 demo
diff --git a/extra/org.eclipse.emf.ecp.application.e4/.classpath b/extra/org.eclipse.emf.ecp.application.e4/.classpath
new file mode 100644
index 0000000..ad32c83
--- /dev/null
+++ b/extra/org.eclipse.emf.ecp.application.e4/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/extra/org.eclipse.emf.ecp.application.e4/.project b/extra/org.eclipse.emf.ecp.application.e4/.project
new file mode 100644
index 0000000..e570693
--- /dev/null
+++ b/extra/org.eclipse.emf.ecp.application.e4/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.emf.ecp.application.e4</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/extra/org.eclipse.emf.ecp.application.e4/.settings/org.eclipse.jdt.core.prefs b/extra/org.eclipse.emf.ecp.application.e4/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..c537b63
--- /dev/null
+++ b/extra/org.eclipse.emf.ecp.application.e4/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.6
diff --git a/extra/org.eclipse.emf.ecp.application.e4/.settings/org.eclipse.pde.core.prefs b/extra/org.eclipse.emf.ecp.application.e4/.settings/org.eclipse.pde.core.prefs
new file mode 100644
index 0000000..f29e940
--- /dev/null
+++ b/extra/org.eclipse.emf.ecp.application.e4/.settings/org.eclipse.pde.core.prefs
@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+pluginProject.extensions=false
+resolve.requirebundle=false
diff --git a/extra/org.eclipse.emf.ecp.application.e4/Application.e4xmi b/extra/org.eclipse.emf.ecp.application.e4/Application.e4xmi
new file mode 100644
index 0000000..ae99994
--- /dev/null
+++ b/extra/org.eclipse.emf.ecp.application.e4/Application.e4xmi
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<application:Application xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:application="http://www.eclipse.org/ui/2010/UIModel/application" xmlns:basic="http://www.eclipse.org/ui/2010/UIModel/application/ui/basic" xmlns:menu="http://www.eclipse.org/ui/2010/UIModel/application/ui/menu" xmi:id="_0JoRAJgREeKJoJcmiy2C6w" elementId="org.eclipse.e4.ide.application">
+  <children xsi:type="basic:TrimmedWindow" xmi:id="_0JoRAZgREeKJoJcmiy2C6w" label="org.eclipse.emf.ecp.e4.application" width="500" height="400">
+    <children xsi:type="basic:PartSashContainer" xmi:id="_AErb0JgUEeKJoJcmiy2C6w" elementId="org.eclipse.emf.ecp.e4.application.partsashcontainer.1" selectedElement="_lM0okJgTEeKJoJcmiy2C6w">
+      <children xsi:type="basic:PartSashContainer" xmi:id="_lM0okJgTEeKJoJcmiy2C6w" elementId="org.eclipse.emf.ecp.e4.application.partsashcontainer.0" horizontal="true">
+        <children xsi:type="basic:PartStack" xmi:id="_8GAbsJoUEeKJoJcmiy2C6w" elementId="org.eclipse.emf.ecp.e4.application.partstack.2">
+          <children xsi:type="basic:Part" xmi:id="_nOXCgJgTEeKJoJcmiy2C6w" elementId="org.eclipse.emf.ecp.e4.application.part.navigator" contributionURI="bundleclass://org.eclipse.emf.ecp.application.e4/org.eclipse.emf.ecp.e4.view.ECPModelView" label="Model Navigator" closeable="true">
+            <menus xsi:type="menu:PopupMenu" xmi:id="_dAsF4JgZEeKJoJcmiy2C6w" elementId="org.eclipse.emf.ecp.e4.application.popupmenu.navigator" label="Navigator menu">
+              <children xsi:type="menu:HandledMenuItem" xmi:id="_ibQRIJgZEeKJoJcmiy2C6w" elementId="org.eclipse.emf.ecp.e4.application.handledmenuitem.newProject" label="New Project" command="_ogB3AJgZEeKJoJcmiy2C6w"/>
+              <children xsi:type="menu:HandledMenuItem" xmi:id="_c1wWwJoSEeKJoJcmiy2C6w" elementId="org.eclipse.emf.ecp.e4.application.handledmenuitem.project.newModelElement" label="New Model Element" command="_StwzEJoSEeKJoJcmiy2C6w"/>
+              <children xsi:type="menu:HandledMenuItem" xmi:id="_eu6RsJrLEeKJoJcmiy2C6w" elementId="org.eclipse.emf.ecp.e4.application.handledmenuitem.0"/>
+            </menus>
+            <toolbar xmi:id="_uWMcwJoUEeKJoJcmiy2C6w" elementId="org.eclipse.emf.ecp.e4.application.toolbar.0">
+              <children xsi:type="menu:HandledToolItem" xmi:id="_CPQPoJrKEeKJoJcmiy2C6w" elementId="org.eclipse.emf.ecp.e4.application.handledtoolitem.1" command="_ogB3AJgZEeKJoJcmiy2C6w"/>
+            </toolbar>
+          </children>
+        </children>
+        <children xsi:type="basic:PartStack" xmi:id="_nrd1QJgTEeKJoJcmiy2C6w" elementId="org.eclipse.emf.ecp.e4.application.partstack.0">
+          <tags>editorPart</tags>
+        </children>
+      </children>
+      <children xsi:type="basic:PartStack" xmi:id="_wpiYYJoUEeKJoJcmiy2C6w" elementId="org.eclipse.emf.ecp.e4.application.partstack.1">
+        <children xsi:type="basic:Part" xmi:id="_CJd-EJgUEeKJoJcmiy2C6w" elementId="org.eclipse.emf.ecp.e4.application.part.repository" contributionURI="bundleclass://org.eclipse.emf.ecp.application.e4/org.eclipse.emf.ecp.e4.view.ECPRepositoryView" label="Repository View">
+          <menus xsi:type="menu:PopupMenu" xmi:id="_WzCwgJgcEeKJoJcmiy2C6w" elementId="org.eclipse.emf.ecp.e4.application.popupmenu.repository" label="Repo Popup">
+            <children xsi:type="menu:HandledMenuItem" xmi:id="_bKyM0JgcEeKJoJcmiy2C6w" elementId="org.eclipse.emf.ecp.e4.application.handledmenuitem.checkout" label="Checkout" iconURI="platform:/plugin/org.eclipse.emf.ecp.e4.application/icons/sample.gif" command="_eOWrgJgcEeKJoJcmiy2C6w"/>
+          </menus>
+        </children>
+      </children>
+    </children>
+    <trimBars xmi:id="_MWSIoJgaEeKJoJcmiy2C6w" elementId="org.eclipse.emf.ecp.e4.application.trimbar.0">
+      <children xsi:type="menu:ToolBar" xmi:id="_M4bMYJgaEeKJoJcmiy2C6w" elementId="org.eclipse.emf.ecp.e4.application.toolbar.1">
+        <children xsi:type="menu:HandledToolItem" xmi:id="_N5wtkJgaEeKJoJcmiy2C6w" elementId="org.eclipse.emf.ecp.e4.application.handledtoolitem.0" label="New Project" command="_ogB3AJgZEeKJoJcmiy2C6w"/>
+      </children>
+    </trimBars>
+  </children>
+  <handlers xmi:id="_q5IcYJgZEeKJoJcmiy2C6w" elementId="org.eclipse.emf.ecp.e4.application.handler.newProject" contributionURI="bundleclass://org.eclipse.emf.ecp.application.e4/org.eclipse.emf.ecp.e4.handlers.NewProjectHandler" command="_ogB3AJgZEeKJoJcmiy2C6w"/>
+  <handlers xmi:id="_fb0kMJgcEeKJoJcmiy2C6w" elementId="org.eclipse.emf.ecp.e4.application.handler.checkoutProject" contributionURI="bundleclass://org.eclipse.emf.ecp.application.e4/org.eclipse.emf.ecp.e4.handlers.CheckoutProjectHandler" command="_eOWrgJgcEeKJoJcmiy2C6w"/>
+  <handlers xmi:id="_XchBMJoSEeKJoJcmiy2C6w" elementId="org.eclipse.emf.ecp.e4.application.handler.project.newModelElement" contributionURI="bundleclass://org.eclipse.emf.ecp.application.e4/org.eclipse.emf.ecp.e4.handlers.NewModelElementHandler" command="_StwzEJoSEeKJoJcmiy2C6w"/>
+  <descriptors xmi:id="_5aBzoJgREeKJoJcmiy2C6w" elementId="org.eclipse.emf.ecp.e4.application.partdescriptor.editor" label="Editor" tooltip="Editor" allowMultiple="true" category="editorPart" closeable="true" contributionURI="bundleclass://org.eclipse.emf.ecp.application.e4/org.eclipse.emf.ecp.e4.editor.ECPE4Editor"/>
+  <commands xmi:id="_ogB3AJgZEeKJoJcmiy2C6w" elementId="org.eclipse.emf.ecp.e4.application.command.newProject" commandName="New Project"/>
+  <commands xmi:id="_eOWrgJgcEeKJoJcmiy2C6w" elementId="org.eclipse.emf.ecp.e4.application.command.checkoutProject" commandName="Checkout"/>
+  <commands xmi:id="_StwzEJoSEeKJoJcmiy2C6w" elementId="org.eclipse.emf.ecp.e4.application.command.project.newModelElement" commandName="New Model element"/>
+  <commands xmi:id="_X2_JIJoyEeKJoJcmiy2C6w" elementId="org.eclipse.emf.ecp.e4.application.command.repository.emfstore.login" commandName="New Model element"/>
+  <addons xmi:id="_0JoRApgREeKJoJcmiy2C6w" elementId="org.eclipse.e4.core.commands.service" contributionURI="bundleclass://org.eclipse.e4.core.commands/org.eclipse.e4.core.commands.CommandServiceAddon"/>
+  <addons xmi:id="_0JoRA5gREeKJoJcmiy2C6w" elementId="org.eclipse.e4.ui.contexts.service" contributionURI="bundleclass://org.eclipse.e4.ui.services/org.eclipse.e4.ui.services.ContextServiceAddon"/>
+  <addons xmi:id="_0JoRBJgREeKJoJcmiy2C6w" elementId="org.eclipse.e4.ui.bindings.service" contributionURI="bundleclass://org.eclipse.e4.ui.bindings/org.eclipse.e4.ui.bindings.BindingServiceAddon"/>
+  <addons xmi:id="_0JoRBZgREeKJoJcmiy2C6w" elementId="org.eclipse.e4.ui.workbench.commands.model" contributionURI="bundleclass://org.eclipse.e4.ui.workbench/org.eclipse.e4.ui.internal.workbench.addons.CommandProcessingAddon"/>
+  <addons xmi:id="_0JoRBpgREeKJoJcmiy2C6w" elementId="org.eclipse.e4.ui.workbench.contexts.model" contributionURI="bundleclass://org.eclipse.e4.ui.workbench/org.eclipse.e4.ui.internal.workbench.addons.ContextProcessingAddon"/>
+  <addons xmi:id="_0JoRB5gREeKJoJcmiy2C6w" elementId="org.eclipse.e4.ui.workbench.bindings.model" contributionURI="bundleclass://org.eclipse.e4.ui.workbench.swt/org.eclipse.e4.ui.workbench.swt.util.BindingProcessingAddon"/>
+</application:Application>
diff --git a/extra/org.eclipse.emf.ecp.application.e4/META-INF/MANIFEST.MF b/extra/org.eclipse.emf.ecp.application.e4/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..1d14705
--- /dev/null
+++ b/extra/org.eclipse.emf.ecp.application.e4/META-INF/MANIFEST.MF
@@ -0,0 +1,32 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: ECP e4 Application
+Bundle-SymbolicName: org.eclipse.emf.ecp.application.e4;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-Activator: org.eclipse.emf.ecp.e4.application.Activator
+Require-Bundle: javax.inject;bundle-version="1.0.0",
+ org.eclipse.core.runtime;bundle-version="3.8.0",
+ org.eclipse.swt;bundle-version="3.100.1",
+ org.eclipse.core.databinding;bundle-version="1.4.1",
+ org.eclipse.core.databinding.beans;bundle-version="1.2.200",
+ org.eclipse.jface;bundle-version="3.8.101",
+ org.eclipse.jface.databinding;bundle-version="1.6.0",
+ org.eclipse.e4.ui.services;bundle-version="0.10.2",
+ org.eclipse.e4.ui.workbench;bundle-version="0.10.3",
+ org.eclipse.e4.core.services;bundle-version="1.0.0",
+ org.eclipse.e4.core.di;bundle-version="1.1.0",
+ org.eclipse.e4.ui.di;bundle-version="0.10.1",
+ org.eclipse.e4.core.contexts;bundle-version="1.1.0",
+ org.eclipse.e4.ui.workbench.swt;bundle-version="0.10.2",
+ org.eclipse.core.databinding.property;bundle-version="1.4.100",
+ org.eclipse.e4.ui.css.core;bundle-version="0.10.2",
+ org.w3c.css.sac;bundle-version="1.3.1",
+ org.eclipse.e4.core.commands;bundle-version="0.10.1",
+ org.eclipse.e4.ui.bindings;bundle-version="0.10.1",
+ org.eclipse.emf.ecp.editor;bundle-version="1.0.0",
+ org.eclipse.emf.ecp.ui;bundle-version="1.0.0"
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Import-Package: javax.annotation;version="1.0.0",
+ org.eclipse.emf.ecp.explorereditorbridge.internal;version="1.0.0",
+ org.osgi.framework;version="1.3.0"
+Bundle-ActivationPolicy: lazy
diff --git a/extra/org.eclipse.emf.ecp.application.e4/build.properties b/extra/org.eclipse.emf.ecp.application.e4/build.properties
new file mode 100644
index 0000000..25bc7a6
--- /dev/null
+++ b/extra/org.eclipse.emf.ecp.application.e4/build.properties
@@ -0,0 +1,7 @@
+output.. = bin/
+bin.includes = META-INF/,\
+               .,\
+               plugin.xml,\
+               Application.e4xmi,\
+               css/default.css
+source.. = src/
diff --git a/extra/org.eclipse.emf.ecp.application.e4/css/default.css b/extra/org.eclipse.emf.ecp.application.e4/css/default.css
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/extra/org.eclipse.emf.ecp.application.e4/css/default.css
diff --git a/extra/org.eclipse.emf.ecp.application.e4/icons/sample.gif b/extra/org.eclipse.emf.ecp.application.e4/icons/sample.gif
new file mode 100644
index 0000000..34fb3c9
--- /dev/null
+++ b/extra/org.eclipse.emf.ecp.application.e4/icons/sample.gif
Binary files differ
diff --git a/extra/org.eclipse.emf.ecp.application.e4/icons/save_edit.gif b/extra/org.eclipse.emf.ecp.application.e4/icons/save_edit.gif
new file mode 100644
index 0000000..499dd0c
--- /dev/null
+++ b/extra/org.eclipse.emf.ecp.application.e4/icons/save_edit.gif
Binary files differ
diff --git a/extra/org.eclipse.emf.ecp.application.e4/org.eclipse.emf.ecp.e4.application.product b/extra/org.eclipse.emf.ecp.application.e4/org.eclipse.emf.ecp.e4.application.product
new file mode 100644
index 0000000..42bbb72
--- /dev/null
+++ b/extra/org.eclipse.emf.ecp.application.e4/org.eclipse.emf.ecp.e4.application.product
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?pde version="3.5"?>
+
+<product name="org.eclipse.emf.ecp.e4.application" uid="org.eclipse.emf.ecp.e4.application.demo" id="org.eclipse.emf.ecp.e4.application.product" application="org.eclipse.e4.ui.workbench.swt.E4Application" version="1.0.0.qualifier" useFeatures="false" includeLaunchers="true">
+
+   <configIni use="default">
+   </configIni>
+
+   <launcherArgs>
+      <programArgs>-clearPersistedState</programArgs>
+      <vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts</vmArgsMac>
+   </launcherArgs>
+
+   <windowImages/>
+
+   <plugins>
+      <plugin id="com.ibm.icu"/>
+      <plugin id="javax.annotation"/>
+      <plugin id="javax.inject"/>
+      <plugin id="javax.xml"/>
+      <plugin id="org.apache.batik.css"/>
+      <plugin id="org.apache.batik.util"/>
+      <plugin id="org.apache.batik.util.gui"/>
+      <plugin id="org.apache.commons.logging"/>
+      <plugin id="org.eclipse.core.commands"/>
+      <plugin id="org.eclipse.core.contenttype"/>
+      <plugin id="org.eclipse.core.databinding"/>
+      <plugin id="org.eclipse.core.databinding.beans"/>
+      <plugin id="org.eclipse.core.databinding.observable"/>
+      <plugin id="org.eclipse.core.databinding.property"/>
+      <plugin id="org.eclipse.core.expressions"/>
+      <plugin id="org.eclipse.core.filesystem"/>
+      <plugin id="org.eclipse.core.filesystem.aix.ppc" fragment="true"/>
+      <plugin id="org.eclipse.core.filesystem.hpux.ia64_32" fragment="true"/>
+      <plugin id="org.eclipse.core.filesystem.linux.ppc" fragment="true"/>
+      <plugin id="org.eclipse.core.filesystem.linux.x86" fragment="true"/>
+      <plugin id="org.eclipse.core.filesystem.linux.x86_64" fragment="true"/>
+      <plugin id="org.eclipse.core.filesystem.macosx" fragment="true"/>
+      <plugin id="org.eclipse.core.filesystem.solaris.sparc" fragment="true"/>
+      <plugin id="org.eclipse.core.filesystem.win32.x86" fragment="true"/>
+      <plugin id="org.eclipse.core.filesystem.win32.x86_64" fragment="true"/>
+      <plugin id="org.eclipse.core.jobs"/>
+      <plugin id="org.eclipse.core.resources"/>
+      <plugin id="org.eclipse.core.resources.win32.x86" fragment="true"/>
+      <plugin id="org.eclipse.core.runtime"/>
+      <plugin id="org.eclipse.core.runtime.compatibility.registry" fragment="true"/>
+      <plugin id="org.eclipse.e4.core.commands"/>
+      <plugin id="org.eclipse.e4.core.contexts"/>
+      <plugin id="org.eclipse.e4.core.di"/>
+      <plugin id="org.eclipse.e4.core.di.extensions"/>
+      <plugin id="org.eclipse.e4.core.services"/>
+      <plugin id="org.eclipse.e4.ui.bindings"/>
+      <plugin id="org.eclipse.e4.ui.css.core"/>
+      <plugin id="org.eclipse.e4.ui.css.swt"/>
+      <plugin id="org.eclipse.e4.ui.css.swt.theme"/>
+      <plugin id="org.eclipse.e4.ui.di"/>
+      <plugin id="org.eclipse.e4.ui.model.workbench"/>
+      <plugin id="org.eclipse.e4.ui.services"/>
+      <plugin id="org.eclipse.e4.ui.widgets"/>
+      <plugin id="org.eclipse.e4.ui.workbench"/>
+      <plugin id="org.eclipse.e4.ui.workbench.renderers.swt"/>
+      <plugin id="org.eclipse.e4.ui.workbench.renderers.swt.cocoa" fragment="true"/>
+      <plugin id="org.eclipse.e4.ui.workbench.swt"/>
+      <plugin id="org.eclipse.e4.ui.workbench3"/>
+      <plugin id="org.eclipse.emf.common"/>
+      <plugin id="org.eclipse.emf.databinding"/>
+      <plugin id="org.eclipse.emf.databinding.edit"/>
+      <plugin id="org.eclipse.emf.ecore"/>
+      <plugin id="org.eclipse.emf.ecore.change"/>
+      <plugin id="org.eclipse.emf.ecore.xmi"/>
+      <plugin id="org.eclipse.emf.ecp.e4.application"/>
+      <plugin id="org.eclipse.emf.ecp.edit"/>
+      <plugin id="org.eclipse.emf.ecp.editor"/>
+      <plugin id="org.eclipse.emf.edit"/>
+      <plugin id="org.eclipse.equinox.app"/>
+      <plugin id="org.eclipse.equinox.common"/>
+      <plugin id="org.eclipse.equinox.concurrent"/>
+      <plugin id="org.eclipse.equinox.ds"/>
+      <plugin id="org.eclipse.equinox.event"/>
+      <plugin id="org.eclipse.equinox.preferences"/>
+      <plugin id="org.eclipse.equinox.registry"/>
+      <plugin id="org.eclipse.equinox.servletbridge.extensionbundle" fragment="true"/>
+      <plugin id="org.eclipse.equinox.transforms.hook" fragment="true"/>
+      <plugin id="org.eclipse.equinox.util"/>
+      <plugin id="org.eclipse.equinox.weaving.hook" fragment="true"/>
+      <plugin id="org.eclipse.help"/>
+      <plugin id="org.eclipse.jface"/>
+      <plugin id="org.eclipse.jface.databinding"/>
+      <plugin id="org.eclipse.osgi"/>
+      <plugin id="org.eclipse.osgi.services"/>
+      <plugin id="org.eclipse.swt"/>
+      <plugin id="org.eclipse.swt.carbon.macosx" fragment="true"/>
+      <plugin id="org.eclipse.swt.cocoa.macosx" fragment="true"/>
+      <plugin id="org.eclipse.swt.cocoa.macosx.x86_64" fragment="true"/>
+      <plugin id="org.eclipse.swt.gtk.aix.ppc" fragment="true"/>
+      <plugin id="org.eclipse.swt.gtk.aix.ppc64" fragment="true"/>
+      <plugin id="org.eclipse.swt.gtk.hpux.ia64_32" fragment="true"/>
+      <plugin id="org.eclipse.swt.gtk.linux.ppc" fragment="true"/>
+      <plugin id="org.eclipse.swt.gtk.linux.ppc64" fragment="true"/>
+      <plugin id="org.eclipse.swt.gtk.linux.s390" fragment="true"/>
+      <plugin id="org.eclipse.swt.gtk.linux.s390x" fragment="true"/>
+      <plugin id="org.eclipse.swt.gtk.linux.x86" fragment="true"/>
+      <plugin id="org.eclipse.swt.gtk.linux.x86_64" fragment="true"/>
+      <plugin id="org.eclipse.swt.gtk.solaris.sparc" fragment="true"/>
+      <plugin id="org.eclipse.swt.gtk.solaris.x86" fragment="true"/>
+      <plugin id="org.eclipse.swt.motif.aix.ppc" fragment="true"/>
+      <plugin id="org.eclipse.swt.motif.hpux.ia64_32" fragment="true"/>
+      <plugin id="org.eclipse.swt.motif.linux.x86" fragment="true"/>
+      <plugin id="org.eclipse.swt.motif.solaris.sparc" fragment="true"/>
+      <plugin id="org.eclipse.swt.photon.qnx.x86" fragment="true"/>
+      <plugin id="org.eclipse.swt.win32.win32.x86" fragment="true"/>
+      <plugin id="org.eclipse.swt.win32.win32.x86_64" fragment="true"/>
+      <plugin id="org.eclipse.ui.workbench"/>
+      <plugin id="org.w3c.css.sac"/>
+      <plugin id="org.w3c.dom.smil"/>
+      <plugin id="org.w3c.dom.svg"/>
+   </plugins>
+
+
+</product>
diff --git a/extra/org.eclipse.emf.ecp.application.e4/plugin.xml b/extra/org.eclipse.emf.ecp.application.e4/plugin.xml
new file mode 100644
index 0000000..ee30a0b
--- /dev/null
+++ b/extra/org.eclipse.emf.ecp.application.e4/plugin.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<plugin>
+
+   <extension
+         id="product"
+         point="org.eclipse.core.runtime.products">
+      <product
+            name="org.eclipse.emf.ecp.e4.application"
+            application="org.eclipse.e4.ui.workbench.swt.E4Application">
+         <property
+               name="clearPersistedState"
+               value="true">
+         </property>
+         <property
+               name="applicationCSS"
+               value="platform:/plugin/org.eclipse.emf.ecp.e4.application/css/default.css">
+         </property>
+         <property
+               name="appName"
+               value="org.eclipse.emf.ecp.e4.application">
+         </property>
+      </product>
+   </extension>
+   <extension
+         point="org.eclipse.emf.ecp.ui.modelElementOpener">
+      <ModelElementOpener
+            class="org.eclipse.emf.ecp.e4.editor.E4ModelElementOpener"
+            name="org.eclipse.emf.ecp.e4.application.ModelElementOpener">
+         <staticTester
+               modelElement="org.eclipse.emf.ecore.EObject"
+               priority="2">
+         </staticTester>
+      </ModelElementOpener>
+   </extension>
+
+</plugin>
diff --git a/extra/org.eclipse.emf.ecp.application.e4/src/org/eclipse/emf/ecp/e4/application/Activator.java b/extra/org.eclipse.emf.ecp.application.e4/src/org/eclipse/emf/ecp/e4/application/Activator.java
new file mode 100644
index 0000000..990742a
--- /dev/null
+++ b/extra/org.eclipse.emf.ecp.application.e4/src/org/eclipse/emf/ecp/e4/application/Activator.java
@@ -0,0 +1,50 @@
+package org.eclipse.emf.ecp.e4.application;
+
+import java.util.Collection;
+
+import org.eclipse.e4.core.contexts.IContextFunction;
+import org.eclipse.e4.ui.internal.workbench.E4Workbench;
+import org.eclipse.e4.ui.services.EContextService;
+import org.eclipse.e4.ui.workbench.modeling.EPartService;
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.InvalidSyntaxException;
+import org.osgi.framework.ServiceReference;
+
+public class Activator implements BundleActivator {
+
+	private static BundleContext context;
+
+	static BundleContext getContext() {
+		return context;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)
+	 */
+	public void start(BundleContext bundleContext) throws Exception {
+		Activator.context = bundleContext;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
+	 */
+	public void stop(BundleContext bundleContext) throws Exception {
+		Activator.context = null;
+	}
+	
+	public static EPartService getEPartService(){
+		try {
+			ServiceReference<?> service=context.getServiceReferences(IContextFunction.class.getName(),"(service.context.key="+EPartService.class.getName()+")")[0];
+			//TODO a "bit" ugly
+			return (EPartService) ((IContextFunction)context.getService(service)).compute(E4Workbench.getServiceContext());
+		} catch (InvalidSyntaxException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+		return null;
+	}
+
+}
diff --git a/extra/org.eclipse.emf.ecp.application.e4/src/org/eclipse/emf/ecp/e4/editor/E4ModelElementOpener.java b/extra/org.eclipse.emf.ecp.application.e4/src/org/eclipse/emf/ecp/e4/editor/E4ModelElementOpener.java
new file mode 100644
index 0000000..71957f4
--- /dev/null
+++ b/extra/org.eclipse.emf.ecp.application.e4/src/org/eclipse/emf/ecp/e4/editor/E4ModelElementOpener.java
@@ -0,0 +1,27 @@
+package org.eclipse.emf.ecp.e4.editor;
+
+import javax.inject.Inject;
+
+import org.eclipse.e4.core.contexts.ContextInjectionFactory;
+import org.eclipse.e4.core.di.annotations.Creatable;
+import org.eclipse.e4.ui.model.application.ui.basic.MPart;
+import org.eclipse.e4.ui.workbench.modeling.EPartService;
+import org.eclipse.e4.ui.workbench.modeling.EPartService.PartState;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecp.core.ECPProject;
+import org.eclipse.emf.ecp.e4.application.Activator;
+import org.eclipse.emf.ecp.ui.util.ECPModelElementOpener;
+
+
+public class E4ModelElementOpener implements ECPModelElementOpener {
+
+	@Override
+	public void openModelElement(Object modelElement, ECPProject ecpProject) {
+		
+//		Activator.getEContextService();
+		EPartService partService=Activator.getEPartService();
+		MPart part=partService.createPart("org.eclipse.emf.ecp.e4.application.partdescriptor.editor");
+		partService.showPart(part, PartState.ACTIVATE);
+	}
+
+}
diff --git a/extra/org.eclipse.emf.ecp.application.e4/src/org/eclipse/emf/ecp/e4/editor/ECPE4Editor.java b/extra/org.eclipse.emf.ecp.application.e4/src/org/eclipse/emf/ecp/e4/editor/ECPE4Editor.java
new file mode 100644
index 0000000..b8ae938
--- /dev/null
+++ b/extra/org.eclipse.emf.ecp.application.e4/src/org/eclipse/emf/ecp/e4/editor/ECPE4Editor.java
@@ -0,0 +1,37 @@
+package org.eclipse.emf.ecp.e4.editor;
+
+import javax.annotation.PostConstruct;
+import javax.inject.Inject;
+import javax.inject.Named;
+
+import org.eclipse.e4.core.di.annotations.Optional;
+import org.eclipse.e4.ui.services.IServiceConstants;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecp.core.ECPProject;
+import org.eclipse.emf.ecp.core.ECPProjectManager;
+import org.eclipse.emf.ecp.core.util.ECPUtil;
+import org.eclipse.emf.ecp.edit.ECPEditorContext;
+import org.eclipse.emf.ecp.editor.EditorFactory;
+import org.eclipse.emf.ecp.editor.IEditorCompositeProvider;
+import org.eclipse.emf.ecp.explorereditorbridge.internal.EditorContext;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+
+public class ECPE4Editor {
+
+	public ECPE4Editor(){
+		
+	}
+	
+	@PostConstruct
+	public void construct(Composite composite,@Named(IServiceConstants.ACTIVE_SELECTION) @Optional EObject modelElement){
+//		IEditorCompositeProvider compositeProvider=EditorFactory.INSTANCE.getEditorComposite(modelElementContext);
+//		Composite editorComposite=compositeProvider.createUI(composite);
+		if(modelElement==null)
+			return;
+		ECPEditorContext editorContext=new EditorContext(modelElement, ECPUtil.getECPProjectManager().getProject(modelElement), composite.getShell());
+		IEditorCompositeProvider editorPageContent = EditorFactory.INSTANCE.getEditorComposite(editorContext);
+		editorPageContent.createUI(composite);
+	}
+}
diff --git a/extra/org.eclipse.emf.ecp.application.e4/src/org/eclipse/emf/ecp/e4/handlers/CheckoutProjectHandler.java b/extra/org.eclipse.emf.ecp.application.e4/src/org/eclipse/emf/ecp/e4/handlers/CheckoutProjectHandler.java
new file mode 100644
index 0000000..073809d
--- /dev/null
+++ b/extra/org.eclipse.emf.ecp.application.e4/src/org/eclipse/emf/ecp/e4/handlers/CheckoutProjectHandler.java
@@ -0,0 +1,25 @@
+package org.eclipse.emf.ecp.e4.handlers;
+
+import java.util.Collections;
+
+import javax.inject.Named;
+
+import org.eclipse.e4.core.di.annotations.CanExecute;
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.core.di.annotations.Optional;
+import org.eclipse.e4.ui.services.IServiceConstants;
+import org.eclipse.emf.ecp.core.util.ECPCheckoutSource;
+import org.eclipse.emf.ecp.internal.ui.util.ECPHandlerHelper;
+import org.eclipse.swt.widgets.Shell;
+
+public class CheckoutProjectHandler {
+
+	@Execute
+	public void execute(Shell shell,@Named(IServiceConstants.ACTIVE_SELECTION) @Optional ECPCheckoutSource checkoutSource){
+		ECPHandlerHelper.checkout(Collections.singletonList(checkoutSource), shell);
+	}
+	@CanExecute
+	public boolean canExecute(){
+		return true;
+	}
+}
diff --git a/extra/org.eclipse.emf.ecp.application.e4/src/org/eclipse/emf/ecp/e4/handlers/NewModelElementHandler.java b/extra/org.eclipse.emf.ecp.application.e4/src/org/eclipse/emf/ecp/e4/handlers/NewModelElementHandler.java
new file mode 100644
index 0000000..597d41a
--- /dev/null
+++ b/extra/org.eclipse.emf.ecp.application.e4/src/org/eclipse/emf/ecp/e4/handlers/NewModelElementHandler.java
@@ -0,0 +1,25 @@
+package org.eclipse.emf.ecp.e4.handlers;
+
+import javax.inject.Named;
+
+import org.eclipse.e4.core.di.annotations.CanExecute;
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.core.di.annotations.Optional;
+import org.eclipse.e4.ui.services.IServiceConstants;
+import org.eclipse.emf.ecp.core.ECPProject;
+import org.eclipse.emf.ecp.internal.ui.util.ECPHandlerHelper;
+import org.eclipse.swt.widgets.Shell;
+
+public class NewModelElementHandler {
+
+	@Execute
+	public void execute(Shell shell,@Named(IServiceConstants.ACTIVE_SELECTION) @Optional ECPProject ecpProject){
+		if(ecpProject==null)
+			return;
+		ECPHandlerHelper.addModelElement(ecpProject, shell, false);
+	}
+	@CanExecute
+	public boolean canExecute(@Named(IServiceConstants.ACTIVE_SELECTION) @Optional ECPProject ecpProject){
+		return ecpProject!=null;
+	}
+}
diff --git a/extra/org.eclipse.emf.ecp.application.e4/src/org/eclipse/emf/ecp/e4/handlers/NewProjectHandler.java b/extra/org.eclipse.emf.ecp.application.e4/src/org/eclipse/emf/ecp/e4/handlers/NewProjectHandler.java
new file mode 100644
index 0000000..b7ea8c6
--- /dev/null
+++ b/extra/org.eclipse.emf.ecp.application.e4/src/org/eclipse/emf/ecp/e4/handlers/NewProjectHandler.java
@@ -0,0 +1,18 @@
+package org.eclipse.emf.ecp.e4.handlers;
+
+import org.eclipse.e4.core.di.annotations.CanExecute;
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.emf.ecp.internal.ui.util.ECPHandlerHelper;
+import org.eclipse.swt.widgets.Shell;
+
+public class NewProjectHandler {
+
+	@Execute
+	public void execute(Shell shell){
+		ECPHandlerHelper.createProject(shell);
+	}
+	@CanExecute
+	public boolean canExecute(){
+		return true;
+	}
+}
diff --git a/extra/org.eclipse.emf.ecp.application.e4/src/org/eclipse/emf/ecp/e4/view/ECPModelView.java b/extra/org.eclipse.emf.ecp.application.e4/src/org/eclipse/emf/ecp/e4/view/ECPModelView.java
new file mode 100644
index 0000000..61a1046
--- /dev/null
+++ b/extra/org.eclipse.emf.ecp.application.e4/src/org/eclipse/emf/ecp/e4/view/ECPModelView.java
@@ -0,0 +1,86 @@
+package org.eclipse.emf.ecp.e4.view;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+
+import org.eclipse.e4.ui.di.Focus;
+import org.eclipse.e4.ui.workbench.modeling.EPartService;
+import org.eclipse.e4.ui.workbench.modeling.ESelectionService;
+import org.eclipse.e4.ui.workbench.swt.modeling.EMenuService;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecp.core.ECPProject;
+import org.eclipse.emf.ecp.core.util.ECPContainer;
+import org.eclipse.emf.ecp.core.util.ECPUtil;
+import org.eclipse.emf.ecp.internal.ui.model.ModelContentProvider;
+import org.eclipse.emf.ecp.internal.ui.util.ECPHandlerHelper;
+import org.eclipse.emf.ecp.ui.common.TreeViewerFactory;
+import org.eclipse.jface.viewers.DoubleClickEvent;
+import org.eclipse.jface.viewers.IDoubleClickListener;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.swt.widgets.Composite;
+
+public class ECPModelView {
+
+	private TreeViewer modelExplorerTree;
+	private ModelContentProvider contentProvider;
+
+	public ECPModelView(){
+		
+	}
+	
+	@PostConstruct
+	public void create(Composite composite,EMenuService menuService,final ESelectionService selectionService,final EPartService partService){
+		modelExplorerTree = TreeViewerFactory.createModelExplorerViewer(composite, false, null);
+		menuService.registerContextMenu(modelExplorerTree.getTree(), "org.eclipse.emf.ecp.e4.application.popupmenu.navigator");
+		contentProvider=(ModelContentProvider) modelExplorerTree.getContentProvider();
+		modelExplorerTree.addDoubleClickListener(new IDoubleClickListener() {
+			
+			@Override
+			public void doubleClick(DoubleClickEvent event) {
+				if (event.getSelection() instanceof IStructuredSelection) {
+					IStructuredSelection structuredSelection = (IStructuredSelection) event.getSelection();
+					Object firstElement = structuredSelection.getFirstElement();
+					
+					if (firstElement instanceof ECPProject) {
+						ECPProject project = (ECPProject) firstElement;
+						if (!project.isOpen()) {
+							project.open();
+						}
+					}
+					else if (firstElement instanceof EObject) {
+						ECPContainer context = ECPUtil.getModelContext(contentProvider, structuredSelection.toArray());
+						ECPHandlerHelper.openModelElement(firstElement, (ECPProject) context);
+//						MPart part=partService.createPart("org.eclipse.emf.ecp.e4.application.partdescriptor.editor");
+//						part.setLabel(modelElement.eClass().getName());
+//						partService.showPart(part, PartState.ACTIVATE);
+					} 
+				}
+			}
+		});
+		modelExplorerTree.addSelectionChangedListener(new ISelectionChangedListener() {
+			
+			@Override
+			public void selectionChanged(SelectionChangedEvent event) {
+				ISelection selection=event.getSelection();
+				if(IStructuredSelection.class.isInstance(selection)){
+					IStructuredSelection structuredSelection=(IStructuredSelection) selection;
+					if(!structuredSelection.isEmpty()){
+						selectionService.setSelection(structuredSelection.getFirstElement());
+					}
+				}
+			}
+		});
+	}
+	@Focus
+	public void setFocus(){
+		modelExplorerTree.getTree().setFocus();
+	}
+	@PreDestroy
+	public void dispose(){
+		
+	}
+}
diff --git a/extra/org.eclipse.emf.ecp.application.e4/src/org/eclipse/emf/ecp/e4/view/ECPRepositoryView.java b/extra/org.eclipse.emf.ecp.application.e4/src/org/eclipse/emf/ecp/e4/view/ECPRepositoryView.java
new file mode 100644
index 0000000..c3f25a6
--- /dev/null
+++ b/extra/org.eclipse.emf.ecp.application.e4/src/org/eclipse/emf/ecp/e4/view/ECPRepositoryView.java
@@ -0,0 +1,59 @@
+package org.eclipse.emf.ecp.e4.view;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+
+import org.eclipse.e4.ui.di.Focus;
+import org.eclipse.e4.ui.workbench.modeling.ESelectionService;
+import org.eclipse.e4.ui.workbench.swt.modeling.EMenuService;
+import org.eclipse.emf.ecp.ui.common.TreeViewerFactory;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.swt.widgets.Composite;
+
+public class ECPRepositoryView {
+
+	private TreeViewer repositoryTree;
+
+	public ECPRepositoryView() {
+
+	}
+
+	@PostConstruct
+	public void create(Composite composite, EMenuService menuService,
+			final ESelectionService selectionService) {
+		repositoryTree = TreeViewerFactory.createRepositoryExplorerViewer(
+				composite, null);
+		menuService.registerContextMenu(repositoryTree.getTree(),
+				"org.eclipse.emf.ecp.e4.application.popupmenu.repository");
+		repositoryTree
+				.addSelectionChangedListener(new ISelectionChangedListener() {
+
+					@Override
+					public void selectionChanged(SelectionChangedEvent event) {
+						ISelection selection = event.getSelection();
+						if (IStructuredSelection.class.isInstance(selection)) {
+							IStructuredSelection structuredSelection = (IStructuredSelection) selection;
+							if (!structuredSelection.isEmpty()) {
+								selectionService
+										.setSelection(structuredSelection
+												.getFirstElement());
+							}
+						}
+					}
+				});
+	}
+
+	@Focus
+	public void setFocus() {
+		repositoryTree.getTree().setFocus();
+	}
+
+	@PreDestroy
+	public void dispose() {
+
+	}
+}
diff --git a/extra/org.eclipse.emf.ecp.emfstore.ui.e4/.classpath b/extra/org.eclipse.emf.ecp.emfstore.ui.e4/.classpath
new file mode 100644
index 0000000..098194c
--- /dev/null
+++ b/extra/org.eclipse.emf.ecp.emfstore.ui.e4/.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"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/extra/org.eclipse.emf.ecp.emfstore.ui.e4/.project b/extra/org.eclipse.emf.ecp.emfstore.ui.e4/.project
new file mode 100644
index 0000000..4eaf619
--- /dev/null
+++ b/extra/org.eclipse.emf.ecp.emfstore.ui.e4/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.emf.ecp.emfstore.ui.e4</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/extra/org.eclipse.emf.ecp.emfstore.ui.e4/.settings/org.eclipse.jdt.core.prefs b/extra/org.eclipse.emf.ecp.emfstore.ui.e4/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..f42de36
--- /dev/null
+++ b/extra/org.eclipse.emf.ecp.emfstore.ui.e4/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
+org.eclipse.jdt.core.compiler.compliance=1.7
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.7
diff --git a/extra/org.eclipse.emf.ecp.emfstore.ui.e4/.settings/org.eclipse.pde.core.prefs b/extra/org.eclipse.emf.ecp.emfstore.ui.e4/.settings/org.eclipse.pde.core.prefs
new file mode 100644
index 0000000..f29e940
--- /dev/null
+++ b/extra/org.eclipse.emf.ecp.emfstore.ui.e4/.settings/org.eclipse.pde.core.prefs
@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+pluginProject.extensions=false
+resolve.requirebundle=false
diff --git a/extra/org.eclipse.emf.ecp.emfstore.ui.e4/META-INF/MANIFEST.MF b/extra/org.eclipse.emf.ecp.emfstore.ui.e4/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..28691f0
--- /dev/null
+++ b/extra/org.eclipse.emf.ecp.emfstore.ui.e4/META-INF/MANIFEST.MF
@@ -0,0 +1,18 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Emfstore e4 ui
+Bundle-SymbolicName: org.eclipse.emf.ecp.emfstore.ui.e4;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-Activator: org.eclipse.emf.ecp.e4.emfstore.Activator
+Require-Bundle: org.eclipse.e4.core.di,
+ javax.inject,
+ org.eclipse.e4.ui.workbench;bundle-version="0.10.3",
+ org.eclipse.emf.emfstore.client.ui;bundle-version="1.0.0",
+ org.eclipse.swt;bundle-version="3.100.1",
+ org.eclipse.e4.ui.services;bundle-version="0.10.2",
+ org.eclipse.emf.ecp.core;bundle-version="1.0.0",
+ org.eclipse.emf.ecp.emfstore.core;bundle-version="1.0.0",
+ org.eclipse.emf.emfstore.client;bundle-version="1.0.0"
+Bundle-RequiredExecutionEnvironment: JavaSE-1.7
+Import-Package: org.osgi.framework;version="1.3.0"
+Bundle-ActivationPolicy: lazy
diff --git a/extra/org.eclipse.emf.ecp.emfstore.ui.e4/build.properties b/extra/org.eclipse.emf.ecp.emfstore.ui.e4/build.properties
new file mode 100644
index 0000000..7fdfe37
--- /dev/null
+++ b/extra/org.eclipse.emf.ecp.emfstore.ui.e4/build.properties
@@ -0,0 +1,7 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .,\
+               plugin.xml,\
+               fragment.e4xmi,\
+               icons/
diff --git a/extra/org.eclipse.emf.ecp.emfstore.ui.e4/fragment.e4xmi b/extra/org.eclipse.emf.ecp.emfstore.ui.e4/fragment.e4xmi
new file mode 100644
index 0000000..478254d
--- /dev/null
+++ b/extra/org.eclipse.emf.ecp.emfstore.ui.e4/fragment.e4xmi
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="ASCII"?>
+<fragment:ModelFragments xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:commands="http://www.eclipse.org/ui/2010/UIModel/application/commands" xmlns:fragment="http://www.eclipse.org/ui/2010/UIModel/fragment" xmlns:menu="http://www.eclipse.org/ui/2010/UIModel/application/ui/menu" xmi:id="_nICRUJoyEeKJoJcmiy2C6w">
+  <fragments xsi:type="fragment:StringModelFragment" xmi:id="_n_mLcJoyEeKJoJcmiy2C6w" featurename="commands" parentElementId="org.eclipse.e4.ide.application">
+    <elements xsi:type="commands:Command" xmi:id="_pCdWoJoyEeKJoJcmiy2C6w" elementId="org.eclipse.emf.ecp.e4.emfstore.command.login" commandName="LogIn"/>
+    <elements xsi:type="commands:Command" xmi:id="_39_5UJpoEeKJoJcmiy2C6w" elementId="org.eclipse.emf.ecp.e4.emfstore.command.logout" commandName="LogOut"/>
+    <elements xsi:type="commands:Command" xmi:id="_IU0E0JprEeKJoJcmiy2C6w" elementId="org.eclipse.emf.ecp.e4.emfstore.command.startLocalServer" commandName="Start Local Server"/>
+  </fragments>
+  <fragments xsi:type="fragment:StringModelFragment" xmi:id="_8oN_0JozEeKJoJcmiy2C6w" featurename="handlers" parentElementId="org.eclipse.e4.ide.application">
+    <elements xsi:type="commands:Handler" xmi:id="_qRumIJoyEeKJoJcmiy2C6w" elementId="org.eclipse.emf.ecp.e4.emfstore.handler.login" contributionURI="bundleclass://org.eclipse.emf.ecp.emfstore.ui.e4/org.eclipse.emf.ecp.e4.emfstore.LogInHandler" command="_pCdWoJoyEeKJoJcmiy2C6w"/>
+    <elements xsi:type="commands:Handler" xmi:id="_517rUJpoEeKJoJcmiy2C6w" elementId="org.eclipse.emf.ecp.e4.emfstore.handler.logout" contributionURI="bundleclass://org.eclipse.emf.ecp.emfstore.ui.e4/org.eclipse.emf.ecp.e4.emfstore.LogOutHandler" command="_39_5UJpoEeKJoJcmiy2C6w"/>
+    <elements xsi:type="commands:Handler" xmi:id="_L67P4JprEeKJoJcmiy2C6w" elementId="org.eclipse.emf.ecp.e4.emfstore.handler.startLocalServer" contributionURI="bundleclass://org.eclipse.emf.ecp.emfstore.ui.e4/org.eclipse.emf.ecp.e4.emfstore.StartLocalServerHandler" command="_IU0E0JprEeKJoJcmiy2C6w"/>
+  </fragments>
+  <fragments xsi:type="fragment:StringModelFragment" xmi:id="__dQ6UJozEeKJoJcmiy2C6w" featurename="children" parentElementId="org.eclipse.emf.ecp.e4.application.popupmenu.repository">
+    <elements xsi:type="menu:HandledMenuItem" xmi:id="_szdjEJoyEeKJoJcmiy2C6w" elementId="org.eclipse.emf.ecp.e4.emfstore.handledmenuitem.login" label="LogIn" iconURI="platform:/plugin/org.eclipse.emf.ecp.emfstore.ui.e4/icons/login.png" command="_pCdWoJoyEeKJoJcmiy2C6w"/>
+    <elements xsi:type="menu:HandledMenuItem" xmi:id="_-I6jcJpoEeKJoJcmiy2C6w" elementId="org.eclipse.emf.ecp.e4.emfstore.handledmenuitem.logout" label="LogOut" iconURI="platform:/plugin/org.eclipse.emf.ecp.emfstore.ui.e4/icons/logout.png" command="_39_5UJpoEeKJoJcmiy2C6w"/>
+    <elements xsi:type="menu:HandledMenuItem" xmi:id="_Qvw34JprEeKJoJcmiy2C6w" elementId="org.eclipse.emf.ecp.e4.emfstore.handledmenuitem.startLocalServer" label="Start Local Server" iconURI="platform:/plugin/org.eclipse.emf.ecp.emfstore.ui.e4/icons/startLocalServer.png" mnemonics="M1+F2" command="_IU0E0JprEeKJoJcmiy2C6w"/>
+  </fragments>
+</fragment:ModelFragments>
diff --git a/extra/org.eclipse.emf.ecp.emfstore.ui.e4/icons/login.png b/extra/org.eclipse.emf.ecp.emfstore.ui.e4/icons/login.png
new file mode 100644
index 0000000..a471765
--- /dev/null
+++ b/extra/org.eclipse.emf.ecp.emfstore.ui.e4/icons/login.png
Binary files differ
diff --git a/extra/org.eclipse.emf.ecp.emfstore.ui.e4/icons/logout.png b/extra/org.eclipse.emf.ecp.emfstore.ui.e4/icons/logout.png
new file mode 100644
index 0000000..2ebc4f6
--- /dev/null
+++ b/extra/org.eclipse.emf.ecp.emfstore.ui.e4/icons/logout.png
Binary files differ
diff --git a/extra/org.eclipse.emf.ecp.emfstore.ui.e4/icons/startLocalServer.png b/extra/org.eclipse.emf.ecp.emfstore.ui.e4/icons/startLocalServer.png
new file mode 100644
index 0000000..540c8e2
--- /dev/null
+++ b/extra/org.eclipse.emf.ecp.emfstore.ui.e4/icons/startLocalServer.png
Binary files differ
diff --git a/extra/org.eclipse.emf.ecp.emfstore.ui.e4/plugin.xml b/extra/org.eclipse.emf.ecp.emfstore.ui.e4/plugin.xml
new file mode 100644
index 0000000..c422046
--- /dev/null
+++ b/extra/org.eclipse.emf.ecp.emfstore.ui.e4/plugin.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<plugin>
+   <extension
+         id="id1"
+         point="org.eclipse.e4.workbench.model">
+      <fragment
+            uri="fragment.e4xmi">
+      </fragment>
+   </extension>
+
+</plugin>
diff --git a/extra/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/Activator.java b/extra/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/Activator.java
new file mode 100644
index 0000000..57b4e72
--- /dev/null
+++ b/extra/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/Activator.java
@@ -0,0 +1,30 @@
+package org.eclipse.emf.ecp.e4.emfstore;
+
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+
+public class Activator implements BundleActivator {
+
+	private static BundleContext context;
+
+	static BundleContext getContext() {
+		return context;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)
+	 */
+	public void start(BundleContext bundleContext) throws Exception {
+		Activator.context = bundleContext;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
+	 */
+	public void stop(BundleContext bundleContext) throws Exception {
+		Activator.context = null;
+	}
+
+}
diff --git a/extra/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/LogInHandler.java b/extra/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/LogInHandler.java
new file mode 100644
index 0000000..7056259
--- /dev/null
+++ b/extra/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/LogInHandler.java
@@ -0,0 +1,33 @@
+ 
+package org.eclipse.emf.ecp.e4.emfstore;
+
+import java.util.Collection;
+import java.util.Collections;
+
+import javax.inject.Named;
+
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.core.di.annotations.Optional;
+import org.eclipse.e4.ui.services.IServiceConstants;
+import org.eclipse.emf.ecp.core.ECPProviderRegistry;
+import org.eclipse.emf.ecp.core.ECPRepository;
+import org.eclipse.emf.ecp.core.util.ECPUtil;
+import org.eclipse.emf.ecp.emfstore.core.internal.EMFStoreProvider;
+import org.eclipse.emf.ecp.spi.core.InternalRepository;
+import org.eclipse.emf.emfstore.client.ESServer;
+import org.eclipse.emf.emfstore.internal.client.ui.controller.UILoginSessionController;
+import org.eclipse.swt.widgets.Shell;
+
+@SuppressWarnings("restriction")
+public class LogInHandler {
+	@Execute
+	public void execute(Shell shell, @Named(IServiceConstants.ACTIVE_SELECTION)@Optional ECPRepository ecpRepository) {
+		
+		final ESServer serverInfo = ((EMFStoreProvider)ECPUtil.getResolvedElement(ECPUtil.getECPProviderRegistry().getProvider(EMFStoreProvider.NAME))).getServerInfo((InternalRepository) ecpRepository);
+		new UILoginSessionController(shell, serverInfo).execute();
+
+		// ((TreeView)HandlerUtil.getActivePart(event)).getRefreshAction().run();
+		((InternalRepository) ecpRepository).notifyObjectsChanged((Collection)Collections.singleton(ecpRepository ));
+	}
+		
+}
\ No newline at end of file
diff --git a/extra/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/LogOutHandler.java b/extra/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/LogOutHandler.java
new file mode 100644
index 0000000..6054e45
--- /dev/null
+++ b/extra/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/LogOutHandler.java
@@ -0,0 +1,32 @@
+ 
+package org.eclipse.emf.ecp.e4.emfstore;
+
+import java.util.Collection;
+import java.util.Collections;
+
+import javax.inject.Named;
+
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.core.di.annotations.Optional;
+import org.eclipse.e4.ui.services.IServiceConstants;
+import org.eclipse.emf.ecp.core.ECPProviderRegistry;
+import org.eclipse.emf.ecp.core.ECPRepository;
+import org.eclipse.emf.ecp.core.util.ECPUtil;
+import org.eclipse.emf.ecp.emfstore.core.internal.EMFStoreProvider;
+import org.eclipse.emf.ecp.spi.core.InternalRepository;
+import org.eclipse.emf.emfstore.client.ESServer;
+import org.eclipse.emf.emfstore.internal.client.ui.controller.UILogoutSessionController;
+import org.eclipse.swt.widgets.Shell;
+
+@SuppressWarnings("restriction")
+public class LogOutHandler {
+	@Execute
+	public void execute(Shell shell, @Named(IServiceConstants.ACTIVE_SELECTION)@Optional ECPRepository ecpRepository) {
+		
+		final ESServer serverInfo = ((EMFStoreProvider)ECPUtil.getResolvedElement(ECPUtil.getECPProviderRegistry().getProvider(EMFStoreProvider.NAME))).getServerInfo((InternalRepository) ecpRepository);
+		new UILogoutSessionController(shell, serverInfo.getLastUsersession()).execute();
+
+		((InternalRepository) ecpRepository).notifyObjectsChanged((Collection)Collections.singleton(ecpRepository ));
+	}
+		
+}
\ No newline at end of file
diff --git a/extra/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/StartLocalServerHandler.java b/extra/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/StartLocalServerHandler.java
new file mode 100644
index 0000000..e178c52
--- /dev/null
+++ b/extra/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/StartLocalServerHandler.java
@@ -0,0 +1,25 @@
+ 
+package org.eclipse.emf.ecp.e4.emfstore;
+
+import org.eclipse.e4.core.di.annotations.CanExecute;
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.emf.emfstore.internal.server.EMFStoreController;
+import org.eclipse.emf.emfstore.internal.server.exceptions.FatalESException;
+import org.osgi.service.log.LogService;
+
+@SuppressWarnings("restriction")
+public class StartLocalServerHandler {
+	@Execute
+	public void execute(LogService logService) {
+		try {
+			EMFStoreController.runAsNewThread();
+		} catch (FatalESException e) {
+			logService.log(LogService.LOG_ERROR, e.getMessage(), e);
+		}
+	}
+	@CanExecute
+	public boolean isEnabled(){
+		return EMFStoreController.getInstance()==null;
+	}
+		
+}
\ No newline at end of file