parallel ip - initial checkin

Signed-off-by: Ralf Mollik <ramollik@compex-commerce.com>
diff --git a/.osbp.releng.root b/.osbp.releng.root
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/.osbp.releng.root
diff --git a/.project b/.project
new file mode 100644
index 0000000..08ede92
--- /dev/null
+++ b/.project
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.vaaclipse</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+	</natures>
+</projectDescription>
diff --git a/LICENSE.TXT b/LICENSE.TXT
new file mode 100644
index 0000000..91104f1
--- /dev/null
+++ b/LICENSE.TXT
@@ -0,0 +1,5 @@
+Copyright (c) 2012 Rushan R. Gilmullin and others.
+All rights reserved. This program and the accompanying materials
+are made available under the terms of the Eclipse Public License v1.0
+which accompanies this distribution, and is available at
+http://www.eclipse.org/legal/epl-v10.html
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..cc41ad5
--- /dev/null
+++ b/README.md
@@ -0,0 +1,4 @@
+vaaclipse
+=========
+
+Vaaclipse is a framework for building web applications using Eclipse 4 platform and Vaadin.
diff --git a/about.html b/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/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 1, 2016</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/build.properties b/build.properties
new file mode 100644
index 0000000..34d2e4d
--- /dev/null
+++ b/build.properties
@@ -0,0 +1,4 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .
diff --git a/jenkins.build.config.xml b/jenkins.build.config.xml
new file mode 100644
index 0000000..c4355da
--- /dev/null
+++ b/jenkins.build.config.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2016 - Loetz GmbH&Co.KG                                    -->
+<!--# 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:                                                          -->
+<!--# Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation                           -->
+<!--#======================================================================= -->
+<!--# Module specific parameters for the Jenkins Job 						 -->
+<!--#======================================================================= -->
+
+<jenkins>
+	<!-- DO NOT EDIT BELOW THIS LINE -->
+        <jenkins.build.dependencies>
+                <jenkins.build.dependency>org.eclipse.osbp.dsl</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.ecview.core</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.runtime</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.runtime.web</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.ui.api</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.vaadin.emf</jenkins.build.dependency>
+        </jenkins.build.dependencies>
+</jenkins>
diff --git a/launcher/Vaaclipse - Build Cassandra Widgetset.launch b/launcher/Vaaclipse - Build Cassandra Widgetset.launch
new file mode 100644
index 0000000..367c8ad
--- /dev/null
+++ b/launcher/Vaaclipse - Build Cassandra Widgetset.launch
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.m2e.Maven2LaunchConfigurationType">
+<booleanAttribute key="M2_DEBUG_OUTPUT" value="false"/>
+<stringAttribute key="M2_GOALS" value="clean verify"/>
+<booleanAttribute key="M2_NON_RECURSIVE" value="false"/>
+<booleanAttribute key="M2_OFFLINE" value="false"/>
+<stringAttribute key="M2_PROFILES" value="build-cassandra-widgetsets"/>
+<listAttribute key="M2_PROPERTIES"/>
+<stringAttribute key="M2_RUNTIME" value="EMBEDDED"/>
+<booleanAttribute key="M2_SKIP_TESTS" value="false"/>
+<intAttribute key="M2_THREADS" value="1"/>
+<booleanAttribute key="M2_UPDATE_SNAPSHOTS" value="false"/>
+<booleanAttribute key="M2_WORKSPACE_RESOLUTION" value="false"/>
+<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/>
+<stringAttribute key="org.eclipse.jdt.launching.WORKING_DIRECTORY" value="${workspace_loc:/org.semanticsoft.vaaclipse}"/>
+</launchConfiguration>
diff --git a/launcher/Vaaclipse - Build Widgetset.launch b/launcher/Vaaclipse - Build Widgetset.launch
new file mode 100644
index 0000000..04b6842
--- /dev/null
+++ b/launcher/Vaaclipse - Build Widgetset.launch
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.m2e.Maven2LaunchConfigurationType">
+<booleanAttribute key="M2_DEBUG_OUTPUT" value="false"/>
+<stringAttribute key="M2_GOALS" value="clean verify"/>
+<booleanAttribute key="M2_NON_RECURSIVE" value="false"/>
+<booleanAttribute key="M2_OFFLINE" value="false"/>
+<stringAttribute key="M2_PROFILES" value="build-widgetsets"/>
+<listAttribute key="M2_PROPERTIES"/>
+<stringAttribute key="M2_RUNTIME" value="EMBEDDED"/>
+<booleanAttribute key="M2_SKIP_TESTS" value="false"/>
+<intAttribute key="M2_THREADS" value="1"/>
+<booleanAttribute key="M2_UPDATE_SNAPSHOTS" value="false"/>
+<booleanAttribute key="M2_WORKSPACE_RESOLUTION" value="false"/>
+<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/>
+<stringAttribute key="org.eclipse.jdt.launching.WORKING_DIRECTORY" value="${workspace_loc:/org.semanticsoft.vaaclipse}"/>
+</launchConfiguration>
diff --git a/launcher/Vaaclipse - P2-Juno.launch b/launcher/Vaaclipse - P2-Juno.launch
new file mode 100644
index 0000000..23e2977
--- /dev/null
+++ b/launcher/Vaaclipse - P2-Juno.launch
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.m2e.Maven2LaunchConfigurationType">
+<booleanAttribute key="M2_DEBUG_OUTPUT" value="false"/>
+<stringAttribute key="M2_GOALS" value="clean verify"/>
+<booleanAttribute key="M2_NON_RECURSIVE" value="false"/>
+<booleanAttribute key="M2_OFFLINE" value="false"/>
+<stringAttribute key="M2_PROFILES" value="p2-juno"/>
+<listAttribute key="M2_PROPERTIES"/>
+<stringAttribute key="M2_RUNTIME" value="EMBEDDED"/>
+<booleanAttribute key="M2_SKIP_TESTS" value="true"/>
+<intAttribute key="M2_THREADS" value="1"/>
+<booleanAttribute key="M2_UPDATE_SNAPSHOTS" value="false"/>
+<booleanAttribute key="M2_WORKSPACE_RESOLUTION" value="false"/>
+<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Dvaaclipse.p2.target.folder=Users/admin/git/vaaclipse/org.semanticsoft.vaaclipse.p2/test"/>
+<stringAttribute key="org.eclipse.jdt.launching.WORKING_DIRECTORY" value="${workspace_loc:/org.semanticsoft.vaaclipse}"/>
+</launchConfiguration>
diff --git a/launcher/Vaaclipse - P2-Kepler.launch b/launcher/Vaaclipse - P2-Kepler.launch
new file mode 100644
index 0000000..a05969e
--- /dev/null
+++ b/launcher/Vaaclipse - P2-Kepler.launch
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.m2e.Maven2LaunchConfigurationType">
+<booleanAttribute key="M2_DEBUG_OUTPUT" value="false"/>
+<stringAttribute key="M2_GOALS" value="clean install"/>
+<booleanAttribute key="M2_NON_RECURSIVE" value="false"/>
+<booleanAttribute key="M2_OFFLINE" value="false"/>
+<stringAttribute key="M2_PROFILES" value="p2-kepler"/>
+<listAttribute key="M2_PROPERTIES"/>
+<stringAttribute key="M2_RUNTIME" value="EMBEDDED"/>
+<booleanAttribute key="M2_SKIP_TESTS" value="true"/>
+<intAttribute key="M2_THREADS" value="1"/>
+<booleanAttribute key="M2_UPDATE_SNAPSHOTS" value="false"/>
+<booleanAttribute key="M2_WORKSPACE_RESOLUTION" value="false"/>
+<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Dvaaclipse.p2.target.folder=Users/admin/git/vaaclipse/org.semanticsoft.vaaclipse.p2/test"/>
+<stringAttribute key="org.eclipse.jdt.launching.WORKING_DIRECTORY" value="${workspace_loc:/vaaclipse}"/>
+</launchConfiguration>
diff --git a/manualSteps/README b/manualSteps/README
new file mode 100644
index 0000000..922b971
--- /dev/null
+++ b/manualSteps/README
@@ -0,0 +1,9 @@
+ 
+ ==========================================
+ Install the dragdroplayouts-development.jar under the group com.vaadin.addon.patch in your local maven repo:
+ mvn install:install-file -Dfile=dragdroplayouts-development.jar -DgroupId=com.vaadin.addon.patch 
+ 					-DartifactId=dragdroplayouts -Dversion=0.0.1 -Dpackaging=jar 
+ ==========================================
+ 
+ 
+ 
\ No newline at end of file
diff --git a/notice.html b/notice.html
new file mode 100644
index 0000000..c3d34c3
--- /dev/null
+++ b/notice.html
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!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>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>April 9, 2014</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation 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 provided with this Content and is also 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>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
+   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+
+<ul>
+       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
+      and/or Fragments associated with that Feature.</li>
+       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
+Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
+       <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
+installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
+inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
+   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
+       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   (&quot;Specification&quot;).</p>
+
+<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
+       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
+   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
+   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+</body>
+</html>
diff --git a/org.eclipse.e4.ui.model.workbench.edit/.project b/org.eclipse.e4.ui.model.workbench.edit/.project
new file mode 100644
index 0000000..aed62eb
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/.project
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.e4.ui.model.workbench.edit</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.babel.editor.rbeBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.babel.editor.rbeNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.e4.ui.model.workbench.edit/META-INF/MANIFEST.MF b/org.eclipse.e4.ui.model.workbench.edit/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..43c324f
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/META-INF/MANIFEST.MF
@@ -0,0 +1,21 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.e4.ui.model.workbench.edit
+Bundle-SymbolicName: org.eclipse.e4.ui.model.workbench.edit;singleton:=true
+Bundle-Version: 0.9.0.qualifier
+Bundle-ClassPath: .
+Bundle-Activator: org.eclipse.e4.ui.model.application.provider.UIElementsEditPlugin$Implementation
+Bundle-Vendor: Eclipse OSBP
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Export-Package: org.eclipse.e4.ui.model.application.commands.provider,
+ org.eclipse.e4.ui.model.application.descriptor.basic.provider,
+ org.eclipse.e4.ui.model.application.provider,
+ org.eclipse.e4.ui.model.application.ui.advanced.provider,
+ org.eclipse.e4.ui.model.application.ui.basic.provider,
+ org.eclipse.e4.ui.model.application.ui.menu.provider,
+ org.eclipse.e4.ui.model.application.ui.provider
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.e4.ui.model.workbench;visibility:=reexport,
+ org.eclipse.emf.edit;visibility:=reexport
+Bundle-ActivationPolicy: lazy
diff --git a/org.eclipse.e4.ui.model.workbench.edit/about.html b/org.eclipse.e4.ui.model.workbench.edit/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>June 1, 2016</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.e4.ui.model.workbench.edit/about.ini b/org.eclipse.e4.ui.model.workbench.edit/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/about.ini
@@ -0,0 +1,17 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%featureText
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=
+
+# Property "appName" contains name of the application (translated)
+appName=%featureName
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+welcomePage=
diff --git a/org.eclipse.e4.ui.model.workbench.edit/about.mappings b/org.eclipse.e4.ui.model.workbench.edit/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/about.mappings
@@ -0,0 +1,6 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+0=qualifier
diff --git a/org.eclipse.e4.ui.model.workbench.edit/about.properties b/org.eclipse.e4.ui.model.workbench.edit/about.properties
new file mode 100644
index 0000000..0853b83
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2012, 2016 - Loetz GmbH&Co.KG (Heidelberg)
+# 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:
+#    Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.e4.ui.model.workbench.edit
+
+################ blurb property ####################################
+featureText=\
+Copyright (c) 2012-2016 - Loetz GmbH&Co.KG \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+Contributors:\n\
+    Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.e4.ui.model.workbench.edit/build.properties b/org.eclipse.e4.ui.model.workbench.edit/build.properties
new file mode 100644
index 0000000..4088a74
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/build.properties
@@ -0,0 +1,21 @@
+# Copyright (c) 2008, 2013 IBM Corporation and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+# 
+# Contributors:
+#      IBM Corporation - initial API and implementation
+
+bin.includes = about.properties,  about.mappings,  about.ini,  about.html,  .,\
+               icons/,\
+               META-INF/,\
+               plugin.xml,\
+               plugin.properties,\
+               epl-v10.html,\
+               license.html
+jars.compile.order = .
+source.. = src/
+output.. = bin/
+src.includes = about.properties,  about.mappings,  about.ini,  about.html,  epl-v10.html,\
+               license.html
diff --git a/org.eclipse.e4.ui.model.workbench.edit/epl-v10.html b/org.eclipse.e4.ui.model.workbench.edit/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/epl-v10.html
@@ -0,0 +1,259 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+  body {
+    size: 8.5in 11.0in;
+    margin: 0.25in 0.5in 0.25in 0.5in;
+    tab-interval: 0.5in;
+    }
+  p {  	
+    margin-left: auto;
+    margin-top:  0.5em;
+    margin-bottom: 0.5em;
+    }
+  p.list {
+  	margin-left: 0.5in;
+    margin-top:  0.05em;
+    margin-bottom: 0.05em;
+    }
+  </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">where such changes and/or additions to the Program
+originate from and are distributed by that particular Contributor. A
+Contribution 'originates' from a Contributor if it was added to the
+Program by such Contributor itself or anyone acting on such
+Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii)
+are not derivative works of the Program.</p>
+
+<p>"Contributor" means any person or entity that distributes
+the Program.</p>
+
+<p>"Licensed Patents" mean patent claims licensable by a
+Contributor which are necessarily infringed by the use or sale of its
+Contribution alone or when combined with the Program.</p>
+
+<p>"Program" means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>"Recipient" means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works
+of, publicly display, publicly perform, distribute and sublicense the
+Contribution of such Contributor, if any, and such derivative works, in
+source code and object code form.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell,
+offer to sell, import and otherwise transfer the Contribution of such
+Contributor, if any, in source code and object code form. This patent
+license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor,
+such addition of the Contribution causes such combination to be covered
+by the Licensed Patents. The patent license shall not apply to any other
+combinations which include the Contribution. No hardware per se is
+licensed hereunder.</p>
+
+<p class="list">c) Recipient understands that although each Contributor
+grants the licenses to its Contributions set forth herein, no assurances
+are provided by any Contributor that the Program does not infringe the
+patent or other intellectual property rights of any other entity. Each
+Contributor disclaims any liability to Recipient for claims brought by
+any other entity based on infringement of intellectual property rights
+or otherwise. As a condition to exercising the rights and licenses
+granted hereunder, each Recipient hereby assumes sole responsibility to
+secure any other intellectual property rights needed, if any. For
+example, if a third party patent license is required to allow Recipient
+to distribute the Program, it is Recipient's responsibility to acquire
+that license before distributing the Program.</p>
+
+<p class="list">d) Each Contributor represents that to its knowledge it
+has sufficient copyright rights in its Contribution, if any, to grant
+the copyright license set forth in this Agreement.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">i) effectively disclaims on behalf of all Contributors
+all warranties and conditions, express and implied, including warranties
+or conditions of title and non-infringement, and implied warranties or
+conditions of merchantability and fitness for a particular purpose;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">iv) states that source code for the Program is available
+from such Contributor, and informs licensees how to obtain it in a
+reasonable manner on or through a medium customarily used for software
+exchange.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>Commercial distributors of software may accept certain
+responsibilities with respect to end users, business partners and the
+like. While this license is intended to facilitate the commercial use of
+the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create
+potential liability for other Contributors. Therefore, if a Contributor
+includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and
+indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses")
+arising from claims, lawsuits and other legal actions brought by a third
+party against the Indemnified Contributor to the extent caused by the
+acts or omissions of such Commercial Contributor in connection with its
+distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In
+order to qualify, an Indemnified Contributor must: a) promptly notify
+the Commercial Contributor in writing of such claim, and b) allow the
+Commercial Contributor to control, and cooperate with the Commercial
+Contributor in, the defense and any related settlement negotiations. The
+Indemnified Contributor may participate in any such claim at its own
+expense.</p>
+
+<p>For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor's responsibility
+alone. Under this section, the Commercial Contributor would have to
+defend claims against the other Contributors related to those
+performance claims and warranties, and if a court requires any other
+Contributor to pay any damages as a result, the Commercial Contributor
+must pay those damages.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
+OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
+ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to
+the risks and costs of program errors, compliance with applicable laws,
+damage to or loss of data, programs or equipment, and unavailability or
+interruption of operations.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
+NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of
+the remainder of the terms of this Agreement, and without further action
+by the parties hereto, such provision shall be reformed to the minimum
+extent necessary to make such provision valid and enforceable.</p>
+
+<p>If Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that the
+Program itself (excluding combinations of the Program with other
+software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the
+date such litigation is filed.</p>
+
+<p>All Recipient's rights under this Agreement shall terminate if it
+fails to comply with any of the material terms or conditions of this
+Agreement and does not cure such failure in a reasonable period of time
+after becoming aware of such noncompliance. If all Recipient's rights
+under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive.</p>
+
+<p>Everyone is permitted to copy and distribute copies of this
+Agreement, but in order to avoid inconsistency the Agreement is
+copyrighted and may only be modified in the following manner. The
+Agreement Steward reserves the right to publish new versions (including
+revisions) of this Agreement from time to time. No one other than the
+Agreement Steward has the right to modify this Agreement. The Eclipse
+Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a
+suitable separate entity. Each new version of the Agreement will be
+given a distinguishing version number. The Program (including
+Contributions) may always be distributed subject to the version of the
+Agreement under which it was received. In addition, after a new version
+of the Agreement is published, Contributor may elect to distribute the
+Program (including its Contributions) under the new version. Except as
+expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
+rights or licenses to the intellectual property of any Contributor under
+this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this
+Agreement are reserved.</p>
+
+<p>This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No party
+to this Agreement will bring a legal action under this Agreement more
+than one year after the cause of action arose. Each party waives its
+rights to a jury trial in any resulting litigation.</p>
+
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateApplicationElement_persistedState_StringToStringMap.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateApplicationElement_persistedState_StringToStringMap.gif
new file mode 100644
index 0000000..40d0cdd
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateApplicationElement_persistedState_StringToStringMap.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateApplication_addons_Addon.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateApplication_addons_Addon.gif
new file mode 100644
index 0000000..ed645c3
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateApplication_addons_Addon.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateApplication_categories_Category.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateApplication_categories_Category.gif
new file mode 100644
index 0000000..2e2932f
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateApplication_categories_Category.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateApplication_commands_Command.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateApplication_commands_Command.gif
new file mode 100644
index 0000000..2de4789
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateApplication_commands_Command.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateBindingContext_children_BindingContext.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateBindingContext_children_BindingContext.gif
new file mode 100644
index 0000000..09741e8
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateBindingContext_children_BindingContext.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateBindingTable_bindings_KeyBinding.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateBindingTable_bindings_KeyBinding.gif
new file mode 100644
index 0000000..845de0f
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateBindingTable_bindings_KeyBinding.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateCommand_parameters_CommandParameter.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateCommand_parameters_CommandParameter.gif
new file mode 100644
index 0000000..43bee18
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateCommand_parameters_CommandParameter.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_Application.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_Application.gif
new file mode 100644
index 0000000..a2dd68e
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_Application.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_Area.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_Area.gif
new file mode 100644
index 0000000..a36743b
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_Area.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_CompositePart.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_CompositePart.gif
new file mode 100644
index 0000000..464f093
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_CompositePart.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_Dialog.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_Dialog.gif
new file mode 100644
index 0000000..3891882
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_Dialog.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_DirectMenuItem.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_DirectMenuItem.gif
new file mode 100644
index 0000000..9fcf2c7
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_DirectMenuItem.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_DirectToolItem.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_DirectToolItem.gif
new file mode 100644
index 0000000..ac071ee
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_DirectToolItem.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_DynamicMenuContribution.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_DynamicMenuContribution.gif
new file mode 100644
index 0000000..1e0e0f3
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_DynamicMenuContribution.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_HandledMenuItem.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_HandledMenuItem.gif
new file mode 100644
index 0000000..68005ae
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_HandledMenuItem.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_HandledToolItem.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_HandledToolItem.gif
new file mode 100644
index 0000000..07b0fd9
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_HandledToolItem.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_InputPart.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_InputPart.gif
new file mode 100644
index 0000000..86d7811
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_InputPart.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_Menu.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_Menu.gif
new file mode 100644
index 0000000..b067e51
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_Menu.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_MenuContribution.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_MenuContribution.gif
new file mode 100644
index 0000000..e88df1c
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_MenuContribution.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_MenuSeparator.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_MenuSeparator.gif
new file mode 100644
index 0000000..0d55746
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_MenuSeparator.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_Part.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_Part.gif
new file mode 100644
index 0000000..0a9ad1c
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_Part.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_PartSashContainer.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_PartSashContainer.gif
new file mode 100644
index 0000000..3891882
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_PartSashContainer.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_PartStack.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_PartStack.gif
new file mode 100644
index 0000000..1e0e0f3
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_PartStack.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_Perspective.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_Perspective.gif
new file mode 100644
index 0000000..88d8844
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_Perspective.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_PerspectiveStack.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_PerspectiveStack.gif
new file mode 100644
index 0000000..bee2a07
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_PerspectiveStack.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_Placeholder.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_Placeholder.gif
new file mode 100644
index 0000000..08f15c5
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_Placeholder.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_PopupMenu.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_PopupMenu.gif
new file mode 100644
index 0000000..08f15c5
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_PopupMenu.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_ToolBar.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_ToolBar.gif
new file mode 100644
index 0000000..f66fdd6
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_ToolBar.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_ToolBarContribution.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_ToolBarContribution.gif
new file mode 100644
index 0000000..9144498
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_ToolBarContribution.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_ToolBarSeparator.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_ToolBarSeparator.gif
new file mode 100644
index 0000000..0cf27b2
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_ToolBarSeparator.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_ToolControl.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_ToolControl.gif
new file mode 100644
index 0000000..de6e628
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_ToolControl.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_TrimBar.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_TrimBar.gif
new file mode 100644
index 0000000..5fe40c4
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_TrimBar.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_TrimContribution.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_TrimContribution.gif
new file mode 100644
index 0000000..9144498
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_TrimContribution.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_TrimmedWindow.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_TrimmedWindow.gif
new file mode 100644
index 0000000..464f093
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_TrimmedWindow.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_Window.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_Window.gif
new file mode 100644
index 0000000..a303761
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_Window.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_WizardDialog.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_WizardDialog.gif
new file mode 100644
index 0000000..f66fdd6
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_WizardDialog.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateHandledItem_parameters_Parameter.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateHandledItem_parameters_Parameter.gif
new file mode 100644
index 0000000..542f33a
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateHandledItem_parameters_Parameter.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateKeyBinding_parameters_Parameter.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateKeyBinding_parameters_Parameter.gif
new file mode 100644
index 0000000..6fc892d
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateKeyBinding_parameters_Parameter.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreatePartDescriptor_menus_Menu.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreatePartDescriptor_menus_Menu.gif
new file mode 100644
index 0000000..33f4da0
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreatePartDescriptor_menus_Menu.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreatePartDescriptor_menus_PopupMenu.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreatePartDescriptor_menus_PopupMenu.gif
new file mode 100644
index 0000000..fd2e2cc
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreatePartDescriptor_menus_PopupMenu.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreatePartDescriptor_toolbar_ToolBar.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreatePartDescriptor_toolbar_ToolBar.gif
new file mode 100644
index 0000000..85afdbb
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreatePartDescriptor_toolbar_ToolBar.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreatePart_menus_Menu.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreatePart_menus_Menu.gif
new file mode 100644
index 0000000..b067e51
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreatePart_menus_Menu.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreatePart_menus_PopupMenu.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreatePart_menus_PopupMenu.gif
new file mode 100644
index 0000000..08f15c5
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreatePart_menus_PopupMenu.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreatePart_toolbar_ToolBar.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreatePart_toolbar_ToolBar.gif
new file mode 100644
index 0000000..f66fdd6
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreatePart_toolbar_ToolBar.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreatePerspective_windows_Dialog.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreatePerspective_windows_Dialog.gif
new file mode 100644
index 0000000..0b0adae
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreatePerspective_windows_Dialog.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreatePerspective_windows_TrimmedWindow.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreatePerspective_windows_TrimmedWindow.gif
new file mode 100644
index 0000000..e268a9e
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreatePerspective_windows_TrimmedWindow.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreatePerspective_windows_Window.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreatePerspective_windows_Window.gif
new file mode 100644
index 0000000..5a20caa
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreatePerspective_windows_Window.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreatePerspective_windows_WizardDialog.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreatePerspective_windows_WizardDialog.gif
new file mode 100644
index 0000000..df7afd7
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreatePerspective_windows_WizardDialog.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateToolItem_menu_Menu.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateToolItem_menu_Menu.gif
new file mode 100644
index 0000000..c01322f
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateToolItem_menu_Menu.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateToolItem_menu_PopupMenu.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateToolItem_menu_PopupMenu.gif
new file mode 100644
index 0000000..c9af92d
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateToolItem_menu_PopupMenu.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateTrimmedWindow_trimBars_TrimBar.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateTrimmedWindow_trimBars_TrimBar.gif
new file mode 100644
index 0000000..59d3029
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateTrimmedWindow_trimBars_TrimBar.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateUIElement_visibleWhen_CoreExpression.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateUIElement_visibleWhen_CoreExpression.gif
new file mode 100644
index 0000000..aff8996
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateUIElement_visibleWhen_CoreExpression.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_mainMenu_Menu.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_mainMenu_Menu.gif
new file mode 100644
index 0000000..af07ba1
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_mainMenu_Menu.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_mainMenu_PopupMenu.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_mainMenu_PopupMenu.gif
new file mode 100644
index 0000000..0855183
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_mainMenu_PopupMenu.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_Application.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_Application.gif
new file mode 100644
index 0000000..38d77bb
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_Application.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_Area.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_Area.gif
new file mode 100644
index 0000000..9dd025a
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_Area.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_CompositePart.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_CompositePart.gif
new file mode 100644
index 0000000..9073955
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_CompositePart.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_Dialog.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_Dialog.gif
new file mode 100644
index 0000000..d70b2d9
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_Dialog.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_DirectMenuItem.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_DirectMenuItem.gif
new file mode 100644
index 0000000..775ec09
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_DirectMenuItem.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_DirectToolItem.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_DirectToolItem.gif
new file mode 100644
index 0000000..3cee5b6
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_DirectToolItem.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_DynamicMenuContribution.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_DynamicMenuContribution.gif
new file mode 100644
index 0000000..daddc87
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_DynamicMenuContribution.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_HandledMenuItem.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_HandledMenuItem.gif
new file mode 100644
index 0000000..1f8189a
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_HandledMenuItem.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_HandledToolItem.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_HandledToolItem.gif
new file mode 100644
index 0000000..6b4e432
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_HandledToolItem.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_InputPart.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_InputPart.gif
new file mode 100644
index 0000000..f9be6da
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_InputPart.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_Menu.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_Menu.gif
new file mode 100644
index 0000000..af07ba1
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_Menu.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_MenuContribution.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_MenuContribution.gif
new file mode 100644
index 0000000..84df4c1
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_MenuContribution.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_MenuSeparator.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_MenuSeparator.gif
new file mode 100644
index 0000000..b25c629
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_MenuSeparator.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_Part.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_Part.gif
new file mode 100644
index 0000000..5d9762d
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_Part.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_PartSashContainer.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_PartSashContainer.gif
new file mode 100644
index 0000000..d70b2d9
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_PartSashContainer.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_PartStack.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_PartStack.gif
new file mode 100644
index 0000000..daddc87
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_PartStack.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_Perspective.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_Perspective.gif
new file mode 100644
index 0000000..56fcea5
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_Perspective.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_PerspectiveStack.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_PerspectiveStack.gif
new file mode 100644
index 0000000..f00122b
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_PerspectiveStack.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_Placeholder.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_Placeholder.gif
new file mode 100644
index 0000000..0855183
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_Placeholder.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_PopupMenu.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_PopupMenu.gif
new file mode 100644
index 0000000..0855183
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_PopupMenu.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_ToolBar.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_ToolBar.gif
new file mode 100644
index 0000000..9c7efc4
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_ToolBar.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_ToolBarContribution.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_ToolBarContribution.gif
new file mode 100644
index 0000000..fc34e45
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_ToolBarContribution.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_ToolBarSeparator.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_ToolBarSeparator.gif
new file mode 100644
index 0000000..4ce1821
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_ToolBarSeparator.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_ToolControl.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_ToolControl.gif
new file mode 100644
index 0000000..c05a418
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_ToolControl.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_TrimBar.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_TrimBar.gif
new file mode 100644
index 0000000..d203b1d
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_TrimBar.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_TrimContribution.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_TrimContribution.gif
new file mode 100644
index 0000000..fc34e45
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_TrimContribution.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_TrimmedWindow.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_TrimmedWindow.gif
new file mode 100644
index 0000000..9073955
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_TrimmedWindow.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_Window.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_Window.gif
new file mode 100644
index 0000000..883ce93
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_Window.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_WizardDialog.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_WizardDialog.gif
new file mode 100644
index 0000000..9c7efc4
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_WizardDialog.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_windows_Dialog.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_windows_Dialog.gif
new file mode 100644
index 0000000..d70b2d9
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_windows_Dialog.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_windows_TrimmedWindow.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_windows_TrimmedWindow.gif
new file mode 100644
index 0000000..9073955
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_windows_TrimmedWindow.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_windows_Window.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_windows_Window.gif
new file mode 100644
index 0000000..883ce93
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_windows_Window.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_windows_WizardDialog.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_windows_WizardDialog.gif
new file mode 100644
index 0000000..9c7efc4
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_windows_WizardDialog.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Addon.png b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Addon.png
new file mode 100644
index 0000000..3262767
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Addon.png
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Application.png b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Application.png
new file mode 100644
index 0000000..3bc0bd3
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Application.png
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/ApplicationElement.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/ApplicationElement.gif
new file mode 100644
index 0000000..05dc74a
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/ApplicationElement.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Area.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Area.gif
new file mode 100644
index 0000000..bbbdd55
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Area.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Area_vertical.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Area_vertical.gif
new file mode 100644
index 0000000..013e818
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Area_vertical.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/BindingContext.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/BindingContext.gif
new file mode 100644
index 0000000..50445d9
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/BindingContext.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/BindingTable.png b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/BindingTable.png
new file mode 100644
index 0000000..decac8a
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/BindingTable.png
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Category.png b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Category.png
new file mode 100644
index 0000000..d04dd7f
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Category.png
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Command.png b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Command.png
new file mode 100644
index 0000000..b89bb34
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Command.png
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/CommandParameter.png b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/CommandParameter.png
new file mode 100644
index 0000000..9757fc6
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/CommandParameter.png
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/CompositePart.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/CompositePart.gif
new file mode 100644
index 0000000..c3370c7
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/CompositePart.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/CoreExpression.png b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/CoreExpression.png
new file mode 100644
index 0000000..0c76bd1
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/CoreExpression.png
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Dialog.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Dialog.gif
new file mode 100644
index 0000000..5a9bc75
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Dialog.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/DirectMenuItem.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/DirectMenuItem.gif
new file mode 100644
index 0000000..30dbf6b
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/DirectMenuItem.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/DirectToolItem.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/DirectToolItem.gif
new file mode 100644
index 0000000..b225cd5
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/DirectToolItem.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/DynamicMenuContribution.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/DynamicMenuContribution.gif
new file mode 100644
index 0000000..498364f
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/DynamicMenuContribution.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/HandledItem.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/HandledItem.gif
new file mode 100644
index 0000000..136e3b2
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/HandledItem.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/HandledMenuItem.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/HandledMenuItem.gif
new file mode 100644
index 0000000..710188a
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/HandledMenuItem.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/HandledToolItem.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/HandledToolItem.gif
new file mode 100644
index 0000000..ac4ff21
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/HandledToolItem.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Handler.png b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Handler.png
new file mode 100644
index 0000000..b8c64af
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Handler.png
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/InputPart.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/InputPart.gif
new file mode 100644
index 0000000..a26660e
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/InputPart.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Item.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Item.gif
new file mode 100644
index 0000000..1e5345f
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Item.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/KeyBinding.png b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/KeyBinding.png
new file mode 100644
index 0000000..25eacb7
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/KeyBinding.png
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Menu.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Menu.gif
new file mode 100644
index 0000000..6417328
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Menu.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/MenuContribution.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/MenuContribution.gif
new file mode 100644
index 0000000..2b69256
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/MenuContribution.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/MenuItem.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/MenuItem.gif
new file mode 100644
index 0000000..b7c3c56
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/MenuItem.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/MenuSeparator.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/MenuSeparator.gif
new file mode 100644
index 0000000..16d63ff
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/MenuSeparator.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/ModelFragments.png b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/ModelFragments.png
new file mode 100644
index 0000000..6187b15
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/ModelFragments.png
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Parameter.png b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Parameter.png
new file mode 100644
index 0000000..9757fc6
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Parameter.png
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Part.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Part.gif
new file mode 100644
index 0000000..610f584
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Part.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/PartDescriptor.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/PartDescriptor.gif
new file mode 100644
index 0000000..7a31c50
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/PartDescriptor.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/PartSashContainer.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/PartSashContainer.gif
new file mode 100644
index 0000000..bbbdd55
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/PartSashContainer.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/PartSashContainer_vertical.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/PartSashContainer_vertical.gif
new file mode 100644
index 0000000..013e818
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/PartSashContainer_vertical.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/PartStack.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/PartStack.gif
new file mode 100644
index 0000000..edd6060
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/PartStack.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Perspective.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Perspective.gif
new file mode 100644
index 0000000..ba1a199
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Perspective.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/PerspectiveStack.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/PerspectiveStack.gif
new file mode 100644
index 0000000..0624021
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/PerspectiveStack.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Placeholder.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Placeholder.gif
new file mode 100644
index 0000000..25c66a1
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Placeholder.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/PopupMenu.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/PopupMenu.gif
new file mode 100644
index 0000000..7c2aaac
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/PopupMenu.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/StringModelFragment.png b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/StringModelFragment.png
new file mode 100644
index 0000000..b6cb0ec
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/StringModelFragment.png
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/StringToObjectMap.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/StringToObjectMap.gif
new file mode 100644
index 0000000..d92f34c
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/StringToObjectMap.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/StringToStringMap.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/StringToStringMap.gif
new file mode 100644
index 0000000..35ef84e
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/StringToStringMap.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/ToolBar.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/ToolBar.gif
new file mode 100644
index 0000000..6417328
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/ToolBar.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/ToolBarContribution.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/ToolBarContribution.gif
new file mode 100644
index 0000000..5915591
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/ToolBarContribution.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/ToolBarSeparator.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/ToolBarSeparator.gif
new file mode 100644
index 0000000..81d54f3
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/ToolBarSeparator.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/ToolControl.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/ToolControl.gif
new file mode 100644
index 0000000..3e53cbd
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/ToolControl.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/ToolItem.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/ToolItem.gif
new file mode 100644
index 0000000..d92f34c
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/ToolItem.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/TrimBar.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/TrimBar.gif
new file mode 100644
index 0000000..a17dc7d
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/TrimBar.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/TrimContribution.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/TrimContribution.gif
new file mode 100644
index 0000000..5915591
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/TrimContribution.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/TrimmedWindow.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/TrimmedWindow.gif
new file mode 100644
index 0000000..37aad78
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/TrimmedWindow.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Window.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Window.gif
new file mode 100644
index 0000000..37aad78
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Window.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/WindowTrim.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/WindowTrim.gif
new file mode 100644
index 0000000..37aad78
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/WindowTrim.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/WizardDialog.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/WizardDialog.gif
new file mode 100644
index 0000000..35ef84e
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/WizardDialog.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/license.html b/org.eclipse.e4.ui.model.workbench.edit/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/license.html
@@ -0,0 +1,164 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!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>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>February 1, 2011</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+   (COLLECTIVELY "CONTENT").  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse
+ Foundation is provided to you under the terms and conditions of the 
+Eclipse Public License Version 1.0
+   ("EPL").  A copy of the EPL is provided with this Content and is also
+ 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, "Program" will mean the Content.</p>
+
+<p>Content includes, but is not limited to, source code, object code, 
+documentation and other files maintained in the Eclipse Foundation 
+source code
+   repository ("Repository") in software modules ("Modules") and made 
+available as downloadable archives ("Downloads").</p>
+
+<ul>
+       <li>Content may be structured and packaged into modules to 
+facilitate delivering, extending, and upgrading the Content.  Typical 
+modules may include plug-ins ("Plug-ins"), plug-in fragments 
+("Fragments"), and features ("Features").</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&#8482; ARchive) in a directory named "plugins".</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or 
+Fragments and associated material.  Each Feature may be packaged as a 
+sub-directory in a directory named "features".  Within a Feature, files 
+named "feature.xml" may contain a list of the names and version numbers 
+of the Plug-ins
+      and/or Fragments associated with that Feature.</li>
+       <li>Features may also include other Features ("Included 
+Features"). Within a Feature, files named "feature.xml" may contain a 
+list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be 
+contained in files named "about.html" ("Abouts"). The terms and 
+conditions governing Features and
+Included Features should be contained in files named "license.html" 
+("Feature Licenses").  Abouts and Feature Licenses may be located in any
+ directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named "src" of certain Plug-ins</li>
+       <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is 
+installed using the Provisioning Technology (as defined below), you must
+ agree to a license ("Feature Update License") during the
+installation process.  If the Feature contains Included Features, the 
+Feature Update License should either provide you with the terms and 
+conditions governing the Included Features or
+inform you where you can locate them.  Feature Update Licenses may be 
+found in the "license" property of files named "feature.properties" 
+found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the 
+terms and conditions (or references to such terms and conditions) that 
+govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER 
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.
+  SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND 
+CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, 
+or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions 
+govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, 
+examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager ("Provisioning Technology") for the purpose of 
+allowing users to install software, documentation, information and/or
+   other materials (collectively "Installable Software"). This 
+capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about 
+packaging Installable Software is available at <a href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   ("Specification").</p>
+
+<p>You may use Provisioning Technology to allow other parties to install
+ Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to
+ be presented to, and accepted by, the users of the Provisioning 
+Technology
+   in accordance with the Specification. By using Provisioning 
+Technology in such a manner and making it available in accordance with 
+the
+   Specification, you further acknowledge your agreement to, and the 
+acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur ("Provisioning Process") in 
+which a user may execute the Provisioning Technology
+       on a machine ("Target Machine") with the intent of installing, 
+extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology 
+may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user 
+the terms and conditions that govern the use of the Installable
+       Software ("Installable Software Agreement") and such Installable 
+Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable 
+Software Agreement must inform the user of the terms and conditions that
+ govern
+       the Installable Software and must solicit acceptance by the end 
+user in the manner prescribed in such Installable Software Agreement. 
+Upon such
+       indication of agreement by the user, the provisioning Technology 
+will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are
+ currently may have restrictions on the import, possession, and use, 
+and/or re-export to
+   another country, of encryption software. BEFORE using any encryption 
+software, please check the country's laws, regulations and policies 
+concerning the import,
+   possession, or use, and re-export of encryption software, to see if 
+this is permitted.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.e4.ui.model.workbench.edit/plugin.properties b/org.eclipse.e4.ui.model.workbench.edit/plugin.properties
new file mode 100644
index 0000000..e3386ba
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/plugin.properties
@@ -0,0 +1,224 @@
+# Copyright (c) 2008, 2013 IBM Corporation and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+# 
+# Contributors:
+#      IBM Corporation - initial API and implementation
+
+pluginName = UIElements Edit Support
+providerName = www.example.org
+
+_UI_CreateChild_text = {0}
+_UI_CreateChild_text2 = {1} {0}
+_UI_CreateChild_text3 = {1}
+_UI_CreateChild_tooltip = Create New {0} Under {1} Feature
+_UI_CreateChild_description = Create a new child of type {0} for the {1} feature of the selected {2}.
+_UI_CreateSibling_description = Create a new sibling of type {0} for the selected {2}, under the {1} feature of their parent.
+
+_UI_PropertyDescriptor_description = The {0} of the {1}
+
+_UI_StringToStringMap_type = String To String Map
+_UI_Application_type = Application
+_UI_ApplicationElement_type = Element
+_UI_Contribution_type = Contribution
+_UI_Addon_type = Addon
+_UI_StringToObjectMap_type = String To Object Map
+_UI_BindingTableContainer_type = Binding Table Container
+_UI_Bindings_type = Bindings
+_UI_BindingContext_type = Binding Context
+_UI_BindingTable_type = Binding Table
+_UI_Command_type = Command
+_UI_CommandParameter_type = Command Parameter
+_UI_Handler_type = Handler
+_UI_HandlerContainer_type = Handler Container
+_UI_KeyBinding_type = Key Binding
+_UI_KeySequence_type = Key Sequence
+_UI_Parameter_type = Parameter
+_UI_Category_type = Category
+_UI_Context_type = Context
+_UI_Dirtyable_type = Dirtyable
+_UI_Input_type = Input
+_UI_UIElement_type = UI Element
+_UI_ElementContainer_type = Element Container
+_UI_UILabel_type = UI Label
+_UI_GenericStack_type = Generic Stack
+_UI_GenericTile_type = Generic Tile
+_UI_GenericTrimContainer_type = Generic Trim Container
+_UI_Expression_type = Expression
+_UI_CoreExpression_type = Core Expression
+_UI_SnippetContainer_type = Snippet Container
+_UI_Localizable_type = Localizable
+_UI_Item_type = Item
+_UI_HandledItem_type = Handled Item
+_UI_MenuElement_type = Element
+_UI_MenuItem_type = Item
+_UI_MenuSeparator_type = Separator
+_UI_Menu_type = Menu
+_UI_MenuContribution_type = Contribution
+_UI_PopupMenu_type = Popup Menu
+_UI_DirectMenuItem_type = Direct Menu Item
+_UI_HandledMenuItem_type = Handled Menu Item
+_UI_ToolItem_type = Tool Item
+_UI_ToolBar_type = Tool Bar
+_UI_ToolBarElement_type = Tool Bar Element
+_UI_ToolControl_type = Tool Control
+_UI_HandledToolItem_type = Handled Tool Item
+_UI_DirectToolItem_type = Direct Tool Item
+_UI_ToolBarSeparator_type = Tool Bar Separator
+_UI_MenuContributions_type = Contributions
+_UI_ToolBarContribution_type = Tool Bar Contribution
+_UI_ToolBarContributions_type = Tool Bar Contributions
+_UI_TrimContribution_type = Trim Contribution
+_UI_TrimContributions_type = Trim Contributions
+_UI_DynamicMenuContribution_type = Dynamic Menu Contribution
+_UI_Part_type = Part
+_UI_CompositePart_type = Composite Part
+_UI_InputPart_type = Input Part
+_UI_PartStack_type = Part Stack
+_UI_PartSashContainer_type = Part Sash Container
+_UI_Window_type = Window
+_UI_TrimmedWindow_type = Trimmed Window
+_UI_TrimElement_type = Trim Element
+_UI_PartSashContainerElement_type = Part Sash Container Element
+_UI_WindowElement_type = Window Element
+_UI_TrimBar_type = Trim Bar
+_UI_StackElement_type = Stack Element
+_UI_Dialog_type = Dialog
+_UI_WizardDialog_type = Wizard Dialog
+_UI_Placeholder_type = Placeholder
+_UI_Perspective_type = Perspective
+_UI_PerspectiveStack_type = Perspective Stack
+_UI_Area_type = Area
+_UI_PartDescriptor_type = Part Descriptor
+_UI_PartDescriptorContainer_type = Part Descriptor Container
+_UI_Unknown_type = Object
+
+_UI_Unknown_datatype= Value
+
+_UI_StringToStringMap_key_feature = Key
+_UI_StringToStringMap_value_feature = Value
+_UI_Application_commands_feature = Commands
+_UI_Application_addons_feature = Addons
+_UI_Application_categories_feature = Categories
+_UI_Application_dialogs_feature = Dialogs
+_UI_ApplicationElement_elementId_feature = Element Id
+_UI_ApplicationElement_persistedState_feature = Persisted State
+_UI_ApplicationElement_tags_feature = Tags
+_UI_ApplicationElement_contributorURI_feature = Contributor URI
+_UI_ApplicationElement_transientData_feature = Transient Data
+_UI_Contribution_contributionURI_feature = Contribution URI
+_UI_Contribution_object_feature = Object
+_UI_StringToObjectMap_key_feature = Key
+_UI_StringToObjectMap_value_feature = Value
+_UI_BindingTableContainer_bindingTables_feature = Binding Tables
+_UI_BindingTableContainer_rootContext_feature = Root Context
+_UI_Bindings_bindingContexts_feature = Binding Contexts
+_UI_BindingContext_name_feature = Name
+_UI_BindingContext_description_feature = Description
+_UI_BindingContext_children_feature = Children
+_UI_BindingTable_bindings_feature = Bindings
+_UI_BindingTable_bindingContext_feature = Binding Context
+_UI_Command_commandName_feature = Command Name
+_UI_Command_description_feature = Description
+_UI_Command_parameters_feature = Parameters
+_UI_Command_category_feature = Category
+_UI_Command_localizedCommandName_feature = Localized Command Name
+_UI_Command_localizedDescription_feature = Localized Description
+_UI_CommandParameter_name_feature = Name
+_UI_CommandParameter_typeId_feature = Type Id
+_UI_CommandParameter_optional_feature = Optional
+_UI_Handler_command_feature = Command
+_UI_HandlerContainer_handlers_feature = Handlers
+_UI_KeyBinding_command_feature = Command
+_UI_KeyBinding_parameters_feature = Parameters
+_UI_KeySequence_keySequence_feature = Key Sequence
+_UI_Parameter_name_feature = Name
+_UI_Parameter_value_feature = Value
+_UI_Category_name_feature = Name
+_UI_Category_description_feature = Description
+_UI_Category_localizedName_feature = Localized Name
+_UI_Category_localizedDescription_feature = Localized Description
+_UI_Context_context_feature = Context
+_UI_Context_variables_feature = Variables
+_UI_Context_properties_feature = Properties
+_UI_Dirtyable_dirty_feature = Dirty
+_UI_Input_inputURI_feature = Input URI
+_UI_UIElement_widget_feature = Widget
+_UI_UIElement_renderer_feature = Renderer
+_UI_UIElement_toBeRendered_feature = To Be Rendered
+_UI_UIElement_onTop_feature = On Top
+_UI_UIElement_visible_feature = Visible
+_UI_UIElement_parent_feature = Parent
+_UI_UIElement_containerData_feature = Container Data
+_UI_UIElement_curSharedRef_feature = Cur Shared Ref
+_UI_UIElement_visibleWhen_feature = Visible When
+_UI_UIElement_accessibilityPhrase_feature = Accessibility Phrase
+_UI_UIElement_localizedAccessibilityPhrase_feature = Localized Accessibility Phrase
+_UI_ElementContainer_children_feature = Children
+_UI_ElementContainer_selectedElement_feature = Selected Element
+_UI_UILabel_label_feature = Label
+_UI_UILabel_iconURI_feature = Icon URI
+_UI_UILabel_tooltip_feature = Tooltip
+_UI_UILabel_localizedLabel_feature = Localized Label
+_UI_UILabel_localizedTooltip_feature = Localized Tooltip
+_UI_GenericTile_horizontal_feature = Horizontal
+_UI_GenericTrimContainer_side_feature = Side
+_UI_CoreExpression_coreExpressionId_feature = Core Expression Id
+_UI_CoreExpression_coreExpression_feature = Core Expression
+_UI_SnippetContainer_snippets_feature = Snippets
+_UI_Item_enabled_feature = Enabled
+_UI_Item_selected_feature = Selected
+_UI_Item_type_feature = Type
+_UI_HandledItem_command_feature = Command
+_UI_HandledItem_wbCommand_feature = Wb Command
+_UI_HandledItem_parameters_feature = Parameters
+_UI_MenuElement_mnemonics_feature = Mnemonics
+_UI_Menu_enabled_feature = Enabled
+_UI_MenuContribution_positionInParent_feature = Position In Parent
+_UI_MenuContribution_parentId_feature = Parent Id
+_UI_ToolItem_menu_feature = Menu
+_UI_MenuContributions_menuContributions_feature = Menu Contributions
+_UI_ToolBarContribution_parentId_feature = Parent Id
+_UI_ToolBarContribution_positionInParent_feature = Position In Parent
+_UI_ToolBarContributions_toolBarContributions_feature = Tool Bar Contributions
+_UI_TrimContribution_parentId_feature = Parent Id
+_UI_TrimContribution_positionInParent_feature = Position In Parent
+_UI_TrimContributions_trimContributions_feature = Trim Contributions
+_UI_Part_menus_feature = Menus
+_UI_Part_toolbar_feature = Toolbar
+_UI_Part_closeable_feature = Closeable
+_UI_Part_description_feature = Description
+_UI_Part_localizedDescription_feature = Localized Description
+_UI_Window_mainMenu_feature = Main Menu
+_UI_Window_x_feature = X
+_UI_Window_y_feature = Y
+_UI_Window_width_feature = Width
+_UI_Window_height_feature = Height
+_UI_Window_windows_feature = Windows
+_UI_Window_sharedElements_feature = Shared Elements
+_UI_TrimmedWindow_trimBars_feature = Trim Bars
+_UI_TrimBar_pendingCleanup_feature = Pending Cleanup
+_UI_Placeholder_ref_feature = Ref
+_UI_Placeholder_closeable_feature = Closeable
+_UI_Perspective_windows_feature = Windows
+_UI_PartDescriptor_allowMultiple_feature = Allow Multiple
+_UI_PartDescriptor_category_feature = Category
+_UI_PartDescriptor_menus_feature = Menus
+_UI_PartDescriptor_toolbar_feature = Toolbar
+_UI_PartDescriptor_closeable_feature = Closeable
+_UI_PartDescriptor_dirtyable_feature = Dirtyable
+_UI_PartDescriptor_contributionURI_feature = Contribution URI
+_UI_PartDescriptor_description_feature = Description
+_UI_PartDescriptor_localizedDescription_feature = Localized Description
+_UI_PartDescriptorContainer_descriptors_feature = Descriptors
+_UI_Unknown_feature = Unspecified
+
+_UI_SideValue_Top_literal = Top
+_UI_SideValue_Bottom_literal = Bottom
+_UI_SideValue_Left_literal = Left
+_UI_SideValue_Right_literal = Right
+_UI_ItemType_Push_literal = Push
+_UI_ItemType_Check_literal = Check
+_UI_ItemType_Radio_literal = Radio
diff --git a/org.eclipse.e4.ui.model.workbench.edit/plugin.xml b/org.eclipse.e4.ui.model.workbench.edit/plugin.xml
new file mode 100644
index 0000000..c5bc74b
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/plugin.xml
@@ -0,0 +1,108 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+ Copyright (c) 2008, 2013 IBM Corporation and others.
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License v1.0
+ which accompanies this distribution, and is available at
+ http://www.eclipse.org/legal/epl-v10.html
+ 
+ Contributors:
+      IBM Corporation - initial API and implementation
+-->
+
+<plugin>
+
+   <extension point="org.eclipse.emf.edit.itemProviderAdapterFactories">
+      <!-- @generated UIElements -->
+      <factory
+            uri="http://www.eclipse.org/ui/2010/UIModel/application"
+            class="org.eclipse.e4.ui.model.application.provider.ApplicationItemProviderAdapterFactory"
+            supportedTypes=
+              "org.eclipse.emf.edit.provider.IEditingDomainItemProvider
+               org.eclipse.emf.edit.provider.IStructuredItemContentProvider
+               org.eclipse.emf.edit.provider.ITreeItemContentProvider
+               org.eclipse.emf.edit.provider.IItemLabelProvider
+               org.eclipse.emf.edit.provider.IItemPropertySource"/>
+   </extension>
+
+   <extension point="org.eclipse.emf.edit.itemProviderAdapterFactories">
+      <!-- @generated UIElements -->
+      <factory
+            uri="http://www.eclipse.org/ui/2010/UIModel/application/commands"
+            class="org.eclipse.e4.ui.model.application.commands.provider.CommandsItemProviderAdapterFactory"
+            supportedTypes=
+              "org.eclipse.emf.edit.provider.IEditingDomainItemProvider
+               org.eclipse.emf.edit.provider.IStructuredItemContentProvider
+               org.eclipse.emf.edit.provider.ITreeItemContentProvider
+               org.eclipse.emf.edit.provider.IItemLabelProvider
+               org.eclipse.emf.edit.provider.IItemPropertySource"/>
+   </extension>
+
+   <extension point="org.eclipse.emf.edit.itemProviderAdapterFactories">
+      <!-- @generated UIElements -->
+      <factory
+            uri="http://www.eclipse.org/ui/2010/UIModel/application/ui"
+            class="org.eclipse.e4.ui.model.application.ui.provider.UiItemProviderAdapterFactory"
+            supportedTypes=
+              "org.eclipse.emf.edit.provider.IEditingDomainItemProvider
+               org.eclipse.emf.edit.provider.IStructuredItemContentProvider
+               org.eclipse.emf.edit.provider.ITreeItemContentProvider
+               org.eclipse.emf.edit.provider.IItemLabelProvider
+               org.eclipse.emf.edit.provider.IItemPropertySource"/>
+   </extension>
+
+   <extension point="org.eclipse.emf.edit.itemProviderAdapterFactories">
+      <!-- @generated UIElements -->
+      <factory
+            uri="http://www.eclipse.org/ui/2010/UIModel/application/ui/menu"
+            class="org.eclipse.e4.ui.model.application.ui.menu.provider.MenuItemProviderAdapterFactory"
+            supportedTypes=
+              "org.eclipse.emf.edit.provider.IEditingDomainItemProvider
+               org.eclipse.emf.edit.provider.IStructuredItemContentProvider
+               org.eclipse.emf.edit.provider.ITreeItemContentProvider
+               org.eclipse.emf.edit.provider.IItemLabelProvider
+               org.eclipse.emf.edit.provider.IItemPropertySource"/>
+   </extension>
+
+   <extension point="org.eclipse.emf.edit.itemProviderAdapterFactories">
+      <!-- @generated UIElements -->
+      <factory
+            uri="http://www.eclipse.org/ui/2010/UIModel/application/ui/basic"
+            class="org.eclipse.e4.ui.model.application.ui.basic.provider.BasicItemProviderAdapterFactory"
+            supportedTypes=
+              "org.eclipse.emf.edit.provider.IEditingDomainItemProvider
+               org.eclipse.emf.edit.provider.IStructuredItemContentProvider
+               org.eclipse.emf.edit.provider.ITreeItemContentProvider
+               org.eclipse.emf.edit.provider.IItemLabelProvider
+               org.eclipse.emf.edit.provider.IItemPropertySource"/>
+   </extension>
+
+   <extension point="org.eclipse.emf.edit.itemProviderAdapterFactories">
+      <!-- @generated UIElements -->
+      <factory
+            uri="http://www.eclipse.org/ui/2010/UIModel/application/ui/advanced"
+            class="org.eclipse.e4.ui.model.application.ui.advanced.provider.AdvancedItemProviderAdapterFactory"
+            supportedTypes=
+              "org.eclipse.emf.edit.provider.IEditingDomainItemProvider
+               org.eclipse.emf.edit.provider.IStructuredItemContentProvider
+               org.eclipse.emf.edit.provider.ITreeItemContentProvider
+               org.eclipse.emf.edit.provider.IItemLabelProvider
+               org.eclipse.emf.edit.provider.IItemPropertySource"/>
+   </extension>
+
+   <extension point="org.eclipse.emf.edit.itemProviderAdapterFactories">
+      <!-- @generated UIElements -->
+      <factory
+            uri="http://www.eclipse.org/ui/2010/UIModel/application/descriptor/basic"
+            class="org.eclipse.e4.ui.model.application.descriptor.basic.provider.BasicItemProviderAdapterFactory"
+            supportedTypes=
+              "org.eclipse.emf.edit.provider.IEditingDomainItemProvider
+               org.eclipse.emf.edit.provider.IStructuredItemContentProvider
+               org.eclipse.emf.edit.provider.ITreeItemContentProvider
+               org.eclipse.emf.edit.provider.IItemLabelProvider
+               org.eclipse.emf.edit.provider.IItemPropertySource"/>
+   </extension>
+
+</plugin>
diff --git a/org.eclipse.e4.ui.model.workbench.edit/pom.xml b/org.eclipse.e4.ui.model.workbench.edit/pom.xml
new file mode 100644
index 0000000..f3b287b
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/pom.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <artifactId>org.eclipse.e4.ui.model.workbench.edit</artifactId>
+  <packaging>eclipse-plugin</packaging>
+  <parent>
+  	<groupId>org.eclipse.osbp.vaaclipse</groupId>
+  	<artifactId>org.eclipse.osbp.vaaclipse</artifactId>
+  	<version>0.9.0-SNAPSHOT</version>
+  	<relativePath>..</relativePath>
+  </parent>
+</project>
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/commands/provider/BindingContextItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/commands/provider/BindingContextItemProvider.java
new file mode 100644
index 0000000..84d9a3a
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/commands/provider/BindingContextItemProvider.java
@@ -0,0 +1,222 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *      IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.commands.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.commands.MBindingContext;
+import org.eclipse.e4.ui.model.application.commands.MCommandsFactory;
+
+import org.eclipse.e4.ui.model.application.commands.impl.CommandsPackageImpl;
+
+import org.eclipse.e4.ui.model.application.provider.ApplicationElementItemProvider;
+import org.eclipse.e4.ui.model.application.provider.UIElementsEditPlugin;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.commands.MBindingContext} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class BindingContextItemProvider extends ApplicationElementItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public BindingContextItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addNamePropertyDescriptor(object);
+			addDescriptionPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Name feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addNamePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_BindingContext_name_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_BindingContext_name_feature", "_UI_BindingContext_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 CommandsPackageImpl.Literals.BINDING_CONTEXT__NAME,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Description feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addDescriptionPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_BindingContext_description_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_BindingContext_description_feature", "_UI_BindingContext_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 CommandsPackageImpl.Literals.BINDING_CONTEXT__DESCRIPTION,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(CommandsPackageImpl.Literals.BINDING_CONTEXT__CHILDREN);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns BindingContext.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/BindingContext")); //$NON-NLS-1$
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((MBindingContext)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_BindingContext_type") : //$NON-NLS-1$
+			getString("_UI_BindingContext_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(MBindingContext.class)) {
+			case CommandsPackageImpl.BINDING_CONTEXT__NAME:
+			case CommandsPackageImpl.BINDING_CONTEXT__DESCRIPTION:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+			case CommandsPackageImpl.BINDING_CONTEXT__CHILDREN:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(CommandsPackageImpl.Literals.BINDING_CONTEXT__CHILDREN,
+				 MCommandsFactory.INSTANCE.createBindingContext()));
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return UIElementsEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/commands/provider/BindingTableItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/commands/provider/BindingTableItemProvider.java
new file mode 100644
index 0000000..093ad5f
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/commands/provider/BindingTableItemProvider.java
@@ -0,0 +1,194 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *      IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.commands.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.commands.MBindingTable;
+import org.eclipse.e4.ui.model.application.commands.MCommandsFactory;
+
+import org.eclipse.e4.ui.model.application.commands.impl.CommandsPackageImpl;
+
+import org.eclipse.e4.ui.model.application.provider.ApplicationElementItemProvider;
+import org.eclipse.e4.ui.model.application.provider.UIElementsEditPlugin;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.commands.MBindingTable} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class BindingTableItemProvider extends ApplicationElementItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public BindingTableItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addBindingContextPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Binding Context feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addBindingContextPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_BindingTable_bindingContext_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_BindingTable_bindingContext_feature", "_UI_BindingTable_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 CommandsPackageImpl.Literals.BINDING_TABLE__BINDING_CONTEXT,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(CommandsPackageImpl.Literals.BINDING_TABLE__BINDINGS);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns BindingTable.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated NOT
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/BindingTable.png")); //$NON-NLS-1$
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((MBindingTable)object).getElementId();
+		return label == null || label.length() == 0 ?
+			getString("_UI_BindingTable_type") : //$NON-NLS-1$
+			getString("_UI_BindingTable_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(MBindingTable.class)) {
+			case CommandsPackageImpl.BINDING_TABLE__BINDINGS:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(CommandsPackageImpl.Literals.BINDING_TABLE__BINDINGS,
+				 MCommandsFactory.INSTANCE.createKeyBinding()));
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return UIElementsEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/commands/provider/CategoryItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/commands/provider/CategoryItemProvider.java
new file mode 100644
index 0000000..c88c2cb
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/commands/provider/CategoryItemProvider.java
@@ -0,0 +1,229 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *      IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.commands.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.commands.MCategory;
+
+import org.eclipse.e4.ui.model.application.commands.impl.CommandsPackageImpl;
+
+import org.eclipse.e4.ui.model.application.provider.ApplicationElementItemProvider;
+import org.eclipse.e4.ui.model.application.provider.UIElementsEditPlugin;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.commands.MCategory} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class CategoryItemProvider extends ApplicationElementItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CategoryItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addNamePropertyDescriptor(object);
+			addDescriptionPropertyDescriptor(object);
+			addLocalizedNamePropertyDescriptor(object);
+			addLocalizedDescriptionPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Name feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addNamePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Category_name_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_Category_name_feature", "_UI_Category_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 CommandsPackageImpl.Literals.CATEGORY__NAME,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Description feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addDescriptionPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Category_description_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_Category_description_feature", "_UI_Category_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 CommandsPackageImpl.Literals.CATEGORY__DESCRIPTION,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Localized Name feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addLocalizedNamePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Category_localizedName_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_Category_localizedName_feature", "_UI_Category_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 CommandsPackageImpl.Literals.CATEGORY__LOCALIZED_NAME,
+				 false,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Localized Description feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addLocalizedDescriptionPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Category_localizedDescription_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_Category_localizedDescription_feature", "_UI_Category_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 CommandsPackageImpl.Literals.CATEGORY__LOCALIZED_DESCRIPTION,
+				 false,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns Category.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated NOT
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/Category.png")); //$NON-NLS-1$
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((MCategory)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_Category_type") : //$NON-NLS-1$
+			getString("_UI_Category_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(MCategory.class)) {
+			case CommandsPackageImpl.CATEGORY__NAME:
+			case CommandsPackageImpl.CATEGORY__DESCRIPTION:
+			case CommandsPackageImpl.CATEGORY__LOCALIZED_NAME:
+			case CommandsPackageImpl.CATEGORY__LOCALIZED_DESCRIPTION:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return UIElementsEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/commands/provider/CommandItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/commands/provider/CommandItemProvider.java
new file mode 100644
index 0000000..440a448
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/commands/provider/CommandItemProvider.java
@@ -0,0 +1,293 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *      IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.commands.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.commands.MCommand;
+import org.eclipse.e4.ui.model.application.commands.MCommandsFactory;
+
+import org.eclipse.e4.ui.model.application.commands.impl.CommandsPackageImpl;
+
+import org.eclipse.e4.ui.model.application.provider.ApplicationElementItemProvider;
+import org.eclipse.e4.ui.model.application.provider.UIElementsEditPlugin;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.commands.MCommand} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class CommandItemProvider extends ApplicationElementItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CommandItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addCommandNamePropertyDescriptor(object);
+			addDescriptionPropertyDescriptor(object);
+			addCategoryPropertyDescriptor(object);
+			addLocalizedCommandNamePropertyDescriptor(object);
+			addLocalizedDescriptionPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Command Name feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addCommandNamePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Command_commandName_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_Command_commandName_feature", "_UI_Command_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 CommandsPackageImpl.Literals.COMMAND__COMMAND_NAME,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Description feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addDescriptionPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Command_description_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_Command_description_feature", "_UI_Command_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 CommandsPackageImpl.Literals.COMMAND__DESCRIPTION,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Category feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addCategoryPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Command_category_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_Command_category_feature", "_UI_Command_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 CommandsPackageImpl.Literals.COMMAND__CATEGORY,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Localized Command Name feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addLocalizedCommandNamePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Command_localizedCommandName_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_Command_localizedCommandName_feature", "_UI_Command_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 CommandsPackageImpl.Literals.COMMAND__LOCALIZED_COMMAND_NAME,
+				 false,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Localized Description feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addLocalizedDescriptionPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Command_localizedDescription_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_Command_localizedDescription_feature", "_UI_Command_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 CommandsPackageImpl.Literals.COMMAND__LOCALIZED_DESCRIPTION,
+				 false,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(CommandsPackageImpl.Literals.COMMAND__PARAMETERS);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns Command.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated NOT
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/Command.png")); //$NON-NLS-1$
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((MCommand)object).getCommandName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_Command_type") : //$NON-NLS-1$
+			getString("_UI_Command_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(MCommand.class)) {
+			case CommandsPackageImpl.COMMAND__COMMAND_NAME:
+			case CommandsPackageImpl.COMMAND__DESCRIPTION:
+			case CommandsPackageImpl.COMMAND__LOCALIZED_COMMAND_NAME:
+			case CommandsPackageImpl.COMMAND__LOCALIZED_DESCRIPTION:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+			case CommandsPackageImpl.COMMAND__PARAMETERS:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(CommandsPackageImpl.Literals.COMMAND__PARAMETERS,
+				 MCommandsFactory.INSTANCE.createCommandParameter()));
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return UIElementsEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/commands/provider/CommandParameterItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/commands/provider/CommandParameterItemProvider.java
new file mode 100644
index 0000000..9a6d939
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/commands/provider/CommandParameterItemProvider.java
@@ -0,0 +1,204 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *      IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.commands.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.commands.MCommandParameter;
+
+import org.eclipse.e4.ui.model.application.commands.impl.CommandsPackageImpl;
+
+import org.eclipse.e4.ui.model.application.provider.ApplicationElementItemProvider;
+import org.eclipse.e4.ui.model.application.provider.UIElementsEditPlugin;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.commands.MCommandParameter} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class CommandParameterItemProvider extends ApplicationElementItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CommandParameterItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addNamePropertyDescriptor(object);
+			addTypeIdPropertyDescriptor(object);
+			addOptionalPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Name feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addNamePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_CommandParameter_name_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_CommandParameter_name_feature", "_UI_CommandParameter_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 CommandsPackageImpl.Literals.COMMAND_PARAMETER__NAME,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Type Id feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addTypeIdPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_CommandParameter_typeId_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_CommandParameter_typeId_feature", "_UI_CommandParameter_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 CommandsPackageImpl.Literals.COMMAND_PARAMETER__TYPE_ID,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Optional feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addOptionalPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_CommandParameter_optional_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_CommandParameter_optional_feature", "_UI_CommandParameter_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 CommandsPackageImpl.Literals.COMMAND_PARAMETER__OPTIONAL,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns CommandParameter.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/CommandParameter.png")); //$NON-NLS-1$
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((MCommandParameter)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_CommandParameter_type") : //$NON-NLS-1$
+			getString("_UI_CommandParameter_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(MCommandParameter.class)) {
+			case CommandsPackageImpl.COMMAND_PARAMETER__NAME:
+			case CommandsPackageImpl.COMMAND_PARAMETER__TYPE_ID:
+			case CommandsPackageImpl.COMMAND_PARAMETER__OPTIONAL:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return UIElementsEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/commands/provider/CommandsItemProviderAdapterFactory.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/commands/provider/CommandsItemProviderAdapterFactory.java
new file mode 100644
index 0000000..3fd208f
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/commands/provider/CommandsItemProviderAdapterFactory.java
@@ -0,0 +1,375 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *      IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.commands.provider;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.e4.ui.model.application.commands.util.CommandsAdapterFactory;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.edit.provider.ChangeNotifier;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.IChangeNotifier;
+import org.eclipse.emf.edit.provider.IDisposable;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.INotifyChangedListener;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the factory that is used to provide the interfaces needed to support Viewers.
+ * The adapters generated by this factory convert EMF adapter notifications into calls to {@link #fireNotifyChanged fireNotifyChanged}.
+ * The adapters also support Eclipse property sheets.
+ * Note that most of the adapters are shared among multiple instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class CommandsItemProviderAdapterFactory extends CommandsAdapterFactory implements ComposeableAdapterFactory, IChangeNotifier, IDisposable {
+	/**
+	 * This keeps track of the root adapter factory that delegates to this adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ComposedAdapterFactory parentAdapterFactory;
+
+	/**
+	 * This is used to implement {@link org.eclipse.emf.edit.provider.IChangeNotifier}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IChangeNotifier changeNotifier = new ChangeNotifier();
+
+	/**
+	 * This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<Object> supportedTypes = new ArrayList<Object>();
+
+	/**
+	 * This constructs an instance.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CommandsItemProviderAdapterFactory() {
+		supportedTypes.add(IEditingDomainItemProvider.class);
+		supportedTypes.add(IStructuredItemContentProvider.class);
+		supportedTypes.add(ITreeItemContentProvider.class);
+		supportedTypes.add(IItemLabelProvider.class);
+		supportedTypes.add(IItemPropertySource.class);
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.commands.MBindingContext} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected BindingContextItemProvider bindingContextItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.e4.ui.model.application.commands.MBindingContext}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createBindingContextAdapter() {
+		if (bindingContextItemProvider == null) {
+			bindingContextItemProvider = new BindingContextItemProvider(this);
+		}
+
+		return bindingContextItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.commands.MBindingTable} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected BindingTableItemProvider bindingTableItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.e4.ui.model.application.commands.MBindingTable}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createBindingTableAdapter() {
+		if (bindingTableItemProvider == null) {
+			bindingTableItemProvider = new BindingTableItemProvider(this);
+		}
+
+		return bindingTableItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.commands.MCommand} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected CommandItemProvider commandItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.e4.ui.model.application.commands.MCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createCommandAdapter() {
+		if (commandItemProvider == null) {
+			commandItemProvider = new CommandItemProvider(this);
+		}
+
+		return commandItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.commands.MCommandParameter} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected CommandParameterItemProvider commandParameterItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.e4.ui.model.application.commands.MCommandParameter}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createCommandParameterAdapter() {
+		if (commandParameterItemProvider == null) {
+			commandParameterItemProvider = new CommandParameterItemProvider(this);
+		}
+
+		return commandParameterItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.commands.MHandler} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected HandlerItemProvider handlerItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.e4.ui.model.application.commands.MHandler}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createHandlerAdapter() {
+		if (handlerItemProvider == null) {
+			handlerItemProvider = new HandlerItemProvider(this);
+		}
+
+		return handlerItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.commands.MKeyBinding} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected KeyBindingItemProvider keyBindingItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.e4.ui.model.application.commands.MKeyBinding}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createKeyBindingAdapter() {
+		if (keyBindingItemProvider == null) {
+			keyBindingItemProvider = new KeyBindingItemProvider(this);
+		}
+
+		return keyBindingItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.commands.MParameter} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ParameterItemProvider parameterItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.e4.ui.model.application.commands.MParameter}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createParameterAdapter() {
+		if (parameterItemProvider == null) {
+			parameterItemProvider = new ParameterItemProvider(this);
+		}
+
+		return parameterItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.commands.MCategory} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected CategoryItemProvider categoryItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.e4.ui.model.application.commands.MCategory}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createCategoryAdapter() {
+		if (categoryItemProvider == null) {
+			categoryItemProvider = new CategoryItemProvider(this);
+		}
+
+		return categoryItemProvider;
+	}
+
+	/**
+	 * This returns the root adapter factory that contains this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ComposeableAdapterFactory getRootAdapterFactory() {
+		return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory();
+	}
+
+	/**
+	 * This sets the composed adapter factory that contains this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory) {
+		this.parentAdapterFactory = parentAdapterFactory;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object type) {
+		return supportedTypes.contains(type) || super.isFactoryForType(type);
+	}
+
+	/**
+	 * This implementation substitutes the factory itself as the key for the adapter.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter adapt(Notifier notifier, Object type) {
+		return super.adapt(notifier, this);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object adapt(Object object, Object type) {
+		if (isFactoryForType(type)) {
+			Object adapter = super.adapt(object, type);
+			if (!(type instanceof Class<?>) || (((Class<?>)type).isInstance(adapter))) {
+				return adapter;
+			}
+		}
+
+		return null;
+	}
+
+	/**
+	 * This adds a listener.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void addListener(INotifyChangedListener notifyChangedListener) {
+		changeNotifier.addListener(notifyChangedListener);
+	}
+
+	/**
+	 * This removes a listener.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void removeListener(INotifyChangedListener notifyChangedListener) {
+		changeNotifier.removeListener(notifyChangedListener);
+	}
+
+	/**
+	 * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void fireNotifyChanged(Notification notification) {
+		changeNotifier.fireNotifyChanged(notification);
+
+		if (parentAdapterFactory != null) {
+			parentAdapterFactory.fireNotifyChanged(notification);
+		}
+	}
+
+	/**
+	 * This disposes all of the item providers created by this factory. 
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void dispose() {
+		if (bindingContextItemProvider != null) bindingContextItemProvider.dispose();
+		if (bindingTableItemProvider != null) bindingTableItemProvider.dispose();
+		if (commandItemProvider != null) commandItemProvider.dispose();
+		if (commandParameterItemProvider != null) commandParameterItemProvider.dispose();
+		if (handlerItemProvider != null) handlerItemProvider.dispose();
+		if (keyBindingItemProvider != null) keyBindingItemProvider.dispose();
+		if (parameterItemProvider != null) parameterItemProvider.dispose();
+		if (categoryItemProvider != null) categoryItemProvider.dispose();
+	}
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/commands/provider/HandlerItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/commands/provider/HandlerItemProvider.java
new file mode 100644
index 0000000..f11a4b9
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/commands/provider/HandlerItemProvider.java
@@ -0,0 +1,148 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *      IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.commands.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.commands.MHandler;
+
+import org.eclipse.e4.ui.model.application.commands.impl.CommandsPackageImpl;
+
+import org.eclipse.e4.ui.model.application.provider.ContributionItemProvider;
+import org.eclipse.e4.ui.model.application.provider.UIElementsEditPlugin;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.commands.MHandler} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class HandlerItemProvider extends ContributionItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public HandlerItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addCommandPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Command feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addCommandPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Handler_command_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_Handler_command_feature", "_UI_Handler_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 CommandsPackageImpl.Literals.HANDLER__COMMAND,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns Handler.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/Handler.png")); //$NON-NLS-1$
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((MHandler)object).getContributionURI();
+		return label == null || label.length() == 0 ?
+			getString("_UI_Handler_type") : //$NON-NLS-1$
+			getString("_UI_Handler_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return UIElementsEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/commands/provider/KeyBindingItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/commands/provider/KeyBindingItemProvider.java
new file mode 100644
index 0000000..55ed379
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/commands/provider/KeyBindingItemProvider.java
@@ -0,0 +1,220 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *      IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.commands.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.commands.MCommandsFactory;
+import org.eclipse.e4.ui.model.application.commands.MKeyBinding;
+
+import org.eclipse.e4.ui.model.application.commands.impl.CommandsPackageImpl;
+
+import org.eclipse.e4.ui.model.application.provider.ApplicationElementItemProvider;
+import org.eclipse.e4.ui.model.application.provider.UIElementsEditPlugin;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.commands.MKeyBinding} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class KeyBindingItemProvider extends ApplicationElementItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public KeyBindingItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addKeySequencePropertyDescriptor(object);
+			addCommandPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Key Sequence feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addKeySequencePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_KeySequence_keySequence_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_KeySequence_keySequence_feature", "_UI_KeySequence_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 CommandsPackageImpl.Literals.KEY_SEQUENCE__KEY_SEQUENCE,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Command feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addCommandPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_KeyBinding_command_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_KeyBinding_command_feature", "_UI_KeyBinding_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 CommandsPackageImpl.Literals.KEY_BINDING__COMMAND,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(CommandsPackageImpl.Literals.KEY_BINDING__PARAMETERS);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns KeyBinding.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/KeyBinding.png")); //$NON-NLS-1$
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((MKeyBinding)object).getElementId();
+		return label == null || label.length() == 0 ?
+			getString("_UI_KeyBinding_type") : //$NON-NLS-1$
+			getString("_UI_KeyBinding_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(MKeyBinding.class)) {
+			case CommandsPackageImpl.KEY_BINDING__KEY_SEQUENCE:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+			case CommandsPackageImpl.KEY_BINDING__PARAMETERS:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(CommandsPackageImpl.Literals.KEY_BINDING__PARAMETERS,
+				 MCommandsFactory.INSTANCE.createParameter()));
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return UIElementsEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/commands/provider/ParameterItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/commands/provider/ParameterItemProvider.java
new file mode 100644
index 0000000..4a04767
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/commands/provider/ParameterItemProvider.java
@@ -0,0 +1,180 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *      IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.commands.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.commands.MParameter;
+
+import org.eclipse.e4.ui.model.application.commands.impl.CommandsPackageImpl;
+
+import org.eclipse.e4.ui.model.application.provider.ApplicationElementItemProvider;
+import org.eclipse.e4.ui.model.application.provider.UIElementsEditPlugin;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.commands.MParameter} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ParameterItemProvider extends ApplicationElementItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ParameterItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addNamePropertyDescriptor(object);
+			addValuePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Name feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addNamePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Parameter_name_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_Parameter_name_feature", "_UI_Parameter_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 CommandsPackageImpl.Literals.PARAMETER__NAME,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Value feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addValuePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Parameter_value_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_Parameter_value_feature", "_UI_Parameter_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 CommandsPackageImpl.Literals.PARAMETER__VALUE,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns Parameter.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/Parameter.png")); //$NON-NLS-1$
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((MParameter)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_Parameter_type") : //$NON-NLS-1$
+			getString("_UI_Parameter_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(MParameter.class)) {
+			case CommandsPackageImpl.PARAMETER__NAME:
+			case CommandsPackageImpl.PARAMETER__VALUE:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return UIElementsEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/descriptor/basic/provider/BasicItemProviderAdapterFactory.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/descriptor/basic/provider/BasicItemProviderAdapterFactory.java
new file mode 100644
index 0000000..40d2e49
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/descriptor/basic/provider/BasicItemProviderAdapterFactory.java
@@ -0,0 +1,207 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *      IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.descriptor.basic.provider;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.e4.ui.model.application.descriptor.basic.util.BasicAdapterFactory;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.edit.provider.ChangeNotifier;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.IChangeNotifier;
+import org.eclipse.emf.edit.provider.IDisposable;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.INotifyChangedListener;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the factory that is used to provide the interfaces needed to support Viewers.
+ * The adapters generated by this factory convert EMF adapter notifications into calls to {@link #fireNotifyChanged fireNotifyChanged}.
+ * The adapters also support Eclipse property sheets.
+ * Note that most of the adapters are shared among multiple instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class BasicItemProviderAdapterFactory extends BasicAdapterFactory implements ComposeableAdapterFactory, IChangeNotifier, IDisposable {
+	/**
+	 * This keeps track of the root adapter factory that delegates to this adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ComposedAdapterFactory parentAdapterFactory;
+
+	/**
+	 * This is used to implement {@link org.eclipse.emf.edit.provider.IChangeNotifier}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IChangeNotifier changeNotifier = new ChangeNotifier();
+
+	/**
+	 * This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<Object> supportedTypes = new ArrayList<Object>();
+
+	/**
+	 * This constructs an instance.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public BasicItemProviderAdapterFactory() {
+		supportedTypes.add(IEditingDomainItemProvider.class);
+		supportedTypes.add(IStructuredItemContentProvider.class);
+		supportedTypes.add(ITreeItemContentProvider.class);
+		supportedTypes.add(IItemLabelProvider.class);
+		supportedTypes.add(IItemPropertySource.class);
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.descriptor.basic.MPartDescriptor} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected PartDescriptorItemProvider partDescriptorItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.e4.ui.model.application.descriptor.basic.MPartDescriptor}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createPartDescriptorAdapter() {
+		if (partDescriptorItemProvider == null) {
+			partDescriptorItemProvider = new PartDescriptorItemProvider(this);
+		}
+
+		return partDescriptorItemProvider;
+	}
+
+	/**
+	 * This returns the root adapter factory that contains this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ComposeableAdapterFactory getRootAdapterFactory() {
+		return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory();
+	}
+
+	/**
+	 * This sets the composed adapter factory that contains this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory) {
+		this.parentAdapterFactory = parentAdapterFactory;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object type) {
+		return supportedTypes.contains(type) || super.isFactoryForType(type);
+	}
+
+	/**
+	 * This implementation substitutes the factory itself as the key for the adapter.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter adapt(Notifier notifier, Object type) {
+		return super.adapt(notifier, this);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object adapt(Object object, Object type) {
+		if (isFactoryForType(type)) {
+			Object adapter = super.adapt(object, type);
+			if (!(type instanceof Class<?>) || (((Class<?>)type).isInstance(adapter))) {
+				return adapter;
+			}
+		}
+
+		return null;
+	}
+
+	/**
+	 * This adds a listener.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void addListener(INotifyChangedListener notifyChangedListener) {
+		changeNotifier.addListener(notifyChangedListener);
+	}
+
+	/**
+	 * This removes a listener.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void removeListener(INotifyChangedListener notifyChangedListener) {
+		changeNotifier.removeListener(notifyChangedListener);
+	}
+
+	/**
+	 * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void fireNotifyChanged(Notification notification) {
+		changeNotifier.fireNotifyChanged(notification);
+
+		if (parentAdapterFactory != null) {
+			parentAdapterFactory.fireNotifyChanged(notification);
+		}
+	}
+
+	/**
+	 * This disposes all of the item providers created by this factory. 
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void dispose() {
+		if (partDescriptorItemProvider != null) partDescriptorItemProvider.dispose();
+	}
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/descriptor/basic/provider/PartDescriptorItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/descriptor/basic/provider/PartDescriptorItemProvider.java
new file mode 100644
index 0000000..de459a9
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/descriptor/basic/provider/PartDescriptorItemProvider.java
@@ -0,0 +1,512 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *      IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.descriptor.basic.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.commands.MCommandsFactory;
+
+import org.eclipse.e4.ui.model.application.commands.impl.CommandsPackageImpl;
+
+import org.eclipse.e4.ui.model.application.descriptor.basic.MPartDescriptor;
+
+import org.eclipse.e4.ui.model.application.descriptor.basic.impl.BasicPackageImpl;
+
+import org.eclipse.e4.ui.model.application.provider.ApplicationElementItemProvider;
+import org.eclipse.e4.ui.model.application.provider.UIElementsEditPlugin;
+
+import org.eclipse.e4.ui.model.application.ui.impl.UiPackageImpl;
+
+import org.eclipse.e4.ui.model.application.ui.menu.MMenuFactory;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.descriptor.basic.MPartDescriptor} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class PartDescriptorItemProvider extends ApplicationElementItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public PartDescriptorItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addLabelPropertyDescriptor(object);
+			addIconURIPropertyDescriptor(object);
+			addTooltipPropertyDescriptor(object);
+			addLocalizedLabelPropertyDescriptor(object);
+			addLocalizedTooltipPropertyDescriptor(object);
+			addBindingContextsPropertyDescriptor(object);
+			addAllowMultiplePropertyDescriptor(object);
+			addCategoryPropertyDescriptor(object);
+			addCloseablePropertyDescriptor(object);
+			addDirtyablePropertyDescriptor(object);
+			addContributionURIPropertyDescriptor(object);
+			addDescriptionPropertyDescriptor(object);
+			addLocalizedDescriptionPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Label feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addLabelPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_UILabel_label_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_UILabel_label_feature", "_UI_UILabel_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 UiPackageImpl.Literals.UI_LABEL__LABEL,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Icon URI feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addIconURIPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_UILabel_iconURI_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_UILabel_iconURI_feature", "_UI_UILabel_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 UiPackageImpl.Literals.UI_LABEL__ICON_URI,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Tooltip feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addTooltipPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_UILabel_tooltip_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_UILabel_tooltip_feature", "_UI_UILabel_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 UiPackageImpl.Literals.UI_LABEL__TOOLTIP,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Localized Label feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addLocalizedLabelPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_UILabel_localizedLabel_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_UILabel_localizedLabel_feature", "_UI_UILabel_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 UiPackageImpl.Literals.UI_LABEL__LOCALIZED_LABEL,
+				 false,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Localized Tooltip feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addLocalizedTooltipPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_UILabel_localizedTooltip_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_UILabel_localizedTooltip_feature", "_UI_UILabel_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 UiPackageImpl.Literals.UI_LABEL__LOCALIZED_TOOLTIP,
+				 false,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Binding Contexts feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addBindingContextsPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Bindings_bindingContexts_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_Bindings_bindingContexts_feature", "_UI_Bindings_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 CommandsPackageImpl.Literals.BINDINGS__BINDING_CONTEXTS,
+				 true,
+				 false,
+				 false,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Allow Multiple feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addAllowMultiplePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_PartDescriptor_allowMultiple_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_PartDescriptor_allowMultiple_feature", "_UI_PartDescriptor_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 BasicPackageImpl.Literals.PART_DESCRIPTOR__ALLOW_MULTIPLE,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Category feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addCategoryPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_PartDescriptor_category_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_PartDescriptor_category_feature", "_UI_PartDescriptor_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 BasicPackageImpl.Literals.PART_DESCRIPTOR__CATEGORY,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Closeable feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addCloseablePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_PartDescriptor_closeable_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_PartDescriptor_closeable_feature", "_UI_PartDescriptor_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 BasicPackageImpl.Literals.PART_DESCRIPTOR__CLOSEABLE,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Dirtyable feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addDirtyablePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_PartDescriptor_dirtyable_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_PartDescriptor_dirtyable_feature", "_UI_PartDescriptor_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 BasicPackageImpl.Literals.PART_DESCRIPTOR__DIRTYABLE,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Contribution URI feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addContributionURIPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_PartDescriptor_contributionURI_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_PartDescriptor_contributionURI_feature", "_UI_PartDescriptor_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 BasicPackageImpl.Literals.PART_DESCRIPTOR__CONTRIBUTION_URI,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Description feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addDescriptionPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_PartDescriptor_description_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_PartDescriptor_description_feature", "_UI_PartDescriptor_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 BasicPackageImpl.Literals.PART_DESCRIPTOR__DESCRIPTION,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Localized Description feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addLocalizedDescriptionPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_PartDescriptor_localizedDescription_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_PartDescriptor_localizedDescription_feature", "_UI_PartDescriptor_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 BasicPackageImpl.Literals.PART_DESCRIPTOR__LOCALIZED_DESCRIPTION,
+				 false,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(CommandsPackageImpl.Literals.HANDLER_CONTAINER__HANDLERS);
+			childrenFeatures.add(BasicPackageImpl.Literals.PART_DESCRIPTOR__MENUS);
+			childrenFeatures.add(BasicPackageImpl.Literals.PART_DESCRIPTOR__TOOLBAR);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns PartDescriptor.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/PartDescriptor")); //$NON-NLS-1$
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((MPartDescriptor)object).getElementId();
+		return label == null || label.length() == 0 ?
+			getString("_UI_PartDescriptor_type") : //$NON-NLS-1$
+			getString("_UI_PartDescriptor_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(MPartDescriptor.class)) {
+			case BasicPackageImpl.PART_DESCRIPTOR__LABEL:
+			case BasicPackageImpl.PART_DESCRIPTOR__ICON_URI:
+			case BasicPackageImpl.PART_DESCRIPTOR__TOOLTIP:
+			case BasicPackageImpl.PART_DESCRIPTOR__LOCALIZED_LABEL:
+			case BasicPackageImpl.PART_DESCRIPTOR__LOCALIZED_TOOLTIP:
+			case BasicPackageImpl.PART_DESCRIPTOR__BINDING_CONTEXTS:
+			case BasicPackageImpl.PART_DESCRIPTOR__ALLOW_MULTIPLE:
+			case BasicPackageImpl.PART_DESCRIPTOR__CATEGORY:
+			case BasicPackageImpl.PART_DESCRIPTOR__CLOSEABLE:
+			case BasicPackageImpl.PART_DESCRIPTOR__DIRTYABLE:
+			case BasicPackageImpl.PART_DESCRIPTOR__CONTRIBUTION_URI:
+			case BasicPackageImpl.PART_DESCRIPTOR__DESCRIPTION:
+			case BasicPackageImpl.PART_DESCRIPTOR__LOCALIZED_DESCRIPTION:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+			case BasicPackageImpl.PART_DESCRIPTOR__HANDLERS:
+			case BasicPackageImpl.PART_DESCRIPTOR__MENUS:
+			case BasicPackageImpl.PART_DESCRIPTOR__TOOLBAR:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(CommandsPackageImpl.Literals.HANDLER_CONTAINER__HANDLERS,
+				 MCommandsFactory.INSTANCE.createHandler()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(BasicPackageImpl.Literals.PART_DESCRIPTOR__MENUS,
+				 MMenuFactory.INSTANCE.createMenu()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(BasicPackageImpl.Literals.PART_DESCRIPTOR__MENUS,
+				 MMenuFactory.INSTANCE.createPopupMenu()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(BasicPackageImpl.Literals.PART_DESCRIPTOR__TOOLBAR,
+				 MMenuFactory.INSTANCE.createToolBar()));
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return UIElementsEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/provider/AddonItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/provider/AddonItemProvider.java
new file mode 100644
index 0000000..3f0b1c3
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/provider/AddonItemProvider.java
@@ -0,0 +1,107 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *      IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.MAddon;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.MAddon} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class AddonItemProvider extends ContributionItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public AddonItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns Addon.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated NOT
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/Addon.png")); //$NON-NLS-1$
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((MAddon)object).getContributionURI();
+		return label == null || label.length() == 0 ?
+			getString("_UI_Addon_type") : //$NON-NLS-1$
+			getString("_UI_Addon_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/provider/ApplicationElementItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/provider/ApplicationElementItemProvider.java
new file mode 100644
index 0000000..4740cd4
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/provider/ApplicationElementItemProvider.java
@@ -0,0 +1,281 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *      IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.MApplicationElement;
+import org.eclipse.e4.ui.model.application.MApplicationFactory;
+
+import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EFactory;
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.MApplicationElement} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ApplicationElementItemProvider 
+	extends ItemProviderAdapter
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ApplicationElementItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addElementIdPropertyDescriptor(object);
+			addTagsPropertyDescriptor(object);
+			addContributorURIPropertyDescriptor(object);
+			addTransientDataPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Element Id feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addElementIdPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_ApplicationElement_elementId_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_ApplicationElement_elementId_feature", "_UI_ApplicationElement_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__ELEMENT_ID,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Tags feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addTagsPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_ApplicationElement_tags_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_ApplicationElement_tags_feature", "_UI_ApplicationElement_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__TAGS,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Contributor URI feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addContributorURIPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_ApplicationElement_contributorURI_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_ApplicationElement_contributorURI_feature", "_UI_ApplicationElement_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__CONTRIBUTOR_URI,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Transient Data feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addTransientDataPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_ApplicationElement_transientData_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_ApplicationElement_transientData_feature", "_UI_ApplicationElement_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__TRANSIENT_DATA,
+				 true,
+				 false,
+				 false,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__PERSISTED_STATE);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns ApplicationElement.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/ApplicationElement")); //$NON-NLS-1$
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((MApplicationElement)object).getElementId();
+		return label == null || label.length() == 0 ?
+			getString("_UI_ApplicationElement_type") : //$NON-NLS-1$
+			getString("_UI_ApplicationElement_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(MApplicationElement.class)) {
+			case ApplicationPackageImpl.APPLICATION_ELEMENT__ELEMENT_ID:
+			case ApplicationPackageImpl.APPLICATION_ELEMENT__TAGS:
+			case ApplicationPackageImpl.APPLICATION_ELEMENT__CONTRIBUTOR_URI:
+			case ApplicationPackageImpl.APPLICATION_ELEMENT__TRANSIENT_DATA:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+			case ApplicationPackageImpl.APPLICATION_ELEMENT__PERSISTED_STATE:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__PERSISTED_STATE,
+				 ((EFactory)MApplicationFactory.INSTANCE).create(ApplicationPackageImpl.Literals.STRING_TO_STRING_MAP)));
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return UIElementsEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/provider/ApplicationItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/provider/ApplicationItemProvider.java
new file mode 100644
index 0000000..028b82e
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/provider/ApplicationItemProvider.java
@@ -0,0 +1,530 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *      IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.MApplication;
+import org.eclipse.e4.ui.model.application.MApplicationFactory;
+
+import org.eclipse.e4.ui.model.application.commands.MCommandsFactory;
+
+import org.eclipse.e4.ui.model.application.commands.impl.CommandsPackageImpl;
+
+import org.eclipse.e4.ui.model.application.descriptor.basic.MBasicFactory;
+
+import org.eclipse.e4.ui.model.application.descriptor.basic.impl.BasicPackageImpl;
+
+import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
+
+import org.eclipse.e4.ui.model.application.ui.advanced.MAdvancedFactory;
+
+import org.eclipse.e4.ui.model.application.ui.impl.UiPackageImpl;
+
+import org.eclipse.e4.ui.model.application.ui.menu.MMenuFactory;
+
+import org.eclipse.e4.ui.model.application.ui.menu.impl.MenuPackageImpl;
+
+import org.eclipse.e4.ui.model.application.ui.provider.ElementContainerItemProvider;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EFactory;
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.MApplication} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ApplicationItemProvider extends ElementContainerItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ApplicationItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addContextPropertyDescriptor(object);
+			addVariablesPropertyDescriptor(object);
+			addBindingContextsPropertyDescriptor(object);
+			addDialogsPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Context feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addContextPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Context_context_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_Context_context_feature", "_UI_Context_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 UiPackageImpl.Literals.CONTEXT__CONTEXT,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Variables feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addVariablesPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Context_variables_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_Context_variables_feature", "_UI_Context_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 UiPackageImpl.Literals.CONTEXT__VARIABLES,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Binding Contexts feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addBindingContextsPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Bindings_bindingContexts_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_Bindings_bindingContexts_feature", "_UI_Bindings_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 CommandsPackageImpl.Literals.BINDINGS__BINDING_CONTEXTS,
+				 true,
+				 false,
+				 false,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Dialogs feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addDialogsPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Application_dialogs_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_Application_dialogs_feature", "_UI_Application_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 ApplicationPackageImpl.Literals.APPLICATION__DIALOGS,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(UiPackageImpl.Literals.CONTEXT__PROPERTIES);
+			childrenFeatures.add(CommandsPackageImpl.Literals.HANDLER_CONTAINER__HANDLERS);
+			childrenFeatures.add(CommandsPackageImpl.Literals.BINDING_TABLE_CONTAINER__BINDING_TABLES);
+			childrenFeatures.add(CommandsPackageImpl.Literals.BINDING_TABLE_CONTAINER__ROOT_CONTEXT);
+			childrenFeatures.add(BasicPackageImpl.Literals.PART_DESCRIPTOR_CONTAINER__DESCRIPTORS);
+			childrenFeatures.add(MenuPackageImpl.Literals.MENU_CONTRIBUTIONS__MENU_CONTRIBUTIONS);
+			childrenFeatures.add(MenuPackageImpl.Literals.TOOL_BAR_CONTRIBUTIONS__TOOL_BAR_CONTRIBUTIONS);
+			childrenFeatures.add(MenuPackageImpl.Literals.TRIM_CONTRIBUTIONS__TRIM_CONTRIBUTIONS);
+			childrenFeatures.add(UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS);
+			childrenFeatures.add(ApplicationPackageImpl.Literals.APPLICATION__COMMANDS);
+			childrenFeatures.add(ApplicationPackageImpl.Literals.APPLICATION__ADDONS);
+			childrenFeatures.add(ApplicationPackageImpl.Literals.APPLICATION__CATEGORIES);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns Application.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated NOT
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/Application.png")); //$NON-NLS-1$
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((MApplication)object).getElementId();
+		return label == null || label.length() == 0 ?
+			getString("_UI_Application_type") : //$NON-NLS-1$
+			getString("_UI_Application_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(MApplication.class)) {
+			case ApplicationPackageImpl.APPLICATION__CONTEXT:
+			case ApplicationPackageImpl.APPLICATION__VARIABLES:
+			case ApplicationPackageImpl.APPLICATION__BINDING_CONTEXTS:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+			case ApplicationPackageImpl.APPLICATION__PROPERTIES:
+			case ApplicationPackageImpl.APPLICATION__HANDLERS:
+			case ApplicationPackageImpl.APPLICATION__BINDING_TABLES:
+			case ApplicationPackageImpl.APPLICATION__ROOT_CONTEXT:
+			case ApplicationPackageImpl.APPLICATION__DESCRIPTORS:
+			case ApplicationPackageImpl.APPLICATION__MENU_CONTRIBUTIONS:
+			case ApplicationPackageImpl.APPLICATION__TOOL_BAR_CONTRIBUTIONS:
+			case ApplicationPackageImpl.APPLICATION__TRIM_CONTRIBUTIONS:
+			case ApplicationPackageImpl.APPLICATION__SNIPPETS:
+			case ApplicationPackageImpl.APPLICATION__COMMANDS:
+			case ApplicationPackageImpl.APPLICATION__ADDONS:
+			case ApplicationPackageImpl.APPLICATION__CATEGORIES:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.CONTEXT__PROPERTIES,
+				 ((EFactory)MApplicationFactory.INSTANCE).create(ApplicationPackageImpl.Literals.STRING_TO_STRING_MAP)));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(CommandsPackageImpl.Literals.HANDLER_CONTAINER__HANDLERS,
+				 MCommandsFactory.INSTANCE.createHandler()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(CommandsPackageImpl.Literals.BINDING_TABLE_CONTAINER__BINDING_TABLES,
+				 MCommandsFactory.INSTANCE.createBindingTable()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(CommandsPackageImpl.Literals.BINDING_TABLE_CONTAINER__ROOT_CONTEXT,
+				 MCommandsFactory.INSTANCE.createBindingContext()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(BasicPackageImpl.Literals.PART_DESCRIPTOR_CONTAINER__DESCRIPTORS,
+				 MBasicFactory.INSTANCE.createPartDescriptor()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(MenuPackageImpl.Literals.MENU_CONTRIBUTIONS__MENU_CONTRIBUTIONS,
+				 MMenuFactory.INSTANCE.createMenuContribution()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(MenuPackageImpl.Literals.TOOL_BAR_CONTRIBUTIONS__TOOL_BAR_CONTRIBUTIONS,
+				 MMenuFactory.INSTANCE.createToolBarContribution()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(MenuPackageImpl.Literals.TRIM_CONTRIBUTIONS__TRIM_CONTRIBUTIONS,
+				 MMenuFactory.INSTANCE.createTrimContribution()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+				 MApplicationFactory.INSTANCE.createApplication()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+				 MMenuFactory.INSTANCE.createMenuSeparator()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+				 MMenuFactory.INSTANCE.createMenu()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+				 MMenuFactory.INSTANCE.createMenuContribution()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+				 MMenuFactory.INSTANCE.createPopupMenu()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+				 MMenuFactory.INSTANCE.createDirectMenuItem()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+				 MMenuFactory.INSTANCE.createHandledMenuItem()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+				 MMenuFactory.INSTANCE.createToolBar()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+				 MMenuFactory.INSTANCE.createToolControl()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+				 MMenuFactory.INSTANCE.createHandledToolItem()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+				 MMenuFactory.INSTANCE.createDirectToolItem()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+				 MMenuFactory.INSTANCE.createToolBarSeparator()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+				 MMenuFactory.INSTANCE.createToolBarContribution()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+				 MMenuFactory.INSTANCE.createTrimContribution()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+				 MMenuFactory.INSTANCE.createDynamicMenuContribution()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+				 org.eclipse.e4.ui.model.application.ui.basic.MBasicFactory.INSTANCE.createPart()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+				 org.eclipse.e4.ui.model.application.ui.basic.MBasicFactory.INSTANCE.createCompositePart()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+				 org.eclipse.e4.ui.model.application.ui.basic.MBasicFactory.INSTANCE.createInputPart()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+				 org.eclipse.e4.ui.model.application.ui.basic.MBasicFactory.INSTANCE.createPartStack()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+				 org.eclipse.e4.ui.model.application.ui.basic.MBasicFactory.INSTANCE.createPartSashContainer()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+				 org.eclipse.e4.ui.model.application.ui.basic.MBasicFactory.INSTANCE.createWindow()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+				 org.eclipse.e4.ui.model.application.ui.basic.MBasicFactory.INSTANCE.createTrimmedWindow()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+				 org.eclipse.e4.ui.model.application.ui.basic.MBasicFactory.INSTANCE.createTrimBar()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+				 org.eclipse.e4.ui.model.application.ui.basic.MBasicFactory.INSTANCE.createDialog()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+				 org.eclipse.e4.ui.model.application.ui.basic.MBasicFactory.INSTANCE.createWizardDialog()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+				 MAdvancedFactory.INSTANCE.createPlaceholder()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+				 MAdvancedFactory.INSTANCE.createPerspective()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+				 MAdvancedFactory.INSTANCE.createPerspectiveStack()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+				 MAdvancedFactory.INSTANCE.createArea()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(ApplicationPackageImpl.Literals.APPLICATION__COMMANDS,
+				 MCommandsFactory.INSTANCE.createCommand()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(ApplicationPackageImpl.Literals.APPLICATION__ADDONS,
+				 MApplicationFactory.INSTANCE.createAddon()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(ApplicationPackageImpl.Literals.APPLICATION__CATEGORIES,
+				 MCommandsFactory.INSTANCE.createCategory()));
+	}
+
+	/**
+	 * This returns the label text for {@link org.eclipse.emf.edit.command.CreateChildCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getCreateChildText(Object owner, Object feature, Object child, Collection<?> selection) {
+		Object childFeature = feature;
+		Object childObject = child;
+
+		boolean qualify =
+			childFeature == ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__PERSISTED_STATE ||
+			childFeature == UiPackageImpl.Literals.CONTEXT__PROPERTIES ||
+			childFeature == UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN ||
+			childFeature == UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS ||
+			childFeature == MenuPackageImpl.Literals.MENU_CONTRIBUTIONS__MENU_CONTRIBUTIONS ||
+			childFeature == MenuPackageImpl.Literals.TOOL_BAR_CONTRIBUTIONS__TOOL_BAR_CONTRIBUTIONS ||
+			childFeature == MenuPackageImpl.Literals.TRIM_CONTRIBUTIONS__TRIM_CONTRIBUTIONS;
+
+		if (qualify) {
+			return getString
+				("_UI_CreateChild_text2", //$NON-NLS-1$
+				 new Object[] { getTypeText(childObject), getFeatureText(childFeature), getTypeText(owner) });
+		}
+		return super.getCreateChildText(owner, feature, child, selection);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return UIElementsEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/provider/ApplicationItemProviderAdapterFactory.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/provider/ApplicationItemProviderAdapterFactory.java
new file mode 100644
index 0000000..ef6112b
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/provider/ApplicationItemProviderAdapterFactory.java
@@ -0,0 +1,279 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *      IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.provider;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.e4.ui.model.application.util.ApplicationAdapterFactory;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.edit.provider.ChangeNotifier;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.IChangeNotifier;
+import org.eclipse.emf.edit.provider.IDisposable;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.INotifyChangedListener;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the factory that is used to provide the interfaces needed to support Viewers.
+ * The adapters generated by this factory convert EMF adapter notifications into calls to {@link #fireNotifyChanged fireNotifyChanged}.
+ * The adapters also support Eclipse property sheets.
+ * Note that most of the adapters are shared among multiple instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ApplicationItemProviderAdapterFactory extends ApplicationAdapterFactory implements ComposeableAdapterFactory, IChangeNotifier, IDisposable {
+	/**
+	 * This keeps track of the root adapter factory that delegates to this adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ComposedAdapterFactory parentAdapterFactory;
+
+	/**
+	 * This is used to implement {@link org.eclipse.emf.edit.provider.IChangeNotifier}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IChangeNotifier changeNotifier = new ChangeNotifier();
+
+	/**
+	 * This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<Object> supportedTypes = new ArrayList<Object>();
+
+	/**
+	 * This constructs an instance.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ApplicationItemProviderAdapterFactory() {
+		supportedTypes.add(IEditingDomainItemProvider.class);
+		supportedTypes.add(IStructuredItemContentProvider.class);
+		supportedTypes.add(ITreeItemContentProvider.class);
+		supportedTypes.add(IItemLabelProvider.class);
+		supportedTypes.add(IItemPropertySource.class);
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link java.util.Map.Entry} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StringToStringMapItemProvider stringToStringMapItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link java.util.Map.Entry}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createStringToStringMapAdapter() {
+		if (stringToStringMapItemProvider == null) {
+			stringToStringMapItemProvider = new StringToStringMapItemProvider(this);
+		}
+
+		return stringToStringMapItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.MApplication} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ApplicationItemProvider applicationItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.e4.ui.model.application.MApplication}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createApplicationAdapter() {
+		if (applicationItemProvider == null) {
+			applicationItemProvider = new ApplicationItemProvider(this);
+		}
+
+		return applicationItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.MAddon} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected AddonItemProvider addonItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.e4.ui.model.application.MAddon}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createAddonAdapter() {
+		if (addonItemProvider == null) {
+			addonItemProvider = new AddonItemProvider(this);
+		}
+
+		return addonItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link java.util.Map.Entry} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StringToObjectMapItemProvider stringToObjectMapItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link java.util.Map.Entry}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createStringToObjectMapAdapter() {
+		if (stringToObjectMapItemProvider == null) {
+			stringToObjectMapItemProvider = new StringToObjectMapItemProvider(this);
+		}
+
+		return stringToObjectMapItemProvider;
+	}
+
+	/**
+	 * This returns the root adapter factory that contains this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ComposeableAdapterFactory getRootAdapterFactory() {
+		return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory();
+	}
+
+	/**
+	 * This sets the composed adapter factory that contains this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory) {
+		this.parentAdapterFactory = parentAdapterFactory;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object type) {
+		return supportedTypes.contains(type) || super.isFactoryForType(type);
+	}
+
+	/**
+	 * This implementation substitutes the factory itself as the key for the adapter.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter adapt(Notifier notifier, Object type) {
+		return super.adapt(notifier, this);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object adapt(Object object, Object type) {
+		if (isFactoryForType(type)) {
+			Object adapter = super.adapt(object, type);
+			if (!(type instanceof Class<?>) || (((Class<?>)type).isInstance(adapter))) {
+				return adapter;
+			}
+		}
+
+		return null;
+	}
+
+	/**
+	 * This adds a listener.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void addListener(INotifyChangedListener notifyChangedListener) {
+		changeNotifier.addListener(notifyChangedListener);
+	}
+
+	/**
+	 * This removes a listener.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void removeListener(INotifyChangedListener notifyChangedListener) {
+		changeNotifier.removeListener(notifyChangedListener);
+	}
+
+	/**
+	 * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void fireNotifyChanged(Notification notification) {
+		changeNotifier.fireNotifyChanged(notification);
+
+		if (parentAdapterFactory != null) {
+			parentAdapterFactory.fireNotifyChanged(notification);
+		}
+	}
+
+	/**
+	 * This disposes all of the item providers created by this factory. 
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void dispose() {
+		if (stringToStringMapItemProvider != null) stringToStringMapItemProvider.dispose();
+		if (applicationItemProvider != null) applicationItemProvider.dispose();
+		if (addonItemProvider != null) addonItemProvider.dispose();
+		if (stringToObjectMapItemProvider != null) stringToObjectMapItemProvider.dispose();
+	}
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/provider/ContributionItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/provider/ContributionItemProvider.java
new file mode 100644
index 0000000..753e205
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/provider/ContributionItemProvider.java
@@ -0,0 +1,154 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *      IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.MContribution;
+
+import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.MContribution} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ContributionItemProvider extends ApplicationElementItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ContributionItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addContributionURIPropertyDescriptor(object);
+			addObjectPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Contribution URI feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addContributionURIPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Contribution_contributionURI_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_Contribution_contributionURI_feature", "_UI_Contribution_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 ApplicationPackageImpl.Literals.CONTRIBUTION__CONTRIBUTION_URI,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Object feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addObjectPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Contribution_object_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_Contribution_object_feature", "_UI_Contribution_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 ApplicationPackageImpl.Literals.CONTRIBUTION__OBJECT,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((MContribution)object).getContributionURI();
+		return label == null || label.length() == 0 ?
+			getString("_UI_Contribution_type") : //$NON-NLS-1$
+			getString("_UI_Contribution_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(MContribution.class)) {
+			case ApplicationPackageImpl.CONTRIBUTION__CONTRIBUTION_URI:
+			case ApplicationPackageImpl.CONTRIBUTION__OBJECT:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/provider/StringToObjectMapItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/provider/StringToObjectMapItemProvider.java
new file mode 100644
index 0000000..9f23417
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/provider/StringToObjectMapItemProvider.java
@@ -0,0 +1,188 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *      IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link java.util.Map.Entry} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class StringToObjectMapItemProvider 
+	extends ItemProviderAdapter
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StringToObjectMapItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addKeyPropertyDescriptor(object);
+			addValuePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Key feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addKeyPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_StringToObjectMap_key_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_StringToObjectMap_key_feature", "_UI_StringToObjectMap_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 ApplicationPackageImpl.Literals.STRING_TO_OBJECT_MAP__KEY,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Value feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addValuePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_StringToObjectMap_value_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_StringToObjectMap_value_feature", "_UI_StringToObjectMap_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 ApplicationPackageImpl.Literals.STRING_TO_OBJECT_MAP__VALUE,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns StringToObjectMap.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/StringToObjectMap")); //$NON-NLS-1$
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		Map.Entry<?, ?> stringToObjectMap = (Map.Entry<?, ?>)object;
+		return "" + stringToObjectMap.getKey() + " -> " + stringToObjectMap.getValue(); //$NON-NLS-1$ //$NON-NLS-2$
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(Map.Entry.class)) {
+			case ApplicationPackageImpl.STRING_TO_OBJECT_MAP__KEY:
+			case ApplicationPackageImpl.STRING_TO_OBJECT_MAP__VALUE:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return UIElementsEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/provider/StringToStringMapItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/provider/StringToStringMapItemProvider.java
new file mode 100644
index 0000000..1c289d2
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/provider/StringToStringMapItemProvider.java
@@ -0,0 +1,188 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *      IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link java.util.Map.Entry} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class StringToStringMapItemProvider 
+	extends ItemProviderAdapter
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StringToStringMapItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addKeyPropertyDescriptor(object);
+			addValuePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Key feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addKeyPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_StringToStringMap_key_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_StringToStringMap_key_feature", "_UI_StringToStringMap_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 ApplicationPackageImpl.Literals.STRING_TO_STRING_MAP__KEY,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Value feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addValuePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_StringToStringMap_value_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_StringToStringMap_value_feature", "_UI_StringToStringMap_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 ApplicationPackageImpl.Literals.STRING_TO_STRING_MAP__VALUE,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns StringToStringMap.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/StringToStringMap")); //$NON-NLS-1$
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		Map.Entry<?, ?> stringToStringMap = (Map.Entry<?, ?>)object;
+		return "" + stringToStringMap.getKey() + " -> " + stringToStringMap.getValue(); //$NON-NLS-1$ //$NON-NLS-2$
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(Map.Entry.class)) {
+			case ApplicationPackageImpl.STRING_TO_STRING_MAP__KEY:
+			case ApplicationPackageImpl.STRING_TO_STRING_MAP__VALUE:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return UIElementsEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/provider/UIElementsEditPlugin.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/provider/UIElementsEditPlugin.java
new file mode 100644
index 0000000..7b7a9c1
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/provider/UIElementsEditPlugin.java
@@ -0,0 +1,97 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *      IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.provider;
+
+import org.eclipse.emf.common.EMFPlugin;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+/**
+ * This is the central singleton for the UIElements edit plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public final class UIElementsEditPlugin extends EMFPlugin {
+	/**
+	 * Keep track of the singleton.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final UIElementsEditPlugin INSTANCE = new UIElementsEditPlugin();
+
+	/**
+	 * Keep track of the singleton.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static Implementation plugin;
+
+	/**
+	 * Create the instance.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public UIElementsEditPlugin() {
+		super
+		  (new ResourceLocator [] {
+		   });
+	}
+
+	/**
+	 * Returns the singleton instance of the Eclipse plugin.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the singleton instance.
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getPluginResourceLocator() {
+		return plugin;
+	}
+
+	/**
+	 * Returns the singleton instance of the Eclipse plugin.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the singleton instance.
+	 * @generated
+	 */
+	public static Implementation getPlugin() {
+		return plugin;
+	}
+
+	/**
+	 * The actual implementation of the Eclipse <b>Plugin</b>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static class Implementation extends EclipsePlugin {
+		/**
+		 * Creates an instance.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public Implementation() {
+			super();
+
+			// Remember the static instance.
+			//
+			plugin = this;
+		}
+	}
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/advanced/provider/AdvancedItemProviderAdapterFactory.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/advanced/provider/AdvancedItemProviderAdapterFactory.java
new file mode 100644
index 0000000..0d5ad0e
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/advanced/provider/AdvancedItemProviderAdapterFactory.java
@@ -0,0 +1,279 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *      IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.advanced.provider;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.e4.ui.model.application.ui.advanced.util.AdvancedAdapterFactory;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.edit.provider.ChangeNotifier;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.IChangeNotifier;
+import org.eclipse.emf.edit.provider.IDisposable;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.INotifyChangedListener;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the factory that is used to provide the interfaces needed to support Viewers.
+ * The adapters generated by this factory convert EMF adapter notifications into calls to {@link #fireNotifyChanged fireNotifyChanged}.
+ * The adapters also support Eclipse property sheets.
+ * Note that most of the adapters are shared among multiple instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class AdvancedItemProviderAdapterFactory extends AdvancedAdapterFactory implements ComposeableAdapterFactory, IChangeNotifier, IDisposable {
+	/**
+	 * This keeps track of the root adapter factory that delegates to this adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ComposedAdapterFactory parentAdapterFactory;
+
+	/**
+	 * This is used to implement {@link org.eclipse.emf.edit.provider.IChangeNotifier}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IChangeNotifier changeNotifier = new ChangeNotifier();
+
+	/**
+	 * This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<Object> supportedTypes = new ArrayList<Object>();
+
+	/**
+	 * This constructs an instance.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public AdvancedItemProviderAdapterFactory() {
+		supportedTypes.add(IEditingDomainItemProvider.class);
+		supportedTypes.add(IStructuredItemContentProvider.class);
+		supportedTypes.add(ITreeItemContentProvider.class);
+		supportedTypes.add(IItemLabelProvider.class);
+		supportedTypes.add(IItemPropertySource.class);
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.ui.advanced.MPlaceholder} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected PlaceholderItemProvider placeholderItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.e4.ui.model.application.ui.advanced.MPlaceholder}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createPlaceholderAdapter() {
+		if (placeholderItemProvider == null) {
+			placeholderItemProvider = new PlaceholderItemProvider(this);
+		}
+
+		return placeholderItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.ui.advanced.MPerspective} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected PerspectiveItemProvider perspectiveItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.e4.ui.model.application.ui.advanced.MPerspective}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createPerspectiveAdapter() {
+		if (perspectiveItemProvider == null) {
+			perspectiveItemProvider = new PerspectiveItemProvider(this);
+		}
+
+		return perspectiveItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.ui.advanced.MPerspectiveStack} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected PerspectiveStackItemProvider perspectiveStackItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.e4.ui.model.application.ui.advanced.MPerspectiveStack}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createPerspectiveStackAdapter() {
+		if (perspectiveStackItemProvider == null) {
+			perspectiveStackItemProvider = new PerspectiveStackItemProvider(this);
+		}
+
+		return perspectiveStackItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.ui.advanced.MArea} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected AreaItemProvider areaItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.e4.ui.model.application.ui.advanced.MArea}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createAreaAdapter() {
+		if (areaItemProvider == null) {
+			areaItemProvider = new AreaItemProvider(this);
+		}
+
+		return areaItemProvider;
+	}
+
+	/**
+	 * This returns the root adapter factory that contains this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ComposeableAdapterFactory getRootAdapterFactory() {
+		return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory();
+	}
+
+	/**
+	 * This sets the composed adapter factory that contains this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory) {
+		this.parentAdapterFactory = parentAdapterFactory;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object type) {
+		return supportedTypes.contains(type) || super.isFactoryForType(type);
+	}
+
+	/**
+	 * This implementation substitutes the factory itself as the key for the adapter.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter adapt(Notifier notifier, Object type) {
+		return super.adapt(notifier, this);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object adapt(Object object, Object type) {
+		if (isFactoryForType(type)) {
+			Object adapter = super.adapt(object, type);
+			if (!(type instanceof Class<?>) || (((Class<?>)type).isInstance(adapter))) {
+				return adapter;
+			}
+		}
+
+		return null;
+	}
+
+	/**
+	 * This adds a listener.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void addListener(INotifyChangedListener notifyChangedListener) {
+		changeNotifier.addListener(notifyChangedListener);
+	}
+
+	/**
+	 * This removes a listener.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void removeListener(INotifyChangedListener notifyChangedListener) {
+		changeNotifier.removeListener(notifyChangedListener);
+	}
+
+	/**
+	 * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void fireNotifyChanged(Notification notification) {
+		changeNotifier.fireNotifyChanged(notification);
+
+		if (parentAdapterFactory != null) {
+			parentAdapterFactory.fireNotifyChanged(notification);
+		}
+	}
+
+	/**
+	 * This disposes all of the item providers created by this factory. 
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void dispose() {
+		if (placeholderItemProvider != null) placeholderItemProvider.dispose();
+		if (perspectiveItemProvider != null) perspectiveItemProvider.dispose();
+		if (perspectiveStackItemProvider != null) perspectiveStackItemProvider.dispose();
+		if (areaItemProvider != null) areaItemProvider.dispose();
+	}
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/advanced/provider/AreaItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/advanced/provider/AreaItemProvider.java
new file mode 100644
index 0000000..39d0e6e
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/advanced/provider/AreaItemProvider.java
@@ -0,0 +1,256 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *      IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.advanced.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.provider.UIElementsEditPlugin;
+
+import org.eclipse.e4.ui.model.application.ui.advanced.MArea;
+
+import org.eclipse.e4.ui.model.application.ui.advanced.impl.AdvancedPackageImpl;
+
+import org.eclipse.e4.ui.model.application.ui.basic.provider.PartSashContainerItemProvider;
+
+import org.eclipse.e4.ui.model.application.ui.impl.UiPackageImpl;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.ui.advanced.MArea} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class AreaItemProvider extends PartSashContainerItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public AreaItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addLabelPropertyDescriptor(object);
+			addIconURIPropertyDescriptor(object);
+			addTooltipPropertyDescriptor(object);
+			addLocalizedLabelPropertyDescriptor(object);
+			addLocalizedTooltipPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Label feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addLabelPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_UILabel_label_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_UILabel_label_feature", "_UI_UILabel_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 UiPackageImpl.Literals.UI_LABEL__LABEL,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Icon URI feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addIconURIPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_UILabel_iconURI_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_UILabel_iconURI_feature", "_UI_UILabel_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 UiPackageImpl.Literals.UI_LABEL__ICON_URI,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Tooltip feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addTooltipPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_UILabel_tooltip_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_UILabel_tooltip_feature", "_UI_UILabel_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 UiPackageImpl.Literals.UI_LABEL__TOOLTIP,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Localized Label feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addLocalizedLabelPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_UILabel_localizedLabel_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_UILabel_localizedLabel_feature", "_UI_UILabel_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 UiPackageImpl.Literals.UI_LABEL__LOCALIZED_LABEL,
+				 false,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Localized Tooltip feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addLocalizedTooltipPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_UILabel_localizedTooltip_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_UILabel_localizedTooltip_feature", "_UI_UILabel_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 UiPackageImpl.Literals.UI_LABEL__LOCALIZED_TOOLTIP,
+				 false,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns Area.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/Area")); //$NON-NLS-1$
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((MArea)object).getElementId();
+		return label == null || label.length() == 0 ?
+			getString("_UI_Area_type") : //$NON-NLS-1$
+			getString("_UI_Area_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(MArea.class)) {
+			case AdvancedPackageImpl.AREA__LABEL:
+			case AdvancedPackageImpl.AREA__ICON_URI:
+			case AdvancedPackageImpl.AREA__TOOLTIP:
+			case AdvancedPackageImpl.AREA__LOCALIZED_LABEL:
+			case AdvancedPackageImpl.AREA__LOCALIZED_TOOLTIP:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return UIElementsEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/advanced/provider/PerspectiveItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/advanced/provider/PerspectiveItemProvider.java
new file mode 100644
index 0000000..9dbd0de
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/advanced/provider/PerspectiveItemProvider.java
@@ -0,0 +1,398 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *      IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.advanced.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.MApplicationFactory;
+
+import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
+
+import org.eclipse.e4.ui.model.application.provider.UIElementsEditPlugin;
+
+import org.eclipse.e4.ui.model.application.ui.advanced.MPerspective;
+
+import org.eclipse.e4.ui.model.application.ui.advanced.impl.AdvancedPackageImpl;
+
+import org.eclipse.e4.ui.model.application.ui.basic.MBasicFactory;
+
+import org.eclipse.e4.ui.model.application.ui.impl.UiPackageImpl;
+
+import org.eclipse.e4.ui.model.application.ui.provider.ElementContainerItemProvider;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EFactory;
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.ui.advanced.MPerspective} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class PerspectiveItemProvider extends ElementContainerItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public PerspectiveItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addLabelPropertyDescriptor(object);
+			addIconURIPropertyDescriptor(object);
+			addTooltipPropertyDescriptor(object);
+			addLocalizedLabelPropertyDescriptor(object);
+			addLocalizedTooltipPropertyDescriptor(object);
+			addContextPropertyDescriptor(object);
+			addVariablesPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Label feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addLabelPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_UILabel_label_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_UILabel_label_feature", "_UI_UILabel_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 UiPackageImpl.Literals.UI_LABEL__LABEL,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Icon URI feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addIconURIPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_UILabel_iconURI_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_UILabel_iconURI_feature", "_UI_UILabel_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 UiPackageImpl.Literals.UI_LABEL__ICON_URI,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Tooltip feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addTooltipPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_UILabel_tooltip_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_UILabel_tooltip_feature", "_UI_UILabel_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 UiPackageImpl.Literals.UI_LABEL__TOOLTIP,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Localized Label feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addLocalizedLabelPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_UILabel_localizedLabel_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_UILabel_localizedLabel_feature", "_UI_UILabel_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 UiPackageImpl.Literals.UI_LABEL__LOCALIZED_LABEL,
+				 false,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Localized Tooltip feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addLocalizedTooltipPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_UILabel_localizedTooltip_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_UILabel_localizedTooltip_feature", "_UI_UILabel_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 UiPackageImpl.Literals.UI_LABEL__LOCALIZED_TOOLTIP,
+				 false,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Context feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addContextPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Context_context_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_Context_context_feature", "_UI_Context_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 UiPackageImpl.Literals.CONTEXT__CONTEXT,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Variables feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addVariablesPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Context_variables_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_Context_variables_feature", "_UI_Context_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 UiPackageImpl.Literals.CONTEXT__VARIABLES,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(UiPackageImpl.Literals.CONTEXT__PROPERTIES);
+			childrenFeatures.add(AdvancedPackageImpl.Literals.PERSPECTIVE__WINDOWS);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns Perspective.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/Perspective")); //$NON-NLS-1$
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((MPerspective)object).getLabel();
+		return label == null || label.length() == 0 ?
+			getString("_UI_Perspective_type") : //$NON-NLS-1$
+			getString("_UI_Perspective_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(MPerspective.class)) {
+			case AdvancedPackageImpl.PERSPECTIVE__LABEL:
+			case AdvancedPackageImpl.PERSPECTIVE__ICON_URI:
+			case AdvancedPackageImpl.PERSPECTIVE__TOOLTIP:
+			case AdvancedPackageImpl.PERSPECTIVE__LOCALIZED_LABEL:
+			case AdvancedPackageImpl.PERSPECTIVE__LOCALIZED_TOOLTIP:
+			case AdvancedPackageImpl.PERSPECTIVE__CONTEXT:
+			case AdvancedPackageImpl.PERSPECTIVE__VARIABLES:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+			case AdvancedPackageImpl.PERSPECTIVE__PROPERTIES:
+			case AdvancedPackageImpl.PERSPECTIVE__WINDOWS:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.CONTEXT__PROPERTIES,
+				 ((EFactory)MApplicationFactory.INSTANCE).create(ApplicationPackageImpl.Literals.STRING_TO_STRING_MAP)));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(AdvancedPackageImpl.Literals.PERSPECTIVE__WINDOWS,
+				 MBasicFactory.INSTANCE.createWindow()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(AdvancedPackageImpl.Literals.PERSPECTIVE__WINDOWS,
+				 MBasicFactory.INSTANCE.createTrimmedWindow()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(AdvancedPackageImpl.Literals.PERSPECTIVE__WINDOWS,
+				 MBasicFactory.INSTANCE.createDialog()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(AdvancedPackageImpl.Literals.PERSPECTIVE__WINDOWS,
+				 MBasicFactory.INSTANCE.createWizardDialog()));
+	}
+
+	/**
+	 * This returns the label text for {@link org.eclipse.emf.edit.command.CreateChildCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getCreateChildText(Object owner, Object feature, Object child, Collection<?> selection) {
+		Object childFeature = feature;
+		Object childObject = child;
+
+		boolean qualify =
+			childFeature == ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__PERSISTED_STATE ||
+			childFeature == UiPackageImpl.Literals.CONTEXT__PROPERTIES ||
+			childFeature == UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN ||
+			childFeature == AdvancedPackageImpl.Literals.PERSPECTIVE__WINDOWS;
+
+		if (qualify) {
+			return getString
+				("_UI_CreateChild_text2", //$NON-NLS-1$
+				 new Object[] { getTypeText(childObject), getFeatureText(childFeature), getTypeText(owner) });
+		}
+		return super.getCreateChildText(owner, feature, child, selection);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return UIElementsEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/advanced/provider/PerspectiveStackItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/advanced/provider/PerspectiveStackItemProvider.java
new file mode 100644
index 0000000..d063e91
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/advanced/provider/PerspectiveStackItemProvider.java
@@ -0,0 +1,343 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *      IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.advanced.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.MApplicationFactory;
+
+import org.eclipse.e4.ui.model.application.provider.UIElementsEditPlugin;
+
+import org.eclipse.e4.ui.model.application.ui.advanced.MAdvancedFactory;
+import org.eclipse.e4.ui.model.application.ui.advanced.MPerspectiveStack;
+
+import org.eclipse.e4.ui.model.application.ui.advanced.impl.AdvancedPackageImpl;
+
+import org.eclipse.e4.ui.model.application.ui.basic.MBasicFactory;
+
+import org.eclipse.e4.ui.model.application.ui.impl.UiPackageImpl;
+
+import org.eclipse.e4.ui.model.application.ui.menu.MMenuFactory;
+
+import org.eclipse.e4.ui.model.application.ui.provider.UIElementItemProvider;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.ui.advanced.MPerspectiveStack} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class PerspectiveStackItemProvider extends UIElementItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public PerspectiveStackItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addSelectedElementPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Selected Element feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addSelectedElementPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_ElementContainer_selectedElement_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_ElementContainer_selectedElement_feature", "_UI_ElementContainer_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 UiPackageImpl.Literals.ELEMENT_CONTAINER__SELECTED_ELEMENT,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns PerspectiveStack.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/PerspectiveStack")); //$NON-NLS-1$
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((MPerspectiveStack)object).getElementId();
+		return label == null || label.length() == 0 ?
+			getString("_UI_PerspectiveStack_type") : //$NON-NLS-1$
+			getString("_UI_PerspectiveStack_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(MPerspectiveStack.class)) {
+			case AdvancedPackageImpl.PERSPECTIVE_STACK__CHILDREN:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MAdvancedFactory.INSTANCE.createPlaceholder()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MAdvancedFactory.INSTANCE.createPerspective()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MAdvancedFactory.INSTANCE.createPerspectiveStack()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MAdvancedFactory.INSTANCE.createArea()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MApplicationFactory.INSTANCE.createApplication()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MMenuFactory.INSTANCE.createMenuSeparator()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MMenuFactory.INSTANCE.createMenu()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MMenuFactory.INSTANCE.createMenuContribution()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MMenuFactory.INSTANCE.createPopupMenu()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MMenuFactory.INSTANCE.createDirectMenuItem()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MMenuFactory.INSTANCE.createHandledMenuItem()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MMenuFactory.INSTANCE.createToolBar()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MMenuFactory.INSTANCE.createToolControl()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MMenuFactory.INSTANCE.createHandledToolItem()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MMenuFactory.INSTANCE.createDirectToolItem()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MMenuFactory.INSTANCE.createToolBarSeparator()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MMenuFactory.INSTANCE.createToolBarContribution()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MMenuFactory.INSTANCE.createTrimContribution()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MMenuFactory.INSTANCE.createDynamicMenuContribution()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MBasicFactory.INSTANCE.createPart()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MBasicFactory.INSTANCE.createCompositePart()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MBasicFactory.INSTANCE.createInputPart()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MBasicFactory.INSTANCE.createPartStack()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MBasicFactory.INSTANCE.createPartSashContainer()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MBasicFactory.INSTANCE.createWindow()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MBasicFactory.INSTANCE.createTrimmedWindow()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MBasicFactory.INSTANCE.createTrimBar()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MBasicFactory.INSTANCE.createDialog()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MBasicFactory.INSTANCE.createWizardDialog()));
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return UIElementsEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/advanced/provider/PlaceholderItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/advanced/provider/PlaceholderItemProvider.java
new file mode 100644
index 0000000..dc88602
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/advanced/provider/PlaceholderItemProvider.java
@@ -0,0 +1,181 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *      IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.advanced.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.provider.UIElementsEditPlugin;
+
+import org.eclipse.e4.ui.model.application.ui.advanced.MPlaceholder;
+
+import org.eclipse.e4.ui.model.application.ui.advanced.impl.AdvancedPackageImpl;
+
+import org.eclipse.e4.ui.model.application.ui.provider.UIElementItemProvider;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.ui.advanced.MPlaceholder} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class PlaceholderItemProvider extends UIElementItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public PlaceholderItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addRefPropertyDescriptor(object);
+			addCloseablePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Ref feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addRefPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Placeholder_ref_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_Placeholder_ref_feature", "_UI_Placeholder_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 AdvancedPackageImpl.Literals.PLACEHOLDER__REF,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Closeable feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addCloseablePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Placeholder_closeable_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_Placeholder_closeable_feature", "_UI_Placeholder_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 AdvancedPackageImpl.Literals.PLACEHOLDER__CLOSEABLE,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns Placeholder.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/Placeholder")); //$NON-NLS-1$
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((MPlaceholder)object).getElementId();
+		return label == null || label.length() == 0 ?
+			getString("_UI_Placeholder_type") : //$NON-NLS-1$
+			getString("_UI_Placeholder_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(MPlaceholder.class)) {
+			case AdvancedPackageImpl.PLACEHOLDER__CLOSEABLE:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return UIElementsEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/basic/provider/BasicItemProviderAdapterFactory.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/basic/provider/BasicItemProviderAdapterFactory.java
new file mode 100644
index 0000000..267373f
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/basic/provider/BasicItemProviderAdapterFactory.java
@@ -0,0 +1,423 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *      IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.basic.provider;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.e4.ui.model.application.ui.basic.util.BasicAdapterFactory;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.edit.provider.ChangeNotifier;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.IChangeNotifier;
+import org.eclipse.emf.edit.provider.IDisposable;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.INotifyChangedListener;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the factory that is used to provide the interfaces needed to support Viewers.
+ * The adapters generated by this factory convert EMF adapter notifications into calls to {@link #fireNotifyChanged fireNotifyChanged}.
+ * The adapters also support Eclipse property sheets.
+ * Note that most of the adapters are shared among multiple instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class BasicItemProviderAdapterFactory extends BasicAdapterFactory implements ComposeableAdapterFactory, IChangeNotifier, IDisposable {
+	/**
+	 * This keeps track of the root adapter factory that delegates to this adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ComposedAdapterFactory parentAdapterFactory;
+
+	/**
+	 * This is used to implement {@link org.eclipse.emf.edit.provider.IChangeNotifier}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IChangeNotifier changeNotifier = new ChangeNotifier();
+
+	/**
+	 * This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<Object> supportedTypes = new ArrayList<Object>();
+
+	/**
+	 * This constructs an instance.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public BasicItemProviderAdapterFactory() {
+		supportedTypes.add(IEditingDomainItemProvider.class);
+		supportedTypes.add(IStructuredItemContentProvider.class);
+		supportedTypes.add(ITreeItemContentProvider.class);
+		supportedTypes.add(IItemLabelProvider.class);
+		supportedTypes.add(IItemPropertySource.class);
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.ui.basic.MPart} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected PartItemProvider partItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.e4.ui.model.application.ui.basic.MPart}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createPartAdapter() {
+		if (partItemProvider == null) {
+			partItemProvider = new PartItemProvider(this);
+		}
+
+		return partItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.ui.basic.MCompositePart} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected CompositePartItemProvider compositePartItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.e4.ui.model.application.ui.basic.MCompositePart}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createCompositePartAdapter() {
+		if (compositePartItemProvider == null) {
+			compositePartItemProvider = new CompositePartItemProvider(this);
+		}
+
+		return compositePartItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.ui.basic.MInputPart} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected InputPartItemProvider inputPartItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.e4.ui.model.application.ui.basic.MInputPart}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createInputPartAdapter() {
+		if (inputPartItemProvider == null) {
+			inputPartItemProvider = new InputPartItemProvider(this);
+		}
+
+		return inputPartItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.ui.basic.MPartStack} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected PartStackItemProvider partStackItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.e4.ui.model.application.ui.basic.MPartStack}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createPartStackAdapter() {
+		if (partStackItemProvider == null) {
+			partStackItemProvider = new PartStackItemProvider(this);
+		}
+
+		return partStackItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.ui.basic.MPartSashContainer} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected PartSashContainerItemProvider partSashContainerItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.e4.ui.model.application.ui.basic.MPartSashContainer}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createPartSashContainerAdapter() {
+		if (partSashContainerItemProvider == null) {
+			partSashContainerItemProvider = new PartSashContainerItemProvider(this);
+		}
+
+		return partSashContainerItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.ui.basic.MWindow} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected WindowItemProvider windowItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.e4.ui.model.application.ui.basic.MWindow}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createWindowAdapter() {
+		if (windowItemProvider == null) {
+			windowItemProvider = new WindowItemProvider(this);
+		}
+
+		return windowItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.ui.basic.MTrimmedWindow} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TrimmedWindowItemProvider trimmedWindowItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.e4.ui.model.application.ui.basic.MTrimmedWindow}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createTrimmedWindowAdapter() {
+		if (trimmedWindowItemProvider == null) {
+			trimmedWindowItemProvider = new TrimmedWindowItemProvider(this);
+		}
+
+		return trimmedWindowItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.ui.basic.MTrimBar} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TrimBarItemProvider trimBarItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.e4.ui.model.application.ui.basic.MTrimBar}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createTrimBarAdapter() {
+		if (trimBarItemProvider == null) {
+			trimBarItemProvider = new TrimBarItemProvider(this);
+		}
+
+		return trimBarItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.ui.basic.MDialog} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected DialogItemProvider dialogItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.e4.ui.model.application.ui.basic.MDialog}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createDialogAdapter() {
+		if (dialogItemProvider == null) {
+			dialogItemProvider = new DialogItemProvider(this);
+		}
+
+		return dialogItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.ui.basic.MWizardDialog} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected WizardDialogItemProvider wizardDialogItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.e4.ui.model.application.ui.basic.MWizardDialog}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createWizardDialogAdapter() {
+		if (wizardDialogItemProvider == null) {
+			wizardDialogItemProvider = new WizardDialogItemProvider(this);
+		}
+
+		return wizardDialogItemProvider;
+	}
+
+	/**
+	 * This returns the root adapter factory that contains this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ComposeableAdapterFactory getRootAdapterFactory() {
+		return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory();
+	}
+
+	/**
+	 * This sets the composed adapter factory that contains this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory) {
+		this.parentAdapterFactory = parentAdapterFactory;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object type) {
+		return supportedTypes.contains(type) || super.isFactoryForType(type);
+	}
+
+	/**
+	 * This implementation substitutes the factory itself as the key for the adapter.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter adapt(Notifier notifier, Object type) {
+		return super.adapt(notifier, this);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object adapt(Object object, Object type) {
+		if (isFactoryForType(type)) {
+			Object adapter = super.adapt(object, type);
+			if (!(type instanceof Class<?>) || (((Class<?>)type).isInstance(adapter))) {
+				return adapter;
+			}
+		}
+
+		return null;
+	}
+
+	/**
+	 * This adds a listener.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void addListener(INotifyChangedListener notifyChangedListener) {
+		changeNotifier.addListener(notifyChangedListener);
+	}
+
+	/**
+	 * This removes a listener.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void removeListener(INotifyChangedListener notifyChangedListener) {
+		changeNotifier.removeListener(notifyChangedListener);
+	}
+
+	/**
+	 * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void fireNotifyChanged(Notification notification) {
+		changeNotifier.fireNotifyChanged(notification);
+
+		if (parentAdapterFactory != null) {
+			parentAdapterFactory.fireNotifyChanged(notification);
+		}
+	}
+
+	/**
+	 * This disposes all of the item providers created by this factory. 
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void dispose() {
+		if (partItemProvider != null) partItemProvider.dispose();
+		if (compositePartItemProvider != null) compositePartItemProvider.dispose();
+		if (inputPartItemProvider != null) inputPartItemProvider.dispose();
+		if (partStackItemProvider != null) partStackItemProvider.dispose();
+		if (partSashContainerItemProvider != null) partSashContainerItemProvider.dispose();
+		if (windowItemProvider != null) windowItemProvider.dispose();
+		if (trimmedWindowItemProvider != null) trimmedWindowItemProvider.dispose();
+		if (trimBarItemProvider != null) trimBarItemProvider.dispose();
+		if (dialogItemProvider != null) dialogItemProvider.dispose();
+		if (wizardDialogItemProvider != null) wizardDialogItemProvider.dispose();
+	}
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/basic/provider/CompositePartItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/basic/provider/CompositePartItemProvider.java
new file mode 100644
index 0000000..f4d4229
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/basic/provider/CompositePartItemProvider.java
@@ -0,0 +1,381 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *      IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.basic.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.MApplicationFactory;
+
+import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
+
+import org.eclipse.e4.ui.model.application.ui.advanced.MAdvancedFactory;
+
+import org.eclipse.e4.ui.model.application.ui.basic.MBasicFactory;
+import org.eclipse.e4.ui.model.application.ui.basic.MCompositePart;
+
+import org.eclipse.e4.ui.model.application.ui.basic.impl.BasicPackageImpl;
+
+import org.eclipse.e4.ui.model.application.ui.impl.UiPackageImpl;
+
+import org.eclipse.e4.ui.model.application.ui.menu.MMenuFactory;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.ui.basic.MCompositePart} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class CompositePartItemProvider extends PartItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CompositePartItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addSelectedElementPropertyDescriptor(object);
+			addHorizontalPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Selected Element feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addSelectedElementPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_ElementContainer_selectedElement_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_ElementContainer_selectedElement_feature", "_UI_ElementContainer_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 UiPackageImpl.Literals.ELEMENT_CONTAINER__SELECTED_ELEMENT,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Horizontal feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addHorizontalPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_GenericTile_horizontal_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_GenericTile_horizontal_feature", "_UI_GenericTile_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 UiPackageImpl.Literals.GENERIC_TILE__HORIZONTAL,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns CompositePart.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/CompositePart")); //$NON-NLS-1$
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((MCompositePart)object).getElementId();
+		return label == null || label.length() == 0 ?
+			getString("_UI_CompositePart_type") : //$NON-NLS-1$
+			getString("_UI_CompositePart_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(MCompositePart.class)) {
+			case BasicPackageImpl.COMPOSITE_PART__HORIZONTAL:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+			case BasicPackageImpl.COMPOSITE_PART__CHILDREN:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MBasicFactory.INSTANCE.createPart()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MBasicFactory.INSTANCE.createCompositePart()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MBasicFactory.INSTANCE.createInputPart()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MBasicFactory.INSTANCE.createPartStack()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MBasicFactory.INSTANCE.createPartSashContainer()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MBasicFactory.INSTANCE.createWindow()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MBasicFactory.INSTANCE.createTrimmedWindow()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MBasicFactory.INSTANCE.createTrimBar()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MBasicFactory.INSTANCE.createDialog()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MBasicFactory.INSTANCE.createWizardDialog()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MApplicationFactory.INSTANCE.createApplication()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MMenuFactory.INSTANCE.createMenuSeparator()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MMenuFactory.INSTANCE.createMenu()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MMenuFactory.INSTANCE.createMenuContribution()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MMenuFactory.INSTANCE.createPopupMenu()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MMenuFactory.INSTANCE.createDirectMenuItem()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MMenuFactory.INSTANCE.createHandledMenuItem()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MMenuFactory.INSTANCE.createToolBar()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MMenuFactory.INSTANCE.createToolControl()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MMenuFactory.INSTANCE.createHandledToolItem()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MMenuFactory.INSTANCE.createDirectToolItem()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MMenuFactory.INSTANCE.createToolBarSeparator()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MMenuFactory.INSTANCE.createToolBarContribution()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MMenuFactory.INSTANCE.createTrimContribution()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MMenuFactory.INSTANCE.createDynamicMenuContribution()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MAdvancedFactory.INSTANCE.createPlaceholder()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MAdvancedFactory.INSTANCE.createPerspective()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MAdvancedFactory.INSTANCE.createPerspectiveStack()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MAdvancedFactory.INSTANCE.createArea()));
+	}
+
+	/**
+	 * This returns the label text for {@link org.eclipse.emf.edit.command.CreateChildCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getCreateChildText(Object owner, Object feature, Object child, Collection<?> selection) {
+		Object childFeature = feature;
+		Object childObject = child;
+
+		boolean qualify =
+			childFeature == ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__PERSISTED_STATE ||
+			childFeature == UiPackageImpl.Literals.CONTEXT__PROPERTIES ||
+			childFeature == BasicPackageImpl.Literals.PART__MENUS ||
+			childFeature == UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN ||
+			childFeature == BasicPackageImpl.Literals.PART__TOOLBAR;
+
+		if (qualify) {
+			return getString
+				("_UI_CreateChild_text2", //$NON-NLS-1$
+				 new Object[] { getTypeText(childObject), getFeatureText(childFeature), getTypeText(owner) });
+		}
+		return super.getCreateChildText(owner, feature, child, selection);
+	}
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/basic/provider/DialogItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/basic/provider/DialogItemProvider.java
new file mode 100644
index 0000000..6e7edcb
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/basic/provider/DialogItemProvider.java
@@ -0,0 +1,141 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *      IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.basic.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
+
+import org.eclipse.e4.ui.model.application.ui.basic.MDialog;
+
+import org.eclipse.e4.ui.model.application.ui.basic.impl.BasicPackageImpl;
+
+import org.eclipse.e4.ui.model.application.ui.impl.UiPackageImpl;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.ui.basic.MDialog} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class DialogItemProvider extends WindowItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DialogItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns Dialog.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/Dialog")); //$NON-NLS-1$
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((MDialog)object).getElementId();
+		return label == null || label.length() == 0 ?
+			getString("_UI_Dialog_type") : //$NON-NLS-1$
+			getString("_UI_Dialog_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * This returns the label text for {@link org.eclipse.emf.edit.command.CreateChildCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getCreateChildText(Object owner, Object feature, Object child, Collection<?> selection) {
+		Object childFeature = feature;
+		Object childObject = child;
+
+		boolean qualify =
+			childFeature == ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__PERSISTED_STATE ||
+			childFeature == UiPackageImpl.Literals.CONTEXT__PROPERTIES ||
+			childFeature == UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN ||
+			childFeature == UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS ||
+			childFeature == BasicPackageImpl.Literals.WINDOW__SHARED_ELEMENTS ||
+			childFeature == BasicPackageImpl.Literals.WINDOW__WINDOWS ||
+			childFeature == BasicPackageImpl.Literals.WINDOW__MAIN_MENU;
+
+		if (qualify) {
+			return getString
+				("_UI_CreateChild_text2", //$NON-NLS-1$
+				 new Object[] { getTypeText(childObject), getFeatureText(childFeature), getTypeText(owner) });
+		}
+		return super.getCreateChildText(owner, feature, child, selection);
+	}
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/basic/provider/InputPartItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/basic/provider/InputPartItemProvider.java
new file mode 100644
index 0000000..777bce0
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/basic/provider/InputPartItemProvider.java
@@ -0,0 +1,168 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *      IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.basic.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
+
+import org.eclipse.e4.ui.model.application.ui.basic.MInputPart;
+
+import org.eclipse.e4.ui.model.application.ui.basic.impl.BasicPackageImpl;
+
+import org.eclipse.e4.ui.model.application.ui.impl.UiPackageImpl;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.ui.basic.MInputPart} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class InputPartItemProvider extends PartItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public InputPartItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addInputURIPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Input URI feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addInputURIPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Input_inputURI_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_Input_inputURI_feature", "_UI_Input_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 UiPackageImpl.Literals.INPUT__INPUT_URI,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns InputPart.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/InputPart")); //$NON-NLS-1$
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((MInputPart)object).getContributionURI();
+		return label == null || label.length() == 0 ?
+			getString("_UI_InputPart_type") : //$NON-NLS-1$
+			getString("_UI_InputPart_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(MInputPart.class)) {
+			case BasicPackageImpl.INPUT_PART__INPUT_URI:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * This returns the label text for {@link org.eclipse.emf.edit.command.CreateChildCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getCreateChildText(Object owner, Object feature, Object child, Collection<?> selection) {
+		Object childFeature = feature;
+		Object childObject = child;
+
+		boolean qualify =
+			childFeature == ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__PERSISTED_STATE ||
+			childFeature == UiPackageImpl.Literals.CONTEXT__PROPERTIES;
+
+		if (qualify) {
+			return getString
+				("_UI_CreateChild_text2", //$NON-NLS-1$
+				 new Object[] { getTypeText(childObject), getFeatureText(childFeature), getTypeText(owner) });
+		}
+		return super.getCreateChildText(owner, feature, child, selection);
+	}
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/basic/provider/PartItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/basic/provider/PartItemProvider.java
new file mode 100644
index 0000000..4f5d5dd
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/basic/provider/PartItemProvider.java
@@ -0,0 +1,572 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *      IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.basic.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.MApplicationFactory;
+
+import org.eclipse.e4.ui.model.application.commands.MCommandsFactory;
+
+import org.eclipse.e4.ui.model.application.commands.impl.CommandsPackageImpl;
+
+import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
+
+import org.eclipse.e4.ui.model.application.provider.UIElementsEditPlugin;
+
+import org.eclipse.e4.ui.model.application.ui.basic.MPart;
+
+import org.eclipse.e4.ui.model.application.ui.basic.impl.BasicPackageImpl;
+
+import org.eclipse.e4.ui.model.application.ui.impl.UiPackageImpl;
+
+import org.eclipse.e4.ui.model.application.ui.menu.MMenuFactory;
+
+import org.eclipse.e4.ui.model.application.ui.provider.UIElementItemProvider;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EFactory;
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.ui.basic.MPart} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class PartItemProvider extends UIElementItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public PartItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addContributionURIPropertyDescriptor(object);
+			addObjectPropertyDescriptor(object);
+			addContextPropertyDescriptor(object);
+			addVariablesPropertyDescriptor(object);
+			addLabelPropertyDescriptor(object);
+			addIconURIPropertyDescriptor(object);
+			addTooltipPropertyDescriptor(object);
+			addLocalizedLabelPropertyDescriptor(object);
+			addLocalizedTooltipPropertyDescriptor(object);
+			addDirtyPropertyDescriptor(object);
+			addBindingContextsPropertyDescriptor(object);
+			addCloseablePropertyDescriptor(object);
+			addDescriptionPropertyDescriptor(object);
+			addLocalizedDescriptionPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Contribution URI feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addContributionURIPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Contribution_contributionURI_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_Contribution_contributionURI_feature", "_UI_Contribution_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 ApplicationPackageImpl.Literals.CONTRIBUTION__CONTRIBUTION_URI,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Object feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addObjectPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Contribution_object_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_Contribution_object_feature", "_UI_Contribution_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 ApplicationPackageImpl.Literals.CONTRIBUTION__OBJECT,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Context feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addContextPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Context_context_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_Context_context_feature", "_UI_Context_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 UiPackageImpl.Literals.CONTEXT__CONTEXT,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Variables feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addVariablesPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Context_variables_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_Context_variables_feature", "_UI_Context_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 UiPackageImpl.Literals.CONTEXT__VARIABLES,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Label feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addLabelPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_UILabel_label_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_UILabel_label_feature", "_UI_UILabel_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 UiPackageImpl.Literals.UI_LABEL__LABEL,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Icon URI feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addIconURIPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_UILabel_iconURI_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_UILabel_iconURI_feature", "_UI_UILabel_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 UiPackageImpl.Literals.UI_LABEL__ICON_URI,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Tooltip feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addTooltipPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_UILabel_tooltip_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_UILabel_tooltip_feature", "_UI_UILabel_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 UiPackageImpl.Literals.UI_LABEL__TOOLTIP,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Localized Label feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addLocalizedLabelPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_UILabel_localizedLabel_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_UILabel_localizedLabel_feature", "_UI_UILabel_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 UiPackageImpl.Literals.UI_LABEL__LOCALIZED_LABEL,
+				 false,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Localized Tooltip feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addLocalizedTooltipPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_UILabel_localizedTooltip_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_UILabel_localizedTooltip_feature", "_UI_UILabel_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 UiPackageImpl.Literals.UI_LABEL__LOCALIZED_TOOLTIP,
+				 false,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Dirty feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addDirtyPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Dirtyable_dirty_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_Dirtyable_dirty_feature", "_UI_Dirtyable_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 UiPackageImpl.Literals.DIRTYABLE__DIRTY,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Binding Contexts feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addBindingContextsPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Bindings_bindingContexts_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_Bindings_bindingContexts_feature", "_UI_Bindings_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 CommandsPackageImpl.Literals.BINDINGS__BINDING_CONTEXTS,
+				 true,
+				 false,
+				 false,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Closeable feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addCloseablePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Part_closeable_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_Part_closeable_feature", "_UI_Part_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 BasicPackageImpl.Literals.PART__CLOSEABLE,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Description feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addDescriptionPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Part_description_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_Part_description_feature", "_UI_Part_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 BasicPackageImpl.Literals.PART__DESCRIPTION,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Localized Description feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addLocalizedDescriptionPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Part_localizedDescription_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_Part_localizedDescription_feature", "_UI_Part_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 BasicPackageImpl.Literals.PART__LOCALIZED_DESCRIPTION,
+				 false,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(UiPackageImpl.Literals.CONTEXT__PROPERTIES);
+			childrenFeatures.add(CommandsPackageImpl.Literals.HANDLER_CONTAINER__HANDLERS);
+			childrenFeatures.add(BasicPackageImpl.Literals.PART__MENUS);
+			childrenFeatures.add(BasicPackageImpl.Literals.PART__TOOLBAR);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns Part.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/Part")); //$NON-NLS-1$
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((MPart)object).getContributionURI();
+		return label == null || label.length() == 0 ?
+			getString("_UI_Part_type") : //$NON-NLS-1$
+			getString("_UI_Part_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(MPart.class)) {
+			case BasicPackageImpl.PART__CONTRIBUTION_URI:
+			case BasicPackageImpl.PART__OBJECT:
+			case BasicPackageImpl.PART__CONTEXT:
+			case BasicPackageImpl.PART__VARIABLES:
+			case BasicPackageImpl.PART__LABEL:
+			case BasicPackageImpl.PART__ICON_URI:
+			case BasicPackageImpl.PART__TOOLTIP:
+			case BasicPackageImpl.PART__LOCALIZED_LABEL:
+			case BasicPackageImpl.PART__LOCALIZED_TOOLTIP:
+			case BasicPackageImpl.PART__DIRTY:
+			case BasicPackageImpl.PART__BINDING_CONTEXTS:
+			case BasicPackageImpl.PART__CLOSEABLE:
+			case BasicPackageImpl.PART__DESCRIPTION:
+			case BasicPackageImpl.PART__LOCALIZED_DESCRIPTION:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+			case BasicPackageImpl.PART__PROPERTIES:
+			case BasicPackageImpl.PART__HANDLERS:
+			case BasicPackageImpl.PART__MENUS:
+			case BasicPackageImpl.PART__TOOLBAR:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.CONTEXT__PROPERTIES,
+				 ((EFactory)MApplicationFactory.INSTANCE).create(ApplicationPackageImpl.Literals.STRING_TO_STRING_MAP)));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(CommandsPackageImpl.Literals.HANDLER_CONTAINER__HANDLERS,
+				 MCommandsFactory.INSTANCE.createHandler()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(BasicPackageImpl.Literals.PART__MENUS,
+				 MMenuFactory.INSTANCE.createMenu()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(BasicPackageImpl.Literals.PART__MENUS,
+				 MMenuFactory.INSTANCE.createPopupMenu()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(BasicPackageImpl.Literals.PART__TOOLBAR,
+				 MMenuFactory.INSTANCE.createToolBar()));
+	}
+
+	/**
+	 * This returns the label text for {@link org.eclipse.emf.edit.command.CreateChildCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getCreateChildText(Object owner, Object feature, Object child, Collection<?> selection) {
+		Object childFeature = feature;
+		Object childObject = child;
+
+		boolean qualify =
+			childFeature == ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__PERSISTED_STATE ||
+			childFeature == UiPackageImpl.Literals.CONTEXT__PROPERTIES;
+
+		if (qualify) {
+			return getString
+				("_UI_CreateChild_text2", //$NON-NLS-1$
+				 new Object[] { getTypeText(childObject), getFeatureText(childFeature), getTypeText(owner) });
+		}
+		return super.getCreateChildText(owner, feature, child, selection);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return UIElementsEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/basic/provider/PartSashContainerItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/basic/provider/PartSashContainerItemProvider.java
new file mode 100644
index 0000000..4a8f78a
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/basic/provider/PartSashContainerItemProvider.java
@@ -0,0 +1,124 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *      IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.basic.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.provider.UIElementsEditPlugin;
+
+import org.eclipse.e4.ui.model.application.ui.basic.MPartSashContainer;
+
+import org.eclipse.e4.ui.model.application.ui.provider.GenericTileItemProvider;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.ui.basic.MPartSashContainer} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class PartSashContainerItemProvider extends GenericTileItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public PartSashContainerItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns PartSashContainer.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/PartSashContainer")); //$NON-NLS-1$
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((MPartSashContainer)object).getElementId();
+		return label == null || label.length() == 0 ?
+			getString("_UI_PartSashContainer_type") : //$NON-NLS-1$
+			getString("_UI_PartSashContainer_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return UIElementsEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/basic/provider/PartStackItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/basic/provider/PartStackItemProvider.java
new file mode 100644
index 0000000..8aba86e
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/basic/provider/PartStackItemProvider.java
@@ -0,0 +1,124 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *      IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.basic.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.provider.UIElementsEditPlugin;
+
+import org.eclipse.e4.ui.model.application.ui.basic.MPartStack;
+
+import org.eclipse.e4.ui.model.application.ui.provider.GenericStackItemProvider;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.ui.basic.MPartStack} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class PartStackItemProvider extends GenericStackItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public PartStackItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns PartStack.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/PartStack")); //$NON-NLS-1$
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((MPartStack)object).getElementId();
+		return label == null || label.length() == 0 ?
+			getString("_UI_PartStack_type") : //$NON-NLS-1$
+			getString("_UI_PartStack_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return UIElementsEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/basic/provider/TrimBarItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/basic/provider/TrimBarItemProvider.java
new file mode 100644
index 0000000..faf87f7
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/basic/provider/TrimBarItemProvider.java
@@ -0,0 +1,150 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *      IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.basic.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.provider.UIElementsEditPlugin;
+
+import org.eclipse.e4.ui.model.application.ui.basic.MTrimBar;
+
+import org.eclipse.e4.ui.model.application.ui.basic.impl.BasicPackageImpl;
+
+import org.eclipse.e4.ui.model.application.ui.provider.GenericTrimContainerItemProvider;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.ui.basic.MTrimBar} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TrimBarItemProvider extends GenericTrimContainerItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public TrimBarItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addPendingCleanupPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Pending Cleanup feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addPendingCleanupPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_TrimBar_pendingCleanup_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_TrimBar_pendingCleanup_feature", "_UI_TrimBar_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 BasicPackageImpl.Literals.TRIM_BAR__PENDING_CLEANUP,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns TrimBar.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/TrimBar")); //$NON-NLS-1$
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((MTrimBar)object).getElementId();
+		return label == null || label.length() == 0 ?
+			getString("_UI_TrimBar_type") : //$NON-NLS-1$
+			getString("_UI_TrimBar_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return UIElementsEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/basic/provider/TrimmedWindowItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/basic/provider/TrimmedWindowItemProvider.java
new file mode 100644
index 0000000..74a4941
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/basic/provider/TrimmedWindowItemProvider.java
@@ -0,0 +1,187 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *      IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.basic.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
+
+import org.eclipse.e4.ui.model.application.ui.basic.MBasicFactory;
+import org.eclipse.e4.ui.model.application.ui.basic.MTrimmedWindow;
+
+import org.eclipse.e4.ui.model.application.ui.basic.impl.BasicPackageImpl;
+
+import org.eclipse.e4.ui.model.application.ui.impl.UiPackageImpl;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.ui.basic.MTrimmedWindow} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TrimmedWindowItemProvider extends WindowItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public TrimmedWindowItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(BasicPackageImpl.Literals.TRIMMED_WINDOW__TRIM_BARS);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns TrimmedWindow.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/TrimmedWindow")); //$NON-NLS-1$
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((MTrimmedWindow)object).getLabel();
+		return label == null || label.length() == 0 ?
+			getString("_UI_TrimmedWindow_type") : //$NON-NLS-1$
+			getString("_UI_TrimmedWindow_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(MTrimmedWindow.class)) {
+			case BasicPackageImpl.TRIMMED_WINDOW__TRIM_BARS:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(BasicPackageImpl.Literals.TRIMMED_WINDOW__TRIM_BARS,
+				 MBasicFactory.INSTANCE.createTrimBar()));
+	}
+
+	/**
+	 * This returns the label text for {@link org.eclipse.emf.edit.command.CreateChildCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getCreateChildText(Object owner, Object feature, Object child, Collection<?> selection) {
+		Object childFeature = feature;
+		Object childObject = child;
+
+		boolean qualify =
+			childFeature == ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__PERSISTED_STATE ||
+			childFeature == UiPackageImpl.Literals.CONTEXT__PROPERTIES ||
+			childFeature == UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN ||
+			childFeature == UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS ||
+			childFeature == BasicPackageImpl.Literals.WINDOW__SHARED_ELEMENTS ||
+			childFeature == BasicPackageImpl.Literals.WINDOW__WINDOWS ||
+			childFeature == BasicPackageImpl.Literals.TRIMMED_WINDOW__TRIM_BARS ||
+			childFeature == BasicPackageImpl.Literals.WINDOW__MAIN_MENU;
+
+		if (qualify) {
+			return getString
+				("_UI_CreateChild_text2", //$NON-NLS-1$
+				 new Object[] { getTypeText(childObject), getFeatureText(childFeature), getTypeText(owner) });
+		}
+		return super.getCreateChildText(owner, feature, child, selection);
+	}
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/basic/provider/WindowItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/basic/provider/WindowItemProvider.java
new file mode 100644
index 0000000..b56accb
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/basic/provider/WindowItemProvider.java
@@ -0,0 +1,864 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *      IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.basic.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.MApplicationFactory;
+
+import org.eclipse.e4.ui.model.application.commands.MCommandsFactory;
+
+import org.eclipse.e4.ui.model.application.commands.impl.CommandsPackageImpl;
+
+import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
+
+import org.eclipse.e4.ui.model.application.provider.UIElementsEditPlugin;
+
+import org.eclipse.e4.ui.model.application.ui.advanced.MAdvancedFactory;
+
+import org.eclipse.e4.ui.model.application.ui.basic.MBasicFactory;
+import org.eclipse.e4.ui.model.application.ui.basic.MWindow;
+
+import org.eclipse.e4.ui.model.application.ui.basic.impl.BasicPackageImpl;
+
+import org.eclipse.e4.ui.model.application.ui.impl.UiPackageImpl;
+
+import org.eclipse.e4.ui.model.application.ui.menu.MMenuFactory;
+
+import org.eclipse.e4.ui.model.application.ui.provider.ElementContainerItemProvider;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EFactory;
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.ui.basic.MWindow} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class WindowItemProvider extends ElementContainerItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public WindowItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addLabelPropertyDescriptor(object);
+			addIconURIPropertyDescriptor(object);
+			addTooltipPropertyDescriptor(object);
+			addLocalizedLabelPropertyDescriptor(object);
+			addLocalizedTooltipPropertyDescriptor(object);
+			addContextPropertyDescriptor(object);
+			addVariablesPropertyDescriptor(object);
+			addBindingContextsPropertyDescriptor(object);
+			addXPropertyDescriptor(object);
+			addYPropertyDescriptor(object);
+			addWidthPropertyDescriptor(object);
+			addHeightPropertyDescriptor(object);
+			addSharedElementsPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Label feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addLabelPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_UILabel_label_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_UILabel_label_feature", "_UI_UILabel_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 UiPackageImpl.Literals.UI_LABEL__LABEL,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Icon URI feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addIconURIPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_UILabel_iconURI_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_UILabel_iconURI_feature", "_UI_UILabel_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 UiPackageImpl.Literals.UI_LABEL__ICON_URI,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Tooltip feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addTooltipPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_UILabel_tooltip_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_UILabel_tooltip_feature", "_UI_UILabel_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 UiPackageImpl.Literals.UI_LABEL__TOOLTIP,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Localized Label feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addLocalizedLabelPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_UILabel_localizedLabel_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_UILabel_localizedLabel_feature", "_UI_UILabel_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 UiPackageImpl.Literals.UI_LABEL__LOCALIZED_LABEL,
+				 false,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Localized Tooltip feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addLocalizedTooltipPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_UILabel_localizedTooltip_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_UILabel_localizedTooltip_feature", "_UI_UILabel_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 UiPackageImpl.Literals.UI_LABEL__LOCALIZED_TOOLTIP,
+				 false,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Context feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addContextPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Context_context_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_Context_context_feature", "_UI_Context_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 UiPackageImpl.Literals.CONTEXT__CONTEXT,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Variables feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addVariablesPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Context_variables_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_Context_variables_feature", "_UI_Context_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 UiPackageImpl.Literals.CONTEXT__VARIABLES,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Binding Contexts feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addBindingContextsPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Bindings_bindingContexts_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_Bindings_bindingContexts_feature", "_UI_Bindings_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 CommandsPackageImpl.Literals.BINDINGS__BINDING_CONTEXTS,
+				 true,
+				 false,
+				 false,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the X feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addXPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Window_x_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_Window_x_feature", "_UI_Window_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 BasicPackageImpl.Literals.WINDOW__X,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Y feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addYPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Window_y_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_Window_y_feature", "_UI_Window_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 BasicPackageImpl.Literals.WINDOW__Y,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Width feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addWidthPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Window_width_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_Window_width_feature", "_UI_Window_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 BasicPackageImpl.Literals.WINDOW__WIDTH,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Height feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addHeightPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Window_height_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_Window_height_feature", "_UI_Window_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 BasicPackageImpl.Literals.WINDOW__HEIGHT,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Shared Elements feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addSharedElementsPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Window_sharedElements_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_Window_sharedElements_feature", "_UI_Window_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 BasicPackageImpl.Literals.WINDOW__SHARED_ELEMENTS,
+				 true,
+				 false,
+				 false,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(UiPackageImpl.Literals.CONTEXT__PROPERTIES);
+			childrenFeatures.add(CommandsPackageImpl.Literals.HANDLER_CONTAINER__HANDLERS);
+			childrenFeatures.add(UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS);
+			childrenFeatures.add(BasicPackageImpl.Literals.WINDOW__MAIN_MENU);
+			childrenFeatures.add(BasicPackageImpl.Literals.WINDOW__WINDOWS);
+			childrenFeatures.add(BasicPackageImpl.Literals.WINDOW__SHARED_ELEMENTS);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns Window.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/Window")); //$NON-NLS-1$
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((MWindow)object).getLabel();
+		return label == null || label.length() == 0 ?
+			getString("_UI_Window_type") : //$NON-NLS-1$
+			getString("_UI_Window_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(MWindow.class)) {
+			case BasicPackageImpl.WINDOW__LABEL:
+			case BasicPackageImpl.WINDOW__ICON_URI:
+			case BasicPackageImpl.WINDOW__TOOLTIP:
+			case BasicPackageImpl.WINDOW__LOCALIZED_LABEL:
+			case BasicPackageImpl.WINDOW__LOCALIZED_TOOLTIP:
+			case BasicPackageImpl.WINDOW__CONTEXT:
+			case BasicPackageImpl.WINDOW__VARIABLES:
+			case BasicPackageImpl.WINDOW__BINDING_CONTEXTS:
+			case BasicPackageImpl.WINDOW__X:
+			case BasicPackageImpl.WINDOW__Y:
+			case BasicPackageImpl.WINDOW__WIDTH:
+			case BasicPackageImpl.WINDOW__HEIGHT:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+			case BasicPackageImpl.WINDOW__PROPERTIES:
+			case BasicPackageImpl.WINDOW__HANDLERS:
+			case BasicPackageImpl.WINDOW__SNIPPETS:
+			case BasicPackageImpl.WINDOW__MAIN_MENU:
+			case BasicPackageImpl.WINDOW__WINDOWS:
+			case BasicPackageImpl.WINDOW__SHARED_ELEMENTS:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.CONTEXT__PROPERTIES,
+				 ((EFactory)MApplicationFactory.INSTANCE).create(ApplicationPackageImpl.Literals.STRING_TO_STRING_MAP)));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(CommandsPackageImpl.Literals.HANDLER_CONTAINER__HANDLERS,
+				 MCommandsFactory.INSTANCE.createHandler()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+				 MBasicFactory.INSTANCE.createPart()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+				 MBasicFactory.INSTANCE.createCompositePart()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+				 MBasicFactory.INSTANCE.createInputPart()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+				 MBasicFactory.INSTANCE.createPartStack()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+				 MBasicFactory.INSTANCE.createPartSashContainer()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+				 MBasicFactory.INSTANCE.createWindow()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+				 MBasicFactory.INSTANCE.createTrimmedWindow()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+				 MBasicFactory.INSTANCE.createTrimBar()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+				 MBasicFactory.INSTANCE.createDialog()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+				 MBasicFactory.INSTANCE.createWizardDialog()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+				 MApplicationFactory.INSTANCE.createApplication()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+				 MMenuFactory.INSTANCE.createMenuSeparator()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+				 MMenuFactory.INSTANCE.createMenu()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+				 MMenuFactory.INSTANCE.createMenuContribution()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+				 MMenuFactory.INSTANCE.createPopupMenu()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+				 MMenuFactory.INSTANCE.createDirectMenuItem()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+				 MMenuFactory.INSTANCE.createHandledMenuItem()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+				 MMenuFactory.INSTANCE.createToolBar()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+				 MMenuFactory.INSTANCE.createToolControl()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+				 MMenuFactory.INSTANCE.createHandledToolItem()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+				 MMenuFactory.INSTANCE.createDirectToolItem()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+				 MMenuFactory.INSTANCE.createToolBarSeparator()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+				 MMenuFactory.INSTANCE.createToolBarContribution()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+				 MMenuFactory.INSTANCE.createTrimContribution()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+				 MMenuFactory.INSTANCE.createDynamicMenuContribution()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+				 MAdvancedFactory.INSTANCE.createPlaceholder()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+				 MAdvancedFactory.INSTANCE.createPerspective()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+				 MAdvancedFactory.INSTANCE.createPerspectiveStack()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+				 MAdvancedFactory.INSTANCE.createArea()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(BasicPackageImpl.Literals.WINDOW__MAIN_MENU,
+				 MMenuFactory.INSTANCE.createMenu()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(BasicPackageImpl.Literals.WINDOW__MAIN_MENU,
+				 MMenuFactory.INSTANCE.createPopupMenu()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(BasicPackageImpl.Literals.WINDOW__WINDOWS,
+				 MBasicFactory.INSTANCE.createWindow()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(BasicPackageImpl.Literals.WINDOW__WINDOWS,
+				 MBasicFactory.INSTANCE.createTrimmedWindow()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(BasicPackageImpl.Literals.WINDOW__WINDOWS,
+				 MBasicFactory.INSTANCE.createDialog()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(BasicPackageImpl.Literals.WINDOW__WINDOWS,
+				 MBasicFactory.INSTANCE.createWizardDialog()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(BasicPackageImpl.Literals.WINDOW__SHARED_ELEMENTS,
+				 MBasicFactory.INSTANCE.createPart()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(BasicPackageImpl.Literals.WINDOW__SHARED_ELEMENTS,
+				 MBasicFactory.INSTANCE.createCompositePart()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(BasicPackageImpl.Literals.WINDOW__SHARED_ELEMENTS,
+				 MBasicFactory.INSTANCE.createInputPart()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(BasicPackageImpl.Literals.WINDOW__SHARED_ELEMENTS,
+				 MBasicFactory.INSTANCE.createPartStack()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(BasicPackageImpl.Literals.WINDOW__SHARED_ELEMENTS,
+				 MBasicFactory.INSTANCE.createPartSashContainer()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(BasicPackageImpl.Literals.WINDOW__SHARED_ELEMENTS,
+				 MBasicFactory.INSTANCE.createWindow()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(BasicPackageImpl.Literals.WINDOW__SHARED_ELEMENTS,
+				 MBasicFactory.INSTANCE.createTrimmedWindow()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(BasicPackageImpl.Literals.WINDOW__SHARED_ELEMENTS,
+				 MBasicFactory.INSTANCE.createTrimBar()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(BasicPackageImpl.Literals.WINDOW__SHARED_ELEMENTS,
+				 MBasicFactory.INSTANCE.createDialog()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(BasicPackageImpl.Literals.WINDOW__SHARED_ELEMENTS,
+				 MBasicFactory.INSTANCE.createWizardDialog()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(BasicPackageImpl.Literals.WINDOW__SHARED_ELEMENTS,
+				 MApplicationFactory.INSTANCE.createApplication()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(BasicPackageImpl.Literals.WINDOW__SHARED_ELEMENTS,
+				 MMenuFactory.INSTANCE.createMenuSeparator()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(BasicPackageImpl.Literals.WINDOW__SHARED_ELEMENTS,
+				 MMenuFactory.INSTANCE.createMenu()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(BasicPackageImpl.Literals.WINDOW__SHARED_ELEMENTS,
+				 MMenuFactory.INSTANCE.createMenuContribution()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(BasicPackageImpl.Literals.WINDOW__SHARED_ELEMENTS,
+				 MMenuFactory.INSTANCE.createPopupMenu()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(BasicPackageImpl.Literals.WINDOW__SHARED_ELEMENTS,
+				 MMenuFactory.INSTANCE.createDirectMenuItem()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(BasicPackageImpl.Literals.WINDOW__SHARED_ELEMENTS,
+				 MMenuFactory.INSTANCE.createHandledMenuItem()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(BasicPackageImpl.Literals.WINDOW__SHARED_ELEMENTS,
+				 MMenuFactory.INSTANCE.createToolBar()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(BasicPackageImpl.Literals.WINDOW__SHARED_ELEMENTS,
+				 MMenuFactory.INSTANCE.createToolControl()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(BasicPackageImpl.Literals.WINDOW__SHARED_ELEMENTS,
+				 MMenuFactory.INSTANCE.createHandledToolItem()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(BasicPackageImpl.Literals.WINDOW__SHARED_ELEMENTS,
+				 MMenuFactory.INSTANCE.createDirectToolItem()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(BasicPackageImpl.Literals.WINDOW__SHARED_ELEMENTS,
+				 MMenuFactory.INSTANCE.createToolBarSeparator()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(BasicPackageImpl.Literals.WINDOW__SHARED_ELEMENTS,
+				 MMenuFactory.INSTANCE.createToolBarContribution()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(BasicPackageImpl.Literals.WINDOW__SHARED_ELEMENTS,
+				 MMenuFactory.INSTANCE.createTrimContribution()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(BasicPackageImpl.Literals.WINDOW__SHARED_ELEMENTS,
+				 MMenuFactory.INSTANCE.createDynamicMenuContribution()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(BasicPackageImpl.Literals.WINDOW__SHARED_ELEMENTS,
+				 MAdvancedFactory.INSTANCE.createPlaceholder()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(BasicPackageImpl.Literals.WINDOW__SHARED_ELEMENTS,
+				 MAdvancedFactory.INSTANCE.createPerspective()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(BasicPackageImpl.Literals.WINDOW__SHARED_ELEMENTS,
+				 MAdvancedFactory.INSTANCE.createPerspectiveStack()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(BasicPackageImpl.Literals.WINDOW__SHARED_ELEMENTS,
+				 MAdvancedFactory.INSTANCE.createArea()));
+	}
+
+	/**
+	 * This returns the label text for {@link org.eclipse.emf.edit.command.CreateChildCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getCreateChildText(Object owner, Object feature, Object child, Collection<?> selection) {
+		Object childFeature = feature;
+		Object childObject = child;
+
+		boolean qualify =
+			childFeature == ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__PERSISTED_STATE ||
+			childFeature == UiPackageImpl.Literals.CONTEXT__PROPERTIES ||
+			childFeature == UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN ||
+			childFeature == UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS ||
+			childFeature == BasicPackageImpl.Literals.WINDOW__SHARED_ELEMENTS ||
+			childFeature == BasicPackageImpl.Literals.WINDOW__WINDOWS ||
+			childFeature == BasicPackageImpl.Literals.WINDOW__MAIN_MENU;
+
+		if (qualify) {
+			return getString
+				("_UI_CreateChild_text2", //$NON-NLS-1$
+				 new Object[] { getTypeText(childObject), getFeatureText(childFeature), getTypeText(owner) });
+		}
+		return super.getCreateChildText(owner, feature, child, selection);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return UIElementsEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/basic/provider/WizardDialogItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/basic/provider/WizardDialogItemProvider.java
new file mode 100644
index 0000000..0a7ca76
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/basic/provider/WizardDialogItemProvider.java
@@ -0,0 +1,141 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *      IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.basic.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
+
+import org.eclipse.e4.ui.model.application.ui.basic.MWizardDialog;
+
+import org.eclipse.e4.ui.model.application.ui.basic.impl.BasicPackageImpl;
+
+import org.eclipse.e4.ui.model.application.ui.impl.UiPackageImpl;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.ui.basic.MWizardDialog} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class WizardDialogItemProvider extends DialogItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public WizardDialogItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns WizardDialog.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/WizardDialog")); //$NON-NLS-1$
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((MWizardDialog)object).getElementId();
+		return label == null || label.length() == 0 ?
+			getString("_UI_WizardDialog_type") : //$NON-NLS-1$
+			getString("_UI_WizardDialog_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * This returns the label text for {@link org.eclipse.emf.edit.command.CreateChildCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getCreateChildText(Object owner, Object feature, Object child, Collection<?> selection) {
+		Object childFeature = feature;
+		Object childObject = child;
+
+		boolean qualify =
+			childFeature == ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__PERSISTED_STATE ||
+			childFeature == UiPackageImpl.Literals.CONTEXT__PROPERTIES ||
+			childFeature == UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN ||
+			childFeature == UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS ||
+			childFeature == BasicPackageImpl.Literals.WINDOW__SHARED_ELEMENTS ||
+			childFeature == BasicPackageImpl.Literals.WINDOW__WINDOWS ||
+			childFeature == BasicPackageImpl.Literals.WINDOW__MAIN_MENU;
+
+		if (qualify) {
+			return getString
+				("_UI_CreateChild_text2", //$NON-NLS-1$
+				 new Object[] { getTypeText(childObject), getFeatureText(childFeature), getTypeText(owner) });
+		}
+		return super.getCreateChildText(owner, feature, child, selection);
+	}
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/DirectMenuItemItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/DirectMenuItemItemProvider.java
new file mode 100644
index 0000000..3296214
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/DirectMenuItemItemProvider.java
@@ -0,0 +1,167 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *      IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.menu.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
+
+import org.eclipse.e4.ui.model.application.ui.menu.MDirectMenuItem;
+
+import org.eclipse.e4.ui.model.application.ui.menu.impl.MenuPackageImpl;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.ui.menu.MDirectMenuItem} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class DirectMenuItemItemProvider extends MenuItemItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DirectMenuItemItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addContributionURIPropertyDescriptor(object);
+			addObjectPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Contribution URI feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addContributionURIPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Contribution_contributionURI_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_Contribution_contributionURI_feature", "_UI_Contribution_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 ApplicationPackageImpl.Literals.CONTRIBUTION__CONTRIBUTION_URI,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Object feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addObjectPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Contribution_object_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_Contribution_object_feature", "_UI_Contribution_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 ApplicationPackageImpl.Literals.CONTRIBUTION__OBJECT,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns DirectMenuItem.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/DirectMenuItem")); //$NON-NLS-1$
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((MDirectMenuItem)object).getLabel();
+		return label == null || label.length() == 0 ?
+			getString("_UI_DirectMenuItem_type") : //$NON-NLS-1$
+			getString("_UI_DirectMenuItem_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(MDirectMenuItem.class)) {
+			case MenuPackageImpl.DIRECT_MENU_ITEM__CONTRIBUTION_URI:
+			case MenuPackageImpl.DIRECT_MENU_ITEM__OBJECT:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/DirectToolItemItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/DirectToolItemItemProvider.java
new file mode 100644
index 0000000..d592ecc
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/DirectToolItemItemProvider.java
@@ -0,0 +1,167 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *      IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.menu.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
+
+import org.eclipse.e4.ui.model.application.ui.menu.MDirectToolItem;
+
+import org.eclipse.e4.ui.model.application.ui.menu.impl.MenuPackageImpl;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.ui.menu.MDirectToolItem} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class DirectToolItemItemProvider extends ToolItemItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DirectToolItemItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addContributionURIPropertyDescriptor(object);
+			addObjectPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Contribution URI feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addContributionURIPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Contribution_contributionURI_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_Contribution_contributionURI_feature", "_UI_Contribution_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 ApplicationPackageImpl.Literals.CONTRIBUTION__CONTRIBUTION_URI,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Object feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addObjectPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Contribution_object_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_Contribution_object_feature", "_UI_Contribution_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 ApplicationPackageImpl.Literals.CONTRIBUTION__OBJECT,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns DirectToolItem.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/DirectToolItem")); //$NON-NLS-1$
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((MDirectToolItem)object).getLabel();
+		return label == null || label.length() == 0 ?
+			getString("_UI_DirectToolItem_type") : //$NON-NLS-1$
+			getString("_UI_DirectToolItem_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(MDirectToolItem.class)) {
+			case MenuPackageImpl.DIRECT_TOOL_ITEM__CONTRIBUTION_URI:
+			case MenuPackageImpl.DIRECT_TOOL_ITEM__OBJECT:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/DynamicMenuContributionItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/DynamicMenuContributionItemProvider.java
new file mode 100644
index 0000000..cbf1da7
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/DynamicMenuContributionItemProvider.java
@@ -0,0 +1,167 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *      IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.menu.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
+
+import org.eclipse.e4.ui.model.application.ui.menu.MDynamicMenuContribution;
+
+import org.eclipse.e4.ui.model.application.ui.menu.impl.MenuPackageImpl;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.ui.menu.MDynamicMenuContribution} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class DynamicMenuContributionItemProvider extends MenuItemItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DynamicMenuContributionItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addContributionURIPropertyDescriptor(object);
+			addObjectPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Contribution URI feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addContributionURIPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Contribution_contributionURI_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_Contribution_contributionURI_feature", "_UI_Contribution_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 ApplicationPackageImpl.Literals.CONTRIBUTION__CONTRIBUTION_URI,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Object feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addObjectPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Contribution_object_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_Contribution_object_feature", "_UI_Contribution_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 ApplicationPackageImpl.Literals.CONTRIBUTION__OBJECT,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns DynamicMenuContribution.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/DynamicMenuContribution")); //$NON-NLS-1$
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((MDynamicMenuContribution)object).getElementId();
+		return label == null || label.length() == 0 ?
+			getString("_UI_DynamicMenuContribution_type") : //$NON-NLS-1$
+			getString("_UI_DynamicMenuContribution_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(MDynamicMenuContribution.class)) {
+			case MenuPackageImpl.DYNAMIC_MENU_CONTRIBUTION__CONTRIBUTION_URI:
+			case MenuPackageImpl.DYNAMIC_MENU_CONTRIBUTION__OBJECT:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/HandledItemItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/HandledItemItemProvider.java
new file mode 100644
index 0000000..3fcf31c
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/HandledItemItemProvider.java
@@ -0,0 +1,206 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *      IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.menu.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.commands.MCommandsFactory;
+
+import org.eclipse.e4.ui.model.application.ui.menu.MHandledItem;
+
+import org.eclipse.e4.ui.model.application.ui.menu.impl.MenuPackageImpl;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.ui.menu.MHandledItem} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class HandledItemItemProvider extends ItemItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public HandledItemItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addCommandPropertyDescriptor(object);
+			addWbCommandPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Command feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addCommandPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_HandledItem_command_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_HandledItem_command_feature", "_UI_HandledItem_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 MenuPackageImpl.Literals.HANDLED_ITEM__COMMAND,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Wb Command feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addWbCommandPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_HandledItem_wbCommand_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_HandledItem_wbCommand_feature", "_UI_HandledItem_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 MenuPackageImpl.Literals.HANDLED_ITEM__WB_COMMAND,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(MenuPackageImpl.Literals.HANDLED_ITEM__PARAMETERS);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns HandledItem.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/HandledItem")); //$NON-NLS-1$
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((MHandledItem)object).getLabel();
+		return label == null || label.length() == 0 ?
+			getString("_UI_HandledItem_type") : //$NON-NLS-1$
+			getString("_UI_HandledItem_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(MHandledItem.class)) {
+			case MenuPackageImpl.HANDLED_ITEM__WB_COMMAND:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+			case MenuPackageImpl.HANDLED_ITEM__PARAMETERS:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(MenuPackageImpl.Literals.HANDLED_ITEM__PARAMETERS,
+				 MCommandsFactory.INSTANCE.createParameter()));
+	}
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/HandledMenuItemItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/HandledMenuItemItemProvider.java
new file mode 100644
index 0000000..0182c9a
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/HandledMenuItemItemProvider.java
@@ -0,0 +1,206 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *      IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.menu.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.commands.MCommandsFactory;
+
+import org.eclipse.e4.ui.model.application.ui.menu.MHandledMenuItem;
+
+import org.eclipse.e4.ui.model.application.ui.menu.impl.MenuPackageImpl;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.ui.menu.MHandledMenuItem} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class HandledMenuItemItemProvider extends MenuItemItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public HandledMenuItemItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addCommandPropertyDescriptor(object);
+			addWbCommandPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Command feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addCommandPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_HandledItem_command_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_HandledItem_command_feature", "_UI_HandledItem_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 MenuPackageImpl.Literals.HANDLED_ITEM__COMMAND,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Wb Command feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addWbCommandPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_HandledItem_wbCommand_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_HandledItem_wbCommand_feature", "_UI_HandledItem_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 MenuPackageImpl.Literals.HANDLED_ITEM__WB_COMMAND,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(MenuPackageImpl.Literals.HANDLED_ITEM__PARAMETERS);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns HandledMenuItem.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/HandledMenuItem")); //$NON-NLS-1$
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((MHandledMenuItem)object).getLabel();
+		return label == null || label.length() == 0 ?
+			getString("_UI_HandledMenuItem_type") : //$NON-NLS-1$
+			getString("_UI_HandledMenuItem_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(MHandledMenuItem.class)) {
+			case MenuPackageImpl.HANDLED_MENU_ITEM__WB_COMMAND:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+			case MenuPackageImpl.HANDLED_MENU_ITEM__PARAMETERS:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(MenuPackageImpl.Literals.HANDLED_ITEM__PARAMETERS,
+				 MCommandsFactory.INSTANCE.createParameter()));
+	}
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/HandledToolItemItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/HandledToolItemItemProvider.java
new file mode 100644
index 0000000..b547573
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/HandledToolItemItemProvider.java
@@ -0,0 +1,206 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *      IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.menu.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.commands.MCommandsFactory;
+
+import org.eclipse.e4.ui.model.application.ui.menu.MHandledToolItem;
+
+import org.eclipse.e4.ui.model.application.ui.menu.impl.MenuPackageImpl;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.ui.menu.MHandledToolItem} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class HandledToolItemItemProvider extends ToolItemItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public HandledToolItemItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addCommandPropertyDescriptor(object);
+			addWbCommandPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Command feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addCommandPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_HandledItem_command_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_HandledItem_command_feature", "_UI_HandledItem_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 MenuPackageImpl.Literals.HANDLED_ITEM__COMMAND,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Wb Command feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addWbCommandPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_HandledItem_wbCommand_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_HandledItem_wbCommand_feature", "_UI_HandledItem_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 MenuPackageImpl.Literals.HANDLED_ITEM__WB_COMMAND,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(MenuPackageImpl.Literals.HANDLED_ITEM__PARAMETERS);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns HandledToolItem.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/HandledToolItem")); //$NON-NLS-1$
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((MHandledToolItem)object).getLabel();
+		return label == null || label.length() == 0 ?
+			getString("_UI_HandledToolItem_type") : //$NON-NLS-1$
+			getString("_UI_HandledToolItem_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(MHandledToolItem.class)) {
+			case MenuPackageImpl.HANDLED_TOOL_ITEM__WB_COMMAND:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+			case MenuPackageImpl.HANDLED_TOOL_ITEM__PARAMETERS:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(MenuPackageImpl.Literals.HANDLED_ITEM__PARAMETERS,
+				 MCommandsFactory.INSTANCE.createParameter()));
+	}
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/ItemItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/ItemItemProvider.java
new file mode 100644
index 0000000..3820d6f
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/ItemItemProvider.java
@@ -0,0 +1,328 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *      IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.menu.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.provider.UIElementsEditPlugin;
+
+import org.eclipse.e4.ui.model.application.ui.impl.UiPackageImpl;
+
+import org.eclipse.e4.ui.model.application.ui.menu.MItem;
+
+import org.eclipse.e4.ui.model.application.ui.menu.impl.MenuPackageImpl;
+
+import org.eclipse.e4.ui.model.application.ui.provider.UIElementItemProvider;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.ui.menu.MItem} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ItemItemProvider extends UIElementItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ItemItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addLabelPropertyDescriptor(object);
+			addIconURIPropertyDescriptor(object);
+			addTooltipPropertyDescriptor(object);
+			addLocalizedLabelPropertyDescriptor(object);
+			addLocalizedTooltipPropertyDescriptor(object);
+			addEnabledPropertyDescriptor(object);
+			addSelectedPropertyDescriptor(object);
+			addTypePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Label feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addLabelPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_UILabel_label_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_UILabel_label_feature", "_UI_UILabel_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 UiPackageImpl.Literals.UI_LABEL__LABEL,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Icon URI feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addIconURIPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_UILabel_iconURI_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_UILabel_iconURI_feature", "_UI_UILabel_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 UiPackageImpl.Literals.UI_LABEL__ICON_URI,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Tooltip feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addTooltipPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_UILabel_tooltip_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_UILabel_tooltip_feature", "_UI_UILabel_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 UiPackageImpl.Literals.UI_LABEL__TOOLTIP,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Localized Label feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addLocalizedLabelPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_UILabel_localizedLabel_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_UILabel_localizedLabel_feature", "_UI_UILabel_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 UiPackageImpl.Literals.UI_LABEL__LOCALIZED_LABEL,
+				 false,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Localized Tooltip feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addLocalizedTooltipPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_UILabel_localizedTooltip_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_UILabel_localizedTooltip_feature", "_UI_UILabel_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 UiPackageImpl.Literals.UI_LABEL__LOCALIZED_TOOLTIP,
+				 false,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Enabled feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addEnabledPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Item_enabled_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_Item_enabled_feature", "_UI_Item_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 MenuPackageImpl.Literals.ITEM__ENABLED,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Selected feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addSelectedPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Item_selected_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_Item_selected_feature", "_UI_Item_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 MenuPackageImpl.Literals.ITEM__SELECTED,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Type feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addTypePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Item_type_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_Item_type_feature", "_UI_Item_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 MenuPackageImpl.Literals.ITEM__TYPE,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns Item.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/Item")); //$NON-NLS-1$
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((MItem)object).getLabel();
+		return label == null || label.length() == 0 ?
+			getString("_UI_Item_type") : //$NON-NLS-1$
+			getString("_UI_Item_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(MItem.class)) {
+			case MenuPackageImpl.ITEM__LABEL:
+			case MenuPackageImpl.ITEM__ICON_URI:
+			case MenuPackageImpl.ITEM__TOOLTIP:
+			case MenuPackageImpl.ITEM__LOCALIZED_LABEL:
+			case MenuPackageImpl.ITEM__LOCALIZED_TOOLTIP:
+			case MenuPackageImpl.ITEM__ENABLED:
+			case MenuPackageImpl.ITEM__SELECTED:
+			case MenuPackageImpl.ITEM__TYPE:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return UIElementsEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/MenuContributionItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/MenuContributionItemProvider.java
new file mode 100644
index 0000000..6a0ea51
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/MenuContributionItemProvider.java
@@ -0,0 +1,182 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *      IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.menu.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.provider.UIElementsEditPlugin;
+
+import org.eclipse.e4.ui.model.application.ui.menu.MMenuContribution;
+
+import org.eclipse.e4.ui.model.application.ui.menu.impl.MenuPackageImpl;
+
+import org.eclipse.e4.ui.model.application.ui.provider.ElementContainerItemProvider;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.ui.menu.MMenuContribution} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class MenuContributionItemProvider extends ElementContainerItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public MenuContributionItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addPositionInParentPropertyDescriptor(object);
+			addParentIdPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Position In Parent feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addPositionInParentPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_MenuContribution_positionInParent_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_MenuContribution_positionInParent_feature", "_UI_MenuContribution_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 MenuPackageImpl.Literals.MENU_CONTRIBUTION__POSITION_IN_PARENT,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Parent Id feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addParentIdPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_MenuContribution_parentId_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_MenuContribution_parentId_feature", "_UI_MenuContribution_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 MenuPackageImpl.Literals.MENU_CONTRIBUTION__PARENT_ID,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns MenuContribution.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/MenuContribution")); //$NON-NLS-1$
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((MMenuContribution)object).getElementId();
+		return label == null || label.length() == 0 ?
+			getString("_UI_MenuContribution_type") : //$NON-NLS-1$
+			getString("_UI_MenuContribution_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(MMenuContribution.class)) {
+			case MenuPackageImpl.MENU_CONTRIBUTION__POSITION_IN_PARENT:
+			case MenuPackageImpl.MENU_CONTRIBUTION__PARENT_ID:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return UIElementsEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/MenuElementItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/MenuElementItemProvider.java
new file mode 100644
index 0000000..856e209
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/MenuElementItemProvider.java
@@ -0,0 +1,269 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *      IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.menu.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.provider.UIElementsEditPlugin;
+
+import org.eclipse.e4.ui.model.application.ui.impl.UiPackageImpl;
+
+import org.eclipse.e4.ui.model.application.ui.menu.MMenuElement;
+
+import org.eclipse.e4.ui.model.application.ui.menu.impl.MenuPackageImpl;
+
+import org.eclipse.e4.ui.model.application.ui.provider.UIElementItemProvider;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.ui.menu.MMenuElement} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class MenuElementItemProvider extends UIElementItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public MenuElementItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addLabelPropertyDescriptor(object);
+			addIconURIPropertyDescriptor(object);
+			addTooltipPropertyDescriptor(object);
+			addLocalizedLabelPropertyDescriptor(object);
+			addLocalizedTooltipPropertyDescriptor(object);
+			addMnemonicsPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Label feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addLabelPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_UILabel_label_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_UILabel_label_feature", "_UI_UILabel_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 UiPackageImpl.Literals.UI_LABEL__LABEL,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Icon URI feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addIconURIPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_UILabel_iconURI_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_UILabel_iconURI_feature", "_UI_UILabel_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 UiPackageImpl.Literals.UI_LABEL__ICON_URI,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Tooltip feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addTooltipPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_UILabel_tooltip_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_UILabel_tooltip_feature", "_UI_UILabel_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 UiPackageImpl.Literals.UI_LABEL__TOOLTIP,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Localized Label feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addLocalizedLabelPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_UILabel_localizedLabel_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_UILabel_localizedLabel_feature", "_UI_UILabel_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 UiPackageImpl.Literals.UI_LABEL__LOCALIZED_LABEL,
+				 false,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Localized Tooltip feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addLocalizedTooltipPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_UILabel_localizedTooltip_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_UILabel_localizedTooltip_feature", "_UI_UILabel_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 UiPackageImpl.Literals.UI_LABEL__LOCALIZED_TOOLTIP,
+				 false,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Mnemonics feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addMnemonicsPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_MenuElement_mnemonics_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_MenuElement_mnemonics_feature", "_UI_MenuElement_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 MenuPackageImpl.Literals.MENU_ELEMENT__MNEMONICS,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((MMenuElement)object).getLabel();
+		return label == null || label.length() == 0 ?
+			getString("_UI_MenuElement_type") : //$NON-NLS-1$
+			getString("_UI_MenuElement_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(MMenuElement.class)) {
+			case MenuPackageImpl.MENU_ELEMENT__LABEL:
+			case MenuPackageImpl.MENU_ELEMENT__ICON_URI:
+			case MenuPackageImpl.MENU_ELEMENT__TOOLTIP:
+			case MenuPackageImpl.MENU_ELEMENT__LOCALIZED_LABEL:
+			case MenuPackageImpl.MENU_ELEMENT__LOCALIZED_TOOLTIP:
+			case MenuPackageImpl.MENU_ELEMENT__MNEMONICS:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return UIElementsEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/MenuItemItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/MenuItemItemProvider.java
new file mode 100644
index 0000000..3d886b3
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/MenuItemItemProvider.java
@@ -0,0 +1,141 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *      IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.menu.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.ui.menu.MMenuItem;
+
+import org.eclipse.e4.ui.model.application.ui.menu.impl.MenuPackageImpl;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.ui.menu.MMenuItem} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class MenuItemItemProvider extends ItemItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public MenuItemItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addMnemonicsPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Mnemonics feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addMnemonicsPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_MenuElement_mnemonics_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_MenuElement_mnemonics_feature", "_UI_MenuElement_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 MenuPackageImpl.Literals.MENU_ELEMENT__MNEMONICS,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns MenuItem.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/MenuItem")); //$NON-NLS-1$
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((MMenuItem)object).getLabel();
+		return label == null || label.length() == 0 ?
+			getString("_UI_MenuItem_type") : //$NON-NLS-1$
+			getString("_UI_MenuItem_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(MMenuItem.class)) {
+			case MenuPackageImpl.MENU_ITEM__MNEMONICS:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/MenuItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/MenuItemProvider.java
new file mode 100644
index 0000000..b3d4859
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/MenuItemProvider.java
@@ -0,0 +1,353 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *      IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.menu.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.MApplicationFactory;
+
+import org.eclipse.e4.ui.model.application.ui.advanced.MAdvancedFactory;
+
+import org.eclipse.e4.ui.model.application.ui.basic.MBasicFactory;
+
+import org.eclipse.e4.ui.model.application.ui.impl.UiPackageImpl;
+
+import org.eclipse.e4.ui.model.application.ui.menu.MMenu;
+import org.eclipse.e4.ui.model.application.ui.menu.MMenuFactory;
+
+import org.eclipse.e4.ui.model.application.ui.menu.impl.MenuPackageImpl;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.ui.menu.MMenu} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class MenuItemProvider extends MenuElementItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public MenuItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addSelectedElementPropertyDescriptor(object);
+			addEnabledPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Selected Element feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addSelectedElementPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_ElementContainer_selectedElement_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_ElementContainer_selectedElement_feature", "_UI_ElementContainer_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 UiPackageImpl.Literals.ELEMENT_CONTAINER__SELECTED_ELEMENT,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Enabled feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addEnabledPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Menu_enabled_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_Menu_enabled_feature", "_UI_Menu_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 MenuPackageImpl.Literals.MENU__ENABLED,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns Menu.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/Menu")); //$NON-NLS-1$
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((MMenu)object).getLabel();
+		return label == null || label.length() == 0 ?
+			getString("_UI_Menu_type") : //$NON-NLS-1$
+			getString("_UI_Menu_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(MMenu.class)) {
+			case MenuPackageImpl.MENU__ENABLED:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+			case MenuPackageImpl.MENU__CHILDREN:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MMenuFactory.INSTANCE.createMenuSeparator()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MMenuFactory.INSTANCE.createMenu()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MMenuFactory.INSTANCE.createMenuContribution()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MMenuFactory.INSTANCE.createPopupMenu()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MMenuFactory.INSTANCE.createDirectMenuItem()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MMenuFactory.INSTANCE.createHandledMenuItem()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MMenuFactory.INSTANCE.createToolBar()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MMenuFactory.INSTANCE.createToolControl()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MMenuFactory.INSTANCE.createHandledToolItem()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MMenuFactory.INSTANCE.createDirectToolItem()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MMenuFactory.INSTANCE.createToolBarSeparator()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MMenuFactory.INSTANCE.createToolBarContribution()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MMenuFactory.INSTANCE.createTrimContribution()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MMenuFactory.INSTANCE.createDynamicMenuContribution()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MApplicationFactory.INSTANCE.createApplication()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MBasicFactory.INSTANCE.createPart()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MBasicFactory.INSTANCE.createCompositePart()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MBasicFactory.INSTANCE.createInputPart()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MBasicFactory.INSTANCE.createPartStack()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MBasicFactory.INSTANCE.createPartSashContainer()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MBasicFactory.INSTANCE.createWindow()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MBasicFactory.INSTANCE.createTrimmedWindow()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MBasicFactory.INSTANCE.createTrimBar()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MBasicFactory.INSTANCE.createDialog()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MBasicFactory.INSTANCE.createWizardDialog()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MAdvancedFactory.INSTANCE.createPlaceholder()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MAdvancedFactory.INSTANCE.createPerspective()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MAdvancedFactory.INSTANCE.createPerspectiveStack()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MAdvancedFactory.INSTANCE.createArea()));
+	}
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/MenuItemProviderAdapterFactory.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/MenuItemProviderAdapterFactory.java
new file mode 100644
index 0000000..574b9af
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/MenuItemProviderAdapterFactory.java
@@ -0,0 +1,519 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *      IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.menu.provider;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.e4.ui.model.application.ui.menu.util.MenuAdapterFactory;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.edit.provider.ChangeNotifier;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.IChangeNotifier;
+import org.eclipse.emf.edit.provider.IDisposable;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.INotifyChangedListener;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the factory that is used to provide the interfaces needed to support Viewers.
+ * The adapters generated by this factory convert EMF adapter notifications into calls to {@link #fireNotifyChanged fireNotifyChanged}.
+ * The adapters also support Eclipse property sheets.
+ * Note that most of the adapters are shared among multiple instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class MenuItemProviderAdapterFactory extends MenuAdapterFactory implements ComposeableAdapterFactory, IChangeNotifier, IDisposable {
+	/**
+	 * This keeps track of the root adapter factory that delegates to this adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ComposedAdapterFactory parentAdapterFactory;
+
+	/**
+	 * This is used to implement {@link org.eclipse.emf.edit.provider.IChangeNotifier}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IChangeNotifier changeNotifier = new ChangeNotifier();
+
+	/**
+	 * This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<Object> supportedTypes = new ArrayList<Object>();
+
+	/**
+	 * This constructs an instance.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public MenuItemProviderAdapterFactory() {
+		supportedTypes.add(IEditingDomainItemProvider.class);
+		supportedTypes.add(IStructuredItemContentProvider.class);
+		supportedTypes.add(ITreeItemContentProvider.class);
+		supportedTypes.add(IItemLabelProvider.class);
+		supportedTypes.add(IItemPropertySource.class);
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.ui.menu.MMenuSeparator} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected MenuSeparatorItemProvider menuSeparatorItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.e4.ui.model.application.ui.menu.MMenuSeparator}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createMenuSeparatorAdapter() {
+		if (menuSeparatorItemProvider == null) {
+			menuSeparatorItemProvider = new MenuSeparatorItemProvider(this);
+		}
+
+		return menuSeparatorItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.ui.menu.MMenu} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected MenuItemProvider menuItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.e4.ui.model.application.ui.menu.MMenu}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createMenuAdapter() {
+		if (menuItemProvider == null) {
+			menuItemProvider = new MenuItemProvider(this);
+		}
+
+		return menuItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.ui.menu.MMenuContribution} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected MenuContributionItemProvider menuContributionItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.e4.ui.model.application.ui.menu.MMenuContribution}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createMenuContributionAdapter() {
+		if (menuContributionItemProvider == null) {
+			menuContributionItemProvider = new MenuContributionItemProvider(this);
+		}
+
+		return menuContributionItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.ui.menu.MPopupMenu} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected PopupMenuItemProvider popupMenuItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.e4.ui.model.application.ui.menu.MPopupMenu}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createPopupMenuAdapter() {
+		if (popupMenuItemProvider == null) {
+			popupMenuItemProvider = new PopupMenuItemProvider(this);
+		}
+
+		return popupMenuItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.ui.menu.MDirectMenuItem} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected DirectMenuItemItemProvider directMenuItemItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.e4.ui.model.application.ui.menu.MDirectMenuItem}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createDirectMenuItemAdapter() {
+		if (directMenuItemItemProvider == null) {
+			directMenuItemItemProvider = new DirectMenuItemItemProvider(this);
+		}
+
+		return directMenuItemItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.ui.menu.MHandledMenuItem} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected HandledMenuItemItemProvider handledMenuItemItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.e4.ui.model.application.ui.menu.MHandledMenuItem}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createHandledMenuItemAdapter() {
+		if (handledMenuItemItemProvider == null) {
+			handledMenuItemItemProvider = new HandledMenuItemItemProvider(this);
+		}
+
+		return handledMenuItemItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.ui.menu.MToolBar} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ToolBarItemProvider toolBarItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.e4.ui.model.application.ui.menu.MToolBar}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createToolBarAdapter() {
+		if (toolBarItemProvider == null) {
+			toolBarItemProvider = new ToolBarItemProvider(this);
+		}
+
+		return toolBarItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.ui.menu.MToolControl} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ToolControlItemProvider toolControlItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.e4.ui.model.application.ui.menu.MToolControl}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createToolControlAdapter() {
+		if (toolControlItemProvider == null) {
+			toolControlItemProvider = new ToolControlItemProvider(this);
+		}
+
+		return toolControlItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.ui.menu.MHandledToolItem} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected HandledToolItemItemProvider handledToolItemItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.e4.ui.model.application.ui.menu.MHandledToolItem}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createHandledToolItemAdapter() {
+		if (handledToolItemItemProvider == null) {
+			handledToolItemItemProvider = new HandledToolItemItemProvider(this);
+		}
+
+		return handledToolItemItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.ui.menu.MDirectToolItem} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected DirectToolItemItemProvider directToolItemItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.e4.ui.model.application.ui.menu.MDirectToolItem}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createDirectToolItemAdapter() {
+		if (directToolItemItemProvider == null) {
+			directToolItemItemProvider = new DirectToolItemItemProvider(this);
+		}
+
+		return directToolItemItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.ui.menu.MToolBarSeparator} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ToolBarSeparatorItemProvider toolBarSeparatorItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.e4.ui.model.application.ui.menu.MToolBarSeparator}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createToolBarSeparatorAdapter() {
+		if (toolBarSeparatorItemProvider == null) {
+			toolBarSeparatorItemProvider = new ToolBarSeparatorItemProvider(this);
+		}
+
+		return toolBarSeparatorItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.ui.menu.MToolBarContribution} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ToolBarContributionItemProvider toolBarContributionItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.e4.ui.model.application.ui.menu.MToolBarContribution}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createToolBarContributionAdapter() {
+		if (toolBarContributionItemProvider == null) {
+			toolBarContributionItemProvider = new ToolBarContributionItemProvider(this);
+		}
+
+		return toolBarContributionItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.ui.menu.MTrimContribution} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TrimContributionItemProvider trimContributionItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.e4.ui.model.application.ui.menu.MTrimContribution}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createTrimContributionAdapter() {
+		if (trimContributionItemProvider == null) {
+			trimContributionItemProvider = new TrimContributionItemProvider(this);
+		}
+
+		return trimContributionItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.ui.menu.MDynamicMenuContribution} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected DynamicMenuContributionItemProvider dynamicMenuContributionItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.e4.ui.model.application.ui.menu.MDynamicMenuContribution}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createDynamicMenuContributionAdapter() {
+		if (dynamicMenuContributionItemProvider == null) {
+			dynamicMenuContributionItemProvider = new DynamicMenuContributionItemProvider(this);
+		}
+
+		return dynamicMenuContributionItemProvider;
+	}
+
+	/**
+	 * This returns the root adapter factory that contains this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ComposeableAdapterFactory getRootAdapterFactory() {
+		return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory();
+	}
+
+	/**
+	 * This sets the composed adapter factory that contains this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory) {
+		this.parentAdapterFactory = parentAdapterFactory;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object type) {
+		return supportedTypes.contains(type) || super.isFactoryForType(type);
+	}
+
+	/**
+	 * This implementation substitutes the factory itself as the key for the adapter.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter adapt(Notifier notifier, Object type) {
+		return super.adapt(notifier, this);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object adapt(Object object, Object type) {
+		if (isFactoryForType(type)) {
+			Object adapter = super.adapt(object, type);
+			if (!(type instanceof Class<?>) || (((Class<?>)type).isInstance(adapter))) {
+				return adapter;
+			}
+		}
+
+		return null;
+	}
+
+	/**
+	 * This adds a listener.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void addListener(INotifyChangedListener notifyChangedListener) {
+		changeNotifier.addListener(notifyChangedListener);
+	}
+
+	/**
+	 * This removes a listener.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void removeListener(INotifyChangedListener notifyChangedListener) {
+		changeNotifier.removeListener(notifyChangedListener);
+	}
+
+	/**
+	 * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void fireNotifyChanged(Notification notification) {
+		changeNotifier.fireNotifyChanged(notification);
+
+		if (parentAdapterFactory != null) {
+			parentAdapterFactory.fireNotifyChanged(notification);
+		}
+	}
+
+	/**
+	 * This disposes all of the item providers created by this factory. 
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void dispose() {
+		if (menuSeparatorItemProvider != null) menuSeparatorItemProvider.dispose();
+		if (menuItemProvider != null) menuItemProvider.dispose();
+		if (menuContributionItemProvider != null) menuContributionItemProvider.dispose();
+		if (popupMenuItemProvider != null) popupMenuItemProvider.dispose();
+		if (directMenuItemItemProvider != null) directMenuItemItemProvider.dispose();
+		if (handledMenuItemItemProvider != null) handledMenuItemItemProvider.dispose();
+		if (toolBarItemProvider != null) toolBarItemProvider.dispose();
+		if (toolControlItemProvider != null) toolControlItemProvider.dispose();
+		if (handledToolItemItemProvider != null) handledToolItemItemProvider.dispose();
+		if (directToolItemItemProvider != null) directToolItemItemProvider.dispose();
+		if (toolBarSeparatorItemProvider != null) toolBarSeparatorItemProvider.dispose();
+		if (toolBarContributionItemProvider != null) toolBarContributionItemProvider.dispose();
+		if (trimContributionItemProvider != null) trimContributionItemProvider.dispose();
+		if (dynamicMenuContributionItemProvider != null) dynamicMenuContributionItemProvider.dispose();
+	}
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/MenuSeparatorItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/MenuSeparatorItemProvider.java
new file mode 100644
index 0000000..712a02a
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/MenuSeparatorItemProvider.java
@@ -0,0 +1,107 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *      IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.menu.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.ui.menu.MMenuSeparator;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.ui.menu.MMenuSeparator} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class MenuSeparatorItemProvider extends MenuElementItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public MenuSeparatorItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns MenuSeparator.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/MenuSeparator")); //$NON-NLS-1$
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((MMenuSeparator)object).getLabel();
+		return label == null || label.length() == 0 ?
+			getString("_UI_MenuSeparator_type") : //$NON-NLS-1$
+			getString("_UI_MenuSeparator_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/PopupMenuItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/PopupMenuItemProvider.java
new file mode 100644
index 0000000..f7afcc7
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/PopupMenuItemProvider.java
@@ -0,0 +1,235 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *      IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.menu.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.MApplicationFactory;
+
+import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
+
+import org.eclipse.e4.ui.model.application.ui.impl.UiPackageImpl;
+
+import org.eclipse.e4.ui.model.application.ui.menu.MPopupMenu;
+
+import org.eclipse.e4.ui.model.application.ui.menu.impl.MenuPackageImpl;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EFactory;
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.ui.menu.MPopupMenu} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class PopupMenuItemProvider extends MenuItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public PopupMenuItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addContextPropertyDescriptor(object);
+			addVariablesPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Context feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addContextPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Context_context_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_Context_context_feature", "_UI_Context_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 UiPackageImpl.Literals.CONTEXT__CONTEXT,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Variables feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addVariablesPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Context_variables_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_Context_variables_feature", "_UI_Context_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 UiPackageImpl.Literals.CONTEXT__VARIABLES,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(UiPackageImpl.Literals.CONTEXT__PROPERTIES);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns PopupMenu.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/PopupMenu")); //$NON-NLS-1$
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((MPopupMenu)object).getElementId();
+		return label == null || label.length() == 0 ?
+			getString("_UI_PopupMenu_type") : //$NON-NLS-1$
+			getString("_UI_PopupMenu_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(MPopupMenu.class)) {
+			case MenuPackageImpl.POPUP_MENU__CONTEXT:
+			case MenuPackageImpl.POPUP_MENU__VARIABLES:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+			case MenuPackageImpl.POPUP_MENU__PROPERTIES:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.CONTEXT__PROPERTIES,
+				 ((EFactory)MApplicationFactory.INSTANCE).create(ApplicationPackageImpl.Literals.STRING_TO_STRING_MAP)));
+	}
+
+	/**
+	 * This returns the label text for {@link org.eclipse.emf.edit.command.CreateChildCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getCreateChildText(Object owner, Object feature, Object child, Collection<?> selection) {
+		Object childFeature = feature;
+		Object childObject = child;
+
+		boolean qualify =
+			childFeature == ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__PERSISTED_STATE ||
+			childFeature == UiPackageImpl.Literals.CONTEXT__PROPERTIES;
+
+		if (qualify) {
+			return getString
+				("_UI_CreateChild_text2", //$NON-NLS-1$
+				 new Object[] { getTypeText(childObject), getFeatureText(childFeature), getTypeText(owner) });
+		}
+		return super.getCreateChildText(owner, feature, child, selection);
+	}
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/ToolBarContributionItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/ToolBarContributionItemProvider.java
new file mode 100644
index 0000000..32eacd2
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/ToolBarContributionItemProvider.java
@@ -0,0 +1,182 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *      IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.menu.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.provider.UIElementsEditPlugin;
+
+import org.eclipse.e4.ui.model.application.ui.menu.MToolBarContribution;
+
+import org.eclipse.e4.ui.model.application.ui.menu.impl.MenuPackageImpl;
+
+import org.eclipse.e4.ui.model.application.ui.provider.ElementContainerItemProvider;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.ui.menu.MToolBarContribution} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ToolBarContributionItemProvider extends ElementContainerItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ToolBarContributionItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addParentIdPropertyDescriptor(object);
+			addPositionInParentPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Parent Id feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addParentIdPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_ToolBarContribution_parentId_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_ToolBarContribution_parentId_feature", "_UI_ToolBarContribution_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 MenuPackageImpl.Literals.TOOL_BAR_CONTRIBUTION__PARENT_ID,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Position In Parent feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addPositionInParentPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_ToolBarContribution_positionInParent_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_ToolBarContribution_positionInParent_feature", "_UI_ToolBarContribution_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 MenuPackageImpl.Literals.TOOL_BAR_CONTRIBUTION__POSITION_IN_PARENT,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns ToolBarContribution.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/ToolBarContribution")); //$NON-NLS-1$
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((MToolBarContribution)object).getElementId();
+		return label == null || label.length() == 0 ?
+			getString("_UI_ToolBarContribution_type") : //$NON-NLS-1$
+			getString("_UI_ToolBarContribution_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(MToolBarContribution.class)) {
+			case MenuPackageImpl.TOOL_BAR_CONTRIBUTION__PARENT_ID:
+			case MenuPackageImpl.TOOL_BAR_CONTRIBUTION__POSITION_IN_PARENT:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return UIElementsEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/ToolBarElementItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/ToolBarElementItemProvider.java
new file mode 100644
index 0000000..2908a25
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/ToolBarElementItemProvider.java
@@ -0,0 +1,113 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *      IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.menu.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.provider.UIElementsEditPlugin;
+
+import org.eclipse.e4.ui.model.application.ui.menu.MToolBarElement;
+
+import org.eclipse.e4.ui.model.application.ui.provider.UIElementItemProvider;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.ui.menu.MToolBarElement} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ToolBarElementItemProvider extends UIElementItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ToolBarElementItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((MToolBarElement)object).getElementId();
+		return label == null || label.length() == 0 ?
+			getString("_UI_ToolBarElement_type") : //$NON-NLS-1$
+			getString("_UI_ToolBarElement_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return UIElementsEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/ToolBarItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/ToolBarItemProvider.java
new file mode 100644
index 0000000..753c05c
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/ToolBarItemProvider.java
@@ -0,0 +1,124 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *      IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.menu.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.provider.UIElementsEditPlugin;
+
+import org.eclipse.e4.ui.model.application.ui.menu.MToolBar;
+
+import org.eclipse.e4.ui.model.application.ui.provider.ElementContainerItemProvider;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.ui.menu.MToolBar} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ToolBarItemProvider extends ElementContainerItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ToolBarItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns ToolBar.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/ToolBar")); //$NON-NLS-1$
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((MToolBar)object).getElementId();
+		return label == null || label.length() == 0 ?
+			getString("_UI_ToolBar_type") : //$NON-NLS-1$
+			getString("_UI_ToolBar_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return UIElementsEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/ToolBarSeparatorItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/ToolBarSeparatorItemProvider.java
new file mode 100644
index 0000000..94fbc5c
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/ToolBarSeparatorItemProvider.java
@@ -0,0 +1,107 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *      IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.menu.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.ui.menu.MToolBarSeparator;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.ui.menu.MToolBarSeparator} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ToolBarSeparatorItemProvider extends ToolBarElementItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ToolBarSeparatorItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns ToolBarSeparator.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/ToolBarSeparator")); //$NON-NLS-1$
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((MToolBarSeparator)object).getElementId();
+		return label == null || label.length() == 0 ?
+			getString("_UI_ToolBarSeparator_type") : //$NON-NLS-1$
+			getString("_UI_ToolBarSeparator_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/ToolControlItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/ToolControlItemProvider.java
new file mode 100644
index 0000000..b14dee4
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/ToolControlItemProvider.java
@@ -0,0 +1,167 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *      IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.menu.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
+
+import org.eclipse.e4.ui.model.application.ui.menu.MToolControl;
+
+import org.eclipse.e4.ui.model.application.ui.menu.impl.MenuPackageImpl;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.ui.menu.MToolControl} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ToolControlItemProvider extends ToolBarElementItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ToolControlItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addContributionURIPropertyDescriptor(object);
+			addObjectPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Contribution URI feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addContributionURIPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Contribution_contributionURI_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_Contribution_contributionURI_feature", "_UI_Contribution_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 ApplicationPackageImpl.Literals.CONTRIBUTION__CONTRIBUTION_URI,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Object feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addObjectPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Contribution_object_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_Contribution_object_feature", "_UI_Contribution_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 ApplicationPackageImpl.Literals.CONTRIBUTION__OBJECT,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns ToolControl.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/ToolControl")); //$NON-NLS-1$
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((MToolControl)object).getElementId();
+		return label == null || label.length() == 0 ?
+			getString("_UI_ToolControl_type") : //$NON-NLS-1$
+			getString("_UI_ToolControl_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(MToolControl.class)) {
+			case MenuPackageImpl.TOOL_CONTROL__CONTRIBUTION_URI:
+			case MenuPackageImpl.TOOL_CONTROL__OBJECT:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/ToolItemItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/ToolItemItemProvider.java
new file mode 100644
index 0000000..cd79bfa
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/ToolItemItemProvider.java
@@ -0,0 +1,159 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *      IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.menu.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.ui.menu.MMenuFactory;
+import org.eclipse.e4.ui.model.application.ui.menu.MToolItem;
+
+import org.eclipse.e4.ui.model.application.ui.menu.impl.MenuPackageImpl;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.ui.menu.MToolItem} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ToolItemItemProvider extends ItemItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ToolItemItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(MenuPackageImpl.Literals.TOOL_ITEM__MENU);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns ToolItem.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/ToolItem")); //$NON-NLS-1$
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((MToolItem)object).getElementId();
+		return label == null || label.length() == 0 ?
+			getString("_UI_ToolItem_type") : //$NON-NLS-1$
+			getString("_UI_ToolItem_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(MToolItem.class)) {
+			case MenuPackageImpl.TOOL_ITEM__MENU:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(MenuPackageImpl.Literals.TOOL_ITEM__MENU,
+				 MMenuFactory.INSTANCE.createMenu()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(MenuPackageImpl.Literals.TOOL_ITEM__MENU,
+				 MMenuFactory.INSTANCE.createPopupMenu()));
+	}
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/TrimContributionItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/TrimContributionItemProvider.java
new file mode 100644
index 0000000..9762fc8
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/TrimContributionItemProvider.java
@@ -0,0 +1,182 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *      IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.menu.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.provider.UIElementsEditPlugin;
+
+import org.eclipse.e4.ui.model.application.ui.menu.MTrimContribution;
+
+import org.eclipse.e4.ui.model.application.ui.menu.impl.MenuPackageImpl;
+
+import org.eclipse.e4.ui.model.application.ui.provider.ElementContainerItemProvider;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.ui.menu.MTrimContribution} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TrimContributionItemProvider extends ElementContainerItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public TrimContributionItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addParentIdPropertyDescriptor(object);
+			addPositionInParentPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Parent Id feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addParentIdPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_TrimContribution_parentId_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_TrimContribution_parentId_feature", "_UI_TrimContribution_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 MenuPackageImpl.Literals.TRIM_CONTRIBUTION__PARENT_ID,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Position In Parent feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addPositionInParentPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_TrimContribution_positionInParent_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_TrimContribution_positionInParent_feature", "_UI_TrimContribution_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 MenuPackageImpl.Literals.TRIM_CONTRIBUTION__POSITION_IN_PARENT,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns TrimContribution.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/TrimContribution")); //$NON-NLS-1$
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((MTrimContribution)object).getElementId();
+		return label == null || label.length() == 0 ?
+			getString("_UI_TrimContribution_type") : //$NON-NLS-1$
+			getString("_UI_TrimContribution_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(MTrimContribution.class)) {
+			case MenuPackageImpl.TRIM_CONTRIBUTION__PARENT_ID:
+			case MenuPackageImpl.TRIM_CONTRIBUTION__POSITION_IN_PARENT:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return UIElementsEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/provider/CoreExpressionItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/provider/CoreExpressionItemProvider.java
new file mode 100644
index 0000000..7943a40
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/provider/CoreExpressionItemProvider.java
@@ -0,0 +1,164 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *      IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.ui.MCoreExpression;
+
+import org.eclipse.e4.ui.model.application.ui.impl.UiPackageImpl;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.ui.MCoreExpression} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class CoreExpressionItemProvider extends ExpressionItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CoreExpressionItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addCoreExpressionIdPropertyDescriptor(object);
+			addCoreExpressionPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Core Expression Id feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addCoreExpressionIdPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_CoreExpression_coreExpressionId_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_CoreExpression_coreExpressionId_feature", "_UI_CoreExpression_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 UiPackageImpl.Literals.CORE_EXPRESSION__CORE_EXPRESSION_ID,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Core Expression feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addCoreExpressionPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_CoreExpression_coreExpression_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_CoreExpression_coreExpression_feature", "_UI_CoreExpression_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 UiPackageImpl.Literals.CORE_EXPRESSION__CORE_EXPRESSION,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns CoreExpression.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/CoreExpression.png")); //$NON-NLS-1$
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((MCoreExpression)object).getElementId();
+		return label == null || label.length() == 0 ?
+			getString("_UI_CoreExpression_type") : //$NON-NLS-1$
+			getString("_UI_CoreExpression_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(MCoreExpression.class)) {
+			case UiPackageImpl.CORE_EXPRESSION__CORE_EXPRESSION_ID:
+			case UiPackageImpl.CORE_EXPRESSION__CORE_EXPRESSION:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/provider/ElementContainerItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/provider/ElementContainerItemProvider.java
new file mode 100644
index 0000000..77740ed
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/provider/ElementContainerItemProvider.java
@@ -0,0 +1,314 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *      IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.MApplicationFactory;
+
+import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+
+import org.eclipse.e4.ui.model.application.ui.advanced.MAdvancedFactory;
+
+import org.eclipse.e4.ui.model.application.ui.basic.MBasicFactory;
+
+import org.eclipse.e4.ui.model.application.ui.impl.UiPackageImpl;
+
+import org.eclipse.e4.ui.model.application.ui.menu.MMenuFactory;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.ui.MElementContainer} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ElementContainerItemProvider extends UIElementItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ElementContainerItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addSelectedElementPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Selected Element feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addSelectedElementPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_ElementContainer_selectedElement_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_ElementContainer_selectedElement_feature", "_UI_ElementContainer_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 UiPackageImpl.Literals.ELEMENT_CONTAINER__SELECTED_ELEMENT,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((MElementContainer<?>)object).getElementId();
+		return label == null || label.length() == 0 ?
+			getString("_UI_ElementContainer_type") : //$NON-NLS-1$
+			getString("_UI_ElementContainer_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(MElementContainer.class)) {
+			case UiPackageImpl.ELEMENT_CONTAINER__CHILDREN:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MApplicationFactory.INSTANCE.createApplication()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MMenuFactory.INSTANCE.createMenuSeparator()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MMenuFactory.INSTANCE.createMenu()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MMenuFactory.INSTANCE.createMenuContribution()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MMenuFactory.INSTANCE.createPopupMenu()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MMenuFactory.INSTANCE.createDirectMenuItem()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MMenuFactory.INSTANCE.createHandledMenuItem()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MMenuFactory.INSTANCE.createToolBar()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MMenuFactory.INSTANCE.createToolControl()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MMenuFactory.INSTANCE.createHandledToolItem()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MMenuFactory.INSTANCE.createDirectToolItem()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MMenuFactory.INSTANCE.createToolBarSeparator()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MMenuFactory.INSTANCE.createToolBarContribution()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MMenuFactory.INSTANCE.createTrimContribution()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MMenuFactory.INSTANCE.createDynamicMenuContribution()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MBasicFactory.INSTANCE.createPart()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MBasicFactory.INSTANCE.createCompositePart()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MBasicFactory.INSTANCE.createInputPart()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MBasicFactory.INSTANCE.createPartStack()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MBasicFactory.INSTANCE.createPartSashContainer()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MBasicFactory.INSTANCE.createWindow()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MBasicFactory.INSTANCE.createTrimmedWindow()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MBasicFactory.INSTANCE.createTrimBar()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MBasicFactory.INSTANCE.createDialog()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MBasicFactory.INSTANCE.createWizardDialog()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MAdvancedFactory.INSTANCE.createPlaceholder()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MAdvancedFactory.INSTANCE.createPerspective()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MAdvancedFactory.INSTANCE.createPerspectiveStack()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+				 MAdvancedFactory.INSTANCE.createArea()));
+	}
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/provider/ExpressionItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/provider/ExpressionItemProvider.java
new file mode 100644
index 0000000..1c1947e
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/provider/ExpressionItemProvider.java
@@ -0,0 +1,112 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *      IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.provider.ApplicationElementItemProvider;
+import org.eclipse.e4.ui.model.application.provider.UIElementsEditPlugin;
+
+import org.eclipse.e4.ui.model.application.ui.MExpression;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.ui.MExpression} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ExpressionItemProvider extends ApplicationElementItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ExpressionItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((MExpression)object).getElementId();
+		return label == null || label.length() == 0 ?
+			getString("_UI_Expression_type") : //$NON-NLS-1$
+			getString("_UI_Expression_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return UIElementsEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/provider/GenericStackItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/provider/GenericStackItemProvider.java
new file mode 100644
index 0000000..3041057
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/provider/GenericStackItemProvider.java
@@ -0,0 +1,96 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *      IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.ui.MGenericStack;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.ui.MGenericStack} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class GenericStackItemProvider extends ElementContainerItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public GenericStackItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((MGenericStack<?>)object).getElementId();
+		return label == null || label.length() == 0 ?
+			getString("_UI_GenericStack_type") : //$NON-NLS-1$
+			getString("_UI_GenericStack_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/provider/GenericTileItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/provider/GenericTileItemProvider.java
new file mode 100644
index 0000000..7e937de
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/provider/GenericTileItemProvider.java
@@ -0,0 +1,130 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *      IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.ui.MGenericTile;
+
+import org.eclipse.e4.ui.model.application.ui.impl.UiPackageImpl;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.ui.MGenericTile} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class GenericTileItemProvider extends ElementContainerItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public GenericTileItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addHorizontalPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Horizontal feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addHorizontalPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_GenericTile_horizontal_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_GenericTile_horizontal_feature", "_UI_GenericTile_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 UiPackageImpl.Literals.GENERIC_TILE__HORIZONTAL,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((MGenericTile<?>)object).getElementId();
+		return label == null || label.length() == 0 ?
+			getString("_UI_GenericTile_type") : //$NON-NLS-1$
+			getString("_UI_GenericTile_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(MGenericTile.class)) {
+			case UiPackageImpl.GENERIC_TILE__HORIZONTAL:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/provider/GenericTrimContainerItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/provider/GenericTrimContainerItemProvider.java
new file mode 100644
index 0000000..d6cd7e2
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/provider/GenericTrimContainerItemProvider.java
@@ -0,0 +1,130 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *      IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.ui.MGenericTrimContainer;
+
+import org.eclipse.e4.ui.model.application.ui.impl.UiPackageImpl;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.ui.MGenericTrimContainer} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class GenericTrimContainerItemProvider extends ElementContainerItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public GenericTrimContainerItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addSidePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Side feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addSidePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_GenericTrimContainer_side_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_GenericTrimContainer_side_feature", "_UI_GenericTrimContainer_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 UiPackageImpl.Literals.GENERIC_TRIM_CONTAINER__SIDE,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((MGenericTrimContainer<?>)object).getElementId();
+		return label == null || label.length() == 0 ?
+			getString("_UI_GenericTrimContainer_type") : //$NON-NLS-1$
+			getString("_UI_GenericTrimContainer_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(MGenericTrimContainer.class)) {
+			case UiPackageImpl.GENERIC_TRIM_CONTAINER__SIDE:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/provider/UIElementItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/provider/UIElementItemProvider.java
new file mode 100644
index 0000000..e86831c
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/provider/UIElementItemProvider.java
@@ -0,0 +1,332 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *      IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.provider.ApplicationElementItemProvider;
+import org.eclipse.e4.ui.model.application.provider.UIElementsEditPlugin;
+
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.model.application.ui.MUiFactory;
+
+import org.eclipse.e4.ui.model.application.ui.impl.UiPackageImpl;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.ui.MUIElement} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class UIElementItemProvider extends ApplicationElementItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public UIElementItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addToBeRenderedPropertyDescriptor(object);
+			addOnTopPropertyDescriptor(object);
+			addVisiblePropertyDescriptor(object);
+			addContainerDataPropertyDescriptor(object);
+			addCurSharedRefPropertyDescriptor(object);
+			addAccessibilityPhrasePropertyDescriptor(object);
+			addLocalizedAccessibilityPhrasePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the To Be Rendered feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addToBeRenderedPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_UIElement_toBeRendered_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_UIElement_toBeRendered_feature", "_UI_UIElement_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 UiPackageImpl.Literals.UI_ELEMENT__TO_BE_RENDERED,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the On Top feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addOnTopPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_UIElement_onTop_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_UIElement_onTop_feature", "_UI_UIElement_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 UiPackageImpl.Literals.UI_ELEMENT__ON_TOP,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Visible feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addVisiblePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_UIElement_visible_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_UIElement_visible_feature", "_UI_UIElement_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 UiPackageImpl.Literals.UI_ELEMENT__VISIBLE,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Container Data feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addContainerDataPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_UIElement_containerData_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_UIElement_containerData_feature", "_UI_UIElement_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 UiPackageImpl.Literals.UI_ELEMENT__CONTAINER_DATA,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Cur Shared Ref feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addCurSharedRefPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_UIElement_curSharedRef_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_UIElement_curSharedRef_feature", "_UI_UIElement_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 UiPackageImpl.Literals.UI_ELEMENT__CUR_SHARED_REF,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Accessibility Phrase feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addAccessibilityPhrasePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_UIElement_accessibilityPhrase_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_UIElement_accessibilityPhrase_feature", "_UI_UIElement_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 UiPackageImpl.Literals.UI_ELEMENT__ACCESSIBILITY_PHRASE,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Localized Accessibility Phrase feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addLocalizedAccessibilityPhrasePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_UIElement_localizedAccessibilityPhrase_feature"), //$NON-NLS-1$
+				 getString("_UI_PropertyDescriptor_description", "_UI_UIElement_localizedAccessibilityPhrase_feature", "_UI_UIElement_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				 UiPackageImpl.Literals.UI_ELEMENT__LOCALIZED_ACCESSIBILITY_PHRASE,
+				 false,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(UiPackageImpl.Literals.UI_ELEMENT__VISIBLE_WHEN);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((MUIElement)object).getElementId();
+		return label == null || label.length() == 0 ?
+			getString("_UI_UIElement_type") : //$NON-NLS-1$
+			getString("_UI_UIElement_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(MUIElement.class)) {
+			case UiPackageImpl.UI_ELEMENT__WIDGET:
+			case UiPackageImpl.UI_ELEMENT__RENDERER:
+			case UiPackageImpl.UI_ELEMENT__TO_BE_RENDERED:
+			case UiPackageImpl.UI_ELEMENT__ON_TOP:
+			case UiPackageImpl.UI_ELEMENT__VISIBLE:
+			case UiPackageImpl.UI_ELEMENT__CONTAINER_DATA:
+			case UiPackageImpl.UI_ELEMENT__ACCESSIBILITY_PHRASE:
+			case UiPackageImpl.UI_ELEMENT__LOCALIZED_ACCESSIBILITY_PHRASE:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+			case UiPackageImpl.UI_ELEMENT__VISIBLE_WHEN:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UiPackageImpl.Literals.UI_ELEMENT__VISIBLE_WHEN,
+				 MUiFactory.INSTANCE.createCoreExpression()));
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return UIElementsEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/provider/UiItemProviderAdapterFactory.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/provider/UiItemProviderAdapterFactory.java
new file mode 100644
index 0000000..1d6ad9c
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/provider/UiItemProviderAdapterFactory.java
@@ -0,0 +1,207 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *      IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.provider;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.e4.ui.model.application.ui.util.UiAdapterFactory;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.edit.provider.ChangeNotifier;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.IChangeNotifier;
+import org.eclipse.emf.edit.provider.IDisposable;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.INotifyChangedListener;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the factory that is used to provide the interfaces needed to support Viewers.
+ * The adapters generated by this factory convert EMF adapter notifications into calls to {@link #fireNotifyChanged fireNotifyChanged}.
+ * The adapters also support Eclipse property sheets.
+ * Note that most of the adapters are shared among multiple instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class UiItemProviderAdapterFactory extends UiAdapterFactory implements ComposeableAdapterFactory, IChangeNotifier, IDisposable {
+	/**
+	 * This keeps track of the root adapter factory that delegates to this adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ComposedAdapterFactory parentAdapterFactory;
+
+	/**
+	 * This is used to implement {@link org.eclipse.emf.edit.provider.IChangeNotifier}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IChangeNotifier changeNotifier = new ChangeNotifier();
+
+	/**
+	 * This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<Object> supportedTypes = new ArrayList<Object>();
+
+	/**
+	 * This constructs an instance.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public UiItemProviderAdapterFactory() {
+		supportedTypes.add(IEditingDomainItemProvider.class);
+		supportedTypes.add(IStructuredItemContentProvider.class);
+		supportedTypes.add(ITreeItemContentProvider.class);
+		supportedTypes.add(IItemLabelProvider.class);
+		supportedTypes.add(IItemPropertySource.class);
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.ui.MCoreExpression} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected CoreExpressionItemProvider coreExpressionItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.e4.ui.model.application.ui.MCoreExpression}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createCoreExpressionAdapter() {
+		if (coreExpressionItemProvider == null) {
+			coreExpressionItemProvider = new CoreExpressionItemProvider(this);
+		}
+
+		return coreExpressionItemProvider;
+	}
+
+	/**
+	 * This returns the root adapter factory that contains this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ComposeableAdapterFactory getRootAdapterFactory() {
+		return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory();
+	}
+
+	/**
+	 * This sets the composed adapter factory that contains this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory) {
+		this.parentAdapterFactory = parentAdapterFactory;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object type) {
+		return supportedTypes.contains(type) || super.isFactoryForType(type);
+	}
+
+	/**
+	 * This implementation substitutes the factory itself as the key for the adapter.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter adapt(Notifier notifier, Object type) {
+		return super.adapt(notifier, this);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object adapt(Object object, Object type) {
+		if (isFactoryForType(type)) {
+			Object adapter = super.adapt(object, type);
+			if (!(type instanceof Class<?>) || (((Class<?>)type).isInstance(adapter))) {
+				return adapter;
+			}
+		}
+
+		return null;
+	}
+
+	/**
+	 * This adds a listener.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void addListener(INotifyChangedListener notifyChangedListener) {
+		changeNotifier.addListener(notifyChangedListener);
+	}
+
+	/**
+	 * This removes a listener.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void removeListener(INotifyChangedListener notifyChangedListener) {
+		changeNotifier.removeListener(notifyChangedListener);
+	}
+
+	/**
+	 * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void fireNotifyChanged(Notification notification) {
+		changeNotifier.fireNotifyChanged(notification);
+
+		if (parentAdapterFactory != null) {
+			parentAdapterFactory.fireNotifyChanged(notification);
+		}
+	}
+
+	/**
+	 * This disposes all of the item providers created by this factory. 
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void dispose() {
+		if (coreExpressionItemProvider != null) coreExpressionItemProvider.dispose();
+	}
+
+}
diff --git a/org.eclipse.osbp.commons/.project b/org.eclipse.osbp.commons/.project
new file mode 100644
index 0000000..73e4ab4
--- /dev/null
+++ b/org.eclipse.osbp.commons/.project
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.commons</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.babel.editor.rbeBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.babel.editor.rbeNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.commons/META-INF/MANIFEST.MF b/org.eclipse.osbp.commons/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..652665c
--- /dev/null
+++ b/org.eclipse.osbp.commons/META-INF/MANIFEST.MF
@@ -0,0 +1,9 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.commons
+Bundle-SymbolicName: org.eclipse.osbp.commons
+Bundle-Version: 0.9.0.qualifier
+Bundle-Vendor: Eclipse OSBP
+Bundle-RequiredExecutionEnvironment: JavaSE-1.7
+Export-Package: org.eclipse.osbp.commons.general;version="0.9.0",
+ org.eclipse.osbp.commons.geom;version="0.9.0"
diff --git a/org.eclipse.osbp.commons/about.html b/org.eclipse.osbp.commons/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.commons/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 1, 2016</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.commons/about.ini b/org.eclipse.osbp.commons/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.commons/about.ini
@@ -0,0 +1,17 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%featureText
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=
+
+# Property "appName" contains name of the application (translated)
+appName=%featureName
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+welcomePage=
diff --git a/org.eclipse.osbp.commons/about.mappings b/org.eclipse.osbp.commons/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.commons/about.mappings
@@ -0,0 +1,6 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+0=qualifier
diff --git a/org.eclipse.osbp.commons/about.properties b/org.eclipse.osbp.commons/about.properties
new file mode 100644
index 0000000..bb83df7
--- /dev/null
+++ b/org.eclipse.osbp.commons/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2012, 2016 - Loetz GmbH&Co.KG (Heidelberg)
+# 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:
+#    Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.commons
+
+################ blurb property ####################################
+featureText=\
+Copyright (c) 2012-2016 - Loetz GmbH&Co.KG \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+Contributors:\n\
+    Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.commons/build.properties b/org.eclipse.osbp.commons/build.properties
new file mode 100644
index 0000000..a138bbd
--- /dev/null
+++ b/org.eclipse.osbp.commons/build.properties
@@ -0,0 +1,8 @@
+source.. = src/
+output.. = target/classes/
+bin.includes = about.properties,  about.mappings,  about.ini,  about.html,  META-INF/,\
+               .,\
+               epl-v10.html,\
+               license.html
+src.includes = about.properties,  about.mappings,  about.ini,  about.html,  epl-v10.html,\
+               license.html
diff --git a/org.eclipse.osbp.commons/epl-v10.html b/org.eclipse.osbp.commons/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.commons/epl-v10.html
@@ -0,0 +1,259 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+  body {
+    size: 8.5in 11.0in;
+    margin: 0.25in 0.5in 0.25in 0.5in;
+    tab-interval: 0.5in;
+    }
+  p {  	
+    margin-left: auto;
+    margin-top:  0.5em;
+    margin-bottom: 0.5em;
+    }
+  p.list {
+  	margin-left: 0.5in;
+    margin-top:  0.05em;
+    margin-bottom: 0.05em;
+    }
+  </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">where such changes and/or additions to the Program
+originate from and are distributed by that particular Contributor. A
+Contribution 'originates' from a Contributor if it was added to the
+Program by such Contributor itself or anyone acting on such
+Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii)
+are not derivative works of the Program.</p>
+
+<p>"Contributor" means any person or entity that distributes
+the Program.</p>
+
+<p>"Licensed Patents" mean patent claims licensable by a
+Contributor which are necessarily infringed by the use or sale of its
+Contribution alone or when combined with the Program.</p>
+
+<p>"Program" means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>"Recipient" means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works
+of, publicly display, publicly perform, distribute and sublicense the
+Contribution of such Contributor, if any, and such derivative works, in
+source code and object code form.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell,
+offer to sell, import and otherwise transfer the Contribution of such
+Contributor, if any, in source code and object code form. This patent
+license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor,
+such addition of the Contribution causes such combination to be covered
+by the Licensed Patents. The patent license shall not apply to any other
+combinations which include the Contribution. No hardware per se is
+licensed hereunder.</p>
+
+<p class="list">c) Recipient understands that although each Contributor
+grants the licenses to its Contributions set forth herein, no assurances
+are provided by any Contributor that the Program does not infringe the
+patent or other intellectual property rights of any other entity. Each
+Contributor disclaims any liability to Recipient for claims brought by
+any other entity based on infringement of intellectual property rights
+or otherwise. As a condition to exercising the rights and licenses
+granted hereunder, each Recipient hereby assumes sole responsibility to
+secure any other intellectual property rights needed, if any. For
+example, if a third party patent license is required to allow Recipient
+to distribute the Program, it is Recipient's responsibility to acquire
+that license before distributing the Program.</p>
+
+<p class="list">d) Each Contributor represents that to its knowledge it
+has sufficient copyright rights in its Contribution, if any, to grant
+the copyright license set forth in this Agreement.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">i) effectively disclaims on behalf of all Contributors
+all warranties and conditions, express and implied, including warranties
+or conditions of title and non-infringement, and implied warranties or
+conditions of merchantability and fitness for a particular purpose;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">iv) states that source code for the Program is available
+from such Contributor, and informs licensees how to obtain it in a
+reasonable manner on or through a medium customarily used for software
+exchange.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>Commercial distributors of software may accept certain
+responsibilities with respect to end users, business partners and the
+like. While this license is intended to facilitate the commercial use of
+the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create
+potential liability for other Contributors. Therefore, if a Contributor
+includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and
+indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses")
+arising from claims, lawsuits and other legal actions brought by a third
+party against the Indemnified Contributor to the extent caused by the
+acts or omissions of such Commercial Contributor in connection with its
+distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In
+order to qualify, an Indemnified Contributor must: a) promptly notify
+the Commercial Contributor in writing of such claim, and b) allow the
+Commercial Contributor to control, and cooperate with the Commercial
+Contributor in, the defense and any related settlement negotiations. The
+Indemnified Contributor may participate in any such claim at its own
+expense.</p>
+
+<p>For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor's responsibility
+alone. Under this section, the Commercial Contributor would have to
+defend claims against the other Contributors related to those
+performance claims and warranties, and if a court requires any other
+Contributor to pay any damages as a result, the Commercial Contributor
+must pay those damages.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
+OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
+ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to
+the risks and costs of program errors, compliance with applicable laws,
+damage to or loss of data, programs or equipment, and unavailability or
+interruption of operations.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
+NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of
+the remainder of the terms of this Agreement, and without further action
+by the parties hereto, such provision shall be reformed to the minimum
+extent necessary to make such provision valid and enforceable.</p>
+
+<p>If Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that the
+Program itself (excluding combinations of the Program with other
+software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the
+date such litigation is filed.</p>
+
+<p>All Recipient's rights under this Agreement shall terminate if it
+fails to comply with any of the material terms or conditions of this
+Agreement and does not cure such failure in a reasonable period of time
+after becoming aware of such noncompliance. If all Recipient's rights
+under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive.</p>
+
+<p>Everyone is permitted to copy and distribute copies of this
+Agreement, but in order to avoid inconsistency the Agreement is
+copyrighted and may only be modified in the following manner. The
+Agreement Steward reserves the right to publish new versions (including
+revisions) of this Agreement from time to time. No one other than the
+Agreement Steward has the right to modify this Agreement. The Eclipse
+Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a
+suitable separate entity. Each new version of the Agreement will be
+given a distinguishing version number. The Program (including
+Contributions) may always be distributed subject to the version of the
+Agreement under which it was received. In addition, after a new version
+of the Agreement is published, Contributor may elect to distribute the
+Program (including its Contributions) under the new version. Except as
+expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
+rights or licenses to the intellectual property of any Contributor under
+this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this
+Agreement are reserved.</p>
+
+<p>This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No party
+to this Agreement will bring a legal action under this Agreement more
+than one year after the cause of action arose. Each party waives its
+rights to a jury trial in any resulting litigation.</p>
+
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.commons/license.html b/org.eclipse.osbp.commons/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.commons/license.html
@@ -0,0 +1,164 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!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>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>February 1, 2011</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+   (COLLECTIVELY "CONTENT").  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse
+ Foundation is provided to you under the terms and conditions of the 
+Eclipse Public License Version 1.0
+   ("EPL").  A copy of the EPL is provided with this Content and is also
+ 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, "Program" will mean the Content.</p>
+
+<p>Content includes, but is not limited to, source code, object code, 
+documentation and other files maintained in the Eclipse Foundation 
+source code
+   repository ("Repository") in software modules ("Modules") and made 
+available as downloadable archives ("Downloads").</p>
+
+<ul>
+       <li>Content may be structured and packaged into modules to 
+facilitate delivering, extending, and upgrading the Content.  Typical 
+modules may include plug-ins ("Plug-ins"), plug-in fragments 
+("Fragments"), and features ("Features").</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&#8482; ARchive) in a directory named "plugins".</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or 
+Fragments and associated material.  Each Feature may be packaged as a 
+sub-directory in a directory named "features".  Within a Feature, files 
+named "feature.xml" may contain a list of the names and version numbers 
+of the Plug-ins
+      and/or Fragments associated with that Feature.</li>
+       <li>Features may also include other Features ("Included 
+Features"). Within a Feature, files named "feature.xml" may contain a 
+list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be 
+contained in files named "about.html" ("Abouts"). The terms and 
+conditions governing Features and
+Included Features should be contained in files named "license.html" 
+("Feature Licenses").  Abouts and Feature Licenses may be located in any
+ directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named "src" of certain Plug-ins</li>
+       <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is 
+installed using the Provisioning Technology (as defined below), you must
+ agree to a license ("Feature Update License") during the
+installation process.  If the Feature contains Included Features, the 
+Feature Update License should either provide you with the terms and 
+conditions governing the Included Features or
+inform you where you can locate them.  Feature Update Licenses may be 
+found in the "license" property of files named "feature.properties" 
+found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the 
+terms and conditions (or references to such terms and conditions) that 
+govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER 
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.
+  SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND 
+CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, 
+or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions 
+govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, 
+examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager ("Provisioning Technology") for the purpose of 
+allowing users to install software, documentation, information and/or
+   other materials (collectively "Installable Software"). This 
+capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about 
+packaging Installable Software is available at <a href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   ("Specification").</p>
+
+<p>You may use Provisioning Technology to allow other parties to install
+ Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to
+ be presented to, and accepted by, the users of the Provisioning 
+Technology
+   in accordance with the Specification. By using Provisioning 
+Technology in such a manner and making it available in accordance with 
+the
+   Specification, you further acknowledge your agreement to, and the 
+acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur ("Provisioning Process") in 
+which a user may execute the Provisioning Technology
+       on a machine ("Target Machine") with the intent of installing, 
+extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology 
+may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user 
+the terms and conditions that govern the use of the Installable
+       Software ("Installable Software Agreement") and such Installable 
+Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable 
+Software Agreement must inform the user of the terms and conditions that
+ govern
+       the Installable Software and must solicit acceptance by the end 
+user in the manner prescribed in such Installable Software Agreement. 
+Upon such
+       indication of agreement by the user, the provisioning Technology 
+will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are
+ currently may have restrictions on the import, possession, and use, 
+and/or re-export to
+   another country, of encryption software. BEFORE using any encryption 
+software, please check the country's laws, regulations and policies 
+concerning the import,
+   possession, or use, and re-export of encryption software, to see if 
+this is permitted.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.commons/pom.xml b/org.eclipse.osbp.commons/pom.xml
new file mode 100644
index 0000000..0222f9c
--- /dev/null
+++ b/org.eclipse.osbp.commons/pom.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <artifactId>org.eclipse.osbp.commons</artifactId>
+  <packaging>eclipse-plugin</packaging>
+  <parent>
+  	<groupId>org.eclipse.osbp.vaaclipse</groupId>
+  	<artifactId>org.eclipse.osbp.vaaclipse</artifactId>
+  	<version>0.9.0-SNAPSHOT</version>
+  	<relativePath>..</relativePath>
+  </parent>
+</project>
diff --git a/org.eclipse.osbp.commons/src/org/eclipse/osbp/commons/general/Condition.java b/org.eclipse.osbp.commons/src/org/eclipse/osbp/commons/general/Condition.java
new file mode 100644
index 0000000..810e3ea
--- /dev/null
+++ b/org.eclipse.osbp.commons/src/org/eclipse/osbp/commons/general/Condition.java
@@ -0,0 +1,19 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.commons.general;
+
+/**
+ * @author rushan
+ *
+ */
+public interface Condition<T> {
+	boolean check(T object);
+}
diff --git a/org.eclipse.osbp.commons/src/org/eclipse/osbp/commons/geom/Bounds.java b/org.eclipse.osbp.commons/src/org/eclipse/osbp/commons/geom/Bounds.java
new file mode 100644
index 0000000..a92c54d
--- /dev/null
+++ b/org.eclipse.osbp.commons/src/org/eclipse/osbp/commons/geom/Bounds.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.commons.geom;
+
+/**
+ * @author rushan
+ *
+ */
+public class Bounds {
+	public double x, y, w, h;
+
+	public Bounds(double x, double y, double w, double h) {
+		this.x = x;
+		this.y = y;
+		this.w = w;
+		this.h = h;
+	}
+}
diff --git a/org.eclipse.osbp.commons/src/org/eclipse/osbp/commons/geom/GeomUtils.java b/org.eclipse.osbp.commons/src/org/eclipse/osbp/commons/geom/GeomUtils.java
new file mode 100644
index 0000000..71b9d0c
--- /dev/null
+++ b/org.eclipse.osbp.commons/src/org/eclipse/osbp/commons/geom/GeomUtils.java
@@ -0,0 +1,67 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osbp.commons.geom;
+
+/**
+ * @author rushan
+ *
+ */
+public class GeomUtils {
+
+	public static Integer findDockSide(int x0, int y0, int dx, int dy,
+			double docX, double docY, Vector mousePos) {
+		if (GeometryHelper.containsInRectangle(
+				Vector.valueOf(x0 + docX, y0 + docY),
+				Vector.valueOf(dx - 2 * docX, dy - 2 * docY), mousePos))
+			return Side.CENTER;
+		else if (GeometryHelper.containsInRectangle(
+				Vector.valueOf(x0 + docX, y0 + dy - docY),
+				Vector.valueOf(dx - 2 * docX, docY), mousePos)
+				|| GeometryHelper.containsInRightTriangle(
+						Vector.valueOf(x0 + docX, y0 + dy), -docX, -docY,
+						mousePos)
+				|| GeometryHelper.containsInRightTriangle(
+						Vector.valueOf(x0 + dx - docX, y0 + dy), docX, -docY,
+						mousePos)) {
+			return Side.BOTTOM;
+		} else if (GeometryHelper.containsInRectangle(
+				Vector.valueOf(x0, y0 + docY), new Vector(docX, dy - 2 * docY),
+				mousePos)
+				|| GeometryHelper.containsInRightTriangle(
+						Vector.valueOf(x0, y0 + docY), docX, -docY, mousePos)
+				|| GeometryHelper.containsInRightTriangle(
+						Vector.valueOf(x0, y0 + dy - docY), docX, docY,
+						mousePos)) {
+			return Side.LEFT;
+		} else if (GeometryHelper.containsInRectangle(
+				Vector.valueOf(x0 + dx - docX, y0 + docY), new Vector(docX, dy
+						- 2 * docY), mousePos)
+				|| GeometryHelper.containsInRightTriangle(
+						Vector.valueOf(x0 + dx, y0 + docY), -docX, -docY,
+						mousePos)
+				|| GeometryHelper.containsInRightTriangle(
+						Vector.valueOf(x0 + dx, y0 + dy - docY), -docX, docY,
+						mousePos)) {
+			return Side.RIGHT;
+		} else if (GeometryHelper.containsInRectangle(
+				Vector.valueOf(x0 + docX, y0), new Vector(dy - 2 * docY, docY),
+				mousePos)
+				|| GeometryHelper.containsInRightTriangle(
+						Vector.valueOf(x0 + docX, y0), -docX, docY, mousePos)
+				|| GeometryHelper.containsInRightTriangle(
+						Vector.valueOf(x0 + dx - docX, y0), docX, docY,
+						mousePos)) {
+			return Side.TOP;
+		} else
+			return null;
+	}
+
+}
diff --git a/org.eclipse.osbp.commons/src/org/eclipse/osbp/commons/geom/GeometryHelper.java b/org.eclipse.osbp.commons/src/org/eclipse/osbp/commons/geom/GeometryHelper.java
new file mode 100644
index 0000000..20cc620
--- /dev/null
+++ b/org.eclipse.osbp.commons/src/org/eclipse/osbp/commons/geom/GeometryHelper.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osbp.commons.geom;
+
+/**
+ * @author rushan
+ *
+ */
+public class GeometryHelper {
+	// public static boolean containsInRectangle(Rectangle rect, Vector point)
+	// {
+	// return point.getX() >= rect.getCorner1().getX() && point.getX() <=
+	// rect.getCorner4().getX() &&
+	// point.getY() >= rect.getCorner1().getY() && point.getX() <=
+	// rect.getCorner2().getY();
+	// }
+
+	public static boolean containsInRectangle(Vector start, Vector sides,
+			Vector point) {
+		// return containsInRectangle(new Rectangle(start, sides), point);
+		return point.getX() >= start.getX()
+				&& point.getX() <= start.getX() + sides.getX()
+				&& point.getY() >= start.getY()
+				&& point.getY() <= start.getY() + sides.getY();
+	}
+
+	public static boolean containsInRightTriangle(Vector triangleRigthAngle,
+			double catetX, double catetY, Vector point) {
+		if (catetX < 0) {
+			// coordinate translation
+			catetX = -catetX;
+			triangleRigthAngle = new Vector(-triangleRigthAngle.getX(),
+					triangleRigthAngle.getY());
+			point = new Vector(-point.getX(), point.getY());
+		}
+
+		if (catetY < 0) {
+			// coordinate translation
+			catetY = -catetY;
+			triangleRigthAngle = new Vector(triangleRigthAngle.getX(),
+					-triangleRigthAngle.getY());
+			point = new Vector(point.getX(), -point.getY());
+		}
+
+		return point.getX() >= triangleRigthAngle.getX()
+				&& point.getX() <= triangleRigthAngle.getX() + catetX
+				&& Math.abs(triangleRigthAngle.getY() - point.getY()) <= (catetY / catetX)
+						* Math.abs(triangleRigthAngle.getX() + catetX
+								- point.getX());
+	}
+}
diff --git a/org.eclipse.osbp.commons/src/org/eclipse/osbp/commons/geom/Rectangle.java b/org.eclipse.osbp.commons/src/org/eclipse/osbp/commons/geom/Rectangle.java
new file mode 100644
index 0000000..a1c02c8
--- /dev/null
+++ b/org.eclipse.osbp.commons/src/org/eclipse/osbp/commons/geom/Rectangle.java
@@ -0,0 +1,48 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osbp.commons.geom;
+
+/**
+ * @author rushan
+ *
+ */
+public class Rectangle {
+	private Vector start, sides;
+
+	public Rectangle(double x, double y, double w, double h) {
+		this.start = new Vector(x, y);
+		this.sides = new Vector(w, h);
+	}
+
+	public Vector getStart() {
+		return start;
+	}
+
+	public Vector getSides() {
+		return sides;
+	}
+
+	public Vector getCorner1() {
+		return start;
+	}
+
+	public Vector getCorner2() {
+		return start.plus(sides.getYProectionVector());
+	}
+
+	public Vector getCorner3() {
+		return start.plus(sides);
+	}
+
+	public Vector getCorner4() {
+		return start.plus(sides.getXProectionVector());
+	}
+}
diff --git a/org.eclipse.osbp.commons/src/org/eclipse/osbp/commons/geom/Side.java b/org.eclipse.osbp.commons/src/org/eclipse/osbp/commons/geom/Side.java
new file mode 100644
index 0000000..c716bfe
--- /dev/null
+++ b/org.eclipse.osbp.commons/src/org/eclipse/osbp/commons/geom/Side.java
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.commons.geom;
+
+/**
+ * Side values from eclipse model's SideValue for using in client and server
+ * 
+ * @author rushan
+ *
+ */
+public class Side {
+	public static final Integer TOP = 0;
+
+	public static final Integer BOTTOM = 1;
+
+	public static final Integer LEFT = 2;
+
+	public static final Integer RIGHT = 3;
+
+	public static final Integer CENTER = 100;
+}
diff --git a/org.eclipse.osbp.commons/src/org/eclipse/osbp/commons/geom/Vector.java b/org.eclipse.osbp.commons/src/org/eclipse/osbp/commons/geom/Vector.java
new file mode 100644
index 0000000..dc0c8bb
--- /dev/null
+++ b/org.eclipse.osbp.commons/src/org/eclipse/osbp/commons/geom/Vector.java
@@ -0,0 +1,194 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osbp.commons.geom;
+
+/**
+ * @author rushan
+ *
+ */
+public class Vector {
+	private double x;
+	private double y;
+
+	public static Vector ortX = new Vector(1, 0);
+	public static Vector ortY = new Vector(0, 1);
+	public static Vector ZERO = new Vector(0, 0);
+
+	public static Vector vectorX(double x) {
+		return new Vector(x, 0);
+	}
+
+	public static Vector vectorY(double y) {
+		return new Vector(0, y);
+	}
+
+	/**
+	 * shortcut for vectorX
+	 */
+	public static Vector vX(double x) {
+		return vectorX(x);
+	}
+
+	/**
+	 * shortcut for vectorY
+	 */
+	public static Vector vY(double y) {
+		return vectorY(y);
+	}
+
+	public Vector(double x, double y) {
+		this.x = x;
+		this.y = y;
+	}
+
+	public static Vector valueOf(double x, double y) {
+		return new Vector(x, y);
+	}
+
+	public double getX() {
+		return x;
+	}
+
+	public void setX(double x) {
+		this.x = x;
+	}
+
+	public double getY() {
+		return y;
+	}
+
+	public void setY(double y) {
+		this.y = y;
+	}
+
+	public void setXY(double x, double y) {
+		setX(x);
+		setY(y);
+	}
+
+	public Vector getXProectionVector() {
+		return Vector.vectorX(this.x);
+	}
+
+	public Vector getYProectionVector() {
+		return Vector.vectorY(this.y);
+	}
+
+	public double getLength() {
+		return Math.sqrt(getX() * getX() + getY() * getY());
+	}
+
+	public Vector opposite() {
+		return new Vector(-this.getX(), -this.getY());
+	}
+
+	public Vector normalize() {
+		double len = getLength();
+		return new Vector(getX() / len, getY() / len);
+	}
+
+	public boolean isNull() {
+		return getX() == 0.0 && getY() == 0.0;
+	}
+
+	public Vector scale(double n) {
+		return new Vector(this.getX() * n, this.getY() * n);
+	}
+
+	public Vector div(double n) {
+		return scale(1 / n);
+	}
+
+	public Vector scaleX(double n) {
+		return new Vector(this.getX() * n, this.getY());
+	}
+
+	public Vector scaleY(double n) {
+		return new Vector(this.getX(), this.getY() * n);
+	}
+
+	public Vector plus(Vector v) {
+		return new Vector(this.getX() + v.getX(), this.getY() + v.getY());
+	}
+
+	public Vector minus(Vector v) {
+		return new Vector(this.getX() - v.getX(), this.getY() - v.getY());
+	}
+
+	public static double dotProduct(Vector v1, Vector v2) {
+		return v1.getX() * v2.getX() + v1.getY() * v2.getY();
+	}
+
+	public static double getAngle(Vector v1, Vector v2) {
+		// косинус угла между векторами
+		double cos = dotProduct(v1, v2) / (v1.getLength() * v2.getLength());
+		return Math.acos(cos);
+	}
+
+	public static Vector[] getOrtogonalOrts(Vector v) {
+		double len = v.getLength();
+		Vector ort1 = new Vector(v.getY() / len, -v.getX() / len);
+		Vector ort2 = new Vector(-v.getY() / len, v.getX() / len);
+		return new Vector[] { ort1, ort2 };
+	}
+
+	@Override
+	public String toString() {
+		return String.format("(%s, %s)", this.getX(), this.getY());
+	}
+
+	private static boolean sameSign(double val1, double val2) {
+		if (val1 == 0 && val2 == 0)
+			return true;
+		if (val1 == 0 && val2 != 0 || val2 == 0 && val1 != 0)
+			return false;
+		return (val1 > 0 && val2 > 0) || (val1 < 0 && val2 < 0);
+	}
+
+	public static boolean isEqual(Vector v1, Vector v2, double E) {
+		return Math.abs(v1.getX() - v2.getX()) < E
+				&& Math.abs(v1.getY() - v2.getY()) < E;
+	}
+
+	public static boolean isEqual(Vector v1, Vector v2) {
+		return v1.getX() == v2.getX() && v1.getY() == v2.getY();
+	}
+
+	public static boolean isSameDirection(Vector v1, Vector v2, double E) {
+		if (v1.isNull() || v2.isNull())
+			return false;
+
+		double s = v2.getX() != 0 ? v1.getX() / v2.getX() : v1.getY()
+				/ v2.getY();
+		Vector test2 = v2.scale(s);
+		if (isEqual(v1, test2, E)) {
+			// Проверка, что вектора направлены в одну и ту же сторону
+			return sameSign(v1.getX(), v2.getX())
+					&& sameSign(v1.getY(), v2.getY());
+		} else
+			return false;
+	}
+
+	public static boolean nonStrictCompare(Vector v1, Vector v2, double E) {
+		if (Math.abs(v1.getX() - v2.getX()) < E)
+			if (Math.abs(v1.getY() - v2.getY()) < E)
+				return true;
+		return false;
+	}
+
+	public static Vector maximum(Vector v1, Vector v2) {
+		return v1.getLength() > v2.getLength() ? v1.getCopy() : v2.getCopy();
+	}
+
+	public Vector getCopy() {
+		return new Vector(getX(), getY());
+	}
+}
diff --git a/org.eclipse.osbp.e4.injector.objectsuppliers/.project b/org.eclipse.osbp.e4.injector.objectsuppliers/.project
new file mode 100644
index 0000000..52e21db
--- /dev/null
+++ b/org.eclipse.osbp.e4.injector.objectsuppliers/.project
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.e4.injector.objectsuppliers</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ds.core.builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.babel.editor.rbeBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.babel.editor.rbeNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.e4.injector.objectsuppliers/META-INF/MANIFEST.MF b/org.eclipse.osbp.e4.injector.objectsuppliers/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..1cf6bdd
--- /dev/null
+++ b/org.eclipse.osbp.e4.injector.objectsuppliers/META-INF/MANIFEST.MF
@@ -0,0 +1,21 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.e4.injector.objectsuppliers
+Bundle-SymbolicName: org.eclipse.osbp.e4.injector.objectsuppliers;singleton:=true
+Bundle-Vendor: Eclipse OSBP
+Bundle-Version: 0.9.0.qualifier
+Bundle-RequiredExecutionEnvironment: JavaSE-1.7
+Import-Package: javax.annotation;version="1.1.0",
+ javax.inject;version="1.0.0"
+Require-Bundle: org.eclipse.e4.ui.di;bundle-version="0.10.1",
+ org.eclipse.e4.core.di.extensions;bundle-version="0.11.0",
+ org.eclipse.e4.core.di;bundle-version="1.1.0",
+ org.eclipse.core.runtime;bundle-version="3.8.0",
+ org.eclipse.e4.ui.services;bundle-version="0.10.2",
+ org.eclipse.e4.core.services;bundle-version="1.0.0",
+ org.eclipse.e4.core.contexts;bundle-version="1.1.0",
+ org.eclipse.osgi.services;bundle-version="3.3.100"
+Bundle-ActivationPolicy: lazy
+Service-Component: OSGI-INF/componentUI.xml,
+ OSGI-INF/component.xml
+
diff --git a/org.eclipse.osbp.e4.injector.objectsuppliers/OSGI-INF/component.xml b/org.eclipse.osbp.e4.injector.objectsuppliers/OSGI-INF/component.xml
new file mode 100644
index 0000000..488447c
--- /dev/null
+++ b/org.eclipse.osbp.e4.injector.objectsuppliers/OSGI-INF/component.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.eclipse.osbp.e4.injector.objectsuppliers">
+   <implementation class="org.eclipse.osbp.e4.injector.objectsuppliers.CustomEventObjectSupplier"/>
+   <property name="dependency.injection.annotation" type="String" value="org.eclipse.e4.core.di.extensions.EventTopic"/>
+   <property name="service.ranking" type="Integer" value="10"/>
+   <service>
+      <provide interface="org.eclipse.e4.core.di.suppliers.ExtendedObjectSupplier"/>
+   </service>
+</scr:component>
diff --git a/org.eclipse.osbp.e4.injector.objectsuppliers/OSGI-INF/componentUI.xml b/org.eclipse.osbp.e4.injector.objectsuppliers/OSGI-INF/componentUI.xml
new file mode 100644
index 0000000..a34ab2d
--- /dev/null
+++ b/org.eclipse.osbp.e4.injector.objectsuppliers/OSGI-INF/componentUI.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.eclipse.osbp.e4.injector.objectsuppliers.UI">
+   <implementation class="org.eclipse.osbp.e4.injector.objectsuppliers.CustomUIEventObjectSupplier"/>
+   <property name="dependency.injection.annotation" type="String" value="org.eclipse.e4.ui.di.UIEventTopic"/>
+   <property name="service.ranking" type="Integer" value="10"/>
+   <service>
+      <provide interface="org.eclipse.e4.core.di.suppliers.ExtendedObjectSupplier"/>
+   </service>
+</scr:component>
diff --git a/org.eclipse.osbp.e4.injector.objectsuppliers/about.html b/org.eclipse.osbp.e4.injector.objectsuppliers/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.e4.injector.objectsuppliers/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 1, 2016</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.e4.injector.objectsuppliers/about.ini b/org.eclipse.osbp.e4.injector.objectsuppliers/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.e4.injector.objectsuppliers/about.ini
@@ -0,0 +1,17 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%featureText
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=
+
+# Property "appName" contains name of the application (translated)
+appName=%featureName
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+welcomePage=
diff --git a/org.eclipse.osbp.e4.injector.objectsuppliers/about.mappings b/org.eclipse.osbp.e4.injector.objectsuppliers/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.e4.injector.objectsuppliers/about.mappings
@@ -0,0 +1,6 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+0=qualifier
diff --git a/org.eclipse.osbp.e4.injector.objectsuppliers/about.properties b/org.eclipse.osbp.e4.injector.objectsuppliers/about.properties
new file mode 100644
index 0000000..acb5df6
--- /dev/null
+++ b/org.eclipse.osbp.e4.injector.objectsuppliers/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2012, 2016 - Loetz GmbH&Co.KG (Heidelberg)
+# 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:
+#    Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.e4.injector.objectsuppliers
+
+################ blurb property ####################################
+featureText=\
+Copyright (c) 2012-2016 - Loetz GmbH&Co.KG \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+Contributors:\n\
+    Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.e4.injector.objectsuppliers/build.properties b/org.eclipse.osbp.e4.injector.objectsuppliers/build.properties
new file mode 100644
index 0000000..bcc15d4
--- /dev/null
+++ b/org.eclipse.osbp.e4.injector.objectsuppliers/build.properties
@@ -0,0 +1,9 @@
+output.. = target/classes/
+bin.includes = about.properties,  about.mappings,  about.ini,  about.html,  META-INF/,\
+               .,\
+               OSGI-INF/,\
+               epl-v10.html,\
+               license.html
+source.. = src/
+src.includes = about.properties,  about.mappings,  about.ini,  about.html,  epl-v10.html,\
+               license.html
diff --git a/org.eclipse.osbp.e4.injector.objectsuppliers/epl-v10.html b/org.eclipse.osbp.e4.injector.objectsuppliers/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.e4.injector.objectsuppliers/epl-v10.html
@@ -0,0 +1,259 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+  body {
+    size: 8.5in 11.0in;
+    margin: 0.25in 0.5in 0.25in 0.5in;
+    tab-interval: 0.5in;
+    }
+  p {  	
+    margin-left: auto;
+    margin-top:  0.5em;
+    margin-bottom: 0.5em;
+    }
+  p.list {
+  	margin-left: 0.5in;
+    margin-top:  0.05em;
+    margin-bottom: 0.05em;
+    }
+  </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">where such changes and/or additions to the Program
+originate from and are distributed by that particular Contributor. A
+Contribution 'originates' from a Contributor if it was added to the
+Program by such Contributor itself or anyone acting on such
+Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii)
+are not derivative works of the Program.</p>
+
+<p>"Contributor" means any person or entity that distributes
+the Program.</p>
+
+<p>"Licensed Patents" mean patent claims licensable by a
+Contributor which are necessarily infringed by the use or sale of its
+Contribution alone or when combined with the Program.</p>
+
+<p>"Program" means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>"Recipient" means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works
+of, publicly display, publicly perform, distribute and sublicense the
+Contribution of such Contributor, if any, and such derivative works, in
+source code and object code form.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell,
+offer to sell, import and otherwise transfer the Contribution of such
+Contributor, if any, in source code and object code form. This patent
+license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor,
+such addition of the Contribution causes such combination to be covered
+by the Licensed Patents. The patent license shall not apply to any other
+combinations which include the Contribution. No hardware per se is
+licensed hereunder.</p>
+
+<p class="list">c) Recipient understands that although each Contributor
+grants the licenses to its Contributions set forth herein, no assurances
+are provided by any Contributor that the Program does not infringe the
+patent or other intellectual property rights of any other entity. Each
+Contributor disclaims any liability to Recipient for claims brought by
+any other entity based on infringement of intellectual property rights
+or otherwise. As a condition to exercising the rights and licenses
+granted hereunder, each Recipient hereby assumes sole responsibility to
+secure any other intellectual property rights needed, if any. For
+example, if a third party patent license is required to allow Recipient
+to distribute the Program, it is Recipient's responsibility to acquire
+that license before distributing the Program.</p>
+
+<p class="list">d) Each Contributor represents that to its knowledge it
+has sufficient copyright rights in its Contribution, if any, to grant
+the copyright license set forth in this Agreement.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">i) effectively disclaims on behalf of all Contributors
+all warranties and conditions, express and implied, including warranties
+or conditions of title and non-infringement, and implied warranties or
+conditions of merchantability and fitness for a particular purpose;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">iv) states that source code for the Program is available
+from such Contributor, and informs licensees how to obtain it in a
+reasonable manner on or through a medium customarily used for software
+exchange.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>Commercial distributors of software may accept certain
+responsibilities with respect to end users, business partners and the
+like. While this license is intended to facilitate the commercial use of
+the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create
+potential liability for other Contributors. Therefore, if a Contributor
+includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and
+indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses")
+arising from claims, lawsuits and other legal actions brought by a third
+party against the Indemnified Contributor to the extent caused by the
+acts or omissions of such Commercial Contributor in connection with its
+distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In
+order to qualify, an Indemnified Contributor must: a) promptly notify
+the Commercial Contributor in writing of such claim, and b) allow the
+Commercial Contributor to control, and cooperate with the Commercial
+Contributor in, the defense and any related settlement negotiations. The
+Indemnified Contributor may participate in any such claim at its own
+expense.</p>
+
+<p>For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor's responsibility
+alone. Under this section, the Commercial Contributor would have to
+defend claims against the other Contributors related to those
+performance claims and warranties, and if a court requires any other
+Contributor to pay any damages as a result, the Commercial Contributor
+must pay those damages.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
+OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
+ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to
+the risks and costs of program errors, compliance with applicable laws,
+damage to or loss of data, programs or equipment, and unavailability or
+interruption of operations.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
+NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of
+the remainder of the terms of this Agreement, and without further action
+by the parties hereto, such provision shall be reformed to the minimum
+extent necessary to make such provision valid and enforceable.</p>
+
+<p>If Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that the
+Program itself (excluding combinations of the Program with other
+software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the
+date such litigation is filed.</p>
+
+<p>All Recipient's rights under this Agreement shall terminate if it
+fails to comply with any of the material terms or conditions of this
+Agreement and does not cure such failure in a reasonable period of time
+after becoming aware of such noncompliance. If all Recipient's rights
+under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive.</p>
+
+<p>Everyone is permitted to copy and distribute copies of this
+Agreement, but in order to avoid inconsistency the Agreement is
+copyrighted and may only be modified in the following manner. The
+Agreement Steward reserves the right to publish new versions (including
+revisions) of this Agreement from time to time. No one other than the
+Agreement Steward has the right to modify this Agreement. The Eclipse
+Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a
+suitable separate entity. Each new version of the Agreement will be
+given a distinguishing version number. The Program (including
+Contributions) may always be distributed subject to the version of the
+Agreement under which it was received. In addition, after a new version
+of the Agreement is published, Contributor may elect to distribute the
+Program (including its Contributions) under the new version. Except as
+expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
+rights or licenses to the intellectual property of any Contributor under
+this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this
+Agreement are reserved.</p>
+
+<p>This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No party
+to this Agreement will bring a legal action under this Agreement more
+than one year after the cause of action arose. Each party waives its
+rights to a jury trial in any resulting litigation.</p>
+
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.e4.injector.objectsuppliers/license.html b/org.eclipse.osbp.e4.injector.objectsuppliers/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.e4.injector.objectsuppliers/license.html
@@ -0,0 +1,164 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!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>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>February 1, 2011</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+   (COLLECTIVELY "CONTENT").  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse
+ Foundation is provided to you under the terms and conditions of the 
+Eclipse Public License Version 1.0
+   ("EPL").  A copy of the EPL is provided with this Content and is also
+ 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, "Program" will mean the Content.</p>
+
+<p>Content includes, but is not limited to, source code, object code, 
+documentation and other files maintained in the Eclipse Foundation 
+source code
+   repository ("Repository") in software modules ("Modules") and made 
+available as downloadable archives ("Downloads").</p>
+
+<ul>
+       <li>Content may be structured and packaged into modules to 
+facilitate delivering, extending, and upgrading the Content.  Typical 
+modules may include plug-ins ("Plug-ins"), plug-in fragments 
+("Fragments"), and features ("Features").</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&#8482; ARchive) in a directory named "plugins".</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or 
+Fragments and associated material.  Each Feature may be packaged as a 
+sub-directory in a directory named "features".  Within a Feature, files 
+named "feature.xml" may contain a list of the names and version numbers 
+of the Plug-ins
+      and/or Fragments associated with that Feature.</li>
+       <li>Features may also include other Features ("Included 
+Features"). Within a Feature, files named "feature.xml" may contain a 
+list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be 
+contained in files named "about.html" ("Abouts"). The terms and 
+conditions governing Features and
+Included Features should be contained in files named "license.html" 
+("Feature Licenses").  Abouts and Feature Licenses may be located in any
+ directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named "src" of certain Plug-ins</li>
+       <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is 
+installed using the Provisioning Technology (as defined below), you must
+ agree to a license ("Feature Update License") during the
+installation process.  If the Feature contains Included Features, the 
+Feature Update License should either provide you with the terms and 
+conditions governing the Included Features or
+inform you where you can locate them.  Feature Update Licenses may be 
+found in the "license" property of files named "feature.properties" 
+found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the 
+terms and conditions (or references to such terms and conditions) that 
+govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER 
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.
+  SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND 
+CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, 
+or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions 
+govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, 
+examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager ("Provisioning Technology") for the purpose of 
+allowing users to install software, documentation, information and/or
+   other materials (collectively "Installable Software"). This 
+capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about 
+packaging Installable Software is available at <a href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   ("Specification").</p>
+
+<p>You may use Provisioning Technology to allow other parties to install
+ Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to
+ be presented to, and accepted by, the users of the Provisioning 
+Technology
+   in accordance with the Specification. By using Provisioning 
+Technology in such a manner and making it available in accordance with 
+the
+   Specification, you further acknowledge your agreement to, and the 
+acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur ("Provisioning Process") in 
+which a user may execute the Provisioning Technology
+       on a machine ("Target Machine") with the intent of installing, 
+extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology 
+may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user 
+the terms and conditions that govern the use of the Installable
+       Software ("Installable Software Agreement") and such Installable 
+Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable 
+Software Agreement must inform the user of the terms and conditions that
+ govern
+       the Installable Software and must solicit acceptance by the end 
+user in the manner prescribed in such Installable Software Agreement. 
+Upon such
+       indication of agreement by the user, the provisioning Technology 
+will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are
+ currently may have restrictions on the import, possession, and use, 
+and/or re-export to
+   another country, of encryption software. BEFORE using any encryption 
+software, please check the country's laws, regulations and policies 
+concerning the import,
+   possession, or use, and re-export of encryption software, to see if 
+this is permitted.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.e4.injector.objectsuppliers/pom.xml b/org.eclipse.osbp.e4.injector.objectsuppliers/pom.xml
new file mode 100644
index 0000000..fbd5b96
--- /dev/null
+++ b/org.eclipse.osbp.e4.injector.objectsuppliers/pom.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <artifactId>org.eclipse.osbp.e4.injector.objectsuppliers</artifactId>
+  <packaging>eclipse-plugin</packaging>
+  <parent>
+  	<groupId>org.eclipse.osbp.vaaclipse</groupId>
+  	<artifactId>org.eclipse.osbp.vaaclipse</artifactId>
+  	<version>0.9.0-SNAPSHOT</version>
+  	<relativePath>..</relativePath>
+  </parent>
+</project>
diff --git a/org.eclipse.osbp.e4.injector.objectsuppliers/src/org/eclipse/osbp/e4/injector/objectsuppliers/CustomEventObjectSupplier.java b/org.eclipse.osbp.e4.injector.objectsuppliers/src/org/eclipse/osbp/e4/injector/objectsuppliers/CustomEventObjectSupplier.java
new file mode 100644
index 0000000..98b7e9f
--- /dev/null
+++ b/org.eclipse.osbp.e4.injector.objectsuppliers/src/org/eclipse/osbp/e4/injector/objectsuppliers/CustomEventObjectSupplier.java
@@ -0,0 +1,31 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.e4.injector.objectsuppliers;
+
+import javax.inject.Inject;
+import javax.inject.Named;
+
+import org.eclipse.e4.core.di.internal.extensions.EventObjectSupplier;
+import org.eclipse.e4.core.di.suppliers.IObjectDescriptor;
+
+public class CustomEventObjectSupplier extends EventObjectSupplier {
+
+	@Inject
+	@Named("e4ApplicationInstanceId")
+	private String eAI;
+
+	@Override
+	protected String getTopic(IObjectDescriptor descriptor) {
+		String topic = super.getTopic(descriptor);
+		return eAI == null ? topic : eAI + "/" + topic;
+	}
+
+}
diff --git a/org.eclipse.osbp.e4.injector.objectsuppliers/src/org/eclipse/osbp/e4/injector/objectsuppliers/CustomUIEventObjectSupplier.java b/org.eclipse.osbp.e4.injector.objectsuppliers/src/org/eclipse/osbp/e4/injector/objectsuppliers/CustomUIEventObjectSupplier.java
new file mode 100644
index 0000000..5307918
--- /dev/null
+++ b/org.eclipse.osbp.e4.injector.objectsuppliers/src/org/eclipse/osbp/e4/injector/objectsuppliers/CustomUIEventObjectSupplier.java
@@ -0,0 +1,31 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.e4.injector.objectsuppliers;
+
+import javax.inject.Inject;
+import javax.inject.Named;
+
+import org.eclipse.e4.core.di.suppliers.IObjectDescriptor;
+import org.eclipse.e4.ui.internal.di.UIEventObjectSupplier;
+
+public class CustomUIEventObjectSupplier extends UIEventObjectSupplier {
+
+	@Inject
+	@Named("e4ApplicationInstanceId")
+	private String eAI;
+
+	@Override
+	protected String getTopic(IObjectDescriptor descriptor) {
+		String topic = super.getTopic(descriptor);
+		return eAI == null ? topic : eAI + "/" + topic;
+	}
+
+}
diff --git a/org.eclipse.osbp.e4extension/.project b/org.eclipse.osbp.e4extension/.project
new file mode 100644
index 0000000..8d7fd3d
--- /dev/null
+++ b/org.eclipse.osbp.e4extension/.project
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.e4extension</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.babel.editor.rbeBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.babel.editor.rbeNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.e4extension/META-INF/MANIFEST.MF b/org.eclipse.osbp.e4extension/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..61a3d40
--- /dev/null
+++ b/org.eclipse.osbp.e4extension/META-INF/MANIFEST.MF
@@ -0,0 +1,20 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.e4extension
+Bundle-SymbolicName: org.eclipse.osbp.e4extension;singleton:=true
+Bundle-Version: 0.9.0.qualifier
+Bundle-Vendor: Eclipse OSBP
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.e4.ui.model.workbench;bundle-version="0.10.1",
+ org.eclipse.e4.core.di;bundle-version="1.1.0",
+ org.eclipse.e4.core.contexts;bundle-version="1.1.0",
+ org.eclipse.e4.ui.services;bundle-version="0.10.1",
+ org.eclipse.e4.core.services;bundle-version="1.0.0",
+ org.eclipse.e4.ui.workbench;bundle-version="0.10.2",
+ org.eclipse.osbp.e4modelextension;bundle-version="[0.9.0,0.10.0)"
+Bundle-RequiredExecutionEnvironment: JavaSE-1.7
+Bundle-ActivationPolicy: lazy
+Export-Package: org.eclipse.osbp.e4extension.service;version="0.9.0",
+ org.eclipse.osbp.e4extension.shared;version="0.9.0"
+Import-Package: javax.inject;version="1.0.0",
+ javax.annotation
diff --git a/org.eclipse.osbp.e4extension/about.html b/org.eclipse.osbp.e4extension/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.e4extension/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 1, 2016</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.e4extension/about.ini b/org.eclipse.osbp.e4extension/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.e4extension/about.ini
@@ -0,0 +1,17 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%featureText
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=
+
+# Property "appName" contains name of the application (translated)
+appName=%featureName
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+welcomePage=
diff --git a/org.eclipse.osbp.e4extension/about.mappings b/org.eclipse.osbp.e4extension/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.e4extension/about.mappings
@@ -0,0 +1,6 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+0=qualifier
diff --git a/org.eclipse.osbp.e4extension/about.properties b/org.eclipse.osbp.e4extension/about.properties
new file mode 100644
index 0000000..b4a097a
--- /dev/null
+++ b/org.eclipse.osbp.e4extension/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2012, 2016 - Loetz GmbH&Co.KG (Heidelberg)
+# 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:
+#    Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.e4extension
+
+################ blurb property ####################################
+featureText=\
+Copyright (c) 2012-2016 - Loetz GmbH&Co.KG \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+Contributors:\n\
+    Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.e4extension/build.properties b/org.eclipse.osbp.e4extension/build.properties
new file mode 100644
index 0000000..3efd545
--- /dev/null
+++ b/org.eclipse.osbp.e4extension/build.properties
@@ -0,0 +1,10 @@
+source.. = src/
+output.. = target/classes/
+bin.includes = about.properties,  about.mappings,  about.ini,  about.html,  plugin.xml,\
+               META-INF/,\
+               .,\
+               icons/,\
+               epl-v10.html,\
+               license.html
+src.includes = about.properties,  about.mappings,  about.ini,  about.html,  epl-v10.html,\
+               license.html
diff --git a/org.eclipse.osbp.e4extension/epl-v10.html b/org.eclipse.osbp.e4extension/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.e4extension/epl-v10.html
@@ -0,0 +1,259 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+  body {
+    size: 8.5in 11.0in;
+    margin: 0.25in 0.5in 0.25in 0.5in;
+    tab-interval: 0.5in;
+    }
+  p {  	
+    margin-left: auto;
+    margin-top:  0.5em;
+    margin-bottom: 0.5em;
+    }
+  p.list {
+  	margin-left: 0.5in;
+    margin-top:  0.05em;
+    margin-bottom: 0.05em;
+    }
+  </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">where such changes and/or additions to the Program
+originate from and are distributed by that particular Contributor. A
+Contribution 'originates' from a Contributor if it was added to the
+Program by such Contributor itself or anyone acting on such
+Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii)
+are not derivative works of the Program.</p>
+
+<p>"Contributor" means any person or entity that distributes
+the Program.</p>
+
+<p>"Licensed Patents" mean patent claims licensable by a
+Contributor which are necessarily infringed by the use or sale of its
+Contribution alone or when combined with the Program.</p>
+
+<p>"Program" means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>"Recipient" means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works
+of, publicly display, publicly perform, distribute and sublicense the
+Contribution of such Contributor, if any, and such derivative works, in
+source code and object code form.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell,
+offer to sell, import and otherwise transfer the Contribution of such
+Contributor, if any, in source code and object code form. This patent
+license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor,
+such addition of the Contribution causes such combination to be covered
+by the Licensed Patents. The patent license shall not apply to any other
+combinations which include the Contribution. No hardware per se is
+licensed hereunder.</p>
+
+<p class="list">c) Recipient understands that although each Contributor
+grants the licenses to its Contributions set forth herein, no assurances
+are provided by any Contributor that the Program does not infringe the
+patent or other intellectual property rights of any other entity. Each
+Contributor disclaims any liability to Recipient for claims brought by
+any other entity based on infringement of intellectual property rights
+or otherwise. As a condition to exercising the rights and licenses
+granted hereunder, each Recipient hereby assumes sole responsibility to
+secure any other intellectual property rights needed, if any. For
+example, if a third party patent license is required to allow Recipient
+to distribute the Program, it is Recipient's responsibility to acquire
+that license before distributing the Program.</p>
+
+<p class="list">d) Each Contributor represents that to its knowledge it
+has sufficient copyright rights in its Contribution, if any, to grant
+the copyright license set forth in this Agreement.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">i) effectively disclaims on behalf of all Contributors
+all warranties and conditions, express and implied, including warranties
+or conditions of title and non-infringement, and implied warranties or
+conditions of merchantability and fitness for a particular purpose;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">iv) states that source code for the Program is available
+from such Contributor, and informs licensees how to obtain it in a
+reasonable manner on or through a medium customarily used for software
+exchange.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>Commercial distributors of software may accept certain
+responsibilities with respect to end users, business partners and the
+like. While this license is intended to facilitate the commercial use of
+the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create
+potential liability for other Contributors. Therefore, if a Contributor
+includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and
+indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses")
+arising from claims, lawsuits and other legal actions brought by a third
+party against the Indemnified Contributor to the extent caused by the
+acts or omissions of such Commercial Contributor in connection with its
+distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In
+order to qualify, an Indemnified Contributor must: a) promptly notify
+the Commercial Contributor in writing of such claim, and b) allow the
+Commercial Contributor to control, and cooperate with the Commercial
+Contributor in, the defense and any related settlement negotiations. The
+Indemnified Contributor may participate in any such claim at its own
+expense.</p>
+
+<p>For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor's responsibility
+alone. Under this section, the Commercial Contributor would have to
+defend claims against the other Contributors related to those
+performance claims and warranties, and if a court requires any other
+Contributor to pay any damages as a result, the Commercial Contributor
+must pay those damages.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
+OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
+ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to
+the risks and costs of program errors, compliance with applicable laws,
+damage to or loss of data, programs or equipment, and unavailability or
+interruption of operations.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
+NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of
+the remainder of the terms of this Agreement, and without further action
+by the parties hereto, such provision shall be reformed to the minimum
+extent necessary to make such provision valid and enforceable.</p>
+
+<p>If Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that the
+Program itself (excluding combinations of the Program with other
+software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the
+date such litigation is filed.</p>
+
+<p>All Recipient's rights under this Agreement shall terminate if it
+fails to comply with any of the material terms or conditions of this
+Agreement and does not cure such failure in a reasonable period of time
+after becoming aware of such noncompliance. If all Recipient's rights
+under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive.</p>
+
+<p>Everyone is permitted to copy and distribute copies of this
+Agreement, but in order to avoid inconsistency the Agreement is
+copyrighted and may only be modified in the following manner. The
+Agreement Steward reserves the right to publish new versions (including
+revisions) of this Agreement from time to time. No one other than the
+Agreement Steward has the right to modify this Agreement. The Eclipse
+Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a
+suitable separate entity. Each new version of the Agreement will be
+given a distinguishing version number. The Program (including
+Contributions) may always be distributed subject to the version of the
+Agreement under which it was received. In addition, after a new version
+of the Agreement is published, Contributor may elect to distribute the
+Program (including its Contributions) under the new version. Except as
+expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
+rights or licenses to the intellectual property of any Contributor under
+this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this
+Agreement are reserved.</p>
+
+<p>This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No party
+to this Agreement will bring a legal action under this Agreement more
+than one year after the cause of action arose. Each party waives its
+rights to a jury trial in any resulting litigation.</p>
+
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.e4extension/icons/sample.gif b/org.eclipse.osbp.e4extension/icons/sample.gif
new file mode 100644
index 0000000..34fb3c9
--- /dev/null
+++ b/org.eclipse.osbp.e4extension/icons/sample.gif
Binary files differ
diff --git a/org.eclipse.osbp.e4extension/license.html b/org.eclipse.osbp.e4extension/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.e4extension/license.html
@@ -0,0 +1,164 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!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>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>February 1, 2011</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+   (COLLECTIVELY "CONTENT").  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse
+ Foundation is provided to you under the terms and conditions of the 
+Eclipse Public License Version 1.0
+   ("EPL").  A copy of the EPL is provided with this Content and is also
+ 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, "Program" will mean the Content.</p>
+
+<p>Content includes, but is not limited to, source code, object code, 
+documentation and other files maintained in the Eclipse Foundation 
+source code
+   repository ("Repository") in software modules ("Modules") and made 
+available as downloadable archives ("Downloads").</p>
+
+<ul>
+       <li>Content may be structured and packaged into modules to 
+facilitate delivering, extending, and upgrading the Content.  Typical 
+modules may include plug-ins ("Plug-ins"), plug-in fragments 
+("Fragments"), and features ("Features").</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&#8482; ARchive) in a directory named "plugins".</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or 
+Fragments and associated material.  Each Feature may be packaged as a 
+sub-directory in a directory named "features".  Within a Feature, files 
+named "feature.xml" may contain a list of the names and version numbers 
+of the Plug-ins
+      and/or Fragments associated with that Feature.</li>
+       <li>Features may also include other Features ("Included 
+Features"). Within a Feature, files named "feature.xml" may contain a 
+list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be 
+contained in files named "about.html" ("Abouts"). The terms and 
+conditions governing Features and
+Included Features should be contained in files named "license.html" 
+("Feature Licenses").  Abouts and Feature Licenses may be located in any
+ directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named "src" of certain Plug-ins</li>
+       <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is 
+installed using the Provisioning Technology (as defined below), you must
+ agree to a license ("Feature Update License") during the
+installation process.  If the Feature contains Included Features, the 
+Feature Update License should either provide you with the terms and 
+conditions governing the Included Features or
+inform you where you can locate them.  Feature Update Licenses may be 
+found in the "license" property of files named "feature.properties" 
+found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the 
+terms and conditions (or references to such terms and conditions) that 
+govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER 
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.
+  SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND 
+CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, 
+or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions 
+govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, 
+examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager ("Provisioning Technology") for the purpose of 
+allowing users to install software, documentation, information and/or
+   other materials (collectively "Installable Software"). This 
+capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about 
+packaging Installable Software is available at <a href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   ("Specification").</p>
+
+<p>You may use Provisioning Technology to allow other parties to install
+ Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to
+ be presented to, and accepted by, the users of the Provisioning 
+Technology
+   in accordance with the Specification. By using Provisioning 
+Technology in such a manner and making it available in accordance with 
+the
+   Specification, you further acknowledge your agreement to, and the 
+acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur ("Provisioning Process") in 
+which a user may execute the Provisioning Technology
+       on a machine ("Target Machine") with the intent of installing, 
+extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology 
+may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user 
+the terms and conditions that govern the use of the Installable
+       Software ("Installable Software Agreement") and such Installable 
+Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable 
+Software Agreement must inform the user of the terms and conditions that
+ govern
+       the Installable Software and must solicit acceptance by the end 
+user in the manner prescribed in such Installable Software Agreement. 
+Upon such
+       indication of agreement by the user, the provisioning Technology 
+will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are
+ currently may have restrictions on the import, possession, and use, 
+and/or re-export to
+   another country, of encryption software. BEFORE using any encryption 
+software, please check the country's laws, regulations and policies 
+concerning the import,
+   possession, or use, and re-export of encryption software, to see if 
+this is permitted.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.e4extension/plugin.xml b/org.eclipse.osbp.e4extension/plugin.xml
new file mode 100644
index 0000000..fcbabd7
--- /dev/null
+++ b/org.eclipse.osbp.e4extension/plugin.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+<extension
+         id="AddonSnippet"
+         name="Addon Snippet"
+         point="org.eclipse.e4.workbench.model">
+      <processor
+            beforefragment="true"
+            class="org.eclipse.osbp.e4extension.StartServiceProcessor">
+      </processor>
+   </extension>
+
+</plugin>
diff --git a/org.eclipse.osbp.e4extension/pom.xml b/org.eclipse.osbp.e4extension/pom.xml
new file mode 100644
index 0000000..740b4df
--- /dev/null
+++ b/org.eclipse.osbp.e4extension/pom.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <artifactId>org.eclipse.osbp.e4extension</artifactId>
+  <packaging>eclipse-plugin</packaging>
+  <parent>
+  	<groupId>org.eclipse.osbp.vaaclipse</groupId>
+  	<artifactId>org.eclipse.osbp.vaaclipse</artifactId>
+  	<version>0.9.0-SNAPSHOT</version>
+  	<relativePath>..</relativePath>
+  </parent>
+</project>
diff --git a/org.eclipse.osbp.e4extension/src/org/eclipse/osbp/e4extension/StartServiceProcessor.java b/org.eclipse.osbp.e4extension/src/org/eclipse/osbp/e4extension/StartServiceProcessor.java
new file mode 100644
index 0000000..f79b824
--- /dev/null
+++ b/org.eclipse.osbp.e4extension/src/org/eclipse/osbp/e4extension/StartServiceProcessor.java
@@ -0,0 +1,33 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.e4extension;
+
+import org.eclipse.e4.core.contexts.ContextInjectionFactory;
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.ui.model.application.MApplication;
+import org.eclipse.osbp.e4extension.impl.PartServiceExtImpl;
+import org.eclipse.osbp.e4extension.service.EPartServiceExt;
+
+/**
+ * @author rushan
+ *
+ */
+public class StartServiceProcessor {
+	@Execute
+	void addMinMaxAddon(MApplication application, IEclipseContext context) {
+
+		PartServiceExtImpl partServiceExt = ContextInjectionFactory.make(
+				PartServiceExtImpl.class, context);
+		context.set(EPartServiceExt.class, partServiceExt);
+	}
+}
diff --git a/org.eclipse.osbp.e4extension/src/org/eclipse/osbp/e4extension/impl/PartServiceExtImpl.java b/org.eclipse.osbp.e4extension/src/org/eclipse/osbp/e4extension/impl/PartServiceExtImpl.java
new file mode 100644
index 0000000..ffdc7e8
--- /dev/null
+++ b/org.eclipse.osbp.e4extension/src/org/eclipse/osbp/e4extension/impl/PartServiceExtImpl.java
@@ -0,0 +1,387 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osbp.e4extension.impl;
+
+import java.lang.reflect.Method;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import javax.inject.Inject;
+
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.e4.core.contexts.ContextInjectionFactory;
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.core.services.contributions.IContributionFactory;
+import org.eclipse.e4.ui.model.application.MApplication;
+import org.eclipse.e4.ui.model.application.descriptor.basic.MPartDescriptor;
+import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.model.application.ui.advanced.MPerspective;
+import org.eclipse.e4.ui.model.application.ui.advanced.MPerspectiveStack;
+import org.eclipse.e4.ui.model.application.ui.advanced.MPlaceholder;
+import org.eclipse.e4.ui.model.application.ui.basic.MInputPart;
+import org.eclipse.e4.ui.model.application.ui.basic.MPart;
+import org.eclipse.e4.ui.model.application.ui.basic.MWindow;
+import org.eclipse.e4.ui.model.application.ui.basic.impl.BasicFactoryImpl;
+import org.eclipse.e4.ui.model.application.ui.menu.MToolBar;
+import org.eclipse.e4.ui.workbench.modeling.EModelService;
+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.ecore.util.EcoreUtil;
+import org.eclipse.osbp.e4extension.service.EPartServiceExt;
+
+import e4modelextension.EditorPartDescriptor;
+import e4modelextension.VaaclipseApplication;
+
+/**
+ * @author rushan
+ * 
+ */
+public class PartServiceExtImpl implements EPartServiceExt {
+	@Inject
+	private IEclipseContext eclipseContext;
+
+	@Inject
+	private MApplication application;
+
+	@Inject
+	EPartService partService;
+
+	@Inject
+	EModelService modelService;
+
+	Map<String, Pattern> patterns = new HashMap<String, Pattern>();
+
+	private EPartService actualServiceImplementation;
+
+	@Override
+	public MInputPart createInputPart(String id) {
+		MPartDescriptor descriptor = findDescriptor(id);
+		return createInputPart(descriptor);
+	}
+
+	private MInputPart createInputPart(MPartDescriptor descriptor) {
+		if (descriptor == null) {
+			return null;
+		}
+
+		MInputPart part = BasicFactoryImpl.eINSTANCE.createInputPart();
+		part.setElementId(descriptor.getElementId());
+		part.getMenus().addAll(EcoreUtil.copyAll(descriptor.getMenus()));
+		if (descriptor.getToolbar() != null) {
+			part.setToolbar((MToolBar) EcoreUtil.copy((EObject) descriptor
+					.getToolbar()));
+		}
+		part.setContributorURI(descriptor.getContributorURI());
+		// part.setCloseable(descriptor.isCloseable());
+		part.setCloseable(true); // closable
+		part.setContributionURI(descriptor.getContributionURI());
+		part.setLabel(descriptor.getLabel());
+		part.setIconURI(descriptor.getIconURI());
+		part.setTooltip(descriptor.getTooltip());
+		part.getHandlers().addAll(EcoreUtil.copyAll(descriptor.getHandlers()));
+		part.getTags().addAll(descriptor.getTags());
+		part.getBindingContexts().addAll(descriptor.getBindingContexts());
+		part.getTags().add(EPartService.REMOVE_ON_HIDE_TAG);
+		return part;
+	}
+
+	@Override
+	public MPartDescriptor findDescriptor(String id) {
+		for (MPartDescriptor descriptor : application.getDescriptors()) {
+			if (descriptor.getElementId().equals(id)) {
+				return descriptor;
+			}
+		}
+		return null;
+	}
+
+	@Override
+	public EditorPartDescriptor findEditorPartDescriptorUsingId(String id) {
+		for (EditorPartDescriptor descriptor : ((VaaclipseApplication) application)
+				.getEditorDescriptors()) {
+			if (descriptor.getElementId().equals(id)) {
+				return descriptor;
+			}
+		}
+		return null;
+	}
+
+	@Override
+	public EditorPartDescriptor findEditorPartDescriptor(String inputUri) {
+		for (EditorPartDescriptor d : ((VaaclipseApplication) application)
+				.getEditorDescriptors()) {
+			if (d.getUriFilter() != null) {
+				String filter = d.getUriFilter().trim();
+				if (!filter.isEmpty()) {
+					if (!patterns.containsKey(filter)) {
+						patterns.put(filter, Pattern.compile(filter));
+					}
+					Pattern pattern = patterns.get(filter);
+					Matcher matcher = pattern.matcher(inputUri);
+					if (matcher.matches()) {
+						return d;
+					}
+				}
+			}
+		}
+		return null;
+	}
+
+	@Override
+	public MInputPart openUri(MElementContainer<?> area, String inputUri) {
+		EditorPartDescriptor editorPartDescriptor = findEditorPartDescriptor(inputUri);
+		return openUri(inputUri, editorPartDescriptor, area);
+	}
+
+	@Override
+	public MInputPart openUri(String inputUri,
+			EditorPartDescriptor editorPartDescriptor, MElementContainer<?> area) {
+		MInputPart part = ensurePartAdded(getWindow(), area,
+				editorPartDescriptor, inputUri);
+
+		// ATTENTION!!! We should use the EPartService showPart method ONLY if
+		// all contexts are crated (i.e. model is rendered)
+		// But this method (openURI) should be usable when model is not
+		// rendered. So we check the context and if it is created we use
+		// servive methods.
+		if (application.getContext() != null)
+			partService.showPart(part, PartState.ACTIVATE);
+		else // otherwise just select it in its container
+		{
+			MPlaceholder partPh = modelService.findPlaceholderFor(getWindow(),
+					part);
+			if (partPh != null) {
+				MElementContainer<MUIElement> parent = partPh.getParent();
+				parent.setSelectedElement(partPh);
+			} else {
+				MElementContainer<MUIElement> parent = part.getParent();
+				parent.setSelectedElement(part);
+			}
+		}
+		return part;
+	}
+
+	@Override
+	public MInputPart openUri(String inputUri) {
+		return this.openUri((MElementContainer<?>) null, inputUri);
+	}
+
+	@Override
+	public MInputPart openUri(String inputUri, EditorPartDescriptor descriptor) {
+		return this.openUri(inputUri, descriptor, null);
+	}
+
+	@Override
+	public MInputPart openUri(String inputUri, String editorDescriptorId) {
+		EditorPartDescriptor d = findEditorPartDescriptorUsingId(editorDescriptorId);
+		if (d != null) {
+			return openUri(inputUri, d);
+		} else
+			return null;
+	}
+
+	@Override
+	public void closeUri(String inputUri, boolean saveBeforeClose) {
+		MInputPart part = findPart(getWindow(), inputUri);
+
+		if (part == null)
+			return;
+
+		if (saveBeforeClose) {
+			IEclipseContext partContext = part.getContext();
+			if (partContext == null)
+				partContext = modelService.getContainingContext(part);
+
+			// Allow closes to be 'canceled'
+			EPartService partService = (EPartService) partContext
+					.get(EPartService.class.getName());
+			if (partService.savePart(part, true)) {
+				partService.hidePart(part, true);
+			}
+		} else {
+			partService.hidePart(part, true);
+		}
+	}
+
+	private MInputPart ensurePartAdded(MWindow window,
+			MElementContainer<?> area,
+			EditorPartDescriptor editorPartDescriptor, String inputUri) {
+		MInputPart part = findPart(window, inputUri);
+
+		if (part == null) {// else we create new part and add it with specified
+							// logic
+
+			// create part
+			part = addInputPart(window, area, editorPartDescriptor, inputUri);
+
+			// now part is added to window, so we all work is done
+		}
+
+		return part;
+	}
+
+	private MInputPart addInputPart(MWindow window, MElementContainer<?> area,
+			EditorPartDescriptor editorPartDescriptor, String inputUri) {
+		MInputPart part;
+		part = createInputPart(editorPartDescriptor);
+		part.setInputURI(inputUri);
+
+		// create context for add logic and set context info
+		IEclipseContext localContext = eclipseContext.createChild();
+		localContext.set(MPart.class, part);
+		localContext.set(MElementContainer.class, area);
+		localContext.set(MInputPart.class, part);
+		localContext.set(MWindow.class, window);
+
+		// obtain adding logic
+		IContributionFactory contributionFactory = (IContributionFactory) localContext
+				.get(IContributionFactory.class.getName());
+		Object addLogic = contributionFactory.create(
+				editorPartDescriptor.getPartAddingLogicUri(), localContext);
+
+		// execute adding logic
+		ContextInjectionFactory.invoke(addLogic, Execute.class, localContext);
+		return part;
+	}
+
+	@Override
+	public MInputPart openNewEditor(EditorPartDescriptor descriptor) {
+		return addInputPart(getWindow(), null, descriptor, null);
+	}
+
+	@Override
+	public MInputPart openNewEditor(String descriptorId) {
+		EditorPartDescriptor d = findEditorPartDescriptorUsingId(descriptorId);
+		if (d == null)
+			return null;
+		return openNewEditor(d);
+	}
+
+	private MInputPart findPart(MWindow window, String inputUri) {
+		MPerspectiveStack stack = null;
+		for (MUIElement e : window.getChildren()) {
+			if (e instanceof MPerspectiveStack) {
+				stack = (MPerspectiveStack) e;
+				break;
+			}
+		}
+
+		MPerspective persp = stack != null ? stack.getSelectedElement() : null;
+
+		MElementContainer<?> container = persp != null ? persp : window;
+
+		List<MPart> parts = modelService.findElements(container, null,
+				MPart.class, null, EModelService.OUTSIDE_PERSPECTIVE
+						| EModelService.IN_ACTIVE_PERSPECTIVE
+						| EModelService.IN_SHARED_AREA);
+
+		MInputPart part = null;
+		for (MPart p : parts) {
+			if (p instanceof MInputPart) {
+				String _inputUri = ((MInputPart) p).getInputURI();
+				if (inputUri.equals(_inputUri)) {
+					part = (MInputPart) p;
+					break;
+				}
+			}
+		}
+		return part;
+	}
+
+	private MWindow getWindow() {
+		if (application.getSelectedElement() != null)
+			return application.getSelectedElement();
+		List<MWindow> windows = application.getChildren();
+		if (windows.size() != 0)
+			return windows.get(0);
+		return null;
+	}
+
+	private EPartService getActualServiceImplementation() {
+		if (actualServiceImplementation != null)
+			return actualServiceImplementation;
+
+		try {
+			Method getActiveWindowService = partService.getClass()
+					.getDeclaredMethod("getActiveWindowService");
+			getActiveWindowService.setAccessible(true);
+			actualServiceImplementation = (EPartService) getActiveWindowService
+					.invoke(partService);
+			return actualServiceImplementation;
+		} catch (Exception e) {
+			return null;
+		}
+	}
+
+	public MPart showPart(String id, PartState partState) {
+		Assert.isNotNull(id);
+		Assert.isNotNull(partState);
+
+		MPart part = partService.findPart(id);
+		if (part == null) {
+			MPartDescriptor descriptor = findDescriptor(id);
+
+			try {
+				EPartService actualServiceImplementation = getActualServiceImplementation();
+				Method createPart = actualServiceImplementation.getClass()
+						.getDeclaredMethod("createPart", MPartDescriptor.class);
+				createPart.setAccessible(true);
+				part = (MPart) createPart.invoke(actualServiceImplementation,
+						descriptor);
+			} catch (Exception ex) {
+				return null;
+			}
+
+			if (part == null) {
+				return null;
+			}
+		}
+
+		// TODO - seems to work better that way!
+		return partService.showPart(part, partState);
+	}
+
+	public MPart addPart(MPart part) {
+		Assert.isNotNull(part);
+		MPart localPart = findPart(part.getElementId());
+
+		try {
+			EPartService actualServiceImplementation = getActualServiceImplementation();
+			Method addPart = actualServiceImplementation.getClass()
+					.getDeclaredMethod("addPart", MPart.class, MPart.class);
+			addPart.setAccessible(true);
+			return (MPart) addPart.invoke(actualServiceImplementation, part,
+					localPart == null ? part : localPart);
+		} catch (Exception ex) {
+			return null;
+		}
+
+		// return addPart(part, localPart == null ? part : localPart);
+	}
+
+	public MPart findPart(String id) {
+		List<MPart> parts = getParts(MPart.class, id);
+		return parts.size() > 0 ? parts.get(0) : null;
+	}
+
+	private <T> List<T> getParts(Class<T> cls, String id) {
+		return modelService.findElements(getWindow(), id, cls, null,
+				EModelService.OUTSIDE_PERSPECTIVE
+						| EModelService.IN_ANY_PERSPECTIVE
+						| EModelService.IN_SHARED_AREA);
+	}
+}
diff --git a/org.eclipse.osbp.e4extension/src/org/eclipse/osbp/e4extension/service/EPartServiceExt.java b/org.eclipse.osbp.e4extension/src/org/eclipse/osbp/e4extension/service/EPartServiceExt.java
new file mode 100644
index 0000000..f5c6f4c
--- /dev/null
+++ b/org.eclipse.osbp.e4extension/src/org/eclipse/osbp/e4extension/service/EPartServiceExt.java
@@ -0,0 +1,96 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.e4extension.service;
+
+import org.eclipse.e4.ui.model.application.descriptor.basic.MPartDescriptor;
+import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+import org.eclipse.e4.ui.model.application.ui.basic.MInputPart;
+import org.eclipse.e4.ui.model.application.ui.basic.MPart;
+import org.eclipse.e4.ui.workbench.modeling.EPartService.PartState;
+
+import e4modelextension.EditorPartDescriptor;
+
+/**
+ * @author rushan
+ *
+ */
+public interface EPartServiceExt {
+	public static interface PartAddLogic {
+		void addMPart(MPart mpart);
+	}
+
+	/**
+	 * Creates a new input part of the given id.
+	 * 
+	 * @param id
+	 *            the identifier of the part, must not be <code>null</code>
+	 * @return a new part of the given id, or <code>null</code> if no part
+	 *         descriptors can be found that match the specified id
+	 */
+	MInputPart createInputPart(String id);
+
+	MPartDescriptor findDescriptor(String id);
+
+	EditorPartDescriptor findEditorPartDescriptorUsingId(String id);
+
+	EditorPartDescriptor findEditorPartDescriptor(String inputUri);
+
+	/**
+	 * Open the given uri in area with id = org.eclipse.ui.editorss (eclipse
+	 * conditions)
+	 * 
+	 * @param inputUri
+	 *            given uri
+	 * @return part that was opened or finded with this uri
+	 */
+	MInputPart openUri(String inputUri);
+
+	/**
+	 * Open the given uri in area with id = org.eclipse.ui.editorss (eclipse
+	 * conditions) in editor with given descriptor
+	 */
+	MInputPart openUri(String inputUri, EditorPartDescriptor descriptor);
+
+	MInputPart openUri(String inputUri, String editorDescriptorId);
+
+	/**
+	 * Open given uri in given are
+	 * 
+	 * @param area
+	 * @param inputUri
+	 * @return
+	 */
+	MInputPart openUri(MElementContainer<?> area, String inputUri);
+
+	MInputPart openUri(String inputUri,
+			EditorPartDescriptor editorPartDescriptor, MElementContainer<?> area);
+
+	void closeUri(String inputUri, boolean saveBeforeClose);
+
+	MInputPart openNewEditor(EditorPartDescriptor descriptor);
+
+	MInputPart openNewEditor(String descriptorId);
+
+	/**
+	 * Fixed method EPartService.showPart. Current method search any opened
+	 * shared part and if allowMultiples == false (default) it create
+	 * placeholder on this part rather creating new. The differences from
+	 * original showPart is that it search shared part in any perspective, the
+	 * original showPart search shared part in active perspective. I can not say
+	 * is this bug or general contract of this method...
+	 * 
+	 * @param id
+	 * @param partState
+	 * @return
+	 */
+	MPart showPart(String id, PartState partState);
+}
diff --git a/org.eclipse.osbp.e4extension/src/org/eclipse/osbp/e4extension/shared/DefaultPartAddingLogic.java b/org.eclipse.osbp.e4extension/src/org/eclipse/osbp/e4extension/shared/DefaultPartAddingLogic.java
new file mode 100644
index 0000000..d0a36a2
--- /dev/null
+++ b/org.eclipse.osbp.e4extension/src/org/eclipse/osbp/e4extension/shared/DefaultPartAddingLogic.java
@@ -0,0 +1,142 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.e4extension.shared;
+
+import java.util.List;
+
+import javax.inject.Inject;
+
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.core.di.annotations.Optional;
+import org.eclipse.e4.ui.model.application.MApplication;
+import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.model.application.ui.advanced.MArea;
+import org.eclipse.e4.ui.model.application.ui.advanced.MPerspective;
+import org.eclipse.e4.ui.model.application.ui.advanced.MPlaceholder;
+import org.eclipse.e4.ui.model.application.ui.basic.MBasicFactory;
+import org.eclipse.e4.ui.model.application.ui.basic.MPart;
+import org.eclipse.e4.ui.model.application.ui.basic.MPartStack;
+import org.eclipse.e4.ui.model.application.ui.basic.MWindow;
+import org.eclipse.e4.ui.workbench.modeling.EModelService;
+
+public class DefaultPartAddingLogic {
+	@Inject
+	MApplication application;
+
+	@Inject
+	EModelService modelService;
+
+	@Execute
+	public void execute(MWindow window, @Optional MElementContainer<?> area,
+			MPart part, EModelService modelService) {
+		if (area != null) {
+			addLogic1(area, part, modelService);
+		} else {// add using part logic copied from eclipse e4 service
+				// epartservice implementation - partservicesimpl
+			addLogic2(window, part, modelService);
+		}
+	}
+
+	private void addLogic1(MElementContainer<?> area, MPart part,
+			EModelService modelService) {
+		MPartStack stack = null;
+		List<MPartStack> partStacks = modelService.findElements(area, null,
+				MPartStack.class, null);
+		if (partStacks.isEmpty()) {
+			if (area instanceof MArea) {
+				MArea marea = (MArea) area;
+				stack = MBasicFactory.INSTANCE.createPartStack();
+				marea.getChildren().add(stack);
+				// engine.createGui(stack);
+				// ((GenericRenderer)marea.getRenderer()).refreshPlatformElement(marea);
+			} else
+				throw new IllegalStateException(String.format(
+						"Can not add the part %s to area %s", part, area));
+		} else {
+			stack = partStacks.get(0);
+		}
+
+		if (stack != null)
+			stack.getChildren().add(part);
+	}
+
+	/**
+	 * Add using part logic copied from eclipse e4 service epartservice
+	 * implementation - partservicesimpl
+	 */
+	private void addLogic2(MWindow window, MPart part,
+			EModelService modelService) {
+		// ------------from epartserviceimpl---
+		MElementContainer<MUIElement> container = getContainer(window);
+		MElementContainer<?> area = (MElementContainer<?>) modelService.find(
+				"org.eclipse.ui.editorss", container); //$NON-NLS-1$
+
+		MPartStack activeStack = null;
+		if (area instanceof MPlaceholder
+				&& ((MPlaceholder) area).getRef() instanceof MArea) {
+			// Find the currently 'active' stack in the area
+			MArea a = (MArea) ((MPlaceholder) area).getRef();
+			MUIElement curActive = a.getSelectedElement();
+			while (curActive instanceof MElementContainer<?>) {
+				if (curActive instanceof MPartStack) {
+					activeStack = (MPartStack) curActive;
+					break;
+				}
+				MElementContainer<?> curContainer = (MElementContainer<?>) curActive;
+				curActive = curContainer.getSelectedElement();
+			}
+		}
+
+		if (activeStack != null) {
+			activeStack.getChildren().add(part);
+		} else {
+			// Find the first visible stack in the area
+			List<MPartStack> sharedStacks = modelService.findElements(area,
+					null, MPartStack.class, null);
+			if (sharedStacks.size() > 0) {
+				for (MPartStack stack : sharedStacks) {
+					if (stack.isToBeRendered()) {
+						stack.getChildren().add(part);
+						break;
+					}
+				}
+			} else {
+				addLogic1(area, part, modelService);
+			}
+		}
+	}
+
+	/**
+	 * "Container" here is: 1) a selected MPerspective, or, if none available 2)
+	 * the MWindow for which this part service is created, or, if not available,
+	 * 3) the MApplication.
+	 */
+	private MElementContainer<MUIElement> getContainer(MWindow workbenchWindow) {
+		MElementContainer<? extends MUIElement> outerContainer = (workbenchWindow != null) ? workbenchWindow
+				: application;
+
+		// see if we can narrow it down to the active perspective
+		for (MElementContainer<?> container = outerContainer; container != null;) {
+			if (container instanceof MPerspective)
+				return (MElementContainer<MUIElement>) container;
+			Object child = container.getSelectedElement();
+			if (child == null)
+				break;
+			if (child instanceof MElementContainer<?>)
+				container = (MElementContainer<?>) child;
+			else
+				break;
+		}
+		return (MElementContainer<MUIElement>) outerContainer;
+	}
+}
diff --git a/org.eclipse.osbp.e4modelextension/.project b/org.eclipse.osbp.e4modelextension/.project
new file mode 100644
index 0000000..cd9ffad
--- /dev/null
+++ b/org.eclipse.osbp.e4modelextension/.project
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.e4modelextension</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.babel.editor.rbeBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.babel.editor.rbeNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.e4modelextension/META-INF/MANIFEST.MF b/org.eclipse.osbp.e4modelextension/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..9e10292
--- /dev/null
+++ b/org.eclipse.osbp.e4modelextension/META-INF/MANIFEST.MF
@@ -0,0 +1,19 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.e4modelextension
+Bundle-SymbolicName: org.eclipse.osbp.e4modelextension;singleton:=true
+Bundle-Version: 0.9.0.qualifier
+Bundle-ClassPath: .
+Bundle-Vendor: Eclipse OSBP
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: JavaSE-1.7
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.emf.ecore;visibility:=reexport,
+ org.eclipse.e4.ui.model.workbench;visibility:=reexport,
+ org.eclipse.e4.core.contexts;bundle-version="1.1.0",
+ org.eclipse.osbp.vaaclipse.ui.preferences.model;bundle-version="[0.9.0,0.10.0)";visibility:=reexport
+Bundle-ActivationPolicy: lazy
+Export-Package: e4modelextension;version="0.9.0",
+ e4modelextension.impl;version="0.9.0",
+ e4modelextension.util;version="0.9.0"
+Import-Package: javax.annotation
diff --git a/org.eclipse.osbp.e4modelextension/about.html b/org.eclipse.osbp.e4modelextension/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.e4modelextension/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 1, 2016</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.e4modelextension/about.ini b/org.eclipse.osbp.e4modelextension/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.e4modelextension/about.ini
@@ -0,0 +1,17 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%featureText
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=
+
+# Property "appName" contains name of the application (translated)
+appName=%featureName
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+welcomePage=
diff --git a/org.eclipse.osbp.e4modelextension/about.mappings b/org.eclipse.osbp.e4modelextension/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.e4modelextension/about.mappings
@@ -0,0 +1,6 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+0=qualifier
diff --git a/org.eclipse.osbp.e4modelextension/about.properties b/org.eclipse.osbp.e4modelextension/about.properties
new file mode 100644
index 0000000..f55264a
--- /dev/null
+++ b/org.eclipse.osbp.e4modelextension/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2012, 2016 - Loetz GmbH&Co.KG (Heidelberg)
+# 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:
+#    Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.e4modelextension
+
+################ blurb property ####################################
+featureText=\
+Copyright (c) 2012-2016 - Loetz GmbH&Co.KG \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+Contributors:\n\
+    Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.e4modelextension/build.properties b/org.eclipse.osbp.e4modelextension/build.properties
new file mode 100644
index 0000000..da0146c
--- /dev/null
+++ b/org.eclipse.osbp.e4modelextension/build.properties
@@ -0,0 +1,14 @@
+#
+
+bin.includes = about.properties,  about.mappings,  about.ini,  about.html,  .,\
+               model/,\
+               META-INF/,\
+               plugin.xml,\
+               plugin.properties,\
+               license.html,\
+               epl-v10.html
+jars.compile.order = .
+source.. = src/
+output.. = target/classes/
+src.includes = about.properties,  about.mappings,  about.ini,  about.html,  epl-v10.html,\
+               license.html
diff --git a/org.eclipse.osbp.e4modelextension/epl-v10.html b/org.eclipse.osbp.e4modelextension/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.e4modelextension/epl-v10.html
@@ -0,0 +1,259 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+  body {
+    size: 8.5in 11.0in;
+    margin: 0.25in 0.5in 0.25in 0.5in;
+    tab-interval: 0.5in;
+    }
+  p {  	
+    margin-left: auto;
+    margin-top:  0.5em;
+    margin-bottom: 0.5em;
+    }
+  p.list {
+  	margin-left: 0.5in;
+    margin-top:  0.05em;
+    margin-bottom: 0.05em;
+    }
+  </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">where such changes and/or additions to the Program
+originate from and are distributed by that particular Contributor. A
+Contribution 'originates' from a Contributor if it was added to the
+Program by such Contributor itself or anyone acting on such
+Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii)
+are not derivative works of the Program.</p>
+
+<p>"Contributor" means any person or entity that distributes
+the Program.</p>
+
+<p>"Licensed Patents" mean patent claims licensable by a
+Contributor which are necessarily infringed by the use or sale of its
+Contribution alone or when combined with the Program.</p>
+
+<p>"Program" means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>"Recipient" means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works
+of, publicly display, publicly perform, distribute and sublicense the
+Contribution of such Contributor, if any, and such derivative works, in
+source code and object code form.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell,
+offer to sell, import and otherwise transfer the Contribution of such
+Contributor, if any, in source code and object code form. This patent
+license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor,
+such addition of the Contribution causes such combination to be covered
+by the Licensed Patents. The patent license shall not apply to any other
+combinations which include the Contribution. No hardware per se is
+licensed hereunder.</p>
+
+<p class="list">c) Recipient understands that although each Contributor
+grants the licenses to its Contributions set forth herein, no assurances
+are provided by any Contributor that the Program does not infringe the
+patent or other intellectual property rights of any other entity. Each
+Contributor disclaims any liability to Recipient for claims brought by
+any other entity based on infringement of intellectual property rights
+or otherwise. As a condition to exercising the rights and licenses
+granted hereunder, each Recipient hereby assumes sole responsibility to
+secure any other intellectual property rights needed, if any. For
+example, if a third party patent license is required to allow Recipient
+to distribute the Program, it is Recipient's responsibility to acquire
+that license before distributing the Program.</p>
+
+<p class="list">d) Each Contributor represents that to its knowledge it
+has sufficient copyright rights in its Contribution, if any, to grant
+the copyright license set forth in this Agreement.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">i) effectively disclaims on behalf of all Contributors
+all warranties and conditions, express and implied, including warranties
+or conditions of title and non-infringement, and implied warranties or
+conditions of merchantability and fitness for a particular purpose;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">iv) states that source code for the Program is available
+from such Contributor, and informs licensees how to obtain it in a
+reasonable manner on or through a medium customarily used for software
+exchange.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>Commercial distributors of software may accept certain
+responsibilities with respect to end users, business partners and the
+like. While this license is intended to facilitate the commercial use of
+the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create
+potential liability for other Contributors. Therefore, if a Contributor
+includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and
+indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses")
+arising from claims, lawsuits and other legal actions brought by a third
+party against the Indemnified Contributor to the extent caused by the
+acts or omissions of such Commercial Contributor in connection with its
+distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In
+order to qualify, an Indemnified Contributor must: a) promptly notify
+the Commercial Contributor in writing of such claim, and b) allow the
+Commercial Contributor to control, and cooperate with the Commercial
+Contributor in, the defense and any related settlement negotiations. The
+Indemnified Contributor may participate in any such claim at its own
+expense.</p>
+
+<p>For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor's responsibility
+alone. Under this section, the Commercial Contributor would have to
+defend claims against the other Contributors related to those
+performance claims and warranties, and if a court requires any other
+Contributor to pay any damages as a result, the Commercial Contributor
+must pay those damages.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
+OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
+ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to
+the risks and costs of program errors, compliance with applicable laws,
+damage to or loss of data, programs or equipment, and unavailability or
+interruption of operations.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
+NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of
+the remainder of the terms of this Agreement, and without further action
+by the parties hereto, such provision shall be reformed to the minimum
+extent necessary to make such provision valid and enforceable.</p>
+
+<p>If Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that the
+Program itself (excluding combinations of the Program with other
+software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the
+date such litigation is filed.</p>
+
+<p>All Recipient's rights under this Agreement shall terminate if it
+fails to comply with any of the material terms or conditions of this
+Agreement and does not cure such failure in a reasonable period of time
+after becoming aware of such noncompliance. If all Recipient's rights
+under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive.</p>
+
+<p>Everyone is permitted to copy and distribute copies of this
+Agreement, but in order to avoid inconsistency the Agreement is
+copyrighted and may only be modified in the following manner. The
+Agreement Steward reserves the right to publish new versions (including
+revisions) of this Agreement from time to time. No one other than the
+Agreement Steward has the right to modify this Agreement. The Eclipse
+Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a
+suitable separate entity. Each new version of the Agreement will be
+given a distinguishing version number. The Program (including
+Contributions) may always be distributed subject to the version of the
+Agreement under which it was received. In addition, after a new version
+of the Agreement is published, Contributor may elect to distribute the
+Program (including its Contributions) under the new version. Except as
+expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
+rights or licenses to the intellectual property of any Contributor under
+this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this
+Agreement are reserved.</p>
+
+<p>This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No party
+to this Agreement will bring a legal action under this Agreement more
+than one year after the cause of action arose. Each party waives its
+rights to a jury trial in any resulting litigation.</p>
+
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.e4modelextension/license.html b/org.eclipse.osbp.e4modelextension/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.e4modelextension/license.html
@@ -0,0 +1,164 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!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>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>February 1, 2011</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+   (COLLECTIVELY "CONTENT").  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse
+ Foundation is provided to you under the terms and conditions of the 
+Eclipse Public License Version 1.0
+   ("EPL").  A copy of the EPL is provided with this Content and is also
+ 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, "Program" will mean the Content.</p>
+
+<p>Content includes, but is not limited to, source code, object code, 
+documentation and other files maintained in the Eclipse Foundation 
+source code
+   repository ("Repository") in software modules ("Modules") and made 
+available as downloadable archives ("Downloads").</p>
+
+<ul>
+       <li>Content may be structured and packaged into modules to 
+facilitate delivering, extending, and upgrading the Content.  Typical 
+modules may include plug-ins ("Plug-ins"), plug-in fragments 
+("Fragments"), and features ("Features").</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&#8482; ARchive) in a directory named "plugins".</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or 
+Fragments and associated material.  Each Feature may be packaged as a 
+sub-directory in a directory named "features".  Within a Feature, files 
+named "feature.xml" may contain a list of the names and version numbers 
+of the Plug-ins
+      and/or Fragments associated with that Feature.</li>
+       <li>Features may also include other Features ("Included 
+Features"). Within a Feature, files named "feature.xml" may contain a 
+list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be 
+contained in files named "about.html" ("Abouts"). The terms and 
+conditions governing Features and
+Included Features should be contained in files named "license.html" 
+("Feature Licenses").  Abouts and Feature Licenses may be located in any
+ directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named "src" of certain Plug-ins</li>
+       <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is 
+installed using the Provisioning Technology (as defined below), you must
+ agree to a license ("Feature Update License") during the
+installation process.  If the Feature contains Included Features, the 
+Feature Update License should either provide you with the terms and 
+conditions governing the Included Features or
+inform you where you can locate them.  Feature Update Licenses may be 
+found in the "license" property of files named "feature.properties" 
+found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the 
+terms and conditions (or references to such terms and conditions) that 
+govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER 
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.
+  SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND 
+CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, 
+or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions 
+govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, 
+examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager ("Provisioning Technology") for the purpose of 
+allowing users to install software, documentation, information and/or
+   other materials (collectively "Installable Software"). This 
+capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about 
+packaging Installable Software is available at <a href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   ("Specification").</p>
+
+<p>You may use Provisioning Technology to allow other parties to install
+ Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to
+ be presented to, and accepted by, the users of the Provisioning 
+Technology
+   in accordance with the Specification. By using Provisioning 
+Technology in such a manner and making it available in accordance with 
+the
+   Specification, you further acknowledge your agreement to, and the 
+acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur ("Provisioning Process") in 
+which a user may execute the Provisioning Technology
+       on a machine ("Target Machine") with the intent of installing, 
+extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology 
+may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user 
+the terms and conditions that govern the use of the Installable
+       Software ("Installable Software Agreement") and such Installable 
+Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable 
+Software Agreement must inform the user of the terms and conditions that
+ govern
+       the Installable Software and must solicit acceptance by the end 
+user in the manner prescribed in such Installable Software Agreement. 
+Upon such
+       indication of agreement by the user, the provisioning Technology 
+will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are
+ currently may have restrictions on the import, possession, and use, 
+and/or re-export to
+   another country, of encryption software. BEFORE using any encryption 
+software, please check the country's laws, regulations and policies 
+concerning the import,
+   possession, or use, and re-export of encryption software, to see if 
+this is permitted.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.e4modelextension/model/e4modelextension.ecore b/org.eclipse.osbp.e4modelextension/model/e4modelextension.ecore
new file mode 100644
index 0000000..976228a
--- /dev/null
+++ b/org.eclipse.osbp.e4modelextension/model/e4modelextension.ecore
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="e4modelextension" nsURI="http://www.semanticsoft.org/ExtensionUI/e4modelextension"
+    nsPrefix="e4modelextension">
+  <eClassifiers xsi:type="ecore:EClass" name="EditorPartDescriptor" eSuperTypes="../../org.eclipse.e4.ui.model.workbench/model/UIElements.ecore#//descriptor/basic/PartDescriptor">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="uriFilter" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="partAddingLogicUri" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+        defaultValueLiteral="bundleclass://org.eclipse.osbp.e4extension/org.eclipse.osbp.e4extension.shared.DefaultPartAddingLogic"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="VaaclipseApplication" eSuperTypes="../../org.eclipse.e4.ui.model.workbench/model/UIElements.ecore#//Application">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="editorDescriptors" upperBound="-1"
+        eType="#//EditorPartDescriptor" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="preferencesCategories"
+        upperBound="-1" eType="ecore:EClass ../../org.eclipse.osbp.vaaclipse.ui.preferences.model/model/preferences.ecore#//PreferencesCategory"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="preferencesPages" upperBound="-1"
+        eType="ecore:EClass ../../org.eclipse.osbp.vaaclipse.ui.preferences.model/model/preferences.ecore#//PreferencesPage"/>
+  </eClassifiers>
+</ecore:EPackage>
diff --git a/org.eclipse.osbp.e4modelextension/model/e4modelextension.genmodel b/org.eclipse.osbp.e4modelextension/model/e4modelextension.genmodel
new file mode 100644
index 0000000..a7c8197
--- /dev/null
+++ b/org.eclipse.osbp.e4modelextension/model/e4modelextension.genmodel
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
+    xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" modelDirectory="/org.eclipse.osbp.e4modelextension/src" modelPluginID="org.eclipse.osbp.e4modelextension"
+    modelName="E4modelextension" rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container"
+    importerID="org.eclipse.emf.importer.ecore" complianceLevel="7.0" copyrightFields="false"
+    usedGenPackages="../../org.eclipse.osbp.vaaclipse.ui.preferences.model/model/preferences.genmodel#//preferences ../../org.eclipse.e4.ui.model.workbench/model/UIElements.genmodel#//application"
+    importOrganizing="true">
+  <foreignModel>e4modelextension.ecore</foreignModel>
+  <genPackages prefix="E4modelextension" disposableProviderFactory="true" ecorePackage="e4modelextension.ecore#/">
+    <genClasses ecoreClass="e4modelextension.ecore#//EditorPartDescriptor">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute e4modelextension.ecore#//EditorPartDescriptor/uriFilter"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute e4modelextension.ecore#//EditorPartDescriptor/partAddingLogicUri"/>
+    </genClasses>
+    <genClasses ecoreClass="e4modelextension.ecore#//VaaclipseApplication">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference e4modelextension.ecore#//VaaclipseApplication/editorDescriptors"/>
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference e4modelextension.ecore#//VaaclipseApplication/preferencesCategories"/>
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference e4modelextension.ecore#//VaaclipseApplication/preferencesPages"/>
+    </genClasses>
+  </genPackages>
+</genmodel:GenModel>
diff --git a/org.eclipse.osbp.e4modelextension/plugin.properties b/org.eclipse.osbp.e4modelextension/plugin.properties
new file mode 100644
index 0000000..ebf8ba0
--- /dev/null
+++ b/org.eclipse.osbp.e4modelextension/plugin.properties
@@ -0,0 +1,4 @@
+#
+
+pluginName = E4modelextension Model
+providerName = www.example.org
diff --git a/org.eclipse.osbp.e4modelextension/plugin.xml b/org.eclipse.osbp.e4modelextension/plugin.xml
new file mode 100644
index 0000000..4a3670d
--- /dev/null
+++ b/org.eclipse.osbp.e4modelextension/plugin.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+-->
+
+<plugin>
+
+   <extension point="org.eclipse.emf.ecore.generated_package">
+      <package
+            uri="http://www.semanticsoft.org/ExtensionUI/e4modelextension"
+            class="e4modelextension.E4modelextensionPackage"
+            genModel="model/e4modelextension.genmodel"/>
+   </extension>
+
+</plugin>
diff --git a/org.eclipse.osbp.e4modelextension/pom.xml b/org.eclipse.osbp.e4modelextension/pom.xml
new file mode 100644
index 0000000..eee57ee
--- /dev/null
+++ b/org.eclipse.osbp.e4modelextension/pom.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <artifactId>org.eclipse.osbp.e4modelextension</artifactId>
+    <packaging>eclipse-plugin</packaging>
+    <parent>
+        <groupId>org.eclipse.osbp.vaaclipse</groupId>
+        <artifactId>org.eclipse.osbp.vaaclipse</artifactId>
+        <version>0.9.0-SNAPSHOT</version>
+        <relativePath>..</relativePath>
+    </parent>
+</project>
diff --git a/org.eclipse.osbp.e4modelextension/src/e4modelextension/E4modelextensionFactory.java b/org.eclipse.osbp.e4modelextension/src/e4modelextension/E4modelextensionFactory.java
new file mode 100644
index 0000000..1ddd923
--- /dev/null
+++ b/org.eclipse.osbp.e4modelextension/src/e4modelextension/E4modelextensionFactory.java
@@ -0,0 +1,49 @@
+package e4modelextension;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc --> The <b>Factory</b> for the model. It provides a
+ * create method for each non-abstract class of the model. <!-- end-user-doc -->
+ * 
+ * @see e4modelextension.E4modelextensionPackage
+ * @generated
+ */
+public interface E4modelextensionFactory extends EFactory {
+	/**
+	 * The singleton instance of the factory. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	E4modelextensionFactory eINSTANCE = e4modelextension.impl.E4modelextensionFactoryImpl
+			.init();
+
+	/**
+	 * Returns a new object of class '<em>Editor Part Descriptor</em>'. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return a new object of class '<em>Editor Part Descriptor</em>'.
+	 * @generated
+	 */
+	EditorPartDescriptor createEditorPartDescriptor();
+
+	/**
+	 * Returns a new object of class '<em>Vaaclipse Application</em>'. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return a new object of class '<em>Vaaclipse Application</em>'.
+	 * @generated
+	 */
+	VaaclipseApplication createVaaclipseApplication();
+
+	/**
+	 * Returns the package supported by this factory. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the package supported by this factory.
+	 * @generated
+	 */
+	E4modelextensionPackage getE4modelextensionPackage();
+
+} // E4modelextensionFactory
diff --git a/org.eclipse.osbp.e4modelextension/src/e4modelextension/E4modelextensionPackage.java b/org.eclipse.osbp.e4modelextension/src/e4modelextension/E4modelextensionPackage.java
new file mode 100644
index 0000000..c896d03
--- /dev/null
+++ b/org.eclipse.osbp.e4modelextension/src/e4modelextension/E4modelextensionPackage.java
@@ -0,0 +1,831 @@
+package e4modelextension;
+
+import org.eclipse.e4.ui.model.application.descriptor.basic.impl.BasicPackageImpl;
+
+import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+/**
+ * <!-- begin-user-doc --> The <b>Package</b> for the model. It contains
+ * accessors for the meta objects to represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each operation of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * 
+ * @see e4modelextension.E4modelextensionFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface E4modelextensionPackage extends EPackage {
+	/**
+	 * The package name. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	String eNAME = "e4modelextension";
+
+	/**
+	 * The package namespace URI. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	String eNS_URI = "http://www.semanticsoft.org/ExtensionUI/e4modelextension";
+
+	/**
+	 * The package namespace name. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	String eNS_PREFIX = "e4modelextension";
+
+	/**
+	 * The singleton instance of the package. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	E4modelextensionPackage eINSTANCE = e4modelextension.impl.E4modelextensionPackageImpl
+			.init();
+
+	/**
+	 * The meta object id for the '
+	 * {@link e4modelextension.impl.EditorPartDescriptorImpl
+	 * <em>Editor Part Descriptor</em>}' class. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @see e4modelextension.impl.EditorPartDescriptorImpl
+	 * @see e4modelextension.impl.E4modelextensionPackageImpl#getEditorPartDescriptor()
+	 * @generated
+	 */
+	int EDITOR_PART_DESCRIPTOR = 0;
+
+	/**
+	 * The feature id for the '<em><b>Element Id</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int EDITOR_PART_DESCRIPTOR__ELEMENT_ID = BasicPackageImpl.PART_DESCRIPTOR__ELEMENT_ID;
+
+	/**
+	 * The feature id for the '<em><b>Persisted State</b></em>' map. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int EDITOR_PART_DESCRIPTOR__PERSISTED_STATE = BasicPackageImpl.PART_DESCRIPTOR__PERSISTED_STATE;
+
+	/**
+	 * The feature id for the '<em><b>Tags</b></em>' attribute list. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int EDITOR_PART_DESCRIPTOR__TAGS = BasicPackageImpl.PART_DESCRIPTOR__TAGS;
+
+	/**
+	 * The feature id for the '<em><b>Contributor URI</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int EDITOR_PART_DESCRIPTOR__CONTRIBUTOR_URI = BasicPackageImpl.PART_DESCRIPTOR__CONTRIBUTOR_URI;
+
+	/**
+	 * The feature id for the '<em><b>Transient Data</b></em>' map. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int EDITOR_PART_DESCRIPTOR__TRANSIENT_DATA = BasicPackageImpl.PART_DESCRIPTOR__TRANSIENT_DATA;
+
+	/**
+	 * The feature id for the '<em><b>Label</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int EDITOR_PART_DESCRIPTOR__LABEL = BasicPackageImpl.PART_DESCRIPTOR__LABEL;
+
+	/**
+	 * The feature id for the '<em><b>Icon URI</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int EDITOR_PART_DESCRIPTOR__ICON_URI = BasicPackageImpl.PART_DESCRIPTOR__ICON_URI;
+
+	/**
+	 * The feature id for the '<em><b>Tooltip</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int EDITOR_PART_DESCRIPTOR__TOOLTIP = BasicPackageImpl.PART_DESCRIPTOR__TOOLTIP;
+
+	/**
+	 * The feature id for the '<em><b>Localized Label</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int EDITOR_PART_DESCRIPTOR__LOCALIZED_LABEL = BasicPackageImpl.PART_DESCRIPTOR__LOCALIZED_LABEL;
+
+	/**
+	 * The feature id for the '<em><b>Localized Tooltip</b></em>' attribute.
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int EDITOR_PART_DESCRIPTOR__LOCALIZED_TOOLTIP = BasicPackageImpl.PART_DESCRIPTOR__LOCALIZED_TOOLTIP;
+
+	/**
+	 * The feature id for the '<em><b>Handlers</b></em>' containment reference
+	 * list. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int EDITOR_PART_DESCRIPTOR__HANDLERS = BasicPackageImpl.PART_DESCRIPTOR__HANDLERS;
+
+	/**
+	 * The feature id for the '<em><b>Binding Contexts</b></em>' reference list.
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int EDITOR_PART_DESCRIPTOR__BINDING_CONTEXTS = BasicPackageImpl.PART_DESCRIPTOR__BINDING_CONTEXTS;
+
+	/**
+	 * The feature id for the '<em><b>Allow Multiple</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int EDITOR_PART_DESCRIPTOR__ALLOW_MULTIPLE = BasicPackageImpl.PART_DESCRIPTOR__ALLOW_MULTIPLE;
+
+	/**
+	 * The feature id for the '<em><b>Category</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int EDITOR_PART_DESCRIPTOR__CATEGORY = BasicPackageImpl.PART_DESCRIPTOR__CATEGORY;
+
+	/**
+	 * The feature id for the '<em><b>Menus</b></em>' containment reference
+	 * list. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int EDITOR_PART_DESCRIPTOR__MENUS = BasicPackageImpl.PART_DESCRIPTOR__MENUS;
+
+	/**
+	 * The feature id for the '<em><b>Toolbar</b></em>' containment reference.
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int EDITOR_PART_DESCRIPTOR__TOOLBAR = BasicPackageImpl.PART_DESCRIPTOR__TOOLBAR;
+
+	/**
+	 * The feature id for the '<em><b>Closeable</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int EDITOR_PART_DESCRIPTOR__CLOSEABLE = BasicPackageImpl.PART_DESCRIPTOR__CLOSEABLE;
+
+	/**
+	 * The feature id for the '<em><b>Dirtyable</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int EDITOR_PART_DESCRIPTOR__DIRTYABLE = BasicPackageImpl.PART_DESCRIPTOR__DIRTYABLE;
+
+	/**
+	 * The feature id for the '<em><b>Contribution URI</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int EDITOR_PART_DESCRIPTOR__CONTRIBUTION_URI = BasicPackageImpl.PART_DESCRIPTOR__CONTRIBUTION_URI;
+
+	/**
+	 * The feature id for the '<em><b>Description</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int EDITOR_PART_DESCRIPTOR__DESCRIPTION = BasicPackageImpl.PART_DESCRIPTOR__DESCRIPTION;
+
+	/**
+	 * The feature id for the '<em><b>Localized Description</b></em>' attribute.
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int EDITOR_PART_DESCRIPTOR__LOCALIZED_DESCRIPTION = BasicPackageImpl.PART_DESCRIPTOR__LOCALIZED_DESCRIPTION;
+
+	/**
+	 * The feature id for the '<em><b>Uri Filter</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int EDITOR_PART_DESCRIPTOR__URI_FILTER = BasicPackageImpl.PART_DESCRIPTOR_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Part Adding Logic Uri</b></em>' attribute.
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int EDITOR_PART_DESCRIPTOR__PART_ADDING_LOGIC_URI = BasicPackageImpl.PART_DESCRIPTOR_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Editor Part Descriptor</em>
+	 * ' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int EDITOR_PART_DESCRIPTOR_FEATURE_COUNT = BasicPackageImpl.PART_DESCRIPTOR_FEATURE_COUNT + 2;
+
+	/**
+	 * The meta object id for the '
+	 * {@link e4modelextension.impl.VaaclipseApplicationImpl
+	 * <em>Vaaclipse Application</em>}' class. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @see e4modelextension.impl.VaaclipseApplicationImpl
+	 * @see e4modelextension.impl.E4modelextensionPackageImpl#getVaaclipseApplication()
+	 * @generated
+	 */
+	int VAACLIPSE_APPLICATION = 1;
+
+	/**
+	 * The feature id for the '<em><b>Element Id</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int VAACLIPSE_APPLICATION__ELEMENT_ID = ApplicationPackageImpl.APPLICATION__ELEMENT_ID;
+
+	/**
+	 * The feature id for the '<em><b>Persisted State</b></em>' map. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int VAACLIPSE_APPLICATION__PERSISTED_STATE = ApplicationPackageImpl.APPLICATION__PERSISTED_STATE;
+
+	/**
+	 * The feature id for the '<em><b>Tags</b></em>' attribute list. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int VAACLIPSE_APPLICATION__TAGS = ApplicationPackageImpl.APPLICATION__TAGS;
+
+	/**
+	 * The feature id for the '<em><b>Contributor URI</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int VAACLIPSE_APPLICATION__CONTRIBUTOR_URI = ApplicationPackageImpl.APPLICATION__CONTRIBUTOR_URI;
+
+	/**
+	 * The feature id for the '<em><b>Transient Data</b></em>' map. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int VAACLIPSE_APPLICATION__TRANSIENT_DATA = ApplicationPackageImpl.APPLICATION__TRANSIENT_DATA;
+
+	/**
+	 * The feature id for the '<em><b>Widget</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int VAACLIPSE_APPLICATION__WIDGET = ApplicationPackageImpl.APPLICATION__WIDGET;
+
+	/**
+	 * The feature id for the '<em><b>Renderer</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int VAACLIPSE_APPLICATION__RENDERER = ApplicationPackageImpl.APPLICATION__RENDERER;
+
+	/**
+	 * The feature id for the '<em><b>To Be Rendered</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int VAACLIPSE_APPLICATION__TO_BE_RENDERED = ApplicationPackageImpl.APPLICATION__TO_BE_RENDERED;
+
+	/**
+	 * The feature id for the '<em><b>On Top</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int VAACLIPSE_APPLICATION__ON_TOP = ApplicationPackageImpl.APPLICATION__ON_TOP;
+
+	/**
+	 * The feature id for the '<em><b>Visible</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int VAACLIPSE_APPLICATION__VISIBLE = ApplicationPackageImpl.APPLICATION__VISIBLE;
+
+	/**
+	 * The feature id for the '<em><b>Parent</b></em>' container reference. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int VAACLIPSE_APPLICATION__PARENT = ApplicationPackageImpl.APPLICATION__PARENT;
+
+	/**
+	 * The feature id for the '<em><b>Container Data</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int VAACLIPSE_APPLICATION__CONTAINER_DATA = ApplicationPackageImpl.APPLICATION__CONTAINER_DATA;
+
+	/**
+	 * The feature id for the '<em><b>Cur Shared Ref</b></em>' reference. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int VAACLIPSE_APPLICATION__CUR_SHARED_REF = ApplicationPackageImpl.APPLICATION__CUR_SHARED_REF;
+
+	/**
+	 * The feature id for the '<em><b>Visible When</b></em>' containment
+	 * reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int VAACLIPSE_APPLICATION__VISIBLE_WHEN = ApplicationPackageImpl.APPLICATION__VISIBLE_WHEN;
+
+	/**
+	 * The feature id for the '<em><b>Accessibility Phrase</b></em>' attribute.
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int VAACLIPSE_APPLICATION__ACCESSIBILITY_PHRASE = ApplicationPackageImpl.APPLICATION__ACCESSIBILITY_PHRASE;
+
+	/**
+	 * The feature id for the '<em><b>Localized Accessibility Phrase</b></em>'
+	 * attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int VAACLIPSE_APPLICATION__LOCALIZED_ACCESSIBILITY_PHRASE = ApplicationPackageImpl.APPLICATION__LOCALIZED_ACCESSIBILITY_PHRASE;
+
+	/**
+	 * The feature id for the '<em><b>Children</b></em>' containment reference
+	 * list. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int VAACLIPSE_APPLICATION__CHILDREN = ApplicationPackageImpl.APPLICATION__CHILDREN;
+
+	/**
+	 * The feature id for the '<em><b>Selected Element</b></em>' reference. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int VAACLIPSE_APPLICATION__SELECTED_ELEMENT = ApplicationPackageImpl.APPLICATION__SELECTED_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Context</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int VAACLIPSE_APPLICATION__CONTEXT = ApplicationPackageImpl.APPLICATION__CONTEXT;
+
+	/**
+	 * The feature id for the '<em><b>Variables</b></em>' attribute list. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int VAACLIPSE_APPLICATION__VARIABLES = ApplicationPackageImpl.APPLICATION__VARIABLES;
+
+	/**
+	 * The feature id for the '<em><b>Properties</b></em>' map. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int VAACLIPSE_APPLICATION__PROPERTIES = ApplicationPackageImpl.APPLICATION__PROPERTIES;
+
+	/**
+	 * The feature id for the '<em><b>Handlers</b></em>' containment reference
+	 * list. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int VAACLIPSE_APPLICATION__HANDLERS = ApplicationPackageImpl.APPLICATION__HANDLERS;
+
+	/**
+	 * The feature id for the '<em><b>Binding Tables</b></em>' containment
+	 * reference list. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int VAACLIPSE_APPLICATION__BINDING_TABLES = ApplicationPackageImpl.APPLICATION__BINDING_TABLES;
+
+	/**
+	 * The feature id for the '<em><b>Root Context</b></em>' containment
+	 * reference list. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int VAACLIPSE_APPLICATION__ROOT_CONTEXT = ApplicationPackageImpl.APPLICATION__ROOT_CONTEXT;
+
+	/**
+	 * The feature id for the '<em><b>Descriptors</b></em>' containment
+	 * reference list. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int VAACLIPSE_APPLICATION__DESCRIPTORS = ApplicationPackageImpl.APPLICATION__DESCRIPTORS;
+
+	/**
+	 * The feature id for the '<em><b>Binding Contexts</b></em>' reference list.
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int VAACLIPSE_APPLICATION__BINDING_CONTEXTS = ApplicationPackageImpl.APPLICATION__BINDING_CONTEXTS;
+
+	/**
+	 * The feature id for the '<em><b>Menu Contributions</b></em>' containment
+	 * reference list. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int VAACLIPSE_APPLICATION__MENU_CONTRIBUTIONS = ApplicationPackageImpl.APPLICATION__MENU_CONTRIBUTIONS;
+
+	/**
+	 * The feature id for the '<em><b>Tool Bar Contributions</b></em>'
+	 * containment reference list. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int VAACLIPSE_APPLICATION__TOOL_BAR_CONTRIBUTIONS = ApplicationPackageImpl.APPLICATION__TOOL_BAR_CONTRIBUTIONS;
+
+	/**
+	 * The feature id for the '<em><b>Trim Contributions</b></em>' containment
+	 * reference list. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int VAACLIPSE_APPLICATION__TRIM_CONTRIBUTIONS = ApplicationPackageImpl.APPLICATION__TRIM_CONTRIBUTIONS;
+
+	/**
+	 * The feature id for the '<em><b>Snippets</b></em>' containment reference
+	 * list. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int VAACLIPSE_APPLICATION__SNIPPETS = ApplicationPackageImpl.APPLICATION__SNIPPETS;
+
+	/**
+	 * The feature id for the '<em><b>Commands</b></em>' containment reference
+	 * list. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int VAACLIPSE_APPLICATION__COMMANDS = ApplicationPackageImpl.APPLICATION__COMMANDS;
+
+	/**
+	 * The feature id for the '<em><b>Addons</b></em>' containment reference
+	 * list. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int VAACLIPSE_APPLICATION__ADDONS = ApplicationPackageImpl.APPLICATION__ADDONS;
+
+	/**
+	 * The feature id for the '<em><b>Categories</b></em>' containment reference
+	 * list. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int VAACLIPSE_APPLICATION__CATEGORIES = ApplicationPackageImpl.APPLICATION__CATEGORIES;
+
+	/**
+	 * The feature id for the '<em><b>Dialogs</b></em>' reference list. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int VAACLIPSE_APPLICATION__DIALOGS = ApplicationPackageImpl.APPLICATION__DIALOGS;
+
+	/**
+	 * The feature id for the '<em><b>Editor Descriptors</b></em>' containment
+	 * reference list. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int VAACLIPSE_APPLICATION__EDITOR_DESCRIPTORS = ApplicationPackageImpl.APPLICATION_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Preferences Categories</b></em>' reference
+	 * list. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int VAACLIPSE_APPLICATION__PREFERENCES_CATEGORIES = ApplicationPackageImpl.APPLICATION_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Preferences Pages</b></em>' reference
+	 * list. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int VAACLIPSE_APPLICATION__PREFERENCES_PAGES = ApplicationPackageImpl.APPLICATION_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of structural features of the '<em>Vaaclipse Application</em>'
+	 * class. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int VAACLIPSE_APPLICATION_FEATURE_COUNT = ApplicationPackageImpl.APPLICATION_FEATURE_COUNT + 3;
+
+	/**
+	 * Returns the meta object for class '
+	 * {@link e4modelextension.EditorPartDescriptor
+	 * <em>Editor Part Descriptor</em>}'. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @return the meta object for class '<em>Editor Part Descriptor</em>'.
+	 * @see e4modelextension.EditorPartDescriptor
+	 * @generated
+	 */
+	EClass getEditorPartDescriptor();
+
+	/**
+	 * Returns the meta object for the attribute '
+	 * {@link e4modelextension.EditorPartDescriptor#getUriFilter
+	 * <em>Uri Filter</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the attribute '<em>Uri Filter</em>'.
+	 * @see e4modelextension.EditorPartDescriptor#getUriFilter()
+	 * @see #getEditorPartDescriptor()
+	 * @generated
+	 */
+	EAttribute getEditorPartDescriptor_UriFilter();
+
+	/**
+	 * Returns the meta object for the attribute '
+	 * {@link e4modelextension.EditorPartDescriptor#getPartAddingLogicUri
+	 * <em>Part Adding Logic Uri</em>}'. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @return the meta object for the attribute '<em>Part Adding Logic Uri</em>
+	 *         '.
+	 * @see e4modelextension.EditorPartDescriptor#getPartAddingLogicUri()
+	 * @see #getEditorPartDescriptor()
+	 * @generated
+	 */
+	EAttribute getEditorPartDescriptor_PartAddingLogicUri();
+
+	/**
+	 * Returns the meta object for class '
+	 * {@link e4modelextension.VaaclipseApplication
+	 * <em>Vaaclipse Application</em>}'. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @return the meta object for class '<em>Vaaclipse Application</em>'.
+	 * @see e4modelextension.VaaclipseApplication
+	 * @generated
+	 */
+	EClass getVaaclipseApplication();
+
+	/**
+	 * Returns the meta object for the containment reference list '
+	 * {@link e4modelextension.VaaclipseApplication#getEditorDescriptors
+	 * <em>Editor Descriptors</em>}'. <!-- begin-user-doc --> <!-- end-user-doc
+	 * -->
+	 * 
+	 * @return the meta object for the containment reference list '
+	 *         <em>Editor Descriptors</em>'.
+	 * @see e4modelextension.VaaclipseApplication#getEditorDescriptors()
+	 * @see #getVaaclipseApplication()
+	 * @generated
+	 */
+	EReference getVaaclipseApplication_EditorDescriptors();
+
+	/**
+	 * Returns the meta object for the reference list '
+	 * {@link e4modelextension.VaaclipseApplication#getPreferencesCategories
+	 * <em>Preferences Categories</em>}'. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @return the meta object for the reference list '
+	 *         <em>Preferences Categories</em>'.
+	 * @see e4modelextension.VaaclipseApplication#getPreferencesCategories()
+	 * @see #getVaaclipseApplication()
+	 * @generated
+	 */
+	EReference getVaaclipseApplication_PreferencesCategories();
+
+	/**
+	 * Returns the meta object for the reference list '
+	 * {@link e4modelextension.VaaclipseApplication#getPreferencesPages
+	 * <em>Preferences Pages</em>}'. <!-- begin-user-doc --> <!-- end-user-doc
+	 * -->
+	 * 
+	 * @return the meta object for the reference list '
+	 *         <em>Preferences Pages</em>'.
+	 * @see e4modelextension.VaaclipseApplication#getPreferencesPages()
+	 * @see #getVaaclipseApplication()
+	 * @generated
+	 */
+	EReference getVaaclipseApplication_PreferencesPages();
+
+	/**
+	 * Returns the factory that creates the instances of the model. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the factory that creates the instances of the model.
+	 * @generated
+	 */
+	E4modelextensionFactory getE4modelextensionFactory();
+
+	/**
+	 * <!-- begin-user-doc --> Defines literals for the meta objects that
+	 * represent
+	 * <ul>
+	 * <li>each class,</li>
+	 * <li>each feature of each class,</li>
+	 * <li>each operation of each class,</li>
+	 * <li>each enum,</li>
+	 * <li>and each data type</li>
+	 * </ul>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	interface Literals {
+		/**
+		 * The meta object literal for the '
+		 * {@link e4modelextension.impl.EditorPartDescriptorImpl
+		 * <em>Editor Part Descriptor</em>}' class. <!-- begin-user-doc --> <!--
+		 * end-user-doc -->
+		 * 
+		 * @see e4modelextension.impl.EditorPartDescriptorImpl
+		 * @see e4modelextension.impl.E4modelextensionPackageImpl#getEditorPartDescriptor()
+		 * @generated
+		 */
+		EClass EDITOR_PART_DESCRIPTOR = eINSTANCE.getEditorPartDescriptor();
+
+		/**
+		 * The meta object literal for the '<em><b>Uri Filter</b></em>'
+		 * attribute feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EAttribute EDITOR_PART_DESCRIPTOR__URI_FILTER = eINSTANCE
+				.getEditorPartDescriptor_UriFilter();
+
+		/**
+		 * The meta object literal for the '
+		 * <em><b>Part Adding Logic Uri</b></em>' attribute feature. <!--
+		 * begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EAttribute EDITOR_PART_DESCRIPTOR__PART_ADDING_LOGIC_URI = eINSTANCE
+				.getEditorPartDescriptor_PartAddingLogicUri();
+
+		/**
+		 * The meta object literal for the '
+		 * {@link e4modelextension.impl.VaaclipseApplicationImpl
+		 * <em>Vaaclipse Application</em>}' class. <!-- begin-user-doc --> <!--
+		 * end-user-doc -->
+		 * 
+		 * @see e4modelextension.impl.VaaclipseApplicationImpl
+		 * @see e4modelextension.impl.E4modelextensionPackageImpl#getVaaclipseApplication()
+		 * @generated
+		 */
+		EClass VAACLIPSE_APPLICATION = eINSTANCE.getVaaclipseApplication();
+
+		/**
+		 * The meta object literal for the '<em><b>Editor Descriptors</b></em>'
+		 * containment reference list feature. <!-- begin-user-doc --> <!--
+		 * end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EReference VAACLIPSE_APPLICATION__EDITOR_DESCRIPTORS = eINSTANCE
+				.getVaaclipseApplication_EditorDescriptors();
+
+		/**
+		 * The meta object literal for the '
+		 * <em><b>Preferences Categories</b></em>' reference list feature. <!--
+		 * begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EReference VAACLIPSE_APPLICATION__PREFERENCES_CATEGORIES = eINSTANCE
+				.getVaaclipseApplication_PreferencesCategories();
+
+		/**
+		 * The meta object literal for the '<em><b>Preferences Pages</b></em>'
+		 * reference list feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EReference VAACLIPSE_APPLICATION__PREFERENCES_PAGES = eINSTANCE
+				.getVaaclipseApplication_PreferencesPages();
+
+	}
+
+} // E4modelextensionPackage
diff --git a/org.eclipse.osbp.e4modelextension/src/e4modelextension/EditorPartDescriptor.java b/org.eclipse.osbp.e4modelextension/src/e4modelextension/EditorPartDescriptor.java
new file mode 100644
index 0000000..4843781
--- /dev/null
+++ b/org.eclipse.osbp.e4modelextension/src/e4modelextension/EditorPartDescriptor.java
@@ -0,0 +1,90 @@
+package e4modelextension;
+
+import org.eclipse.e4.ui.model.application.descriptor.basic.MPartDescriptor;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '
+ * <em><b>Editor Part Descriptor</b></em>'. <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link e4modelextension.EditorPartDescriptor#getUriFilter <em>Uri Filter
+ * </em>}</li>
+ * <li>{@link e4modelextension.EditorPartDescriptor#getPartAddingLogicUri <em>
+ * Part Adding Logic Uri</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see e4modelextension.E4modelextensionPackage#getEditorPartDescriptor()
+ * @model
+ * @generated
+ */
+public interface EditorPartDescriptor extends EObject, MPartDescriptor {
+	/**
+	 * Returns the value of the '<em><b>Uri Filter</b></em>' attribute. <!--
+	 * begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Uri Filter</em>' attribute isn't clear, there
+	 * really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Uri Filter</em>' attribute.
+	 * @see #setUriFilter(String)
+	 * @see e4modelextension.E4modelextensionPackage#getEditorPartDescriptor_UriFilter()
+	 * @model
+	 * @generated
+	 */
+	String getUriFilter();
+
+	/**
+	 * Sets the value of the '
+	 * {@link e4modelextension.EditorPartDescriptor#getUriFilter
+	 * <em>Uri Filter</em>}' attribute. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @param value
+	 *            the new value of the '<em>Uri Filter</em>' attribute.
+	 * @see #getUriFilter()
+	 * @generated
+	 */
+	void setUriFilter(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Part Adding Logic Uri</b></em>'
+	 * attribute. The default value is
+	 * <code>"bundleclass://org.eclipse.osbp.e4extension/org.eclipse.osbp.e4extension.shared.DefaultPartAddingLogic"</code>
+	 * . <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Part Adding Logic Uri</em>' attribute isn't
+	 * clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Part Adding Logic Uri</em>' attribute.
+	 * @see #setPartAddingLogicUri(String)
+	 * @see e4modelextension.E4modelextensionPackage#getEditorPartDescriptor_PartAddingLogicUri()
+	 * @model default=
+	 *        "bundleclass://org.eclipse.osbp.e4extension/org.eclipse.osbp.e4extension.shared.DefaultPartAddingLogic"
+	 * @generated
+	 */
+	String getPartAddingLogicUri();
+
+	/**
+	 * Sets the value of the '
+	 * {@link e4modelextension.EditorPartDescriptor#getPartAddingLogicUri
+	 * <em>Part Adding Logic Uri</em>}' attribute. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @param value
+	 *            the new value of the '<em>Part Adding Logic Uri</em>'
+	 *            attribute.
+	 * @see #getPartAddingLogicUri()
+	 * @generated
+	 */
+	void setPartAddingLogicUri(String value);
+
+} // EditorPartDescriptor
diff --git a/org.eclipse.osbp.e4modelextension/src/e4modelextension/VaaclipseApplication.java b/org.eclipse.osbp.e4modelextension/src/e4modelextension/VaaclipseApplication.java
new file mode 100644
index 0000000..6f04f09
--- /dev/null
+++ b/org.eclipse.osbp.e4modelextension/src/e4modelextension/VaaclipseApplication.java
@@ -0,0 +1,88 @@
+package e4modelextension;
+
+import org.eclipse.e4.ui.model.application.MApplication;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesPage;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '
+ * <em><b>Vaaclipse Application</b></em>'. <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link e4modelextension.VaaclipseApplication#getEditorDescriptors <em>
+ * Editor Descriptors</em>}</li>
+ * <li>{@link e4modelextension.VaaclipseApplication#getPreferencesCategories
+ * <em>Preferences Categories</em>}</li>
+ * <li>{@link e4modelextension.VaaclipseApplication#getPreferencesPages <em>
+ * Preferences Pages</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see e4modelextension.E4modelextensionPackage#getVaaclipseApplication()
+ * @model
+ * @generated
+ */
+public interface VaaclipseApplication extends EObject, MApplication {
+	/**
+	 * Returns the value of the '<em><b>Editor Descriptors</b></em>' containment
+	 * reference list. The list contents are of type
+	 * {@link e4modelextension.EditorPartDescriptor}. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Editor Descriptors</em>' containment reference
+	 * list isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Editor Descriptors</em>' containment
+	 *         reference list.
+	 * @see e4modelextension.E4modelextensionPackage#getVaaclipseApplication_EditorDescriptors()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<EditorPartDescriptor> getEditorDescriptors();
+
+	/**
+	 * Returns the value of the '<em><b>Preferences Categories</b></em>'
+	 * reference list. The list contents are of type
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Preferences Categories</em>' reference list
+	 * isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Preferences Categories</em>' reference
+	 *         list.
+	 * @see e4modelextension.E4modelextensionPackage#getVaaclipseApplication_PreferencesCategories()
+	 * @model
+	 * @generated
+	 */
+	EList<PreferencesCategory> getPreferencesCategories();
+
+	/**
+	 * Returns the value of the '<em><b>Preferences Pages</b></em>' reference
+	 * list. The list contents are of type
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesPage}. <!--
+	 * begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Preferences Pages</em>' reference list isn't
+	 * clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Preferences Pages</em>' reference list.
+	 * @see e4modelextension.E4modelextensionPackage#getVaaclipseApplication_PreferencesPages()
+	 * @model
+	 * @generated
+	 */
+	EList<PreferencesPage> getPreferencesPages();
+
+} // VaaclipseApplication
diff --git a/org.eclipse.osbp.e4modelextension/src/e4modelextension/impl/E4modelextensionFactoryImpl.java b/org.eclipse.osbp.e4modelextension/src/e4modelextension/impl/E4modelextensionFactoryImpl.java
new file mode 100644
index 0000000..29595ea
--- /dev/null
+++ b/org.eclipse.osbp.e4modelextension/src/e4modelextension/impl/E4modelextensionFactoryImpl.java
@@ -0,0 +1,108 @@
+package e4modelextension.impl;
+
+import e4modelextension.*;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model <b>Factory</b>. <!--
+ * end-user-doc -->
+ * 
+ * @generated
+ */
+public class E4modelextensionFactoryImpl extends EFactoryImpl implements
+		E4modelextensionFactory {
+	/**
+	 * Creates the default factory implementation. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public static E4modelextensionFactory init() {
+		try {
+			E4modelextensionFactory theE4modelextensionFactory = (E4modelextensionFactory) EPackage.Registry.INSTANCE
+					.getEFactory(E4modelextensionPackage.eNS_URI);
+			if (theE4modelextensionFactory != null) {
+				return theE4modelextensionFactory;
+			}
+		} catch (Exception exception) {
+			EcorePlugin.INSTANCE.log(exception);
+		}
+		return new E4modelextensionFactoryImpl();
+	}
+
+	/**
+	 * Creates an instance of the factory. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public E4modelextensionFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+		case E4modelextensionPackage.EDITOR_PART_DESCRIPTOR:
+			return createEditorPartDescriptor();
+		case E4modelextensionPackage.VAACLIPSE_APPLICATION:
+			return createVaaclipseApplication();
+		default:
+			throw new IllegalArgumentException("The class '" + eClass.getName()
+					+ "' is not a valid classifier");
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EditorPartDescriptor createEditorPartDescriptor() {
+		EditorPartDescriptorImpl editorPartDescriptor = new EditorPartDescriptorImpl();
+		return editorPartDescriptor;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public VaaclipseApplication createVaaclipseApplication() {
+		VaaclipseApplicationImpl vaaclipseApplication = new VaaclipseApplicationImpl();
+		return vaaclipseApplication;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public E4modelextensionPackage getE4modelextensionPackage() {
+		return (E4modelextensionPackage) getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @deprecated
+	 * @generated
+	 */
+	@Deprecated
+	public static E4modelextensionPackage getPackage() {
+		return E4modelextensionPackage.eINSTANCE;
+	}
+
+} // E4modelextensionFactoryImpl
diff --git a/org.eclipse.osbp.e4modelextension/src/e4modelextension/impl/E4modelextensionPackageImpl.java b/org.eclipse.osbp.e4modelextension/src/e4modelextension/impl/E4modelextensionPackageImpl.java
new file mode 100644
index 0000000..9d968a9
--- /dev/null
+++ b/org.eclipse.osbp.e4modelextension/src/e4modelextension/impl/E4modelextensionPackageImpl.java
@@ -0,0 +1,312 @@
+package e4modelextension.impl;
+
+import e4modelextension.E4modelextensionFactory;
+import e4modelextension.E4modelextensionPackage;
+import e4modelextension.EditorPartDescriptor;
+import e4modelextension.VaaclipseApplication;
+
+import org.eclipse.e4.ui.model.application.descriptor.basic.impl.BasicPackageImpl;
+
+import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model <b>Package</b>. <!--
+ * end-user-doc -->
+ * 
+ * @generated
+ */
+public class E4modelextensionPackageImpl extends EPackageImpl implements
+		E4modelextensionPackage {
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private EClass editorPartDescriptorEClass = null;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private EClass vaaclipseApplicationEClass = null;
+
+	/**
+	 * Creates an instance of the model <b>Package</b>, registered with
+	 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the
+	 * package package URI value.
+	 * <p>
+	 * Note: the correct way to create the package is via the static factory
+	 * method {@link #init init()}, which also performs initialization of the
+	 * package, or returns the registered package, if one already exists. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see org.eclipse.emf.ecore.EPackage.Registry
+	 * @see e4modelextension.E4modelextensionPackage#eNS_URI
+	 * @see #init()
+	 * @generated
+	 */
+	private E4modelextensionPackageImpl() {
+		super(eNS_URI, E4modelextensionFactory.eINSTANCE);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private static boolean isInited = false;
+
+	/**
+	 * Creates, registers, and initializes the <b>Package</b> for this model,
+	 * and for any others upon which it depends.
+	 * 
+	 * <p>
+	 * This method is used to initialize
+	 * {@link E4modelextensionPackage#eINSTANCE} when that field is accessed.
+	 * Clients should not invoke it directly. Instead, they should simply access
+	 * that field to obtain the package. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @see #eNS_URI
+	 * @see #createPackageContents()
+	 * @see #initializePackageContents()
+	 * @generated
+	 */
+	public static E4modelextensionPackage init() {
+		if (isInited)
+			return (E4modelextensionPackage) EPackage.Registry.INSTANCE
+					.getEPackage(E4modelextensionPackage.eNS_URI);
+
+		// Obtain or create and register package
+		E4modelextensionPackageImpl theE4modelextensionPackage = (E4modelextensionPackageImpl) (EPackage.Registry.INSTANCE
+				.get(eNS_URI) instanceof E4modelextensionPackageImpl ? EPackage.Registry.INSTANCE
+				.get(eNS_URI) : new E4modelextensionPackageImpl());
+
+		isInited = true;
+
+		// Initialize simple dependencies
+		PreferencesPackage.eINSTANCE.eClass();
+
+		// Create package meta-data objects
+		theE4modelextensionPackage.createPackageContents();
+
+		// Initialize created meta-data
+		theE4modelextensionPackage.initializePackageContents();
+
+		// Mark meta-data to indicate it can't be changed
+		theE4modelextensionPackage.freeze();
+
+		// Update the registry and return the package
+		EPackage.Registry.INSTANCE.put(E4modelextensionPackage.eNS_URI,
+				theE4modelextensionPackage);
+		return theE4modelextensionPackage;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EClass getEditorPartDescriptor() {
+		return editorPartDescriptorEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EAttribute getEditorPartDescriptor_UriFilter() {
+		return (EAttribute) editorPartDescriptorEClass.getEStructuralFeatures()
+				.get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EAttribute getEditorPartDescriptor_PartAddingLogicUri() {
+		return (EAttribute) editorPartDescriptorEClass.getEStructuralFeatures()
+				.get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EClass getVaaclipseApplication() {
+		return vaaclipseApplicationEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EReference getVaaclipseApplication_EditorDescriptors() {
+		return (EReference) vaaclipseApplicationEClass.getEStructuralFeatures()
+				.get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EReference getVaaclipseApplication_PreferencesCategories() {
+		return (EReference) vaaclipseApplicationEClass.getEStructuralFeatures()
+				.get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EReference getVaaclipseApplication_PreferencesPages() {
+		return (EReference) vaaclipseApplicationEClass.getEStructuralFeatures()
+				.get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public E4modelextensionFactory getE4modelextensionFactory() {
+		return (E4modelextensionFactory) getEFactoryInstance();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private boolean isCreated = false;
+
+	/**
+	 * Creates the meta-model objects for the package. This method is guarded to
+	 * have no affect on any invocation but its first. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void createPackageContents() {
+		if (isCreated)
+			return;
+		isCreated = true;
+
+		// Create classes and their features
+		editorPartDescriptorEClass = createEClass(EDITOR_PART_DESCRIPTOR);
+		createEAttribute(editorPartDescriptorEClass,
+				EDITOR_PART_DESCRIPTOR__URI_FILTER);
+		createEAttribute(editorPartDescriptorEClass,
+				EDITOR_PART_DESCRIPTOR__PART_ADDING_LOGIC_URI);
+
+		vaaclipseApplicationEClass = createEClass(VAACLIPSE_APPLICATION);
+		createEReference(vaaclipseApplicationEClass,
+				VAACLIPSE_APPLICATION__EDITOR_DESCRIPTORS);
+		createEReference(vaaclipseApplicationEClass,
+				VAACLIPSE_APPLICATION__PREFERENCES_CATEGORIES);
+		createEReference(vaaclipseApplicationEClass,
+				VAACLIPSE_APPLICATION__PREFERENCES_PAGES);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private boolean isInitialized = false;
+
+	/**
+	 * Complete the initialization of the package and its meta-model. This
+	 * method is guarded to have no affect on any invocation but its first. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void initializePackageContents() {
+		if (isInitialized)
+			return;
+		isInitialized = true;
+
+		// Initialize package
+		setName(eNAME);
+		setNsPrefix(eNS_PREFIX);
+		setNsURI(eNS_URI);
+
+		// Obtain other dependent packages
+		BasicPackageImpl theBasicPackage = (BasicPackageImpl) EPackage.Registry.INSTANCE
+				.getEPackage(BasicPackageImpl.eNS_URI);
+		ApplicationPackageImpl theApplicationPackage = (ApplicationPackageImpl) EPackage.Registry.INSTANCE
+				.getEPackage(ApplicationPackageImpl.eNS_URI);
+		PreferencesPackage thePreferencesPackage = (PreferencesPackage) EPackage.Registry.INSTANCE
+				.getEPackage(PreferencesPackage.eNS_URI);
+
+		// Create type parameters
+
+		// Set bounds for type parameters
+
+		// Add supertypes to classes
+		editorPartDescriptorEClass.getESuperTypes().add(
+				theBasicPackage.getPartDescriptor());
+		vaaclipseApplicationEClass.getESuperTypes().add(
+				theApplicationPackage.getApplication());
+
+		// Initialize classes and features; add operations and parameters
+		initEClass(editorPartDescriptorEClass, EditorPartDescriptor.class,
+				"EditorPartDescriptor", !IS_ABSTRACT, !IS_INTERFACE,
+				IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getEditorPartDescriptor_UriFilter(),
+				ecorePackage.getEString(), "uriFilter", null, 0, 1,
+				EditorPartDescriptor.class, !IS_TRANSIENT, !IS_VOLATILE,
+				IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
+				IS_ORDERED);
+		initEAttribute(
+				getEditorPartDescriptor_PartAddingLogicUri(),
+				ecorePackage.getEString(),
+				"partAddingLogicUri",
+				"bundleclass://org.eclipse.osbp.e4extension/org.eclipse.osbp.e4extension.shared.DefaultPartAddingLogic",
+				0, 1, EditorPartDescriptor.class, !IS_TRANSIENT, !IS_VOLATILE,
+				IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
+				IS_ORDERED);
+
+		initEClass(vaaclipseApplicationEClass, VaaclipseApplication.class,
+				"VaaclipseApplication", !IS_ABSTRACT, !IS_INTERFACE,
+				IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getVaaclipseApplication_EditorDescriptors(),
+				this.getEditorPartDescriptor(), null, "editorDescriptors",
+				null, 0, -1, VaaclipseApplication.class, !IS_TRANSIENT,
+				!IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES,
+				!IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getVaaclipseApplication_PreferencesCategories(),
+				thePreferencesPackage.getPreferencesCategory(), null,
+				"preferencesCategories", null, 0, -1,
+				VaaclipseApplication.class, !IS_TRANSIENT, !IS_VOLATILE,
+				IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES,
+				!IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getVaaclipseApplication_PreferencesPages(),
+				thePreferencesPackage.getPreferencesPage(), null,
+				"preferencesPages", null, 0, -1, VaaclipseApplication.class,
+				!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE,
+				IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED,
+				IS_ORDERED);
+
+		// Create resource
+		createResource(eNS_URI);
+	}
+
+} // E4modelextensionPackageImpl
diff --git a/org.eclipse.osbp.e4modelextension/src/e4modelextension/impl/EditorPartDescriptorImpl.java b/org.eclipse.osbp.e4modelextension/src/e4modelextension/impl/EditorPartDescriptorImpl.java
new file mode 100644
index 0000000..68a1c18
--- /dev/null
+++ b/org.eclipse.osbp.e4modelextension/src/e4modelextension/impl/EditorPartDescriptorImpl.java
@@ -0,0 +1,231 @@
+package e4modelextension.impl;
+
+import e4modelextension.E4modelextensionPackage;
+import e4modelextension.EditorPartDescriptor;
+
+import org.eclipse.e4.ui.model.application.descriptor.basic.impl.PartDescriptorImpl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '
+ * <em><b>Editor Part Descriptor</b></em>'. <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link e4modelextension.impl.EditorPartDescriptorImpl#getUriFilter <em>
+ * Uri Filter</em>}</li>
+ * <li>
+ * {@link e4modelextension.impl.EditorPartDescriptorImpl#getPartAddingLogicUri
+ * <em>Part Adding Logic Uri</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class EditorPartDescriptorImpl extends PartDescriptorImpl implements
+		EditorPartDescriptor {
+	/**
+	 * The default value of the '{@link #getUriFilter() <em>Uri Filter</em>}'
+	 * attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #getUriFilter()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String URI_FILTER_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getUriFilter() <em>Uri Filter</em>}'
+	 * attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #getUriFilter()
+	 * @generated
+	 * @ordered
+	 */
+	protected String uriFilter = URI_FILTER_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getPartAddingLogicUri()
+	 * <em>Part Adding Logic Uri</em>}' attribute. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @see #getPartAddingLogicUri()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String PART_ADDING_LOGIC_URI_EDEFAULT = "bundleclass://org.eclipse.osbp.e4extension/org.eclipse.osbp.e4extension.shared.DefaultPartAddingLogic";
+
+	/**
+	 * The cached value of the '{@link #getPartAddingLogicUri()
+	 * <em>Part Adding Logic Uri</em>}' attribute. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @see #getPartAddingLogicUri()
+	 * @generated
+	 * @ordered
+	 */
+	protected String partAddingLogicUri = PART_ADDING_LOGIC_URI_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected EditorPartDescriptorImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return E4modelextensionPackage.Literals.EDITOR_PART_DESCRIPTOR;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public String getUriFilter() {
+		return uriFilter;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setUriFilter(String newUriFilter) {
+		String oldUriFilter = uriFilter;
+		uriFilter = newUriFilter;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET,
+					E4modelextensionPackage.EDITOR_PART_DESCRIPTOR__URI_FILTER,
+					oldUriFilter, uriFilter));
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public String getPartAddingLogicUri() {
+		return partAddingLogicUri;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setPartAddingLogicUri(String newPartAddingLogicUri) {
+		String oldPartAddingLogicUri = partAddingLogicUri;
+		partAddingLogicUri = newPartAddingLogicUri;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(
+					this,
+					Notification.SET,
+					E4modelextensionPackage.EDITOR_PART_DESCRIPTOR__PART_ADDING_LOGIC_URI,
+					oldPartAddingLogicUri, partAddingLogicUri));
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case E4modelextensionPackage.EDITOR_PART_DESCRIPTOR__URI_FILTER:
+			return getUriFilter();
+		case E4modelextensionPackage.EDITOR_PART_DESCRIPTOR__PART_ADDING_LOGIC_URI:
+			return getPartAddingLogicUri();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case E4modelextensionPackage.EDITOR_PART_DESCRIPTOR__URI_FILTER:
+			setUriFilter((String) newValue);
+			return;
+		case E4modelextensionPackage.EDITOR_PART_DESCRIPTOR__PART_ADDING_LOGIC_URI:
+			setPartAddingLogicUri((String) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case E4modelextensionPackage.EDITOR_PART_DESCRIPTOR__URI_FILTER:
+			setUriFilter(URI_FILTER_EDEFAULT);
+			return;
+		case E4modelextensionPackage.EDITOR_PART_DESCRIPTOR__PART_ADDING_LOGIC_URI:
+			setPartAddingLogicUri(PART_ADDING_LOGIC_URI_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case E4modelextensionPackage.EDITOR_PART_DESCRIPTOR__URI_FILTER:
+			return URI_FILTER_EDEFAULT == null ? uriFilter != null
+					: !URI_FILTER_EDEFAULT.equals(uriFilter);
+		case E4modelextensionPackage.EDITOR_PART_DESCRIPTOR__PART_ADDING_LOGIC_URI:
+			return PART_ADDING_LOGIC_URI_EDEFAULT == null ? partAddingLogicUri != null
+					: !PART_ADDING_LOGIC_URI_EDEFAULT
+							.equals(partAddingLogicUri);
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy())
+			return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (uriFilter: ");
+		result.append(uriFilter);
+		result.append(", partAddingLogicUri: ");
+		result.append(partAddingLogicUri);
+		result.append(')');
+		return result.toString();
+	}
+
+} // EditorPartDescriptorImpl
diff --git a/org.eclipse.osbp.e4modelextension/src/e4modelextension/impl/VaaclipseApplicationImpl.java b/org.eclipse.osbp.e4modelextension/src/e4modelextension/impl/VaaclipseApplicationImpl.java
new file mode 100644
index 0000000..c5d6afa
--- /dev/null
+++ b/org.eclipse.osbp.e4modelextension/src/e4modelextension/impl/VaaclipseApplicationImpl.java
@@ -0,0 +1,246 @@
+package e4modelextension.impl;
+
+import e4modelextension.E4modelextensionPackage;
+import e4modelextension.EditorPartDescriptor;
+import e4modelextension.VaaclipseApplication;
+
+import java.util.Collection;
+
+import org.eclipse.e4.ui.model.application.impl.ApplicationImpl;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.EObjectResolvingEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesPage;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '
+ * <em><b>Vaaclipse Application</b></em>'. <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>
+ * {@link e4modelextension.impl.VaaclipseApplicationImpl#getEditorDescriptors
+ * <em>Editor Descriptors</em>}</li>
+ * <li>
+ * {@link e4modelextension.impl.VaaclipseApplicationImpl#getPreferencesCategories
+ * <em>Preferences Categories</em>}</li>
+ * <li>
+ * {@link e4modelextension.impl.VaaclipseApplicationImpl#getPreferencesPages
+ * <em>Preferences Pages</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class VaaclipseApplicationImpl extends ApplicationImpl implements
+		VaaclipseApplication {
+	/**
+	 * The cached value of the '{@link #getEditorDescriptors()
+	 * <em>Editor Descriptors</em>}' containment reference list. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #getEditorDescriptors()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<EditorPartDescriptor> editorDescriptors;
+
+	/**
+	 * The cached value of the '{@link #getPreferencesCategories()
+	 * <em>Preferences Categories</em>}' reference list. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #getPreferencesCategories()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<PreferencesCategory> preferencesCategories;
+
+	/**
+	 * The cached value of the '{@link #getPreferencesPages()
+	 * <em>Preferences Pages</em>}' reference list. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @see #getPreferencesPages()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<PreferencesPage> preferencesPages;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected VaaclipseApplicationImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return E4modelextensionPackage.Literals.VAACLIPSE_APPLICATION;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EList<EditorPartDescriptor> getEditorDescriptors() {
+		if (editorDescriptors == null) {
+			editorDescriptors = new EObjectContainmentEList<EditorPartDescriptor>(
+					EditorPartDescriptor.class,
+					this,
+					E4modelextensionPackage.VAACLIPSE_APPLICATION__EDITOR_DESCRIPTORS);
+		}
+		return editorDescriptors;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EList<PreferencesCategory> getPreferencesCategories() {
+		if (preferencesCategories == null) {
+			preferencesCategories = new EObjectResolvingEList<PreferencesCategory>(
+					PreferencesCategory.class,
+					this,
+					E4modelextensionPackage.VAACLIPSE_APPLICATION__PREFERENCES_CATEGORIES);
+		}
+		return preferencesCategories;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EList<PreferencesPage> getPreferencesPages() {
+		if (preferencesPages == null) {
+			preferencesPages = new EObjectResolvingEList<PreferencesPage>(
+					PreferencesPage.class,
+					this,
+					E4modelextensionPackage.VAACLIPSE_APPLICATION__PREFERENCES_PAGES);
+		}
+		return preferencesPages;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd,
+			int featureID, NotificationChain msgs) {
+		switch (featureID) {
+		case E4modelextensionPackage.VAACLIPSE_APPLICATION__EDITOR_DESCRIPTORS:
+			return ((InternalEList<?>) getEditorDescriptors()).basicRemove(
+					otherEnd, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case E4modelextensionPackage.VAACLIPSE_APPLICATION__EDITOR_DESCRIPTORS:
+			return getEditorDescriptors();
+		case E4modelextensionPackage.VAACLIPSE_APPLICATION__PREFERENCES_CATEGORIES:
+			return getPreferencesCategories();
+		case E4modelextensionPackage.VAACLIPSE_APPLICATION__PREFERENCES_PAGES:
+			return getPreferencesPages();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case E4modelextensionPackage.VAACLIPSE_APPLICATION__EDITOR_DESCRIPTORS:
+			getEditorDescriptors().clear();
+			getEditorDescriptors().addAll(
+					(Collection<? extends EditorPartDescriptor>) newValue);
+			return;
+		case E4modelextensionPackage.VAACLIPSE_APPLICATION__PREFERENCES_CATEGORIES:
+			getPreferencesCategories().clear();
+			getPreferencesCategories().addAll(
+					(Collection<? extends PreferencesCategory>) newValue);
+			return;
+		case E4modelextensionPackage.VAACLIPSE_APPLICATION__PREFERENCES_PAGES:
+			getPreferencesPages().clear();
+			getPreferencesPages().addAll(
+					(Collection<? extends PreferencesPage>) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case E4modelextensionPackage.VAACLIPSE_APPLICATION__EDITOR_DESCRIPTORS:
+			getEditorDescriptors().clear();
+			return;
+		case E4modelextensionPackage.VAACLIPSE_APPLICATION__PREFERENCES_CATEGORIES:
+			getPreferencesCategories().clear();
+			return;
+		case E4modelextensionPackage.VAACLIPSE_APPLICATION__PREFERENCES_PAGES:
+			getPreferencesPages().clear();
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case E4modelextensionPackage.VAACLIPSE_APPLICATION__EDITOR_DESCRIPTORS:
+			return editorDescriptors != null && !editorDescriptors.isEmpty();
+		case E4modelextensionPackage.VAACLIPSE_APPLICATION__PREFERENCES_CATEGORIES:
+			return preferencesCategories != null
+					&& !preferencesCategories.isEmpty();
+		case E4modelextensionPackage.VAACLIPSE_APPLICATION__PREFERENCES_PAGES:
+			return preferencesPages != null && !preferencesPages.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+} // VaaclipseApplicationImpl
diff --git a/org.eclipse.osbp.e4modelextension/src/e4modelextension/util/E4modelextensionAdapterFactory.java b/org.eclipse.osbp.e4modelextension/src/e4modelextension/util/E4modelextensionAdapterFactory.java
new file mode 100644
index 0000000..5897239
--- /dev/null
+++ b/org.eclipse.osbp.e4modelextension/src/e4modelextension/util/E4modelextensionAdapterFactory.java
@@ -0,0 +1,497 @@
+package e4modelextension.util;
+
+import e4modelextension.*;
+
+import org.eclipse.e4.ui.model.application.MApplication;
+import org.eclipse.e4.ui.model.application.MApplicationElement;
+
+import org.eclipse.e4.ui.model.application.commands.MBindingTableContainer;
+import org.eclipse.e4.ui.model.application.commands.MBindings;
+import org.eclipse.e4.ui.model.application.commands.MHandlerContainer;
+
+import org.eclipse.e4.ui.model.application.descriptor.basic.MPartDescriptor;
+import org.eclipse.e4.ui.model.application.descriptor.basic.MPartDescriptorContainer;
+
+import org.eclipse.e4.ui.model.application.ui.MContext;
+import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+import org.eclipse.e4.ui.model.application.ui.MLocalizable;
+import org.eclipse.e4.ui.model.application.ui.MSnippetContainer;
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.model.application.ui.MUILabel;
+
+import org.eclipse.e4.ui.model.application.ui.menu.MMenuContributions;
+import org.eclipse.e4.ui.model.application.ui.menu.MToolBarContributions;
+import org.eclipse.e4.ui.model.application.ui.menu.MTrimContributions;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc --> The <b>Adapter Factory</b> for the model. It provides
+ * an adapter <code>createXXX</code> method for each class of the model. <!--
+ * end-user-doc -->
+ * 
+ * @see e4modelextension.E4modelextensionPackage
+ * @generated
+ */
+public class E4modelextensionAdapterFactory extends AdapterFactoryImpl {
+	/**
+	 * The cached model package. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected static E4modelextensionPackage modelPackage;
+
+	/**
+	 * Creates an instance of the adapter factory. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public E4modelextensionAdapterFactory() {
+		if (modelPackage == null) {
+			modelPackage = E4modelextensionPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Returns whether this factory is applicable for the type of the object.
+	 * <!-- begin-user-doc --> This implementation returns <code>true</code> if
+	 * the object is either the model's package or is an instance object of the
+	 * model. <!-- end-user-doc -->
+	 * 
+	 * @return whether this factory is applicable for the type of the object.
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object object) {
+		if (object == modelPackage) {
+			return true;
+		}
+		if (object instanceof EObject) {
+			return ((EObject) object).eClass().getEPackage() == modelPackage;
+		}
+		return false;
+	}
+
+	/**
+	 * The switch that delegates to the <code>createXXX</code> methods. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected E4modelextensionSwitch<Adapter> modelSwitch = new E4modelextensionSwitch<Adapter>() {
+		@Override
+		public Adapter caseEditorPartDescriptor(EditorPartDescriptor object) {
+			return createEditorPartDescriptorAdapter();
+		}
+
+		@Override
+		public Adapter caseVaaclipseApplication(VaaclipseApplication object) {
+			return createVaaclipseApplicationAdapter();
+		}
+
+		@Override
+		public Adapter caseApplicationElement(MApplicationElement object) {
+			return createApplicationElementAdapter();
+		}
+
+		@Override
+		public Adapter caseLocalizable(MLocalizable object) {
+			return createLocalizableAdapter();
+		}
+
+		@Override
+		public Adapter caseUILabel(MUILabel object) {
+			return createUILabelAdapter();
+		}
+
+		@Override
+		public Adapter caseHandlerContainer(MHandlerContainer object) {
+			return createHandlerContainerAdapter();
+		}
+
+		@Override
+		public Adapter caseBindings(MBindings object) {
+			return createBindingsAdapter();
+		}
+
+		@Override
+		public Adapter casePartDescriptor(MPartDescriptor object) {
+			return createPartDescriptorAdapter();
+		}
+
+		@Override
+		public Adapter caseUIElement(MUIElement object) {
+			return createUIElementAdapter();
+		}
+
+		@Override
+		public <T extends MUIElement> Adapter caseElementContainer(
+				MElementContainer<T> object) {
+			return createElementContainerAdapter();
+		}
+
+		@Override
+		public Adapter caseContext(MContext object) {
+			return createContextAdapter();
+		}
+
+		@Override
+		public Adapter caseBindingTableContainer(MBindingTableContainer object) {
+			return createBindingTableContainerAdapter();
+		}
+
+		@Override
+		public Adapter casePartDescriptorContainer(
+				MPartDescriptorContainer object) {
+			return createPartDescriptorContainerAdapter();
+		}
+
+		@Override
+		public Adapter caseMenuContributions(MMenuContributions object) {
+			return createMenuContributionsAdapter();
+		}
+
+		@Override
+		public Adapter caseToolBarContributions(MToolBarContributions object) {
+			return createToolBarContributionsAdapter();
+		}
+
+		@Override
+		public Adapter caseTrimContributions(MTrimContributions object) {
+			return createTrimContributionsAdapter();
+		}
+
+		@Override
+		public Adapter caseSnippetContainer(MSnippetContainer object) {
+			return createSnippetContainerAdapter();
+		}
+
+		@Override
+		public Adapter caseApplication(MApplication object) {
+			return createApplicationAdapter();
+		}
+
+		@Override
+		public Adapter defaultCase(EObject object) {
+			return createEObjectAdapter();
+		}
+	};
+
+	/**
+	 * Creates an adapter for the <code>target</code>. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @param target
+	 *            the object to adapt.
+	 * @return the adapter for the <code>target</code>.
+	 * @generated
+	 */
+	@Override
+	public Adapter createAdapter(Notifier target) {
+		return modelSwitch.doSwitch((EObject) target);
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '
+	 * {@link e4modelextension.EditorPartDescriptor
+	 * <em>Editor Part Descriptor</em>}'. <!-- begin-user-doc --> This default
+	 * implementation returns null so that we can easily ignore cases; it's
+	 * useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the new adapter.
+	 * @see e4modelextension.EditorPartDescriptor
+	 * @generated
+	 */
+	public Adapter createEditorPartDescriptorAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '
+	 * {@link e4modelextension.VaaclipseApplication
+	 * <em>Vaaclipse Application</em>}'. <!-- begin-user-doc --> This default
+	 * implementation returns null so that we can easily ignore cases; it's
+	 * useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the new adapter.
+	 * @see e4modelextension.VaaclipseApplication
+	 * @generated
+	 */
+	public Adapter createVaaclipseApplicationAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '
+	 * {@link org.eclipse.e4.ui.model.application.MApplicationElement
+	 * <em>Element</em>}'. <!-- begin-user-doc --> This default implementation
+	 * returns null so that we can easily ignore cases; it's useful to ignore a
+	 * case when inheritance will catch all the cases anyway. <!-- end-user-doc
+	 * -->
+	 * 
+	 * @return the new adapter.
+	 * @see org.eclipse.e4.ui.model.application.MApplicationElement
+	 * @generated
+	 */
+	public Adapter createApplicationElementAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '
+	 * {@link org.eclipse.e4.ui.model.application.ui.MLocalizable
+	 * <em>Localizable</em>}'. <!-- begin-user-doc --> This default
+	 * implementation returns null so that we can easily ignore cases; it's
+	 * useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the new adapter.
+	 * @see org.eclipse.e4.ui.model.application.ui.MLocalizable
+	 * @generated
+	 */
+	public Adapter createLocalizableAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '
+	 * {@link org.eclipse.e4.ui.model.application.ui.MUILabel <em>UI Label</em>}
+	 * '. <!-- begin-user-doc --> This default implementation returns null so
+	 * that we can easily ignore cases; it's useful to ignore a case when
+	 * inheritance will catch all the cases anyway. <!-- end-user-doc -->
+	 * 
+	 * @return the new adapter.
+	 * @see org.eclipse.e4.ui.model.application.ui.MUILabel
+	 * @generated
+	 */
+	public Adapter createUILabelAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '
+	 * {@link org.eclipse.e4.ui.model.application.commands.MHandlerContainer
+	 * <em>Handler Container</em>}'. <!-- begin-user-doc --> This default
+	 * implementation returns null so that we can easily ignore cases; it's
+	 * useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the new adapter.
+	 * @see org.eclipse.e4.ui.model.application.commands.MHandlerContainer
+	 * @generated
+	 */
+	public Adapter createHandlerContainerAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '
+	 * {@link org.eclipse.e4.ui.model.application.commands.MBindings
+	 * <em>Bindings</em>}'. <!-- begin-user-doc --> This default implementation
+	 * returns null so that we can easily ignore cases; it's useful to ignore a
+	 * case when inheritance will catch all the cases anyway. <!-- end-user-doc
+	 * -->
+	 * 
+	 * @return the new adapter.
+	 * @see org.eclipse.e4.ui.model.application.commands.MBindings
+	 * @generated
+	 */
+	public Adapter createBindingsAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '
+	 * {@link org.eclipse.e4.ui.model.application.descriptor.basic.MPartDescriptor
+	 * <em>Part Descriptor</em>}'. <!-- begin-user-doc --> This default
+	 * implementation returns null so that we can easily ignore cases; it's
+	 * useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the new adapter.
+	 * @see org.eclipse.e4.ui.model.application.descriptor.basic.MPartDescriptor
+	 * @generated
+	 */
+	public Adapter createPartDescriptorAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '
+	 * {@link org.eclipse.e4.ui.model.application.ui.MUIElement
+	 * <em>UI Element</em>}'. <!-- begin-user-doc --> This default
+	 * implementation returns null so that we can easily ignore cases; it's
+	 * useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the new adapter.
+	 * @see org.eclipse.e4.ui.model.application.ui.MUIElement
+	 * @generated
+	 */
+	public Adapter createUIElementAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '
+	 * {@link org.eclipse.e4.ui.model.application.ui.MElementContainer
+	 * <em>Element Container</em>}'. <!-- begin-user-doc --> This default
+	 * implementation returns null so that we can easily ignore cases; it's
+	 * useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the new adapter.
+	 * @see org.eclipse.e4.ui.model.application.ui.MElementContainer
+	 * @generated
+	 */
+	public Adapter createElementContainerAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '
+	 * {@link org.eclipse.e4.ui.model.application.ui.MContext <em>Context</em>}
+	 * '. <!-- begin-user-doc --> This default implementation returns null so
+	 * that we can easily ignore cases; it's useful to ignore a case when
+	 * inheritance will catch all the cases anyway. <!-- end-user-doc -->
+	 * 
+	 * @return the new adapter.
+	 * @see org.eclipse.e4.ui.model.application.ui.MContext
+	 * @generated
+	 */
+	public Adapter createContextAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '
+	 * {@link org.eclipse.e4.ui.model.application.commands.MBindingTableContainer
+	 * <em>Binding Table Container</em>}'. <!-- begin-user-doc --> This default
+	 * implementation returns null so that we can easily ignore cases; it's
+	 * useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the new adapter.
+	 * @see org.eclipse.e4.ui.model.application.commands.MBindingTableContainer
+	 * @generated
+	 */
+	public Adapter createBindingTableContainerAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '
+	 * {@link org.eclipse.e4.ui.model.application.descriptor.basic.MPartDescriptorContainer
+	 * <em>Part Descriptor Container</em>}'. <!-- begin-user-doc --> This
+	 * default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases
+	 * anyway. <!-- end-user-doc -->
+	 * 
+	 * @return the new adapter.
+	 * @see org.eclipse.e4.ui.model.application.descriptor.basic.MPartDescriptorContainer
+	 * @generated
+	 */
+	public Adapter createPartDescriptorContainerAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '
+	 * {@link org.eclipse.e4.ui.model.application.ui.menu.MMenuContributions
+	 * <em>Contributions</em>}'. <!-- begin-user-doc --> This default
+	 * implementation returns null so that we can easily ignore cases; it's
+	 * useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the new adapter.
+	 * @see org.eclipse.e4.ui.model.application.ui.menu.MMenuContributions
+	 * @generated
+	 */
+	public Adapter createMenuContributionsAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '
+	 * {@link org.eclipse.e4.ui.model.application.ui.menu.MToolBarContributions
+	 * <em>Tool Bar Contributions</em>}'. <!-- begin-user-doc --> This default
+	 * implementation returns null so that we can easily ignore cases; it's
+	 * useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the new adapter.
+	 * @see org.eclipse.e4.ui.model.application.ui.menu.MToolBarContributions
+	 * @generated
+	 */
+	public Adapter createToolBarContributionsAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '
+	 * {@link org.eclipse.e4.ui.model.application.ui.menu.MTrimContributions
+	 * <em>Trim Contributions</em>}'. <!-- begin-user-doc --> This default
+	 * implementation returns null so that we can easily ignore cases; it's
+	 * useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the new adapter.
+	 * @see org.eclipse.e4.ui.model.application.ui.menu.MTrimContributions
+	 * @generated
+	 */
+	public Adapter createTrimContributionsAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '
+	 * {@link org.eclipse.e4.ui.model.application.ui.MSnippetContainer
+	 * <em>Snippet Container</em>}'. <!-- begin-user-doc --> This default
+	 * implementation returns null so that we can easily ignore cases; it's
+	 * useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the new adapter.
+	 * @see org.eclipse.e4.ui.model.application.ui.MSnippetContainer
+	 * @generated
+	 */
+	public Adapter createSnippetContainerAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '
+	 * {@link org.eclipse.e4.ui.model.application.MApplication
+	 * <em>Application</em>}'. <!-- begin-user-doc --> This default
+	 * implementation returns null so that we can easily ignore cases; it's
+	 * useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the new adapter.
+	 * @see org.eclipse.e4.ui.model.application.MApplication
+	 * @generated
+	 */
+	public Adapter createApplicationAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for the default case. <!-- begin-user-doc --> This
+	 * default implementation returns null. <!-- end-user-doc -->
+	 * 
+	 * @return the new adapter.
+	 * @generated
+	 */
+	public Adapter createEObjectAdapter() {
+		return null;
+	}
+
+} // E4modelextensionAdapterFactory
diff --git a/org.eclipse.osbp.e4modelextension/src/e4modelextension/util/E4modelextensionSwitch.java b/org.eclipse.osbp.e4modelextension/src/e4modelextension/util/E4modelextensionSwitch.java
new file mode 100644
index 0000000..cf2e28b
--- /dev/null
+++ b/org.eclipse.osbp.e4modelextension/src/e4modelextension/util/E4modelextensionSwitch.java
@@ -0,0 +1,471 @@
+package e4modelextension.util;
+
+import e4modelextension.*;
+
+import org.eclipse.e4.ui.model.application.MApplication;
+import org.eclipse.e4.ui.model.application.MApplicationElement;
+
+import org.eclipse.e4.ui.model.application.commands.MBindingTableContainer;
+import org.eclipse.e4.ui.model.application.commands.MBindings;
+import org.eclipse.e4.ui.model.application.commands.MHandlerContainer;
+
+import org.eclipse.e4.ui.model.application.descriptor.basic.MPartDescriptor;
+import org.eclipse.e4.ui.model.application.descriptor.basic.MPartDescriptorContainer;
+
+import org.eclipse.e4.ui.model.application.ui.MContext;
+import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+import org.eclipse.e4.ui.model.application.ui.MLocalizable;
+import org.eclipse.e4.ui.model.application.ui.MSnippetContainer;
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.model.application.ui.MUILabel;
+
+import org.eclipse.e4.ui.model.application.ui.menu.MMenuContributions;
+import org.eclipse.e4.ui.model.application.ui.menu.MToolBarContributions;
+import org.eclipse.e4.ui.model.application.ui.menu.MTrimContributions;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.util.Switch;
+
+/**
+ * <!-- begin-user-doc --> The <b>Switch</b> for the model's inheritance
+ * hierarchy. It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object and proceeding up the
+ * inheritance hierarchy until a non-null result is returned, which is the
+ * result of the switch. <!-- end-user-doc -->
+ * 
+ * @see e4modelextension.E4modelextensionPackage
+ * @generated
+ */
+public class E4modelextensionSwitch<T1> extends Switch<T1> {
+	/**
+	 * The cached model package <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected static E4modelextensionPackage modelPackage;
+
+	/**
+	 * Creates an instance of the switch. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public E4modelextensionSwitch() {
+		if (modelPackage == null) {
+			modelPackage = E4modelextensionPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Checks whether this is a switch for the given package. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @parameter ePackage the package in question.
+	 * @return whether this is a switch for the given package.
+	 * @generated
+	 */
+	@Override
+	protected boolean isSwitchFor(EPackage ePackage) {
+		return ePackage == modelPackage;
+	}
+
+	/**
+	 * Calls <code>caseXXX</code> for each class of the model until one returns
+	 * a non null result; it yields that result. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @return the first non-null result returned by a <code>caseXXX</code>
+	 *         call.
+	 * @generated
+	 */
+	@Override
+	protected T1 doSwitch(int classifierID, EObject theEObject) {
+		switch (classifierID) {
+		case E4modelextensionPackage.EDITOR_PART_DESCRIPTOR: {
+			EditorPartDescriptor editorPartDescriptor = (EditorPartDescriptor) theEObject;
+			T1 result = caseEditorPartDescriptor(editorPartDescriptor);
+			if (result == null)
+				result = casePartDescriptor(editorPartDescriptor);
+			if (result == null)
+				result = caseApplicationElement(editorPartDescriptor);
+			if (result == null)
+				result = caseUILabel(editorPartDescriptor);
+			if (result == null)
+				result = caseHandlerContainer(editorPartDescriptor);
+			if (result == null)
+				result = caseBindings(editorPartDescriptor);
+			if (result == null)
+				result = caseLocalizable(editorPartDescriptor);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
+		case E4modelextensionPackage.VAACLIPSE_APPLICATION: {
+			VaaclipseApplication vaaclipseApplication = (VaaclipseApplication) theEObject;
+			T1 result = caseVaaclipseApplication(vaaclipseApplication);
+			if (result == null)
+				result = caseApplication(vaaclipseApplication);
+			if (result == null)
+				result = caseElementContainer(vaaclipseApplication);
+			if (result == null)
+				result = caseContext(vaaclipseApplication);
+			if (result == null)
+				result = caseHandlerContainer(vaaclipseApplication);
+			if (result == null)
+				result = caseBindingTableContainer(vaaclipseApplication);
+			if (result == null)
+				result = casePartDescriptorContainer(vaaclipseApplication);
+			if (result == null)
+				result = caseBindings(vaaclipseApplication);
+			if (result == null)
+				result = caseMenuContributions(vaaclipseApplication);
+			if (result == null)
+				result = caseToolBarContributions(vaaclipseApplication);
+			if (result == null)
+				result = caseTrimContributions(vaaclipseApplication);
+			if (result == null)
+				result = caseSnippetContainer(vaaclipseApplication);
+			if (result == null)
+				result = caseUIElement(vaaclipseApplication);
+			if (result == null)
+				result = caseApplicationElement(vaaclipseApplication);
+			if (result == null)
+				result = caseLocalizable(vaaclipseApplication);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
+		default:
+			return defaultCase(theEObject);
+		}
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '
+	 * <em>Editor Part Descriptor</em>'. <!-- begin-user-doc --> This
+	 * implementation returns null; returning a non-null result will terminate
+	 * the switch. <!-- end-user-doc -->
+	 * 
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '
+	 *         <em>Editor Part Descriptor</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseEditorPartDescriptor(EditorPartDescriptor object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '
+	 * <em>Vaaclipse Application</em>'. <!-- begin-user-doc --> This
+	 * implementation returns null; returning a non-null result will terminate
+	 * the switch. <!-- end-user-doc -->
+	 * 
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '
+	 *         <em>Vaaclipse Application</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseVaaclipseApplication(VaaclipseApplication object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '
+	 * <em>Element</em>'. <!-- begin-user-doc --> This implementation returns
+	 * null; returning a non-null result will terminate the switch. <!--
+	 * end-user-doc -->
+	 * 
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '
+	 *         <em>Element</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseApplicationElement(MApplicationElement object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '
+	 * <em>Localizable</em>'. <!-- begin-user-doc --> This implementation
+	 * returns null; returning a non-null result will terminate the switch. <!--
+	 * end-user-doc -->
+	 * 
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '
+	 *         <em>Localizable</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseLocalizable(MLocalizable object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '
+	 * <em>UI Label</em>'. <!-- begin-user-doc --> This implementation returns
+	 * null; returning a non-null result will terminate the switch. <!--
+	 * end-user-doc -->
+	 * 
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '
+	 *         <em>UI Label</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseUILabel(MUILabel object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '
+	 * <em>Handler Container</em>'. <!-- begin-user-doc --> This implementation
+	 * returns null; returning a non-null result will terminate the switch. <!--
+	 * end-user-doc -->
+	 * 
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '
+	 *         <em>Handler Container</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseHandlerContainer(MHandlerContainer object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '
+	 * <em>Bindings</em>'. <!-- begin-user-doc --> This implementation returns
+	 * null; returning a non-null result will terminate the switch. <!--
+	 * end-user-doc -->
+	 * 
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '
+	 *         <em>Bindings</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseBindings(MBindings object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '
+	 * <em>Part Descriptor</em>'. <!-- begin-user-doc --> This implementation
+	 * returns null; returning a non-null result will terminate the switch. <!--
+	 * end-user-doc -->
+	 * 
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '
+	 *         <em>Part Descriptor</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 casePartDescriptor(MPartDescriptor object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '
+	 * <em>UI Element</em>'. <!-- begin-user-doc --> This implementation returns
+	 * null; returning a non-null result will terminate the switch. <!--
+	 * end-user-doc -->
+	 * 
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '
+	 *         <em>UI Element</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseUIElement(MUIElement object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '
+	 * <em>Element Container</em>'. <!-- begin-user-doc --> This implementation
+	 * returns null; returning a non-null result will terminate the switch. <!--
+	 * end-user-doc -->
+	 * 
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '
+	 *         <em>Element Container</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public <T extends MUIElement> T1 caseElementContainer(
+			MElementContainer<T> object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '
+	 * <em>Context</em>'. <!-- begin-user-doc --> This implementation returns
+	 * null; returning a non-null result will terminate the switch. <!--
+	 * end-user-doc -->
+	 * 
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '
+	 *         <em>Context</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseContext(MContext object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '
+	 * <em>Binding Table Container</em>'. <!-- begin-user-doc --> This
+	 * implementation returns null; returning a non-null result will terminate
+	 * the switch. <!-- end-user-doc -->
+	 * 
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '
+	 *         <em>Binding Table Container</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseBindingTableContainer(MBindingTableContainer object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '
+	 * <em>Part Descriptor Container</em>'. <!-- begin-user-doc --> This
+	 * implementation returns null; returning a non-null result will terminate
+	 * the switch. <!-- end-user-doc -->
+	 * 
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '
+	 *         <em>Part Descriptor Container</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 casePartDescriptorContainer(MPartDescriptorContainer object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '
+	 * <em>Contributions</em>'. <!-- begin-user-doc --> This implementation
+	 * returns null; returning a non-null result will terminate the switch. <!--
+	 * end-user-doc -->
+	 * 
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '
+	 *         <em>Contributions</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseMenuContributions(MMenuContributions object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '
+	 * <em>Tool Bar Contributions</em>'. <!-- begin-user-doc --> This
+	 * implementation returns null; returning a non-null result will terminate
+	 * the switch. <!-- end-user-doc -->
+	 * 
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '
+	 *         <em>Tool Bar Contributions</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseToolBarContributions(MToolBarContributions object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '
+	 * <em>Trim Contributions</em>'. <!-- begin-user-doc --> This implementation
+	 * returns null; returning a non-null result will terminate the switch. <!--
+	 * end-user-doc -->
+	 * 
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '
+	 *         <em>Trim Contributions</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseTrimContributions(MTrimContributions object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '
+	 * <em>Snippet Container</em>'. <!-- begin-user-doc --> This implementation
+	 * returns null; returning a non-null result will terminate the switch. <!--
+	 * end-user-doc -->
+	 * 
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '
+	 *         <em>Snippet Container</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseSnippetContainer(MSnippetContainer object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '
+	 * <em>Application</em>'. <!-- begin-user-doc --> This implementation
+	 * returns null; returning a non-null result will terminate the switch. <!--
+	 * end-user-doc -->
+	 * 
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '
+	 *         <em>Application</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseApplication(MApplication object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '
+	 * <em>EObject</em>'. <!-- begin-user-doc --> This implementation returns
+	 * null; returning a non-null result will terminate the switch, but this is
+	 * the last case anyway. <!-- end-user-doc -->
+	 * 
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '
+	 *         <em>EObject</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+	 * @generated
+	 */
+	@Override
+	public T1 defaultCase(EObject object) {
+		return null;
+	}
+
+} // E4modelextensionSwitch
diff --git a/org.eclipse.osbp.e4modelextension/src/e4modelextension/validation/EditorPartDescriptorValidator.java b/org.eclipse.osbp.e4modelextension/src/e4modelextension/validation/EditorPartDescriptorValidator.java
new file mode 100644
index 0000000..ed97b1c
--- /dev/null
+++ b/org.eclipse.osbp.e4modelextension/src/e4modelextension/validation/EditorPartDescriptorValidator.java
@@ -0,0 +1,17 @@
+package e4modelextension.validation;
+
+/**
+ * A sample validator interface for
+ * {@link e4modelextension.EditorPartDescriptor}. This doesn't really do
+ * anything, and it's not a real EMF artifact. It was generated by the
+ * org.eclipse.emf.examples.generator.validator plug-in to illustrate how EMF's
+ * code generator can be extended. This can be disabled with -vmargs
+ * -Dorg.eclipse.emf.examples.generator.validator=false.
+ */
+public interface EditorPartDescriptorValidator {
+	boolean validate();
+
+	boolean validateUriFilter(String value);
+
+	boolean validatePartAddingLogicUri(String value);
+}
diff --git a/org.eclipse.osbp.e4modelextension/src/e4modelextension/validation/VaaclipseApplicationValidator.java b/org.eclipse.osbp.e4modelextension/src/e4modelextension/validation/VaaclipseApplicationValidator.java
new file mode 100644
index 0000000..3411c4d
--- /dev/null
+++ b/org.eclipse.osbp.e4modelextension/src/e4modelextension/validation/VaaclipseApplicationValidator.java
@@ -0,0 +1,26 @@
+package e4modelextension.validation;
+
+import e4modelextension.EditorPartDescriptor;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesPage;
+
+/**
+ * A sample validator interface for
+ * {@link e4modelextension.VaaclipseApplication}. This doesn't really do
+ * anything, and it's not a real EMF artifact. It was generated by the
+ * org.eclipse.emf.examples.generator.validator plug-in to illustrate how EMF's
+ * code generator can be extended. This can be disabled with -vmargs
+ * -Dorg.eclipse.emf.examples.generator.validator=false.
+ */
+public interface VaaclipseApplicationValidator {
+	boolean validate();
+
+	boolean validateEditorDescriptors(EList<EditorPartDescriptor> value);
+
+	boolean validatePreferencesCategories(EList<PreferencesCategory> value);
+
+	boolean validatePreferencesPages(EList<PreferencesPage> value);
+}
diff --git a/org.eclipse.osbp.e4modelextension/text/description.txt b/org.eclipse.osbp.e4modelextension/text/description.txt
new file mode 100644
index 0000000..44422a5
--- /dev/null
+++ b/org.eclipse.osbp.e4modelextension/text/description.txt
@@ -0,0 +1,17 @@
+Model E4modelextension
+
+This model description is not a real EMF artifact. It was generated by the
+org.eclipse.emf.examples.generator.validator plug-in to illustrate how EMF's
+code generator can be extended.
+This can be disabled with -vmargs -Dorg.eclipse.emf.examples.generator.validator=false.
+
+Package e4modelextension <http://www.semanticsoft.org/ExtensionUI/e4modelextension>
+
+  Class EditorPartDescriptor -> PartDescriptor
+    Attribute uriFilter : EString
+    Attribute partAddingLogicUri : EString
+
+  Class VaaclipseApplication -> Application
+    Reference editorDescriptors : EditorPartDescriptor<<0..*>>
+    Reference preferencesCategories : PreferencesCategory<<0..*>>
+    Reference preferencesPages : PreferencesPage<<0..*>>
diff --git a/org.eclipse.osbp.vaaclipse.additions/.project b/org.eclipse.osbp.vaaclipse.additions/.project
new file mode 100644
index 0000000..68bdc2f
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.additions/.project
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.vaaclipse.additions</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.babel.editor.rbeBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>com.vaadin.integration.eclipse.addonStylesBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.babel.editor.rbeNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.vaaclipse.additions/META-INF/MANIFEST.MF b/org.eclipse.osbp.vaaclipse.additions/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..442297d
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.additions/META-INF/MANIFEST.MF
@@ -0,0 +1,19 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.vaaclipse.additions
+Bundle-SymbolicName: org.eclipse.osbp.vaaclipse.additions
+Bundle-Version: 0.9.0.qualifier
+Bundle-Vendor: Eclipse OSBP
+Bundle-RequiredExecutionEnvironment: JavaSE-1.7
+Export-Package: org.eclipse.osbp.vaaclipse.additions.view;version="0.9.0"
+Import-Package: javax.annotation;version="1.1.0",
+ javax.inject;version="1.0.0"
+Require-Bundle: org.eclipse.e4.core.di;bundle-version="1.1.0",
+ org.eclipse.e4.ui.model.workbench;bundle-version="0.10.1",
+ org.eclipse.e4.core.contexts;bundle-version="1.1.0",
+ org.eclipse.osbp.vaadin;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.e4.ui.workbench;bundle-version="0.10.3",
+ org.eclipse.osbp.vaaclipse.publicapi;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.e4extension;bundle-version="[0.9.0,0.10.0)",
+ com.vaadin.server;bundle-version="[7.5.7,7.7.0)",
+ com.vaadin.shared;bundle-version="[7.5.7,7.7.0)"
diff --git a/org.eclipse.osbp.vaaclipse.additions/about.html b/org.eclipse.osbp.vaaclipse.additions/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.additions/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 1, 2016</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.additions/about.ini b/org.eclipse.osbp.vaaclipse.additions/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.additions/about.ini
@@ -0,0 +1,17 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%featureText
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=
+
+# Property "appName" contains name of the application (translated)
+appName=%featureName
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+welcomePage=
diff --git a/org.eclipse.osbp.vaaclipse.additions/about.mappings b/org.eclipse.osbp.vaaclipse.additions/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.additions/about.mappings
@@ -0,0 +1,6 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+0=qualifier
diff --git a/org.eclipse.osbp.vaaclipse.additions/about.properties b/org.eclipse.osbp.vaaclipse.additions/about.properties
new file mode 100644
index 0000000..5651842
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.additions/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2012, 2016 - Loetz GmbH&Co.KG (Heidelberg)
+# 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:
+#    Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.vaaclipse.additions
+
+################ blurb property ####################################
+featureText=\
+Copyright (c) 2012-2016 - Loetz GmbH&Co.KG \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+Contributors:\n\
+    Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.vaaclipse.additions/build.properties b/org.eclipse.osbp.vaaclipse.additions/build.properties
new file mode 100644
index 0000000..a138bbd
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.additions/build.properties
@@ -0,0 +1,8 @@
+source.. = src/
+output.. = target/classes/
+bin.includes = about.properties,  about.mappings,  about.ini,  about.html,  META-INF/,\
+               .,\
+               epl-v10.html,\
+               license.html
+src.includes = about.properties,  about.mappings,  about.ini,  about.html,  epl-v10.html,\
+               license.html
diff --git a/org.eclipse.osbp.vaaclipse.additions/epl-v10.html b/org.eclipse.osbp.vaaclipse.additions/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.additions/epl-v10.html
@@ -0,0 +1,259 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+  body {
+    size: 8.5in 11.0in;
+    margin: 0.25in 0.5in 0.25in 0.5in;
+    tab-interval: 0.5in;
+    }
+  p {  	
+    margin-left: auto;
+    margin-top:  0.5em;
+    margin-bottom: 0.5em;
+    }
+  p.list {
+  	margin-left: 0.5in;
+    margin-top:  0.05em;
+    margin-bottom: 0.05em;
+    }
+  </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">where such changes and/or additions to the Program
+originate from and are distributed by that particular Contributor. A
+Contribution 'originates' from a Contributor if it was added to the
+Program by such Contributor itself or anyone acting on such
+Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii)
+are not derivative works of the Program.</p>
+
+<p>"Contributor" means any person or entity that distributes
+the Program.</p>
+
+<p>"Licensed Patents" mean patent claims licensable by a
+Contributor which are necessarily infringed by the use or sale of its
+Contribution alone or when combined with the Program.</p>
+
+<p>"Program" means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>"Recipient" means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works
+of, publicly display, publicly perform, distribute and sublicense the
+Contribution of such Contributor, if any, and such derivative works, in
+source code and object code form.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell,
+offer to sell, import and otherwise transfer the Contribution of such
+Contributor, if any, in source code and object code form. This patent
+license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor,
+such addition of the Contribution causes such combination to be covered
+by the Licensed Patents. The patent license shall not apply to any other
+combinations which include the Contribution. No hardware per se is
+licensed hereunder.</p>
+
+<p class="list">c) Recipient understands that although each Contributor
+grants the licenses to its Contributions set forth herein, no assurances
+are provided by any Contributor that the Program does not infringe the
+patent or other intellectual property rights of any other entity. Each
+Contributor disclaims any liability to Recipient for claims brought by
+any other entity based on infringement of intellectual property rights
+or otherwise. As a condition to exercising the rights and licenses
+granted hereunder, each Recipient hereby assumes sole responsibility to
+secure any other intellectual property rights needed, if any. For
+example, if a third party patent license is required to allow Recipient
+to distribute the Program, it is Recipient's responsibility to acquire
+that license before distributing the Program.</p>
+
+<p class="list">d) Each Contributor represents that to its knowledge it
+has sufficient copyright rights in its Contribution, if any, to grant
+the copyright license set forth in this Agreement.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">i) effectively disclaims on behalf of all Contributors
+all warranties and conditions, express and implied, including warranties
+or conditions of title and non-infringement, and implied warranties or
+conditions of merchantability and fitness for a particular purpose;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">iv) states that source code for the Program is available
+from such Contributor, and informs licensees how to obtain it in a
+reasonable manner on or through a medium customarily used for software
+exchange.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>Commercial distributors of software may accept certain
+responsibilities with respect to end users, business partners and the
+like. While this license is intended to facilitate the commercial use of
+the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create
+potential liability for other Contributors. Therefore, if a Contributor
+includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and
+indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses")
+arising from claims, lawsuits and other legal actions brought by a third
+party against the Indemnified Contributor to the extent caused by the
+acts or omissions of such Commercial Contributor in connection with its
+distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In
+order to qualify, an Indemnified Contributor must: a) promptly notify
+the Commercial Contributor in writing of such claim, and b) allow the
+Commercial Contributor to control, and cooperate with the Commercial
+Contributor in, the defense and any related settlement negotiations. The
+Indemnified Contributor may participate in any such claim at its own
+expense.</p>
+
+<p>For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor's responsibility
+alone. Under this section, the Commercial Contributor would have to
+defend claims against the other Contributors related to those
+performance claims and warranties, and if a court requires any other
+Contributor to pay any damages as a result, the Commercial Contributor
+must pay those damages.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
+OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
+ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to
+the risks and costs of program errors, compliance with applicable laws,
+damage to or loss of data, programs or equipment, and unavailability or
+interruption of operations.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
+NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of
+the remainder of the terms of this Agreement, and without further action
+by the parties hereto, such provision shall be reformed to the minimum
+extent necessary to make such provision valid and enforceable.</p>
+
+<p>If Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that the
+Program itself (excluding combinations of the Program with other
+software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the
+date such litigation is filed.</p>
+
+<p>All Recipient's rights under this Agreement shall terminate if it
+fails to comply with any of the material terms or conditions of this
+Agreement and does not cure such failure in a reasonable period of time
+after becoming aware of such noncompliance. If all Recipient's rights
+under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive.</p>
+
+<p>Everyone is permitted to copy and distribute copies of this
+Agreement, but in order to avoid inconsistency the Agreement is
+copyrighted and may only be modified in the following manner. The
+Agreement Steward reserves the right to publish new versions (including
+revisions) of this Agreement from time to time. No one other than the
+Agreement Steward has the right to modify this Agreement. The Eclipse
+Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a
+suitable separate entity. Each new version of the Agreement will be
+given a distinguishing version number. The Program (including
+Contributions) may always be distributed subject to the version of the
+Agreement under which it was received. In addition, after a new version
+of the Agreement is published, Contributor may elect to distribute the
+Program (including its Contributions) under the new version. Except as
+expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
+rights or licenses to the intellectual property of any Contributor under
+this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this
+Agreement are reserved.</p>
+
+<p>This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No party
+to this Agreement will bring a legal action under this Agreement more
+than one year after the cause of action arose. Each party waives its
+rights to a jury trial in any resulting litigation.</p>
+
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.additions/license.html b/org.eclipse.osbp.vaaclipse.additions/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.additions/license.html
@@ -0,0 +1,164 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!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>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>February 1, 2011</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+   (COLLECTIVELY "CONTENT").  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse
+ Foundation is provided to you under the terms and conditions of the 
+Eclipse Public License Version 1.0
+   ("EPL").  A copy of the EPL is provided with this Content and is also
+ 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, "Program" will mean the Content.</p>
+
+<p>Content includes, but is not limited to, source code, object code, 
+documentation and other files maintained in the Eclipse Foundation 
+source code
+   repository ("Repository") in software modules ("Modules") and made 
+available as downloadable archives ("Downloads").</p>
+
+<ul>
+       <li>Content may be structured and packaged into modules to 
+facilitate delivering, extending, and upgrading the Content.  Typical 
+modules may include plug-ins ("Plug-ins"), plug-in fragments 
+("Fragments"), and features ("Features").</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&#8482; ARchive) in a directory named "plugins".</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or 
+Fragments and associated material.  Each Feature may be packaged as a 
+sub-directory in a directory named "features".  Within a Feature, files 
+named "feature.xml" may contain a list of the names and version numbers 
+of the Plug-ins
+      and/or Fragments associated with that Feature.</li>
+       <li>Features may also include other Features ("Included 
+Features"). Within a Feature, files named "feature.xml" may contain a 
+list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be 
+contained in files named "about.html" ("Abouts"). The terms and 
+conditions governing Features and
+Included Features should be contained in files named "license.html" 
+("Feature Licenses").  Abouts and Feature Licenses may be located in any
+ directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named "src" of certain Plug-ins</li>
+       <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is 
+installed using the Provisioning Technology (as defined below), you must
+ agree to a license ("Feature Update License") during the
+installation process.  If the Feature contains Included Features, the 
+Feature Update License should either provide you with the terms and 
+conditions governing the Included Features or
+inform you where you can locate them.  Feature Update Licenses may be 
+found in the "license" property of files named "feature.properties" 
+found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the 
+terms and conditions (or references to such terms and conditions) that 
+govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER 
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.
+  SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND 
+CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, 
+or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions 
+govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, 
+examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager ("Provisioning Technology") for the purpose of 
+allowing users to install software, documentation, information and/or
+   other materials (collectively "Installable Software"). This 
+capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about 
+packaging Installable Software is available at <a href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   ("Specification").</p>
+
+<p>You may use Provisioning Technology to allow other parties to install
+ Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to
+ be presented to, and accepted by, the users of the Provisioning 
+Technology
+   in accordance with the Specification. By using Provisioning 
+Technology in such a manner and making it available in accordance with 
+the
+   Specification, you further acknowledge your agreement to, and the 
+acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur ("Provisioning Process") in 
+which a user may execute the Provisioning Technology
+       on a machine ("Target Machine") with the intent of installing, 
+extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology 
+may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user 
+the terms and conditions that govern the use of the Installable
+       Software ("Installable Software Agreement") and such Installable 
+Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable 
+Software Agreement must inform the user of the terms and conditions that
+ govern
+       the Installable Software and must solicit acceptance by the end 
+user in the manner prescribed in such Installable Software Agreement. 
+Upon such
+       indication of agreement by the user, the provisioning Technology 
+will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are
+ currently may have restrictions on the import, possession, and use, 
+and/or re-export to
+   another country, of encryption software. BEFORE using any encryption 
+software, please check the country's laws, regulations and policies 
+concerning the import,
+   possession, or use, and re-export of encryption software, to see if 
+this is permitted.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.additions/pom.xml b/org.eclipse.osbp.vaaclipse.additions/pom.xml
new file mode 100644
index 0000000..f5200be
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.additions/pom.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	<artifactId>org.eclipse.osbp.vaaclipse.additions</artifactId>
+	<packaging>eclipse-plugin</packaging>
+	<parent>
+		<groupId>org.eclipse.osbp.vaaclipse</groupId>
+		<artifactId>org.eclipse.osbp.vaaclipse</artifactId>
+		<version>0.9.0-SNAPSHOT</version>
+		<relativePath>../pom.xml</relativePath>
+	</parent>
+</project>
diff --git a/org.eclipse.osbp.vaaclipse.additions/src/org/eclipse/osbp/vaaclipse/additions/view/ShowViewDialogContent.java b/org.eclipse.osbp.vaaclipse.additions/src/org/eclipse/osbp/vaaclipse/additions/view/ShowViewDialogContent.java
new file mode 100644
index 0000000..83d1f0e
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.additions/src/org/eclipse/osbp/vaaclipse/additions/view/ShowViewDialogContent.java
@@ -0,0 +1,238 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.additions.view;
+
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import javax.annotation.PostConstruct;
+import javax.inject.Inject;
+
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.ui.model.application.MApplication;
+import org.eclipse.e4.ui.model.application.descriptor.basic.MPartDescriptor;
+import org.eclipse.e4.ui.workbench.modeling.EPartService;
+import org.eclipse.e4.ui.workbench.modeling.EPartService.PartState;
+import org.eclipse.osbp.e4extension.service.EPartServiceExt;
+import org.eclipse.osbp.vaaclipse.publicapi.resources.BundleResource;
+import org.eclipse.osbp.vaadin.optiondialog.OptionDialog;
+import org.eclipse.osbp.vaadin.optiondialog.OptionDialog.ComponentProvider;
+
+import com.vaadin.data.Container.Filter;
+import com.vaadin.data.Container.Filterable;
+import com.vaadin.data.Item;
+import com.vaadin.data.util.HierarchicalContainer;
+import com.vaadin.data.util.filter.SimpleStringFilter;
+import com.vaadin.event.FieldEvents.TextChangeListener;
+import com.vaadin.event.ItemClickEvent;
+import com.vaadin.event.FieldEvents.TextChangeEvent;
+import com.vaadin.server.Sizeable.Unit;
+import com.vaadin.server.ThemeResource;
+import com.vaadin.shared.MouseEventDetails.MouseButton;
+import com.vaadin.shared.ui.MarginInfo;
+import com.vaadin.ui.Component;
+import com.vaadin.ui.Panel;
+import com.vaadin.ui.TextField;
+import com.vaadin.ui.Tree;
+import com.vaadin.ui.Tree.TreeDragMode;
+import com.vaadin.ui.VerticalLayout;
+
+/**
+ * @author rushan
+ *
+ */
+class ShowViewDialogContent implements ComponentProvider {
+	private static final String NAME_PROP = "name";
+	private static final String ICON_PROP = "icon";
+	private static final String OBJECT_PROP = "object";
+
+	final private static String CATEGORY_TAG = "categoryTag:";
+	final private static int CATEGORY_TAG_LENGTH = CATEGORY_TAG.length();
+
+	private Tree tree;
+	private Panel panel;
+	private HierarchicalContainer container;
+	private OptionDialog optionDialog;
+
+	@Inject
+	private EPartService partService;
+
+	@Inject
+	private EPartServiceExt partServiceExt;
+
+	@Inject
+	private MApplication application;
+
+	@Inject
+	IEclipseContext context;
+	private VerticalLayout content;
+	private TextField searchField;
+
+	@Override
+	public Component getComponent(OptionDialog optionDialog) {
+		this.optionDialog = optionDialog;
+		return this.content;
+	}
+
+	@PostConstruct
+	public void init() {
+		content = new VerticalLayout();
+		content.setSpacing(true);
+		content.setMargin(new MarginInfo(true, true, false, true));
+		searchField = new TextField();
+		searchField.focus();
+		searchField.setWidth(100, Unit.PERCENTAGE);
+		searchField.addTextChangeListener(new TextChangeListener() {
+			SimpleStringFilter filter = null;
+
+			@Override
+			public void textChange(TextChangeEvent event) {
+				Filterable f = (Filterable) tree.getContainerDataSource();
+
+				// Remove old filter
+				if (filter != null)
+					f.removeContainerFilter(filter);
+
+				// Set new filter for the "caption" property
+				filter = new SimpleStringFilter(NAME_PROP, event.getText(),
+						true, false);
+				f.addContainerFilter(filter);
+			}
+		});
+		content.addComponent(searchField);
+		panel = new Panel();
+		panel.setSizeFull();
+		content.addComponent(panel);
+		createTree();
+		content.setExpandRatio(searchField, 0);
+		content.setExpandRatio(panel, 1);
+	}
+
+	@Override
+	public void optionSelected(OptionDialog optionDialog, int optionId) {
+		if (optionId == 0) {
+			Object selected = tree.getValue();
+			if (selected instanceof MPartDescriptor) {
+				optionDialog.close();
+
+				MPartDescriptor descriptor = (MPartDescriptor) selected;
+				showView(descriptor);
+			}
+		} else if (optionId == 1)
+			optionDialog.close();
+	}
+
+	public void showView(MPartDescriptor... descriptors) {
+		for (MPartDescriptor descriptor : descriptors) {
+			partServiceExt.showPart(descriptor.getElementId(),
+					PartState.ACTIVATE);
+		}
+	}
+
+	@Override
+	public void setMessage(String message) {
+	}
+
+	private void createTree() {
+		tree = new Tree();
+		tree.setDragMode(TreeDragMode.NODE);
+		tree.setSizeFull();
+		tree.setImmediate(true);
+		panel.setContent(tree);
+
+		container = createDataSource();
+		tree.setContainerDataSource(container);
+
+		// Set tree to show the 'name' property as caption for items
+		tree.setItemCaptionPropertyId(NAME_PROP);
+		tree.setItemIconPropertyId(ICON_PROP);
+
+		tree.addItemClickListener(new ItemClickEvent.ItemClickListener() {
+
+			private static final long serialVersionUID = 1L;
+
+			public void itemClick(final ItemClickEvent event) {
+				if (event.getButton() == MouseButton.LEFT) {
+					Item item = event.getItem();
+					Object object = item.getItemProperty(OBJECT_PROP)
+							.getValue();
+					optionDialog.setOptionEnabled(0,
+							object instanceof MPartDescriptor);
+				}
+			}
+		});
+	}
+
+	private void setupCategoryItem(Item categoryItem, String category) {
+		categoryItem.getItemProperty(NAME_PROP).setValue(category);
+		categoryItem
+				.getItemProperty(ICON_PROP)
+				.setValue(
+						BundleResource
+								.valueOf("platform:/plugin/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/folder.png"));
+		categoryItem.getItemProperty(OBJECT_PROP).setValue(category);
+	}
+
+	private void setupDescriptorItem(Item descriptorItem,
+			MPartDescriptor descriptor) {
+		descriptorItem.getItemProperty(NAME_PROP).setValue(
+				descriptor.getLabel());
+		if (descriptor.getIconURI() != null
+				&& descriptor.getIconURI().trim().length() > 0)
+			descriptorItem.getItemProperty(ICON_PROP).setValue(
+					BundleResource.valueOf(descriptor.getIconURI()));
+		descriptorItem.getItemProperty(OBJECT_PROP).setValue(descriptor);
+	}
+
+	private HierarchicalContainer createDataSource() {
+		HierarchicalContainer data = new HierarchicalContainer();
+		data.addContainerProperty(NAME_PROP, String.class, "No Name");
+		data.addContainerProperty(ICON_PROP, ThemeResource.class, null);
+		data.addContainerProperty(OBJECT_PROP, Object.class, null);
+
+		List<MPartDescriptor> descriptors = application.getDescriptors();
+		Set<String> categoryTags = new HashSet<String>();
+
+		for (MPartDescriptor descriptor : descriptors) {
+			List<String> tags = descriptor.getTags();
+			String category = null;
+			boolean isView = false;
+			for (String tag : tags) {
+				if (tag.equals("View"))
+					isView = true;
+				else if (tag.startsWith(CATEGORY_TAG)) {
+					category = tag.substring(CATEGORY_TAG_LENGTH);
+				}
+			}
+			if (isView) {
+				Item descriptorItem = data.addItem(descriptor);
+				data.setChildrenAllowed(descriptor, false);
+				setupDescriptorItem(descriptorItem, descriptor);
+
+				if (category != null) {
+					category = category.trim();
+					if (!category.isEmpty()) {
+						if (!categoryTags.contains(category)) {
+							categoryTags.add(category);
+							Item categoryItem = data.addItem(category);
+							setupCategoryItem(categoryItem, category);
+						}
+
+						data.setParent(descriptor, category);
+					}
+				}
+			}
+		}
+
+		return data;
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.additions/src/org/eclipse/osbp/vaaclipse/additions/view/ShowViewHandler.java b/org.eclipse.osbp.vaaclipse.additions/src/org/eclipse/osbp/vaaclipse/additions/view/ShowViewHandler.java
new file mode 100644
index 0000000..e8901e6
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.additions/src/org/eclipse/osbp/vaaclipse/additions/view/ShowViewHandler.java
@@ -0,0 +1,67 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.additions.view;
+
+import javax.inject.Named;
+
+import org.eclipse.e4.core.contexts.ContextInjectionFactory;
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.core.di.annotations.Optional;
+import org.eclipse.e4.ui.model.application.MApplication;
+import org.eclipse.e4.ui.model.application.ui.basic.MWindow;
+import org.eclipse.e4.ui.workbench.modeling.EPartService;
+import org.eclipse.e4.ui.workbench.modeling.EPartService.PartState;
+import org.eclipse.osbp.vaadin.optiondialog.OptionDialog;
+import org.eclipse.osbp.vaadin.optiondialog.OptionDialog.OptionsAlign;
+
+import com.vaadin.server.ThemeResource;
+import com.vaadin.server.Sizeable.Unit;
+import com.vaadin.ui.UI;
+import com.vaadin.ui.Window;
+
+/**
+ * @author rushan
+ * 
+ */
+public class ShowViewHandler {
+	public static final String VIEWS_SHOW_VIEW_PARM_ID = "org.eclipse.ui.views.showView.viewId"; //$NON-NLS-1$
+
+	@Execute
+	public void execute(UI ui, MApplication application,
+			EPartService partService, IEclipseContext context,
+			@Optional @Named(VIEWS_SHOW_VIEW_PARM_ID) String viewId) {
+		if (viewId != null) {
+			partService.showPart(viewId, PartState.ACTIVATE);
+			return;
+		}
+
+		OptionDialog dlg = new OptionDialog();
+		dlg.setOptionButtonsAlignment(OptionsAlign.RIGHT);
+		dlg.setOptionButtonsWidth(80, Unit.PIXELS);
+		dlg.setWidth("350px");
+		dlg.setHeight("500px");
+		dlg.setModal(true);
+		dlg.setCaption("Show View");
+		// static resource will process this, so we set application header icon
+		// without using ResourceInfoProvider service as for Open Perspective
+		// Dialog
+		dlg.setIcon(new ThemeResource("../base/favicon.ico"));
+		ShowViewDialogContent componentProvider = ContextInjectionFactory.make(
+				ShowViewDialogContent.class, context);
+		dlg.setComponentProvider(componentProvider);
+
+		dlg.addOption(0, "OK");
+		dlg.addOption(1, "Cancel");
+
+		ui.addWindow(dlg);
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.api/.project b/org.eclipse.osbp.vaaclipse.api/.project
new file mode 100644
index 0000000..bc843fa
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.api/.project
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.vaaclipse.api</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.babel.editor.rbeBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.babel.editor.rbeNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.vaaclipse.api/META-INF/MANIFEST.MF b/org.eclipse.osbp.vaaclipse.api/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..5ca5cda
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.api/META-INF/MANIFEST.MF
@@ -0,0 +1,10 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.vaaclipse.api
+Bundle-SymbolicName: org.eclipse.osbp.vaaclipse.api
+Bundle-Version: 0.9.0.qualifier
+Bundle-Vendor: Eclipse OSBP
+Bundle-RequiredExecutionEnvironment: JavaSE-1.7
+Export-Package: org.eclipse.osbp.vaaclipse.api;version="0.9.0"
+Require-Bundle: org.eclipse.e4.ui.model.workbench;bundle-version="0.10.1",
+ org.eclipse.osbp.commons;bundle-version="[0.9.0,0.10.0)"
diff --git a/org.eclipse.osbp.vaaclipse.api/about.html b/org.eclipse.osbp.vaaclipse.api/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.api/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 1, 2016</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.api/about.ini b/org.eclipse.osbp.vaaclipse.api/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.api/about.ini
@@ -0,0 +1,17 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%featureText
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=
+
+# Property "appName" contains name of the application (translated)
+appName=%featureName
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+welcomePage=
diff --git a/org.eclipse.osbp.vaaclipse.api/about.mappings b/org.eclipse.osbp.vaaclipse.api/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.api/about.mappings
@@ -0,0 +1,6 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+0=qualifier
diff --git a/org.eclipse.osbp.vaaclipse.api/about.properties b/org.eclipse.osbp.vaaclipse.api/about.properties
new file mode 100644
index 0000000..3d1fed7
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.api/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2012, 2016 - Loetz GmbH&Co.KG (Heidelberg)
+# 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:
+#    Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.vaaclipse.api
+
+################ blurb property ####################################
+featureText=\
+Copyright (c) 2012-2016 - Loetz GmbH&Co.KG \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+Contributors:\n\
+    Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.vaaclipse.api/build.properties b/org.eclipse.osbp.vaaclipse.api/build.properties
new file mode 100644
index 0000000..a138bbd
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.api/build.properties
@@ -0,0 +1,8 @@
+source.. = src/
+output.. = target/classes/
+bin.includes = about.properties,  about.mappings,  about.ini,  about.html,  META-INF/,\
+               .,\
+               epl-v10.html,\
+               license.html
+src.includes = about.properties,  about.mappings,  about.ini,  about.html,  epl-v10.html,\
+               license.html
diff --git a/org.eclipse.osbp.vaaclipse.api/epl-v10.html b/org.eclipse.osbp.vaaclipse.api/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.api/epl-v10.html
@@ -0,0 +1,259 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+  body {
+    size: 8.5in 11.0in;
+    margin: 0.25in 0.5in 0.25in 0.5in;
+    tab-interval: 0.5in;
+    }
+  p {  	
+    margin-left: auto;
+    margin-top:  0.5em;
+    margin-bottom: 0.5em;
+    }
+  p.list {
+  	margin-left: 0.5in;
+    margin-top:  0.05em;
+    margin-bottom: 0.05em;
+    }
+  </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">where such changes and/or additions to the Program
+originate from and are distributed by that particular Contributor. A
+Contribution 'originates' from a Contributor if it was added to the
+Program by such Contributor itself or anyone acting on such
+Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii)
+are not derivative works of the Program.</p>
+
+<p>"Contributor" means any person or entity that distributes
+the Program.</p>
+
+<p>"Licensed Patents" mean patent claims licensable by a
+Contributor which are necessarily infringed by the use or sale of its
+Contribution alone or when combined with the Program.</p>
+
+<p>"Program" means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>"Recipient" means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works
+of, publicly display, publicly perform, distribute and sublicense the
+Contribution of such Contributor, if any, and such derivative works, in
+source code and object code form.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell,
+offer to sell, import and otherwise transfer the Contribution of such
+Contributor, if any, in source code and object code form. This patent
+license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor,
+such addition of the Contribution causes such combination to be covered
+by the Licensed Patents. The patent license shall not apply to any other
+combinations which include the Contribution. No hardware per se is
+licensed hereunder.</p>
+
+<p class="list">c) Recipient understands that although each Contributor
+grants the licenses to its Contributions set forth herein, no assurances
+are provided by any Contributor that the Program does not infringe the
+patent or other intellectual property rights of any other entity. Each
+Contributor disclaims any liability to Recipient for claims brought by
+any other entity based on infringement of intellectual property rights
+or otherwise. As a condition to exercising the rights and licenses
+granted hereunder, each Recipient hereby assumes sole responsibility to
+secure any other intellectual property rights needed, if any. For
+example, if a third party patent license is required to allow Recipient
+to distribute the Program, it is Recipient's responsibility to acquire
+that license before distributing the Program.</p>
+
+<p class="list">d) Each Contributor represents that to its knowledge it
+has sufficient copyright rights in its Contribution, if any, to grant
+the copyright license set forth in this Agreement.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">i) effectively disclaims on behalf of all Contributors
+all warranties and conditions, express and implied, including warranties
+or conditions of title and non-infringement, and implied warranties or
+conditions of merchantability and fitness for a particular purpose;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">iv) states that source code for the Program is available
+from such Contributor, and informs licensees how to obtain it in a
+reasonable manner on or through a medium customarily used for software
+exchange.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>Commercial distributors of software may accept certain
+responsibilities with respect to end users, business partners and the
+like. While this license is intended to facilitate the commercial use of
+the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create
+potential liability for other Contributors. Therefore, if a Contributor
+includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and
+indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses")
+arising from claims, lawsuits and other legal actions brought by a third
+party against the Indemnified Contributor to the extent caused by the
+acts or omissions of such Commercial Contributor in connection with its
+distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In
+order to qualify, an Indemnified Contributor must: a) promptly notify
+the Commercial Contributor in writing of such claim, and b) allow the
+Commercial Contributor to control, and cooperate with the Commercial
+Contributor in, the defense and any related settlement negotiations. The
+Indemnified Contributor may participate in any such claim at its own
+expense.</p>
+
+<p>For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor's responsibility
+alone. Under this section, the Commercial Contributor would have to
+defend claims against the other Contributors related to those
+performance claims and warranties, and if a court requires any other
+Contributor to pay any damages as a result, the Commercial Contributor
+must pay those damages.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
+OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
+ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to
+the risks and costs of program errors, compliance with applicable laws,
+damage to or loss of data, programs or equipment, and unavailability or
+interruption of operations.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
+NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of
+the remainder of the terms of this Agreement, and without further action
+by the parties hereto, such provision shall be reformed to the minimum
+extent necessary to make such provision valid and enforceable.</p>
+
+<p>If Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that the
+Program itself (excluding combinations of the Program with other
+software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the
+date such litigation is filed.</p>
+
+<p>All Recipient's rights under this Agreement shall terminate if it
+fails to comply with any of the material terms or conditions of this
+Agreement and does not cure such failure in a reasonable period of time
+after becoming aware of such noncompliance. If all Recipient's rights
+under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive.</p>
+
+<p>Everyone is permitted to copy and distribute copies of this
+Agreement, but in order to avoid inconsistency the Agreement is
+copyrighted and may only be modified in the following manner. The
+Agreement Steward reserves the right to publish new versions (including
+revisions) of this Agreement from time to time. No one other than the
+Agreement Steward has the right to modify this Agreement. The Eclipse
+Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a
+suitable separate entity. Each new version of the Agreement will be
+given a distinguishing version number. The Program (including
+Contributions) may always be distributed subject to the version of the
+Agreement under which it was received. In addition, after a new version
+of the Agreement is published, Contributor may elect to distribute the
+Program (including its Contributions) under the new version. Except as
+expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
+rights or licenses to the intellectual property of any Contributor under
+this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this
+Agreement are reserved.</p>
+
+<p>This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No party
+to this Agreement will bring a legal action under this Agreement more
+than one year after the cause of action arose. Each party waives its
+rights to a jury trial in any resulting litigation.</p>
+
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.api/license.html b/org.eclipse.osbp.vaaclipse.api/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.api/license.html
@@ -0,0 +1,164 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!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>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>February 1, 2011</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+   (COLLECTIVELY "CONTENT").  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse
+ Foundation is provided to you under the terms and conditions of the 
+Eclipse Public License Version 1.0
+   ("EPL").  A copy of the EPL is provided with this Content and is also
+ 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, "Program" will mean the Content.</p>
+
+<p>Content includes, but is not limited to, source code, object code, 
+documentation and other files maintained in the Eclipse Foundation 
+source code
+   repository ("Repository") in software modules ("Modules") and made 
+available as downloadable archives ("Downloads").</p>
+
+<ul>
+       <li>Content may be structured and packaged into modules to 
+facilitate delivering, extending, and upgrading the Content.  Typical 
+modules may include plug-ins ("Plug-ins"), plug-in fragments 
+("Fragments"), and features ("Features").</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&#8482; ARchive) in a directory named "plugins".</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or 
+Fragments and associated material.  Each Feature may be packaged as a 
+sub-directory in a directory named "features".  Within a Feature, files 
+named "feature.xml" may contain a list of the names and version numbers 
+of the Plug-ins
+      and/or Fragments associated with that Feature.</li>
+       <li>Features may also include other Features ("Included 
+Features"). Within a Feature, files named "feature.xml" may contain a 
+list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be 
+contained in files named "about.html" ("Abouts"). The terms and 
+conditions governing Features and
+Included Features should be contained in files named "license.html" 
+("Feature Licenses").  Abouts and Feature Licenses may be located in any
+ directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named "src" of certain Plug-ins</li>
+       <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is 
+installed using the Provisioning Technology (as defined below), you must
+ agree to a license ("Feature Update License") during the
+installation process.  If the Feature contains Included Features, the 
+Feature Update License should either provide you with the terms and 
+conditions governing the Included Features or
+inform you where you can locate them.  Feature Update Licenses may be 
+found in the "license" property of files named "feature.properties" 
+found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the 
+terms and conditions (or references to such terms and conditions) that 
+govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER 
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.
+  SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND 
+CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, 
+or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions 
+govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, 
+examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager ("Provisioning Technology") for the purpose of 
+allowing users to install software, documentation, information and/or
+   other materials (collectively "Installable Software"). This 
+capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about 
+packaging Installable Software is available at <a href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   ("Specification").</p>
+
+<p>You may use Provisioning Technology to allow other parties to install
+ Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to
+ be presented to, and accepted by, the users of the Provisioning 
+Technology
+   in accordance with the Specification. By using Provisioning 
+Technology in such a manner and making it available in accordance with 
+the
+   Specification, you further acknowledge your agreement to, and the 
+acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur ("Provisioning Process") in 
+which a user may execute the Provisioning Technology
+       on a machine ("Target Machine") with the intent of installing, 
+extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology 
+may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user 
+the terms and conditions that govern the use of the Installable
+       Software ("Installable Software Agreement") and such Installable 
+Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable 
+Software Agreement must inform the user of the terms and conditions that
+ govern
+       the Installable Software and must solicit acceptance by the end 
+user in the manner prescribed in such Installable Software Agreement. 
+Upon such
+       indication of agreement by the user, the provisioning Technology 
+will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are
+ currently may have restrictions on the import, possession, and use, 
+and/or re-export to
+   another country, of encryption software. BEFORE using any encryption 
+software, please check the country's laws, regulations and policies 
+concerning the import,
+   possession, or use, and re-export of encryption software, to see if 
+this is permitted.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.api/pom.xml b/org.eclipse.osbp.vaaclipse.api/pom.xml
new file mode 100644
index 0000000..8a1acaf
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.api/pom.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>org.eclipse.osbp.vaaclipse</groupId>
+    <artifactId>org.eclipse.osbp.vaaclipse.api</artifactId>
+    <packaging>eclipse-plugin</packaging>
+    <parent>
+        <groupId>org.eclipse.osbp.vaaclipse</groupId>
+        <artifactId>org.eclipse.osbp.vaaclipse</artifactId>
+        <version>0.9.0-SNAPSHOT</version>
+        <relativePath>..</relativePath>
+    </parent>
+</project>
diff --git a/org.eclipse.osbp.vaaclipse.api/src/org/eclipse/osbp/vaaclipse/api/Behaviour.java b/org.eclipse.osbp.vaaclipse.api/src/org/eclipse/osbp/vaaclipse/api/Behaviour.java
new file mode 100644
index 0000000..2b58cad
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.api/src/org/eclipse/osbp/vaaclipse/api/Behaviour.java
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.api;
+
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.model.application.ui.basic.MPart;
+import org.eclipse.e4.ui.model.application.ui.basic.MTrimBar;
+import org.eclipse.e4.ui.model.application.ui.menu.MToolBar;
+
+/**
+ * @author rushan
+ *
+ */
+public interface Behaviour {
+	MTrimBar getTrimBarForMinimizedElement(MUIElement minimizedElement);
+
+	MToolBar getToolBarForMinimizedElement(MUIElement minimizedElement);
+
+	MUIElement getMinimizedParentForPart(MPart part);
+}
diff --git a/org.eclipse.osbp.vaaclipse.api/src/org/eclipse/osbp/vaaclipse/api/Events.java b/org.eclipse.osbp.vaaclipse.api/src/org/eclipse/osbp/vaaclipse/api/Events.java
new file mode 100644
index 0000000..4422606
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.api/src/org/eclipse/osbp/vaaclipse/api/Events.java
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.api;
+
+/**
+ * @author rushan
+ *
+ */
+public class Events {
+	public static class MinMaxEvents {
+		public static final String EVENT_MAXIMIZE_ELEMENT = "EVENT_MAXIMIZE_ELEMENT";
+		public static final String EVENT_MINIMIZE_ELEMENT = "EVENT_MINIMIZE_ELEMENT";
+		public static final String EVENT_RESTORE_ELEMENT = "EVENT_RESTORE_ELEMENT";
+
+		public static final String PARAMETER_ELEMENT = "PARAMETER_ELEMENT";
+		public static final String PARAMETER_TRIMBAR = "PARAMETER_TRIMBAR";
+		public static final String PARAMETER_TOOLBAR = "PARAMETER_TOOLBAR";
+	}
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.api/src/org/eclipse/osbp/vaaclipse/api/FastViewListener.java b/org.eclipse.osbp.vaaclipse.api/src/org/eclipse/osbp/vaaclipse/api/FastViewListener.java
new file mode 100644
index 0000000..62e15b0
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.api/src/org/eclipse/osbp/vaaclipse/api/FastViewListener.java
@@ -0,0 +1,23 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.api;
+
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.model.application.ui.basic.MTrimBar;
+
+/**
+ * @author rushan
+ *
+ */
+public interface FastViewListener {
+	void showFastView(MTrimBar trimBar, MUIElement element);
+}
diff --git a/org.eclipse.osbp.vaaclipse.api/src/org/eclipse/osbp/vaaclipse/api/MenuContributionService.java b/org.eclipse.osbp.vaaclipse.api/src/org/eclipse/osbp/vaaclipse/api/MenuContributionService.java
new file mode 100644
index 0000000..c0e6c35
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.api/src/org/eclipse/osbp/vaaclipse/api/MenuContributionService.java
@@ -0,0 +1,23 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.api;
+
+import org.eclipse.e4.ui.model.application.ui.menu.MMenu;
+
+/**
+ * @author rushan
+ *
+ */
+public interface MenuContributionService {
+	void addContributions(MMenu menu);
+
+	void removeContributions(MMenu menu);
+}
diff --git a/org.eclipse.osbp.vaaclipse.api/src/org/eclipse/osbp/vaaclipse/api/ResourceInfoProvider.java b/org.eclipse.osbp.vaaclipse.api/src/org/eclipse/osbp/vaaclipse/api/ResourceInfoProvider.java
new file mode 100644
index 0000000..ddc19d3
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.api/src/org/eclipse/osbp/vaaclipse/api/ResourceInfoProvider.java
@@ -0,0 +1,25 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.api;
+
+/**
+ * @author rushan
+ *
+ */
+public interface ResourceInfoProvider {
+	String getCssTheme();
+
+	String getApplicationtWidgetset();
+
+	String getApplicationtWidgetsetName();
+
+	String getApplicationHeaderIcon();
+}
diff --git a/org.eclipse.osbp.vaaclipse.api/src/org/eclipse/osbp/vaaclipse/api/ResourceSystem.java b/org.eclipse.osbp.vaaclipse.api/src/org/eclipse/osbp/vaaclipse/api/ResourceSystem.java
new file mode 100644
index 0000000..73ee821
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.api/src/org/eclipse/osbp/vaaclipse/api/ResourceSystem.java
@@ -0,0 +1,15 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.api;
+
+public interface ResourceSystem {
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.api/src/org/eclipse/osbp/vaaclipse/api/VaadinExecutorService.java b/org.eclipse.osbp.vaaclipse.api/src/org/eclipse/osbp/vaaclipse/api/VaadinExecutorService.java
new file mode 100644
index 0000000..adff9b1
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.api/src/org/eclipse/osbp/vaaclipse/api/VaadinExecutorService.java
@@ -0,0 +1,33 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.api;
+
+/**
+ * @author rushan
+ *
+ */
+public interface VaadinExecutorService {
+	void invokeLater(Runnable runnable);
+
+	void invokeLater(Object key, Runnable runnable);
+
+	void removeAllInvokeLater();
+
+	boolean containsKey(Object key);
+
+	void invokeLaterAlways(Runnable runnable);
+
+	void removeAlwaysRunnable(Runnable runnable);
+
+	void removeAllAlwaysRunnables();
+	
+	void dispose();
+}
diff --git a/org.eclipse.osbp.vaaclipse.api/src/org/eclipse/osbp/vaaclipse/api/WidgetInfo.java b/org.eclipse.osbp.vaaclipse.api/src/org/eclipse/osbp/vaaclipse/api/WidgetInfo.java
new file mode 100644
index 0000000..e81af1c
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.api/src/org/eclipse/osbp/vaaclipse/api/WidgetInfo.java
@@ -0,0 +1,25 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.api;
+
+/**
+ * @author rushan
+ * 
+ */
+public interface WidgetInfo {
+	// Bounds getBounds(MWindow window);
+	//
+	// Bounds getBounds(MWindow window, MUIElement element);
+
+	// void invalidateBounds(MWindow window);
+
+	Object getParent(Object widget);
+}
diff --git a/org.eclipse.osbp.vaaclipse.behaviour/.project b/org.eclipse.osbp.vaaclipse.behaviour/.project
new file mode 100644
index 0000000..e8f41ad
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.behaviour/.project
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.vaaclipse.behaviour</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ds.core.builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.babel.editor.rbeBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.babel.editor.rbeNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.vaaclipse.behaviour/META-INF/MANIFEST.MF b/org.eclipse.osbp.vaaclipse.behaviour/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..62eaff6
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.behaviour/META-INF/MANIFEST.MF
@@ -0,0 +1,24 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.vaaclipse.behaviour
+Bundle-SymbolicName: org.eclipse.osbp.vaaclipse.behaviour;singleton:=true
+Bundle-Version: 0.9.0.qualifier
+Require-Bundle: org.eclipse.e4.core.di;bundle-version="1.1.0",
+ org.eclipse.e4.core.commands;bundle-version="0.10.1",
+ org.eclipse.core.runtime;bundle-version="3.8.0",
+ org.eclipse.e4.ui.model.workbench;bundle-version="0.10.1",
+ org.eclipse.e4.ui.workbench;bundle-version="0.10.2",
+ org.eclipse.e4.core.services;bundle-version="1.0.0",
+ org.eclipse.e4.core.contexts;bundle-version="1.1.0",
+ org.eclipse.osgi.services;bundle-version="3.3.100",
+ org.eclipse.osbp.vaaclipse.presentation;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.vaaclipse.api;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.commons;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.emf.ecore;bundle-version="2.9.0"
+Bundle-RequiredExecutionEnvironment: JavaSE-1.7
+Export-Package: org.eclipse.osbp.vaaclipse.behaviour;version="0.9.0",
+ org.eclipse.osbp.vaaclipse.behaviour.cleanup;version="0.9.0"
+Bundle-Vendor: Eclipse OSBP
+Service-Component: OSGI-INF/org.eclipse.osbp.vaaclipse.behaviour.xml
+Import-Package: javax.annotation;version="1.1.0",
+ javax.inject;version="1.0.0"
diff --git a/org.eclipse.osbp.vaaclipse.behaviour/about.html b/org.eclipse.osbp.vaaclipse.behaviour/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.behaviour/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 1, 2016</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.behaviour/about.ini b/org.eclipse.osbp.vaaclipse.behaviour/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.behaviour/about.ini
@@ -0,0 +1,17 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%featureText
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=
+
+# Property "appName" contains name of the application (translated)
+appName=%featureName
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+welcomePage=
diff --git a/org.eclipse.osbp.vaaclipse.behaviour/about.mappings b/org.eclipse.osbp.vaaclipse.behaviour/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.behaviour/about.mappings
@@ -0,0 +1,6 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+0=qualifier
diff --git a/org.eclipse.osbp.vaaclipse.behaviour/about.properties b/org.eclipse.osbp.vaaclipse.behaviour/about.properties
new file mode 100644
index 0000000..2f3806d
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.behaviour/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2012, 2016 - Loetz GmbH&Co.KG (Heidelberg)
+# 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:
+#    Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.vaaclipse.behaviour
+
+################ blurb property ####################################
+featureText=\
+Copyright (c) 2012-2016 - Loetz GmbH&Co.KG \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+Contributors:\n\
+    Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.vaaclipse.behaviour/build.properties b/org.eclipse.osbp.vaaclipse.behaviour/build.properties
new file mode 100644
index 0000000..f0c3547
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.behaviour/build.properties
@@ -0,0 +1,10 @@
+output.. = target/classes/
+bin.includes = about.properties,  about.mappings,  about.ini,  about.html,  plugin.xml,\
+               META-INF/,\
+               .,\
+               icons/,\
+               license.html,\
+               epl-v10.html
+source.. = src/
+src.includes = about.properties,  about.mappings,  about.ini,  about.html,  epl-v10.html,\
+               license.html
diff --git a/org.eclipse.osbp.vaaclipse.behaviour/epl-v10.html b/org.eclipse.osbp.vaaclipse.behaviour/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.behaviour/epl-v10.html
@@ -0,0 +1,259 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+  body {
+    size: 8.5in 11.0in;
+    margin: 0.25in 0.5in 0.25in 0.5in;
+    tab-interval: 0.5in;
+    }
+  p {  	
+    margin-left: auto;
+    margin-top:  0.5em;
+    margin-bottom: 0.5em;
+    }
+  p.list {
+  	margin-left: 0.5in;
+    margin-top:  0.05em;
+    margin-bottom: 0.05em;
+    }
+  </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">where such changes and/or additions to the Program
+originate from and are distributed by that particular Contributor. A
+Contribution 'originates' from a Contributor if it was added to the
+Program by such Contributor itself or anyone acting on such
+Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii)
+are not derivative works of the Program.</p>
+
+<p>"Contributor" means any person or entity that distributes
+the Program.</p>
+
+<p>"Licensed Patents" mean patent claims licensable by a
+Contributor which are necessarily infringed by the use or sale of its
+Contribution alone or when combined with the Program.</p>
+
+<p>"Program" means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>"Recipient" means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works
+of, publicly display, publicly perform, distribute and sublicense the
+Contribution of such Contributor, if any, and such derivative works, in
+source code and object code form.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell,
+offer to sell, import and otherwise transfer the Contribution of such
+Contributor, if any, in source code and object code form. This patent
+license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor,
+such addition of the Contribution causes such combination to be covered
+by the Licensed Patents. The patent license shall not apply to any other
+combinations which include the Contribution. No hardware per se is
+licensed hereunder.</p>
+
+<p class="list">c) Recipient understands that although each Contributor
+grants the licenses to its Contributions set forth herein, no assurances
+are provided by any Contributor that the Program does not infringe the
+patent or other intellectual property rights of any other entity. Each
+Contributor disclaims any liability to Recipient for claims brought by
+any other entity based on infringement of intellectual property rights
+or otherwise. As a condition to exercising the rights and licenses
+granted hereunder, each Recipient hereby assumes sole responsibility to
+secure any other intellectual property rights needed, if any. For
+example, if a third party patent license is required to allow Recipient
+to distribute the Program, it is Recipient's responsibility to acquire
+that license before distributing the Program.</p>
+
+<p class="list">d) Each Contributor represents that to its knowledge it
+has sufficient copyright rights in its Contribution, if any, to grant
+the copyright license set forth in this Agreement.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">i) effectively disclaims on behalf of all Contributors
+all warranties and conditions, express and implied, including warranties
+or conditions of title and non-infringement, and implied warranties or
+conditions of merchantability and fitness for a particular purpose;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">iv) states that source code for the Program is available
+from such Contributor, and informs licensees how to obtain it in a
+reasonable manner on or through a medium customarily used for software
+exchange.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>Commercial distributors of software may accept certain
+responsibilities with respect to end users, business partners and the
+like. While this license is intended to facilitate the commercial use of
+the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create
+potential liability for other Contributors. Therefore, if a Contributor
+includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and
+indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses")
+arising from claims, lawsuits and other legal actions brought by a third
+party against the Indemnified Contributor to the extent caused by the
+acts or omissions of such Commercial Contributor in connection with its
+distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In
+order to qualify, an Indemnified Contributor must: a) promptly notify
+the Commercial Contributor in writing of such claim, and b) allow the
+Commercial Contributor to control, and cooperate with the Commercial
+Contributor in, the defense and any related settlement negotiations. The
+Indemnified Contributor may participate in any such claim at its own
+expense.</p>
+
+<p>For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor's responsibility
+alone. Under this section, the Commercial Contributor would have to
+defend claims against the other Contributors related to those
+performance claims and warranties, and if a court requires any other
+Contributor to pay any damages as a result, the Commercial Contributor
+must pay those damages.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
+OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
+ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to
+the risks and costs of program errors, compliance with applicable laws,
+damage to or loss of data, programs or equipment, and unavailability or
+interruption of operations.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
+NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of
+the remainder of the terms of this Agreement, and without further action
+by the parties hereto, such provision shall be reformed to the minimum
+extent necessary to make such provision valid and enforceable.</p>
+
+<p>If Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that the
+Program itself (excluding combinations of the Program with other
+software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the
+date such litigation is filed.</p>
+
+<p>All Recipient's rights under this Agreement shall terminate if it
+fails to comply with any of the material terms or conditions of this
+Agreement and does not cure such failure in a reasonable period of time
+after becoming aware of such noncompliance. If all Recipient's rights
+under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive.</p>
+
+<p>Everyone is permitted to copy and distribute copies of this
+Agreement, but in order to avoid inconsistency the Agreement is
+copyrighted and may only be modified in the following manner. The
+Agreement Steward reserves the right to publish new versions (including
+revisions) of this Agreement from time to time. No one other than the
+Agreement Steward has the right to modify this Agreement. The Eclipse
+Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a
+suitable separate entity. Each new version of the Agreement will be
+given a distinguishing version number. The Program (including
+Contributions) may always be distributed subject to the version of the
+Agreement under which it was received. In addition, after a new version
+of the Agreement is published, Contributor may elect to distribute the
+Program (including its Contributions) under the new version. Except as
+expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
+rights or licenses to the intellectual property of any Contributor under
+this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this
+Agreement are reserved.</p>
+
+<p>This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No party
+to this Agreement will bring a legal action under this Agreement more
+than one year after the cause of action arose. Each party waives its
+rights to a jury trial in any resulting litigation.</p>
+
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.behaviour/icons/sample.gif b/org.eclipse.osbp.vaaclipse.behaviour/icons/sample.gif
new file mode 100644
index 0000000..34fb3c9
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.behaviour/icons/sample.gif
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.behaviour/license.html b/org.eclipse.osbp.vaaclipse.behaviour/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.behaviour/license.html
@@ -0,0 +1,164 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!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>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>February 1, 2011</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+   (COLLECTIVELY "CONTENT").  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse
+ Foundation is provided to you under the terms and conditions of the 
+Eclipse Public License Version 1.0
+   ("EPL").  A copy of the EPL is provided with this Content and is also
+ 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, "Program" will mean the Content.</p>
+
+<p>Content includes, but is not limited to, source code, object code, 
+documentation and other files maintained in the Eclipse Foundation 
+source code
+   repository ("Repository") in software modules ("Modules") and made 
+available as downloadable archives ("Downloads").</p>
+
+<ul>
+       <li>Content may be structured and packaged into modules to 
+facilitate delivering, extending, and upgrading the Content.  Typical 
+modules may include plug-ins ("Plug-ins"), plug-in fragments 
+("Fragments"), and features ("Features").</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&#8482; ARchive) in a directory named "plugins".</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or 
+Fragments and associated material.  Each Feature may be packaged as a 
+sub-directory in a directory named "features".  Within a Feature, files 
+named "feature.xml" may contain a list of the names and version numbers 
+of the Plug-ins
+      and/or Fragments associated with that Feature.</li>
+       <li>Features may also include other Features ("Included 
+Features"). Within a Feature, files named "feature.xml" may contain a 
+list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be 
+contained in files named "about.html" ("Abouts"). The terms and 
+conditions governing Features and
+Included Features should be contained in files named "license.html" 
+("Feature Licenses").  Abouts and Feature Licenses may be located in any
+ directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named "src" of certain Plug-ins</li>
+       <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is 
+installed using the Provisioning Technology (as defined below), you must
+ agree to a license ("Feature Update License") during the
+installation process.  If the Feature contains Included Features, the 
+Feature Update License should either provide you with the terms and 
+conditions governing the Included Features or
+inform you where you can locate them.  Feature Update Licenses may be 
+found in the "license" property of files named "feature.properties" 
+found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the 
+terms and conditions (or references to such terms and conditions) that 
+govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER 
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.
+  SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND 
+CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, 
+or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions 
+govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, 
+examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager ("Provisioning Technology") for the purpose of 
+allowing users to install software, documentation, information and/or
+   other materials (collectively "Installable Software"). This 
+capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about 
+packaging Installable Software is available at <a href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   ("Specification").</p>
+
+<p>You may use Provisioning Technology to allow other parties to install
+ Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to
+ be presented to, and accepted by, the users of the Provisioning 
+Technology
+   in accordance with the Specification. By using Provisioning 
+Technology in such a manner and making it available in accordance with 
+the
+   Specification, you further acknowledge your agreement to, and the 
+acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur ("Provisioning Process") in 
+which a user may execute the Provisioning Technology
+       on a machine ("Target Machine") with the intent of installing, 
+extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology 
+may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user 
+the terms and conditions that govern the use of the Installable
+       Software ("Installable Software Agreement") and such Installable 
+Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable 
+Software Agreement must inform the user of the terms and conditions that
+ govern
+       the Installable Software and must solicit acceptance by the end 
+user in the manner prescribed in such Installable Software Agreement. 
+Upon such
+       indication of agreement by the user, the provisioning Technology 
+will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are
+ currently may have restrictions on the import, possession, and use, 
+and/or re-export to
+   another country, of encryption software. BEFORE using any encryption 
+software, please check the country's laws, regulations and policies 
+concerning the import,
+   possession, or use, and re-export of encryption software, to see if 
+this is permitted.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.behaviour/plugin.xml b/org.eclipse.osbp.vaaclipse.behaviour/plugin.xml
new file mode 100644
index 0000000..a40d7f3
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.behaviour/plugin.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+   <extension
+         id="AddonSnippet"
+         name="Addon Snippet"
+         point="org.eclipse.e4.workbench.model">
+      <processor
+            beforefragment="true"
+            class="org.eclipse.osbp.vaaclipse.behaviour.MinMaxProcessor">
+      </processor>
+      <processor
+            beforefragment="true"
+            class="org.eclipse.osbp.vaaclipse.behaviour.cleanup.CleanupProcessor">
+      </processor>
+      <processor
+            beforefragment="true"
+            class="org.eclipse.osbp.vaaclipse.behaviour.idgenerator.ElementIdGeneratorProcessor">
+      </processor>
+      <processor
+            beforefragment="true"
+            class="org.eclipse.osbp.vaaclipse.behaviour.BehaviourProcessor">
+      </processor>
+   </extension>
+</plugin>
diff --git a/org.eclipse.osbp.vaaclipse.behaviour/pom.xml b/org.eclipse.osbp.vaaclipse.behaviour/pom.xml
new file mode 100644
index 0000000..f7b227f
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.behaviour/pom.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <artifactId>org.eclipse.osbp.vaaclipse.behaviour</artifactId>
+    <packaging>eclipse-plugin</packaging>
+    <parent>
+        <groupId>org.eclipse.osbp.vaaclipse</groupId>
+        <artifactId>org.eclipse.osbp.vaaclipse</artifactId>
+        <version>0.9.0-SNAPSHOT</version>
+        <relativePath>..</relativePath>
+    </parent>
+</project>
diff --git a/org.eclipse.osbp.vaaclipse.behaviour/src/org/eclipse/osbp/vaaclipse/behaviour/BehaviourProcessor.java b/org.eclipse.osbp.vaaclipse.behaviour/src/org/eclipse/osbp/vaaclipse/behaviour/BehaviourProcessor.java
new file mode 100644
index 0000000..6c37849
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.behaviour/src/org/eclipse/osbp/vaaclipse/behaviour/BehaviourProcessor.java
@@ -0,0 +1,43 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.behaviour;
+
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.model.application.ui.basic.MPart;
+import org.eclipse.e4.ui.model.application.ui.basic.MTrimBar;
+import org.eclipse.e4.ui.model.application.ui.menu.MToolBar;
+import org.eclipse.osbp.vaaclipse.api.Behaviour;
+
+public class BehaviourProcessor implements Behaviour {
+	@Execute
+	void execute(IEclipseContext context) {
+
+		context.set(Behaviour.class, this);
+	}
+
+	@Override
+	public MTrimBar getTrimBarForMinimizedElement(MUIElement minimizedElement) {
+		throw new RuntimeException("Not implemented yet");
+	}
+
+	@Override
+	public MToolBar getToolBarForMinimizedElement(MUIElement minimizedElement) {
+		throw new RuntimeException("Not implemented yet");
+	}
+
+	@Override
+	public MUIElement getMinimizedParentForPart(MPart part) {
+		throw new RuntimeException("Not implemented yet");
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.behaviour/src/org/eclipse/osbp/vaaclipse/behaviour/FastViewHandler.java b/org.eclipse.osbp.vaaclipse.behaviour/src/org/eclipse/osbp/vaaclipse/behaviour/FastViewHandler.java
new file mode 100644
index 0000000..5a55eee
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.behaviour/src/org/eclipse/osbp/vaaclipse/behaviour/FastViewHandler.java
@@ -0,0 +1,42 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.behaviour;
+
+import java.util.List;
+
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.ui.model.application.MAddon;
+import org.eclipse.e4.ui.model.application.MApplication;
+import org.eclipse.e4.ui.model.application.ui.basic.MPart;
+import org.eclipse.e4.ui.model.application.ui.menu.MItem;
+import org.eclipse.e4.ui.workbench.modeling.EModelService;
+import org.eclipse.e4.ui.workbench.modeling.EPartService;
+
+@SuppressWarnings("restriction")
+public class FastViewHandler {
+	@Execute
+	public void showFastView(MItem item, EModelService modelService,
+			EPartService partService, MApplication application) {
+
+		List<MAddon> addons = application.getAddons();
+		for (MAddon addon : addons) {
+			if (addon.getContributionURI().equals(
+					MinMaxProcessor.MIN_MAX_CONTRIBUTION_URI)) {
+				if (addon.getObject() instanceof MinMaxAddon) {
+					MinMaxAddon minMaxAddon = (MinMaxAddon) addon.getObject();
+					MPart part = minMaxAddon.item2Element.get(item);
+					partService.activate(part);
+				}
+			}
+		}
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.behaviour/src/org/eclipse/osbp/vaaclipse/behaviour/HierarchyUtils.java b/org.eclipse.osbp.vaaclipse.behaviour/src/org/eclipse/osbp/vaaclipse/behaviour/HierarchyUtils.java
new file mode 100644
index 0000000..9c94cff
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.behaviour/src/org/eclipse/osbp/vaaclipse/behaviour/HierarchyUtils.java
@@ -0,0 +1,153 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.behaviour;
+
+import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.model.application.ui.SideValue;
+import org.eclipse.e4.ui.model.application.ui.basic.MPartSashContainer;
+import org.eclipse.e4.ui.model.application.ui.basic.MPartStack;
+import org.eclipse.e4.ui.model.application.ui.basic.MWindow;
+
+/**
+ * @author rushan
+ *
+ */
+class HierarchyUtils {
+	private static class TabSheetMatchPredicate implements Predicate {
+		MUIElement tabSheet;
+
+		public TabSheetMatchPredicate(MUIElement tabSheet) {
+			this.tabSheet = tabSheet;
+		}
+
+		public boolean predicate(MUIElement component) {
+			return component == tabSheet;
+		}
+	}
+
+	private static class HorizontalSplitPaneMatchPredicate implements Predicate {
+		MUIElement tabSheet;
+
+		public HorizontalSplitPaneMatchPredicate(MUIElement tabSheet) {
+			this.tabSheet = tabSheet;
+		}
+
+		public boolean predicate(MUIElement component) {
+			return component == tabSheet
+					|| (component instanceof MPartSashContainer && ((MPartSashContainer) component)
+							.isHorizontal());
+		}
+	}
+
+	private static class VerticalSplitPaneMatchPredicate implements Predicate {
+		MUIElement tabSheet;
+
+		public VerticalSplitPaneMatchPredicate(MUIElement tabSheet) {
+			this.tabSheet = tabSheet;
+		}
+
+		public boolean predicate(MUIElement component) {
+			return component == tabSheet
+					|| (component instanceof MPartSashContainer && !((MPartSashContainer) component)
+							.isHorizontal());
+		}
+	}
+
+	public static SideValue findNearestSide(MWindow pageComponent,
+			MUIElement component) {
+		if (pageComponent.getChildren().isEmpty()
+				|| !(pageComponent.getChildren().get(0) instanceof MElementContainer<?>))
+			return SideValue.LEFT;
+
+		MElementContainer<?> rootComponent = (MElementContainer<?>) pageComponent
+				.getChildren().get(0);
+		if (rootComponent instanceof MPartSashContainer
+				&& ((MPartSashContainer) rootComponent).isHorizontal()) {
+			MPartSashContainer hsp = (MPartSashContainer) rootComponent;
+			if (findInTree(hsp.getChildren().get(0),
+					new TabSheetMatchPredicate(component)) != null)
+				return SideValue.LEFT;
+			else {
+				MUIElement comp = findInTree(hsp.getChildren().get(1),
+						new VerticalSplitPaneMatchPredicate(component));
+				if (comp instanceof MPartStack)
+					return SideValue.RIGHT;
+				else if (comp instanceof MPartSashContainer
+						&& !((MPartSashContainer) comp).isHorizontal()) {
+					if (findInTree(((MPartSashContainer) comp).getChildren()
+							.get(0), new TabSheetMatchPredicate(component)) != null)
+						return SideValue.RIGHT;
+					else if (findInTree(((MPartSashContainer) comp)
+							.getChildren().get(1), new TabSheetMatchPredicate(
+							component)) != null)
+						return SideValue.BOTTOM;
+				}
+			}
+		} else if (rootComponent instanceof MPartSashContainer
+				&& !((MPartSashContainer) rootComponent).isHorizontal()) {
+			MPartSashContainer vsp = (MPartSashContainer) rootComponent;
+			if (findInTree(vsp.getChildren().get(1),
+					new TabSheetMatchPredicate(component)) != null) {
+				return SideValue.BOTTOM;
+			} else {
+				MUIElement comp = findInTree(vsp.getChildren().get(0),
+						new HorizontalSplitPaneMatchPredicate(component));
+				if (comp instanceof MPartStack)
+					return SideValue.RIGHT;
+				else if (comp instanceof MPartSashContainer
+						&& ((MPartSashContainer) comp).isHorizontal()) {
+					if (findInTree(((MPartSashContainer) comp).getChildren()
+							.get(0), new TabSheetMatchPredicate(component)) != null)
+						return SideValue.LEFT;
+					else if (findInTree(((MPartSashContainer) comp)
+							.getChildren().get(1), new TabSheetMatchPredicate(
+							component)) != null)
+						return SideValue.RIGHT;
+				}
+			}
+		} else if (rootComponent == component)
+			return SideValue.RIGHT;
+
+		return null;
+	}
+
+	private static MUIElement findInTree(MUIElement parent, Predicate predicate) {
+		if (parent instanceof MPartSashContainer) {
+			if (predicate.predicate(parent))
+				return parent;
+			else {
+				MPartSashContainer splitPanel = (MPartSashContainer) parent;
+				MUIElement findedComponent = findInTree(
+						(MElementContainer<MUIElement>) splitPanel
+								.getChildren().get(0), predicate);
+				if (findedComponent != null)
+					return findedComponent;
+				else
+					return findInTree(
+							(MElementContainer<MUIElement>) splitPanel
+									.getChildren().get(1), predicate);
+			}
+		} else if (parent instanceof MElementContainer<?>) {
+			if (predicate.predicate(parent))
+				return parent;
+			else
+				return null;
+		}
+
+		return null;
+	}
+
+	private static interface Predicate {
+		boolean predicate(MUIElement component);
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.behaviour/src/org/eclipse/osbp/vaaclipse/behaviour/MinMaxAddon.java b/org.eclipse.osbp.vaaclipse.behaviour/src/org/eclipse/osbp/vaaclipse/behaviour/MinMaxAddon.java
new file mode 100644
index 0000000..3632a09
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.behaviour/src/org/eclipse/osbp/vaaclipse/behaviour/MinMaxAddon.java
@@ -0,0 +1,749 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 2012 Kai Toedter, Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ * 	   Kai Toedter - initial API and implementation
+ *     Rushan R. Gilmullin -  completion
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.behaviour;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.UUID;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.inject.Inject;
+
+import org.eclipse.e4.core.commands.EHandlerService;
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.core.services.events.IEventBroker;
+import org.eclipse.e4.ui.model.application.MApplication;
+import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.model.application.ui.MUILabel;
+import org.eclipse.e4.ui.model.application.ui.SideValue;
+import org.eclipse.e4.ui.model.application.ui.advanced.MPerspective;
+import org.eclipse.e4.ui.model.application.ui.advanced.MPerspectiveStack;
+import org.eclipse.e4.ui.model.application.ui.advanced.MPlaceholder;
+import org.eclipse.e4.ui.model.application.ui.basic.MPart;
+import org.eclipse.e4.ui.model.application.ui.basic.MPartSashContainer;
+import org.eclipse.e4.ui.model.application.ui.basic.MPartSashContainerElement;
+import org.eclipse.e4.ui.model.application.ui.basic.MPartStack;
+import org.eclipse.e4.ui.model.application.ui.basic.MTrimBar;
+import org.eclipse.e4.ui.model.application.ui.basic.MTrimElement;
+import org.eclipse.e4.ui.model.application.ui.basic.MTrimmedWindow;
+import org.eclipse.e4.ui.model.application.ui.basic.MWindow;
+import org.eclipse.e4.ui.model.application.ui.menu.MDirectToolItem;
+import org.eclipse.e4.ui.model.application.ui.menu.MToolBar;
+import org.eclipse.e4.ui.model.application.ui.menu.MToolItem;
+import org.eclipse.e4.ui.model.application.ui.menu.impl.MenuFactoryImpl;
+import org.eclipse.e4.ui.workbench.IPresentationEngine;
+import org.eclipse.e4.ui.workbench.UIEvents;
+import org.eclipse.e4.ui.workbench.UIEvents.EventTags;
+import org.eclipse.e4.ui.workbench.modeling.EModelService;
+import org.eclipse.e4.ui.workbench.modeling.EPartService;
+import org.osgi.service.event.Event;
+import org.osgi.service.event.EventHandler;
+import org.eclipse.osbp.commons.geom.Bounds;
+import org.eclipse.osbp.vaaclipse.api.Events;
+import org.eclipse.osbp.vaaclipse.api.WidgetInfo;
+import org.eclipse.osbp.vaaclipse.presentation.engine.PresentationEngine;
+import org.eclipse.osbp.vaaclipse.presentation.renderers.GenericRenderer;
+
+@SuppressWarnings("restriction")
+public class MinMaxAddon {
+	public static final String ADDONS_MINMAX_TRIM_STACK_ID = "org.eclipse.osbp.vaaclipse.behaviour.trimStackId";
+
+	static final String ID_SUFFIX = "(minimized)"; //$NON-NLS-1$
+
+	// tags representing the min/max state
+	public static final String MINIMIZED = IPresentationEngine.MINIMIZED;
+	public static final String MAXIMIZED = IPresentationEngine.MAXIMIZED;
+	public static final String MINIMIZED_BY_ZOOM = IPresentationEngine.MINIMIZED_BY_ZOOM;
+
+	private final IEventBroker eventBroker;
+	private final EModelService modelService;
+	protected boolean ignoreTagChanges;
+
+	@Inject
+	private IEclipseContext context;
+
+	@Inject
+	EPartService partService;
+
+	@Inject
+	private EHandlerService handlerService;
+
+	@Inject
+	private WidgetInfo widgetInfo;
+
+	private Map<MToolBar, MPerspective> barPerspectiveInfo = new HashMap<MToolBar, MPerspective>();
+	private Set<MUIElement> minimizedElements = new HashSet<MUIElement>();
+
+	// TODO: dispose elements of this map
+	public Map<MToolItem, MPart> item2Element = new HashMap<MToolItem, MPart>();
+	public Map<MPart, MUIElement> part2element = new HashMap<MPart, MUIElement>();
+
+	@Inject
+	public MinMaxAddon(IEventBroker eventBroker, EModelService modelService,
+			MApplication application) {
+		this.eventBroker = eventBroker;
+		this.modelService = modelService;
+	}
+
+	private EventHandler widgetHandler = new EventHandler() {
+		public void handleEvent(org.osgi.service.event.Event event) {
+			Object changedObj = event.getProperty(UIEvents.EventTags.ELEMENT);
+			if (!minimizedElements.contains(changedObj))
+				return;
+			MUIElement minimizedElement = (MUIElement) changedObj;
+			if (minimizedElement.getWidget() != null) {
+				MToolBar toolBar = getToolBarForMinimizedElement(minimizedElement);
+				updateToolBar(minimizedElement, toolBar);
+			}
+		}
+	};
+
+	private EventHandler toBeRenderedHandler = new EventHandler() {
+		public void handleEvent(org.osgi.service.event.Event event) {
+			MUIElement changedElement = (MUIElement) event
+					.getProperty(UIEvents.EventTags.ELEMENT);
+
+			// if one of the kids changes state, re-scrape the CTF
+			MUIElement parentElement = changedElement.getParent();
+			if (minimizedElements.contains(parentElement)) {
+				updateToolBar(parentElement,
+						getToolBarForMinimizedElement(parentElement));
+			}
+		}
+	};
+
+	private EventHandler childrenHandler = new EventHandler() {
+		public void handleEvent(org.osgi.service.event.Event event) {
+			Object changedObj = event.getProperty(UIEvents.EventTags.ELEMENT);
+
+			// if a child has been added or removed, re-scape the CTF
+			if (minimizedElements.contains(changedObj)) {
+				updateToolBar((MUIElement) changedObj,
+						getToolBarForMinimizedElement((MUIElement) changedObj));
+			}
+		}
+	};
+
+	@PostConstruct
+	void postConstruct() {
+		eventBroker.subscribe(UIEvents.ApplicationElement.TOPIC_TAGS,
+				tagListener);
+		eventBroker.subscribe(UIEvents.ElementContainer.TOPIC_SELECTEDELEMENT,
+				selectPerspectiveHandler);
+		eventBroker.subscribe(UIEvents.UIElement.TOPIC_VISIBLE,
+				visibilityHandler);
+		eventBroker.subscribe(UIEvents.UIElement.TOPIC_WIDGET, widgetHandler);
+		eventBroker.subscribe(UIEvents.ElementContainer.TOPIC_CHILDREN,
+				childrenHandler);
+		eventBroker.subscribe(UIEvents.UIElement.TOPIC_TOBERENDERED,
+				toBeRenderedHandler);
+
+		// context.set(Behaviour.class, this);
+	}
+
+	@PreDestroy
+	void preDestroy() {
+		eventBroker.unsubscribe(tagListener);
+		eventBroker.unsubscribe(selectPerspectiveHandler);
+		eventBroker.unsubscribe(visibilityHandler);
+		eventBroker.unsubscribe(widgetHandler);
+		eventBroker.unsubscribe(childrenHandler);
+		eventBroker.unsubscribe(toBeRenderedHandler);
+	}
+
+	private final EventHandler tagListener = new EventHandler() {
+		@Override
+		public void handleEvent(Event event) {
+			if (ignoreTagChanges) {
+				return;
+			}
+
+			Object changedObj = event.getProperty(EventTags.ELEMENT);
+			String eventType = (String) event
+					.getProperty(UIEvents.EventTags.TYPE);
+			String tag = (String) event
+					.getProperty(UIEvents.EventTags.NEW_VALUE);
+			String oldVal = (String) event
+					.getProperty(UIEvents.EventTags.OLD_VALUE);
+
+			if (!(changedObj instanceof MUIElement)) {
+				return;
+			}
+
+			final MUIElement changedElement = (MUIElement) changedObj;
+
+			if (UIEvents.EventTypes.ADD.equals(eventType)) {
+				if (MINIMIZED.equals(tag)) {
+					minimize(changedElement);
+				} else if (MAXIMIZED.equals(tag)) {
+					maximize(changedElement);
+				}
+			} else if (UIEvents.EventTypes.REMOVE.equals(eventType)) {
+				if (MINIMIZED.equals(oldVal)) {
+					restore(changedElement);
+				} else if (MAXIMIZED.equals(oldVal)) {
+					unzoom(changedElement);
+				}
+			}
+		}
+	};
+
+	private EventHandler selectPerspectiveHandler = new EventHandler() {
+		public void handleEvent(Event event) {
+			Object element = event.getProperty(UIEvents.EventTags.ELEMENT);
+
+			if (!(element instanceof MPerspectiveStack))
+				return;
+
+			MPerspectiveStack stack = (MPerspectiveStack) element;
+
+			// Gather up the elements that are being 'hidden' by this change
+			MUIElement oldSel = (MUIElement) event
+					.getProperty(UIEvents.EventTags.OLD_VALUE);
+
+			if (oldSel != null) {
+				for (Map.Entry<MToolBar, MPerspective> entry : barPerspectiveInfo
+						.entrySet()) {
+					if (oldSel == entry.getValue()) {
+						MToolBar toolBar = entry.getKey();
+						if (toolBar.isVisible()) {
+							toolBar.setVisible(false);
+						}
+					}
+				}
+			}
+
+			if (stack.getSelectedElement() != null) {
+				for (Map.Entry<MToolBar, MPerspective> entry : barPerspectiveInfo
+						.entrySet()) {
+					if (stack.getSelectedElement() == entry.getValue()) {
+						MToolBar toolBar = entry.getKey();
+						if (!toolBar.isVisible()) {
+							toolBar.setVisible(true);
+							MTrimBar parentTrimBar = (MTrimBar) (MElementContainer<?>) toolBar
+									.getParent();
+							if (!parentTrimBar.isVisible())
+								parentTrimBar.setVisible(true);
+						}
+					}
+				}
+			}
+		}
+	};
+
+	private final EventHandler visibilityHandler = new EventHandler() {
+		@Override
+		public void handleEvent(Event event) {
+			MUIElement changedElement = (MUIElement) event
+					.getProperty(UIEvents.EventTags.ELEMENT);
+
+			if (changedElement instanceof MTrimElement) {
+				MTrimBar parentTrimBar = (MTrimBar) (MElementContainer<?>) changedElement
+						.getParent();
+				if (!parentTrimBar.isVisible())
+					return;
+
+				boolean hasVisibleChilds = false;
+				for (MTrimElement trimElelement : parentTrimBar.getChildren()) {
+					if (trimElelement.isVisible()) {
+						hasVisibleChilds = true;
+						break;
+					}
+				}
+
+				if (!hasVisibleChilds)
+					parentTrimBar.setVisible(false);
+			}
+		}
+	};
+
+	protected void minimize(MUIElement element) {
+		if (!element.isToBeRendered()) {
+			return;
+		}
+		MToolBar toolBar = createTrim(element);
+		element.setVisible(false);
+		minimizedElements.add(element);
+		// Activate a part other than the trimStack so that if the tool item is
+		// pressed
+		// immediately it will still open the stack.
+		partService.requestActivation();
+
+		// send the minimize event
+		Map<String, Object> parameters = new HashMap<String, Object>();
+		parameters.put(Events.MinMaxEvents.PARAMETER_ELEMENT, element);
+		parameters.put(Events.MinMaxEvents.PARAMETER_TOOLBAR, toolBar);
+		parameters.put(Events.MinMaxEvents.PARAMETER_TRIMBAR,
+				toolBar.getParent());
+		eventBroker
+				.send(Events.MinMaxEvents.EVENT_MINIMIZE_ELEMENT, parameters);
+	}
+
+	protected void unzoom(MUIElement element) {
+		MWindow win = modelService.getTopLevelWindowFor(element);
+
+		List<MPartStack> stacks = modelService.findElements(win, null,
+				MPartStack.class, null, EModelService.PRESENTATION);
+		for (MPartStack theStack : stacks) {
+			if (theStack.getWidget() != null
+					&& theStack.getTags().contains(MINIMIZED)
+					&& theStack.getTags().contains(MINIMIZED_BY_ZOOM)) {
+				theStack.getTags().remove(MINIMIZED);
+			}
+		}
+
+		List<MPlaceholder> placeholders = modelService.findElements(win, null,
+				MPlaceholder.class, null, EModelService.PRESENTATION);
+		for (MPlaceholder ph : placeholders) {
+			if (ph.getWidget() != null && ph.getTags().contains(MINIMIZED)
+					&& ph.getTags().contains(MINIMIZED_BY_ZOOM)) {
+				ph.getTags().remove(MINIMIZED);
+			}
+		}
+	}
+
+	public void resetWindows(MUIElement element) {
+		ignoreTagChanges = true;
+		MWindow window = modelService.getTopLevelWindowFor(element);
+
+		List<MPartStack> stacks = modelService.findElements(window, null,
+				MPartStack.class, null, EModelService.PRESENTATION);
+		for (MPartStack partStack : stacks) {
+			if (partStack.getWidget() != null) {
+				if (partStack.getTags().contains(MINIMIZED)) {
+					partStack.getTags().remove(MINIMIZED);
+				}
+				if (partStack.getTags().contains(MAXIMIZED)) {
+					partStack.getTags().remove(MAXIMIZED);
+				}
+				if (partStack.getTags().contains(MINIMIZED_BY_ZOOM)) {
+					partStack.getTags().remove(MINIMIZED_BY_ZOOM);
+				}
+			}
+			partStack.setVisible(true);
+		}
+		ignoreTagChanges = false;
+
+		if (window instanceof MTrimmedWindow) {
+			MTrimmedWindow trimmedWindow = (MTrimmedWindow) window;
+			List<MTrimBar> trimBars = trimmedWindow.getTrimBars();
+			for (MTrimBar trimBar : trimBars) {
+				if (trimBar.getSide() == SideValue.LEFT
+						|| trimBar.getSide() == SideValue.RIGHT) {
+					trimBar.getChildren().clear();
+					trimBar.setVisible(false);
+				}
+			}
+		}
+	}
+
+	protected void restore(MUIElement element) {
+
+		// if the element is minimized, then the widget of this element maybe
+		// (but not fact) detached from its real parent
+		// and attached to popup window and the widget's visible property is
+		// true. We must undo this changes
+		// before start the restore operation
+		Object currentParent = widgetInfo.getParent(element.getWidget());
+		Object realParent = element.getParent().getWidget();
+		if (currentParent != realParent) // if the current parent is not equal
+											// (or null) the real parent,
+		{// then reattach the widget to real parent
+			((GenericRenderer) element.getParent().getRenderer())
+					.processContents(element.getParent());
+		}
+
+		element.getTags().remove(MINIMIZED_BY_ZOOM);
+		element.getTags().remove(MINIMIZED);
+		element.setVisible(true);
+		minimizedElements.remove(element);
+
+		MTrimBar trimBar = getTrimBarForMinimizedElement(element);
+		MToolBar toolBar = getToolBarForMinimizedElement(element);
+
+		if (trimBar != null || toolBar != null) {
+
+			barPerspectiveInfo.remove(toolBar);
+
+			toolBar.setToBeRendered(false);
+			trimBar.getChildren().remove(toolBar);
+			if (trimBar.getChildren().size() == 0) {
+				trimBar.setVisible(false);
+			}
+		}
+
+		Map<String, Object> parameters = new HashMap<String, Object>();
+		parameters.put(Events.MinMaxEvents.PARAMETER_ELEMENT, element);
+		eventBroker.send(Events.MinMaxEvents.EVENT_RESTORE_ELEMENT, parameters);
+	}
+
+	protected void maximize(MUIElement element) {
+		if (!element.isToBeRendered()) {
+			return;
+		}
+
+		MWindow mWindow = getWindowFor(element);
+		MPerspective persp = modelService.getActivePerspective(mWindow);
+
+		List<String> maxTag = new ArrayList<String>();
+		maxTag.add(MAXIMIZED);
+		List<MUIElement> curMax = modelService
+				.findElements(persp == null ? mWindow : persp, null,
+						MUIElement.class, maxTag);
+		if (curMax.size() > 0) {
+			for (MUIElement maxElement : curMax) {
+				if (maxElement == element) {
+					continue;
+				}
+				ignoreTagChanges = true;
+				try {
+					maxElement.getTags().remove(MAXIMIZED);
+				} finally {
+					ignoreTagChanges = false;
+				}
+			}
+		}
+
+		// Stacks
+		List<MPartStack> stacks = modelService.findElements(
+				persp == null ? mWindow : persp, null, MPartStack.class, null,
+				EModelService.PRESENTATION);
+		for (MPartStack theStack : stacks) {
+			if (theStack == element || !theStack.isToBeRendered()) {
+				continue;
+			}
+
+			// Exclude stacks in DW's
+			// if (getWindowFor(theStack) != mWindow) {
+			// continue;
+			// }
+
+			int location = modelService.getElementLocation(theStack);
+			if (location != EModelService.IN_SHARED_AREA
+					&& theStack.getWidget() != null
+					&& !theStack.getTags().contains(MINIMIZED)) {
+				theStack.getTags().add(MINIMIZED_BY_ZOOM);
+				theStack.getTags().add(MINIMIZED);
+			}
+		}
+
+		// Placeholders
+		List<MPlaceholder> placeholders = modelService.findElements(
+				persp == null ? mWindow : persp, null, MPlaceholder.class,
+				null, EModelService.PRESENTATION);
+		for (MPlaceholder thePlaceholder : placeholders) {
+			if (thePlaceholder == element
+					|| !thePlaceholder.isToBeRendered()
+					|| !(thePlaceholder.getRef() instanceof MElementContainer<?>)) {
+				continue;
+			}
+
+			// Exclude stacks in DW's
+			// if (getWindowFor(thePlaceholder) != mWindow) {
+			// continue;
+			// }
+
+			int location = modelService.getElementLocation(thePlaceholder);
+			if (location != EModelService.IN_SHARED_AREA
+					&& thePlaceholder.getWidget() != null
+					&& !thePlaceholder.getTags().contains(MINIMIZED)) {
+				thePlaceholder.getTags().add(MINIMIZED_BY_ZOOM);
+				thePlaceholder.getTags().add(MINIMIZED);
+			}
+		}
+	}
+
+	private MWindow getWindowFor(MUIElement element) {
+		MUIElement parent = element.getParent();
+
+		// We rely here on the fact that a DW's 'getParent' will return
+		// null since it's not in the 'children' hierarchy
+		while (parent != null && !(parent instanceof MWindow)) {
+			parent = parent.getParent();
+		}
+
+		// A detached window will end up with getParent() == null
+		return (MWindow) parent;
+	}
+
+	private MToolBar createTrim(MUIElement element) {
+		MTrimmedWindow window = (MTrimmedWindow) getWindowFor(element);
+		MPerspective activePerspective = modelService
+				.getActivePerspective(window);
+
+		if (element.getElementId() == null)
+			element.setElementId(UUID.randomUUID().toString());
+
+		// Is there already a TrimControl there ?
+		String trimId = element.getElementId()
+				+ getMinimizedElementSuffix(element);
+		MToolBar toolBar = (MToolBar) modelService.find(trimId, window);
+
+		if (toolBar == null) {
+			toolBar = MenuFactoryImpl.eINSTANCE.createToolBar();
+			toolBar.setElementId(trimId);
+
+			// Check if we have a cached location
+			MTrimBar bar = getBarForElement(element, window);
+			bar.getChildren().add(toolBar);
+			bar.setVisible(true);
+
+			// get the parent trim bar, see bug 320756
+			PresentationEngine presentationEngine = (PresentationEngine) context
+					.get(IPresentationEngine.class);
+
+			updateToolBar(element, toolBar);
+
+			if (bar.getWidget() == null) {
+				// ask it to be rendered
+				bar.setToBeRendered(true);
+
+				// create the widget
+				presentationEngine.createGui(bar);
+			} else {
+				toolBar.setToBeRendered(true);
+				presentationEngine.createGui(toolBar);
+			}
+		} else {
+			// get the parent trim bar, see bug 320756
+			MUIElement parent = toolBar.getParent();
+			parent.setVisible(true);
+			if (parent.getWidget() == null) {
+				// ask it to be rendered
+				parent.setToBeRendered(true);
+				// create the widget
+				PresentationEngine presentationEngine = (PresentationEngine) context
+						.get(IPresentationEngine.class);
+				presentationEngine.createGui(parent);
+			}
+
+			updateToolBar(element, toolBar);
+
+			toolBar.setToBeRendered(true);
+		}
+
+		barPerspectiveInfo.put(toolBar, activePerspective);
+		return toolBar;
+	}
+
+	private void updateToolBar(MUIElement element, MToolBar toolBar) {
+		toolBar.getChildren().clear();
+
+		MDirectToolItem toolItem = MenuFactoryImpl.eINSTANCE
+				.createDirectToolItem();
+		toolItem.setIconURI("platform:/plugin/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/restore1.png");
+		toolItem.setContributionURI("bundleclass://org.eclipse.osbp.vaaclipse.behaviour/org.eclipse.osbp.vaaclipse.behaviour.RestoreHandler");
+		// toolItem.getTransientData().put("minimizedStack", element);
+		toolItem.setContainerData(element.getElementId());
+		toolBar.getChildren().add(toolItem);
+
+		if (element instanceof MPlaceholder) {
+			MDirectToolItem partItem = MenuFactoryImpl.eINSTANCE
+					.createDirectToolItem();
+			partItem.setElementId(UUID.randomUUID().toString());
+			partItem.setContributionURI("bundleclass://org.eclipse.osbp.vaaclipse.behaviour/org.eclipse.osbp.vaaclipse.behaviour.FastViewHandler");
+
+			MUILabel labelElement = getLabelElement(element);
+			if (labelElement != null) {
+				if (labelElement.getIconURI() != null
+						&& labelElement.getIconURI().trim().length() > 0)
+					partItem.setIconURI(labelElement.getIconURI());
+				else
+					partItem.setIconURI("platform:/plugin/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/editor_area.png");
+				toolBar.getChildren().add(partItem);
+				MPart part = getLeafPart(element);
+				item2Element.put(partItem, part);
+				part2element.put(part, element);
+			}
+		} else {
+			@SuppressWarnings("unchecked")
+			MElementContainer<MUIElement> partStack = (MElementContainer<MUIElement>) element;
+			for (MUIElement stackElement : partStack.getChildren()) {
+				if (!stackElement.isToBeRendered()) {
+					continue;
+				}
+
+				MUIElement el = stackElement instanceof MPlaceholder ? ((MPlaceholder) stackElement)
+						.getRef() : stackElement;
+				if (el instanceof MPart) {
+					MDirectToolItem partItem = MenuFactoryImpl.eINSTANCE
+							.createDirectToolItem();
+					partItem.setContributionURI("bundleclass://org.eclipse.osbp.vaaclipse.behaviour/org.eclipse.osbp.vaaclipse.behaviour.FastViewHandler");
+
+					MUILabel labelElement = getLabelElement(stackElement);
+					String iconURI = labelElement.getIconURI();
+					if (iconURI == null || iconURI.trim().isEmpty())
+						iconURI = "platform:/plugin/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/blank_part_label.png";
+					partItem.setIconURI(iconURI);
+					toolBar.getChildren().add(partItem);
+
+					item2Element.put(partItem, (MPart) el);
+					part2element.put((MPart) el, element);
+				}
+			}
+		}
+	}
+
+	private MPart getLeafPart(MUIElement element) {
+		if (element instanceof MPlaceholder)
+			return getLeafPart(((MPlaceholder) element).getRef());
+
+		if (element instanceof MElementContainer<?>)
+			return getLeafPart(((MElementContainer<?>) element)
+					.getSelectedElement());
+
+		if (element instanceof MPart)
+			return (MPart) element;
+
+		return null;
+	}
+
+	private MUILabel getLabelElement(MUIElement element) {
+		if (element instanceof MPlaceholder) {
+			element = ((MPlaceholder) element).getRef();
+		}
+
+		return (MUILabel) (element instanceof MUILabel ? element : null);
+	}
+
+	private MTrimBar getBarForElement(MUIElement element, MTrimmedWindow window) {
+		SideValue side = SideValue.LEFT;
+
+		// SideValue side = getCachedBar(element);
+		// if (side == null) {
+
+		Bounds winBounds = new Bounds(0, 0, 1000, 1000);
+		double winCenterX = winBounds.w / 2;
+		Bounds stackBounds = calculateBounds(element, window, winBounds);
+		if (stackBounds != null) {
+			double stackCenterX = stackBounds.x + (stackBounds.w / 2);
+			side = stackCenterX < winCenterX ? SideValue.LEFT : SideValue.RIGHT;
+		}
+		// }
+
+		MTrimBar bar = modelService.getTrim(window, side);
+		return bar;
+	}
+
+	private String getMinimizedElementSuffix(MUIElement element) {
+		String id = ID_SUFFIX;
+		MPerspective persp = modelService.getPerspectiveFor(element);
+		if (persp != null) {
+			id = '(' + persp.getElementId() + ')';
+		}
+		return id;
+	}
+
+	// @Override
+	public MTrimBar getTrimBarForMinimizedElement(MUIElement element) {
+		MToolBar toolBar = getToolBarForMinimizedElement(element);
+		return (MTrimBar) (MElementContainer<?>) toolBar.getParent();
+	}
+
+	// @Override
+	public MToolBar getToolBarForMinimizedElement(MUIElement element) {
+		MTrimmedWindow window = (MTrimmedWindow) getWindowFor(element);
+		String trimId = element.getElementId()
+				+ getMinimizedElementSuffix(element);
+		return (MToolBar) modelService.find(trimId, window);
+	}
+
+	// @Override
+	public MUIElement getMinimizedParentForPart(MPart part) {
+		return part2element.get(part);
+	}
+
+	private double parseContainerData(String containerData) {
+		if (containerData == null)
+			return 0.0d;
+
+		containerData = containerData.trim();
+
+		try {
+			return Double.parseDouble(containerData);
+		} catch (NumberFormatException e) {
+			return 0.0d;
+		}
+	}
+
+	private Bounds calculateBounds(MUIElement element, MUIElement container,
+			Bounds currentBounds) {
+		if (container == element) {
+			return currentBounds;
+		} else if (container instanceof MPartSashContainer) {
+			MPartSashContainer sash = (MPartSashContainer) container;
+
+			Map<MPartSashContainerElement, Double> weights = new HashMap<MPartSashContainerElement, Double>();
+			double total_weight = 0;
+			for (MPartSashContainerElement children : sash.getChildren()) {
+				if (children.isToBeRendered() && children.isVisible()
+						&& children.getWidget() != null /*
+														 * element can be
+														 * renderable but has no
+														 * widget when removeGui
+														 * called for element
+														 */) {
+					String data = children.getContainerData();
+					double weight = parseContainerData(data);
+
+					weights.put(children, weight);
+					total_weight += weight;
+				}
+			}
+
+			if (total_weight == 0.0) // all child elements has zero weight
+				total_weight = 1.0;
+
+			double sumWeightPrcnt = 0;
+			for (MPartSashContainerElement children : sash.getChildren()) {
+				Double w = weights.get(children);
+				if (w != null) {
+					double wPrcnt = w / total_weight;
+					Bounds newBounds;
+					if (sash.isHorizontal()) {
+						newBounds = new Bounds(currentBounds.x
+								+ currentBounds.w * sumWeightPrcnt,
+								currentBounds.y, currentBounds.w * wPrcnt,
+								currentBounds.h);
+					} else {
+						newBounds = new Bounds(currentBounds.x, currentBounds.y
+								+ currentBounds.h * sumWeightPrcnt,
+								currentBounds.w, currentBounds.h * wPrcnt);
+					}
+					sumWeightPrcnt += wPrcnt;
+
+					Bounds bounds = calculateBounds(element, children,
+							newBounds);
+					if (bounds != null)
+						return bounds;
+				}
+			}
+		} else if (container instanceof MElementContainer<?>) {
+			MElementContainer<MUIElement> _container = (MElementContainer<MUIElement>) container;
+			for (MUIElement child : _container.getChildren()) {
+				Bounds bounds = calculateBounds(element, child, currentBounds);
+				if (bounds != null)
+					return bounds;
+			}
+		}
+
+		return null;
+	}
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.behaviour/src/org/eclipse/osbp/vaaclipse/behaviour/MinMaxProcessor.java b/org.eclipse.osbp.vaaclipse.behaviour/src/org/eclipse/osbp/vaaclipse/behaviour/MinMaxProcessor.java
new file mode 100644
index 0000000..d5ec483
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.behaviour/src/org/eclipse/osbp/vaaclipse/behaviour/MinMaxProcessor.java
@@ -0,0 +1,45 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.behaviour;
+
+import java.util.List;
+
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.ui.model.application.MAddon;
+import org.eclipse.e4.ui.model.application.MApplication;
+import org.eclipse.e4.ui.model.application.impl.ApplicationFactoryImpl;
+
+@SuppressWarnings("restriction")
+public class MinMaxProcessor {
+	private static final String BUNDLE_CLASS = "bundleclass://org.eclipse.osbp.vaaclipse.behaviour";
+
+	public static final String MIN_MAX_CONTRIBUTION_URI = BUNDLE_CLASS
+			+ "/org.eclipse.osbp.vaaclipse.behaviour.MinMaxAddon";
+
+	@Execute
+	void addMinMaxAddon(MApplication application, IEclipseContext context) {
+		List<MAddon> addons = application.getAddons();
+
+		// Prevent multiple copies
+		for (MAddon addon : addons) {
+			if (addon.getContributionURI().equals(MIN_MAX_CONTRIBUTION_URI)) {
+				return;
+			}
+		}
+
+		MAddon minMaxAddon = ApplicationFactoryImpl.eINSTANCE.createAddon();
+		minMaxAddon.setElementId("MinMaxAddon");
+		minMaxAddon.setContributionURI(MIN_MAX_CONTRIBUTION_URI);
+		application.getAddons().add(minMaxAddon);
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.behaviour/src/org/eclipse/osbp/vaaclipse/behaviour/RestoreHandler.java b/org.eclipse.osbp.vaaclipse.behaviour/src/org/eclipse/osbp/vaaclipse/behaviour/RestoreHandler.java
new file mode 100644
index 0000000..31816ab
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.behaviour/src/org/eclipse/osbp/vaaclipse/behaviour/RestoreHandler.java
@@ -0,0 +1,35 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.behaviour;
+
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.ui.model.application.MApplication;
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.model.application.ui.basic.MWindow;
+import org.eclipse.e4.ui.model.application.ui.menu.MItem;
+import org.eclipse.e4.ui.workbench.IPresentationEngine;
+import org.eclipse.e4.ui.workbench.modeling.EModelService;
+
+public class RestoreHandler {
+	@Execute
+	public void restore(MItem item, EModelService modelService, MWindow window,
+			MApplication application) {
+		String stackId = item.getContainerData();
+		MUIElement element = modelService.find(stackId, window);
+		// MUIElement element = (MUIElement)
+		// item.getTransientData().get("minimizedStack");
+		if (element != null) {
+			element.getTags().remove(IPresentationEngine.MINIMIZED_BY_ZOOM);
+			element.getTags().remove(IPresentationEngine.MINIMIZED);
+		}
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.behaviour/src/org/eclipse/osbp/vaaclipse/behaviour/cleanup/CleanupAddon.java b/org.eclipse.osbp.vaaclipse.behaviour/src/org/eclipse/osbp/vaaclipse/behaviour/cleanup/CleanupAddon.java
new file mode 100644
index 0000000..cbc85f0
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.behaviour/src/org/eclipse/osbp/vaaclipse/behaviour/cleanup/CleanupAddon.java
@@ -0,0 +1,254 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.behaviour.cleanup;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.inject.Inject;
+
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.core.services.events.IEventBroker;
+import org.eclipse.e4.ui.model.application.MApplication;
+import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.model.application.ui.advanced.MArea;
+import org.eclipse.e4.ui.model.application.ui.advanced.MPerspective;
+import org.eclipse.e4.ui.model.application.ui.advanced.MPerspectiveStack;
+import org.eclipse.e4.ui.model.application.ui.basic.MPartSashContainer;
+import org.eclipse.e4.ui.model.application.ui.basic.MTrimBar;
+import org.eclipse.e4.ui.model.application.ui.basic.MWindow;
+import org.eclipse.e4.ui.model.application.ui.menu.MMenuElement;
+import org.eclipse.e4.ui.model.application.ui.menu.MToolBar;
+import org.eclipse.e4.ui.workbench.IPresentationEngine;
+import org.eclipse.e4.ui.workbench.UIEvents;
+import org.eclipse.e4.ui.workbench.modeling.EModelService;
+import org.eclipse.emf.ecore.EObject;
+import org.osgi.service.event.Event;
+import org.osgi.service.event.EventHandler;
+import org.eclipse.osbp.vaaclipse.api.VaadinExecutorService;
+
+public class CleanupAddon {
+	@Inject
+	IEventBroker eventBroker;
+
+	@Inject
+	EModelService modelService;
+
+	@Inject
+	MApplication app;
+
+	@Inject
+	VaadinExecutorService communicationManager;
+
+	private EventHandler childrenHandler = new EventHandler() {
+
+		private boolean ignoreChildrenChanges = false;
+
+		public void handleEvent(Event event) {
+
+			if (ignoreChildrenChanges)
+				return;
+
+			Object changedObj = event.getProperty(UIEvents.EventTags.ELEMENT);
+			String eventType = (String) event
+					.getProperty(UIEvents.EventTags.TYPE);
+			if (UIEvents.EventTypes.REMOVE.equals(eventType)) {
+				final MElementContainer<?> container = (MElementContainer<?>) changedObj;
+				MUIElement containerParent = container.getParent();
+
+				// Determine the elements that should *not* ever be
+				// auto-destroyed
+				if (container instanceof MApplication
+						|| container instanceof MPerspectiveStack
+						|| container instanceof MMenuElement
+						|| container instanceof MTrimBar
+						|| container instanceof MToolBar
+						|| container instanceof MArea
+						|| container.getTags().contains(
+								IPresentationEngine.NO_AUTO_COLLAPSE)) {
+					return;
+				}
+
+				if (container instanceof MWindow
+						&& containerParent instanceof MApplication) {
+					return;
+				}
+
+				// Stall the removal to handle cases where the container is only
+				// transiently empty
+
+				communicationManager.invokeLater(new Runnable() {
+
+					@Override
+					public void run() {
+						// Remove it from the display if no visible children
+						int tbrCount = modelService
+								.toBeRenderedCount(container);
+
+						// Cache the value since setting the TBR may change the
+						// result
+						boolean lastStack = isLastEditorStack(container);
+						if (tbrCount == 0 && !lastStack) {
+							container.setToBeRendered(false);
+						}
+
+						// Remove it from the model if it has no children at all
+						MElementContainer<?> lclContainer = container;
+						if (lclContainer.getChildren().size() == 0) {
+							MElementContainer<MUIElement> parent = container
+									.getParent();
+							if (parent != null && !lastStack) {
+								container.setToBeRendered(false);
+								parent.getChildren().remove(container);
+							} else if (container instanceof MWindow) {
+								// Must be a Detached Window
+								MUIElement eParent = (MUIElement) ((EObject) container)
+										.eContainer();
+								if (eParent instanceof MPerspective) {
+									((MPerspective) eParent).getWindows()
+											.remove(container);
+								} else if (eParent instanceof MWindow) {
+									((MWindow) eParent).getWindows().remove(
+											container);
+								}
+							}
+						} else if (container.getChildren().size() == 1
+								&& container instanceof MPartSashContainer) {
+							// if a sash container has only one element then
+							// remove it and move
+							// its child up to where it used to be
+							MUIElement theChild = container.getChildren()
+									.get(0);
+							MElementContainer<MUIElement> parentContainer = container
+									.getParent();
+							if (parentContainer != null) {
+								ignoreChildrenChanges = true;
+								int index = parentContainer.getChildren()
+										.indexOf(container);
+								theChild.setContainerData(container
+										.getContainerData());
+								container.getChildren().remove(theChild);
+								parentContainer.getChildren().remove(container);
+								parentContainer.getChildren().add(index,
+										theChild);
+								container.setToBeRendered(false);
+								ignoreChildrenChanges = false;
+							}
+						}
+					}
+				});
+			}
+		}
+	};
+
+	private EventHandler renderingChangeHandler = new EventHandler() {
+
+		public void handleEvent(Event event) {
+			MUIElement changedObj = (MUIElement) event
+					.getProperty(UIEvents.EventTags.ELEMENT);
+			MElementContainer<MUIElement> container = null;
+			if (changedObj.getCurSharedRef() != null)
+				container = changedObj.getCurSharedRef().getParent();
+			else
+				container = changedObj.getParent();
+
+			// this can happen for shared parts that aren't attached to any
+			// placeholders
+			if (container == null) {
+				return;
+			}
+
+			// never hide top-level windows
+			MUIElement containerElement = container;
+			if (containerElement instanceof MWindow
+					&& containerElement.getParent() != null) {
+				return;
+			}
+
+			// These elements should neither be shown nor hidden based on their
+			// containment state
+			if (isLastEditorStack(containerElement)
+					|| containerElement instanceof MPerspective
+					|| containerElement instanceof MPerspectiveStack
+					|| containerElement instanceof MTrimBar)
+				return;
+
+			Boolean toBeRendered = (Boolean) event
+					.getProperty(UIEvents.EventTags.NEW_VALUE);
+			if (toBeRendered) {
+				// Bring the container back if one of its children goes visible
+				if (!container.isToBeRendered())
+					container.setToBeRendered(true);
+			} else {
+				// Never hide the container marked as no_close
+				if (container.getTags().contains(
+						IPresentationEngine.NO_AUTO_COLLAPSE)) {
+					return;
+				}
+
+				int visCount = modelService.countRenderableChildren(container);
+
+				// Remove stacks with no visible children from the display (but
+				// not the
+				// model)
+				final MElementContainer<MUIElement> theContainer = container;
+				if (visCount == 0) {
+					communicationManager.invokeLater(new Runnable() {
+
+						@Override
+						public void run() {
+							if (!isLastEditorStack(theContainer))
+								theContainer.setToBeRendered(false);
+						}
+					});
+				} else {
+					// if there are rendered elements but none are 'visible' we
+					// should
+					// make the container invisible as well
+					boolean makeInvisible = true;
+
+					// OK, we have rendered children, are they 'visible' ?
+					for (MUIElement kid : container.getChildren()) {
+						if (!kid.isToBeRendered())
+							continue;
+						if (kid.isVisible()) {
+							makeInvisible = false;
+							break;
+						}
+					}
+
+					if (makeInvisible) {
+						container.setVisible(false);
+					}
+				}
+			}
+		}
+	};
+
+	@PostConstruct
+	void init(IEclipseContext context) {
+		eventBroker.subscribe(UIEvents.ElementContainer.TOPIC_CHILDREN,
+				childrenHandler);
+		eventBroker.subscribe(UIEvents.UIElement.TOPIC_TOBERENDERED,
+				renderingChangeHandler);
+	}
+
+	@PreDestroy
+	void removeListeners() {
+		eventBroker.unsubscribe(childrenHandler);
+		eventBroker.unsubscribe(renderingChangeHandler);
+	}
+
+	boolean isLastEditorStack(MUIElement element) {
+		return modelService.isLastEditorStack(element);
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.behaviour/src/org/eclipse/osbp/vaaclipse/behaviour/cleanup/CleanupProcessor.java b/org.eclipse.osbp.vaaclipse.behaviour/src/org/eclipse/osbp/vaaclipse/behaviour/cleanup/CleanupProcessor.java
new file mode 100644
index 0000000..d9a67d0
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.behaviour/src/org/eclipse/osbp/vaaclipse/behaviour/cleanup/CleanupProcessor.java
@@ -0,0 +1,40 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.behaviour.cleanup;
+
+import java.util.List;
+
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.ui.model.application.MAddon;
+import org.eclipse.e4.ui.model.application.MApplication;
+import org.eclipse.e4.ui.model.application.impl.ApplicationFactoryImpl;
+
+public class CleanupProcessor {
+	@Execute
+	void addCleanupAddon(MApplication app) {
+		List<MAddon> addons = app.getAddons();
+
+		// Prevent multiple copies
+		for (MAddon addon : addons) {
+			if (addon.getContributionURI().contains(
+					"org.eclipse.osbp.vaaclipse.behaviour.CleanupAddon"))
+				return;
+		}
+
+		// Insert the addon into the system
+		MAddon cleanupAddon = ApplicationFactoryImpl.eINSTANCE.createAddon();
+		cleanupAddon.setElementId("CleanupAddon"); //$NON-NLS-1$
+		cleanupAddon
+				.setContributionURI("bundleclass://org.eclipse.osbp.vaaclipse.behaviour/org.eclipse.osbp.vaaclipse.behaviour.cleanup.CleanupAddon"); //$NON-NLS-1$
+		app.getAddons().add(cleanupAddon);
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.behaviour/src/org/eclipse/osbp/vaaclipse/behaviour/idgenerator/ElementIdGeneratorAddon.java b/org.eclipse.osbp.vaaclipse.behaviour/src/org/eclipse/osbp/vaaclipse/behaviour/idgenerator/ElementIdGeneratorAddon.java
new file mode 100644
index 0000000..aaaa7f4
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.behaviour/src/org/eclipse/osbp/vaaclipse/behaviour/idgenerator/ElementIdGeneratorAddon.java
@@ -0,0 +1,73 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.behaviour.idgenerator;
+
+import java.util.UUID;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.inject.Inject;
+
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.core.services.events.IEventBroker;
+import org.eclipse.e4.ui.model.application.MApplication;
+import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.workbench.UIEvents;
+import org.osgi.service.event.Event;
+import org.osgi.service.event.EventHandler;
+
+public class ElementIdGeneratorAddon {
+	@Inject
+	IEventBroker eventBroker;
+
+	@Inject
+	MApplication app;
+
+	private EventHandler childrenHandler = new EventHandler() {
+
+		public void handleEvent(Event event) {
+
+			Object changedObj = event.getProperty(UIEvents.EventTags.ELEMENT);
+			if (!(changedObj instanceof MElementContainer<?>))
+				return;
+
+			String eventType = (String) event
+					.getProperty(UIEvents.EventTags.TYPE);
+			if (UIEvents.EventTypes.ADD.equals(eventType)) {
+
+				Object newValue = event
+						.getProperty(UIEvents.EventTags.NEW_VALUE);
+				if (!(newValue instanceof MUIElement))
+					return;
+
+				MUIElement element = (MUIElement) newValue;
+
+				if (element.getElementId() == null
+						|| element.getElementId().trim().isEmpty()) {
+					element.setElementId(UUID.randomUUID().toString());
+				}
+			}
+		}
+	};
+
+	@PostConstruct
+	void init(IEclipseContext context) {
+		eventBroker.subscribe(UIEvents.ElementContainer.TOPIC_CHILDREN,
+				childrenHandler);
+	}
+
+	@PreDestroy
+	void removeListeners() {
+		eventBroker.unsubscribe(childrenHandler);
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.behaviour/src/org/eclipse/osbp/vaaclipse/behaviour/idgenerator/ElementIdGeneratorProcessor.java b/org.eclipse.osbp.vaaclipse.behaviour/src/org/eclipse/osbp/vaaclipse/behaviour/idgenerator/ElementIdGeneratorProcessor.java
new file mode 100644
index 0000000..de9db32
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.behaviour/src/org/eclipse/osbp/vaaclipse/behaviour/idgenerator/ElementIdGeneratorProcessor.java
@@ -0,0 +1,45 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.behaviour.idgenerator;
+
+import java.util.List;
+
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.ui.model.application.MAddon;
+import org.eclipse.e4.ui.model.application.MApplication;
+import org.eclipse.e4.ui.model.application.impl.ApplicationFactoryImpl;
+
+/**
+ * @author rushan
+ *
+ */
+public class ElementIdGeneratorProcessor {
+
+	@Execute
+	void addCleanupAddon(MApplication app) {
+		List<MAddon> addons = app.getAddons();
+
+		// Prevent multiple copies
+		for (MAddon addon : addons) {
+			if (addon.getContributionURI().contains(
+					"org.eclipse.osbp.vaaclipse.behaviour.idgenerator"))
+				return;
+		}
+
+		// Insert the addon into the system
+		MAddon addon = ApplicationFactoryImpl.eINSTANCE.createAddon();
+		addon.setElementId("ElementIdGeneratorAddon"); //$NON-NLS-1$
+		addon.setContributionURI("bundleclass://org.eclipse.osbp.vaaclipse.behaviour/org.eclipse.osbp.vaaclipse.behaviour.idgenerator.ElementIdGeneratorAddon"); //$NON-NLS-1$
+		app.getAddons().add(addon);
+	}
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.common.ecview.api/.project b/org.eclipse.osbp.vaaclipse.common.ecview.api/.project
new file mode 100644
index 0000000..fb8f695
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.common.ecview.api/.project
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.vaaclipse.common.ecview.api</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.babel.editor.rbeBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.babel.editor.rbeNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.vaaclipse.common.ecview.api/LICENSE.txt b/org.eclipse.osbp.vaaclipse.common.ecview.api/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.common.ecview.api/LICENSE.txt
@@ -0,0 +1,161 @@
+Eclipse Public License -v 1.0
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION
+OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+
+b) in the case of each subsequent Contributor:
+
+i) changes to the Program, and
+
+ii) additions to the Program;
+
+where such changes and/or additions to the Program originate from and are distributed by that particular Contributor.
+A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone
+acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate
+modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not
+derivative works of the Program.
+
+"Contributor" means any person or entity that distributes the Program.
+
+"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of
+its Contribution alone or when combined with the Program.
+
+"Program" means the Contributions distributed in accordance with this Agreement.
+
+"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+
+2. GRANT OF RIGHTS
+
+a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute
+and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code
+form.
+
+b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the
+Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the
+combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such
+addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not
+apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+
+c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no
+assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property
+rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity
+based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and
+licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property
+rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the
+Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+
+d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to
+grant the copyright license set forth in this Agreement.
+
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+
+a) it complies with the terms and conditions of this Agreement; and
+
+b) its license agreement:
+
+i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including
+warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and
+fitness for a particular purpose;
+
+ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;
+
+iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any
+other party; and
+
+iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it
+in a reasonable manner on or through a medium customarily used for software exchange.
+
+When the Program is made available in source code form:
+
+a) it must be made available under this Agreement; and
+
+b) a copy of this Agreement must be included with each copy of the Program.
+
+Contributors may not remove or alter any copyright notices contained within the Program.
+
+Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows
+subsequent Recipients to identify the originator of the Contribution.
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and
+the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes
+the Program in a commercial product offering should do so in a manner which does not create potential liability for
+other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions
+brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such
+Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual
+property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
+Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the
+Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may
+ participate in any such claim at its own expense.
+
+For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is
+then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties
+related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone.
+Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to
+those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result,
+the Commercial Contributor must pay those damages.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR
+CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
+NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for
+determining the appropriateness of using and distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance
+with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or
+enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such
+provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
+
+If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit)
+alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such
+Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such
+litigation is filed.
+
+All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or
+conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such
+noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution
+of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses
+ granted by Recipient relating to the Program shall continue and survive.
+
+Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement
+is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish
+new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the
+right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the
+Agreement will be given a distinguishing version number. The Program (including Contributions) may always be
+distributed subject to the version of the Agreement under which it was received. In addition, after a new version of
+the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the
+new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
+the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
+
+This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States
+of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause
+of action arose. Each party waives its rights to a jury trial in any resulting litigation.
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.common.ecview.api/META-INF/MANIFEST.MF b/org.eclipse.osbp.vaaclipse.common.ecview.api/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..1c84445
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.common.ecview.api/META-INF/MANIFEST.MF
@@ -0,0 +1,10 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.vaaclipse.common.ecview.api
+Bundle-SymbolicName: org.eclipse.osbp.vaaclipse.common.ecview.api;singleton:=true
+Bundle-Vendor: Eclipse OSBP
+Bundle-Version: 0.9.0.qualifier
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Export-Package: org.eclipse.osbp.vaaclipse.common.ecview.api;version="0.9.0"
+Require-Bundle: org.eclipse.osbp.ecview.core.common;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.ecview.core.common.model
diff --git a/org.eclipse.osbp.vaaclipse.common.ecview.api/about.html b/org.eclipse.osbp.vaaclipse.common.ecview.api/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.common.ecview.api/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 1, 2016</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.common.ecview.api/about.ini b/org.eclipse.osbp.vaaclipse.common.ecview.api/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.common.ecview.api/about.ini
@@ -0,0 +1,17 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%featureText
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=
+
+# Property "appName" contains name of the application (translated)
+appName=%featureName
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+welcomePage=
diff --git a/org.eclipse.osbp.vaaclipse.common.ecview.api/about.mappings b/org.eclipse.osbp.vaaclipse.common.ecview.api/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.common.ecview.api/about.mappings
@@ -0,0 +1,6 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+0=qualifier
diff --git a/org.eclipse.osbp.vaaclipse.common.ecview.api/about.properties b/org.eclipse.osbp.vaaclipse.common.ecview.api/about.properties
new file mode 100644
index 0000000..7cc100b
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.common.ecview.api/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2012, 2016 - Loetz GmbH&Co.KG (Heidelberg)
+# 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:
+#    Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.vaaclipse.common.ecview.api
+
+################ blurb property ####################################
+featureText=\
+Copyright (c) 2012-2016 - Loetz GmbH&Co.KG \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+Contributors:\n\
+    Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.vaaclipse.common.ecview.api/build.properties b/org.eclipse.osbp.vaaclipse.common.ecview.api/build.properties
new file mode 100644
index 0000000..051ae17
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.common.ecview.api/build.properties
@@ -0,0 +1,10 @@
+source.. = src/
+output.. = target/classes/
+bin.includes = about.properties,  about.mappings,  about.ini,  about.html,  META-INF/,\
+               .,\
+               license.html,\
+               LICENSE.txt,\
+               epl-v10.html
+src.includes = about.properties,  about.mappings,  about.ini,  about.html,  license.html,\
+               LICENSE.txt,\
+               epl-v10.html			   
diff --git a/org.eclipse.osbp.vaaclipse.common.ecview.api/epl-v10.html b/org.eclipse.osbp.vaaclipse.common.ecview.api/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.common.ecview.api/epl-v10.html
@@ -0,0 +1,259 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+  body {
+    size: 8.5in 11.0in;
+    margin: 0.25in 0.5in 0.25in 0.5in;
+    tab-interval: 0.5in;
+    }
+  p {  	
+    margin-left: auto;
+    margin-top:  0.5em;
+    margin-bottom: 0.5em;
+    }
+  p.list {
+  	margin-left: 0.5in;
+    margin-top:  0.05em;
+    margin-bottom: 0.05em;
+    }
+  </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">where such changes and/or additions to the Program
+originate from and are distributed by that particular Contributor. A
+Contribution 'originates' from a Contributor if it was added to the
+Program by such Contributor itself or anyone acting on such
+Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii)
+are not derivative works of the Program.</p>
+
+<p>"Contributor" means any person or entity that distributes
+the Program.</p>
+
+<p>"Licensed Patents" mean patent claims licensable by a
+Contributor which are necessarily infringed by the use or sale of its
+Contribution alone or when combined with the Program.</p>
+
+<p>"Program" means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>"Recipient" means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works
+of, publicly display, publicly perform, distribute and sublicense the
+Contribution of such Contributor, if any, and such derivative works, in
+source code and object code form.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell,
+offer to sell, import and otherwise transfer the Contribution of such
+Contributor, if any, in source code and object code form. This patent
+license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor,
+such addition of the Contribution causes such combination to be covered
+by the Licensed Patents. The patent license shall not apply to any other
+combinations which include the Contribution. No hardware per se is
+licensed hereunder.</p>
+
+<p class="list">c) Recipient understands that although each Contributor
+grants the licenses to its Contributions set forth herein, no assurances
+are provided by any Contributor that the Program does not infringe the
+patent or other intellectual property rights of any other entity. Each
+Contributor disclaims any liability to Recipient for claims brought by
+any other entity based on infringement of intellectual property rights
+or otherwise. As a condition to exercising the rights and licenses
+granted hereunder, each Recipient hereby assumes sole responsibility to
+secure any other intellectual property rights needed, if any. For
+example, if a third party patent license is required to allow Recipient
+to distribute the Program, it is Recipient's responsibility to acquire
+that license before distributing the Program.</p>
+
+<p class="list">d) Each Contributor represents that to its knowledge it
+has sufficient copyright rights in its Contribution, if any, to grant
+the copyright license set forth in this Agreement.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">i) effectively disclaims on behalf of all Contributors
+all warranties and conditions, express and implied, including warranties
+or conditions of title and non-infringement, and implied warranties or
+conditions of merchantability and fitness for a particular purpose;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">iv) states that source code for the Program is available
+from such Contributor, and informs licensees how to obtain it in a
+reasonable manner on or through a medium customarily used for software
+exchange.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>Commercial distributors of software may accept certain
+responsibilities with respect to end users, business partners and the
+like. While this license is intended to facilitate the commercial use of
+the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create
+potential liability for other Contributors. Therefore, if a Contributor
+includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and
+indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses")
+arising from claims, lawsuits and other legal actions brought by a third
+party against the Indemnified Contributor to the extent caused by the
+acts or omissions of such Commercial Contributor in connection with its
+distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In
+order to qualify, an Indemnified Contributor must: a) promptly notify
+the Commercial Contributor in writing of such claim, and b) allow the
+Commercial Contributor to control, and cooperate with the Commercial
+Contributor in, the defense and any related settlement negotiations. The
+Indemnified Contributor may participate in any such claim at its own
+expense.</p>
+
+<p>For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor's responsibility
+alone. Under this section, the Commercial Contributor would have to
+defend claims against the other Contributors related to those
+performance claims and warranties, and if a court requires any other
+Contributor to pay any damages as a result, the Commercial Contributor
+must pay those damages.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
+OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
+ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to
+the risks and costs of program errors, compliance with applicable laws,
+damage to or loss of data, programs or equipment, and unavailability or
+interruption of operations.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
+NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of
+the remainder of the terms of this Agreement, and without further action
+by the parties hereto, such provision shall be reformed to the minimum
+extent necessary to make such provision valid and enforceable.</p>
+
+<p>If Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that the
+Program itself (excluding combinations of the Program with other
+software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the
+date such litigation is filed.</p>
+
+<p>All Recipient's rights under this Agreement shall terminate if it
+fails to comply with any of the material terms or conditions of this
+Agreement and does not cure such failure in a reasonable period of time
+after becoming aware of such noncompliance. If all Recipient's rights
+under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive.</p>
+
+<p>Everyone is permitted to copy and distribute copies of this
+Agreement, but in order to avoid inconsistency the Agreement is
+copyrighted and may only be modified in the following manner. The
+Agreement Steward reserves the right to publish new versions (including
+revisions) of this Agreement from time to time. No one other than the
+Agreement Steward has the right to modify this Agreement. The Eclipse
+Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a
+suitable separate entity. Each new version of the Agreement will be
+given a distinguishing version number. The Program (including
+Contributions) may always be distributed subject to the version of the
+Agreement under which it was received. In addition, after a new version
+of the Agreement is published, Contributor may elect to distribute the
+Program (including its Contributions) under the new version. Except as
+expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
+rights or licenses to the intellectual property of any Contributor under
+this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this
+Agreement are reserved.</p>
+
+<p>This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No party
+to this Agreement will bring a legal action under this Agreement more
+than one year after the cause of action arose. Each party waives its
+rights to a jury trial in any resulting litigation.</p>
+
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.common.ecview.api/license.html b/org.eclipse.osbp.vaaclipse.common.ecview.api/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.common.ecview.api/license.html
@@ -0,0 +1,164 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!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>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>February 1, 2011</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+   (COLLECTIVELY "CONTENT").  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse
+ Foundation is provided to you under the terms and conditions of the 
+Eclipse Public License Version 1.0
+   ("EPL").  A copy of the EPL is provided with this Content and is also
+ 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, "Program" will mean the Content.</p>
+
+<p>Content includes, but is not limited to, source code, object code, 
+documentation and other files maintained in the Eclipse Foundation 
+source code
+   repository ("Repository") in software modules ("Modules") and made 
+available as downloadable archives ("Downloads").</p>
+
+<ul>
+       <li>Content may be structured and packaged into modules to 
+facilitate delivering, extending, and upgrading the Content.  Typical 
+modules may include plug-ins ("Plug-ins"), plug-in fragments 
+("Fragments"), and features ("Features").</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&#8482; ARchive) in a directory named "plugins".</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or 
+Fragments and associated material.  Each Feature may be packaged as a 
+sub-directory in a directory named "features".  Within a Feature, files 
+named "feature.xml" may contain a list of the names and version numbers 
+of the Plug-ins
+      and/or Fragments associated with that Feature.</li>
+       <li>Features may also include other Features ("Included 
+Features"). Within a Feature, files named "feature.xml" may contain a 
+list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be 
+contained in files named "about.html" ("Abouts"). The terms and 
+conditions governing Features and
+Included Features should be contained in files named "license.html" 
+("Feature Licenses").  Abouts and Feature Licenses may be located in any
+ directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named "src" of certain Plug-ins</li>
+       <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is 
+installed using the Provisioning Technology (as defined below), you must
+ agree to a license ("Feature Update License") during the
+installation process.  If the Feature contains Included Features, the 
+Feature Update License should either provide you with the terms and 
+conditions governing the Included Features or
+inform you where you can locate them.  Feature Update Licenses may be 
+found in the "license" property of files named "feature.properties" 
+found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the 
+terms and conditions (or references to such terms and conditions) that 
+govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER 
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.
+  SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND 
+CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, 
+or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions 
+govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, 
+examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager ("Provisioning Technology") for the purpose of 
+allowing users to install software, documentation, information and/or
+   other materials (collectively "Installable Software"). This 
+capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about 
+packaging Installable Software is available at <a href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   ("Specification").</p>
+
+<p>You may use Provisioning Technology to allow other parties to install
+ Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to
+ be presented to, and accepted by, the users of the Provisioning 
+Technology
+   in accordance with the Specification. By using Provisioning 
+Technology in such a manner and making it available in accordance with 
+the
+   Specification, you further acknowledge your agreement to, and the 
+acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur ("Provisioning Process") in 
+which a user may execute the Provisioning Technology
+       on a machine ("Target Machine") with the intent of installing, 
+extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology 
+may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user 
+the terms and conditions that govern the use of the Installable
+       Software ("Installable Software Agreement") and such Installable 
+Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable 
+Software Agreement must inform the user of the terms and conditions that
+ govern
+       the Installable Software and must solicit acceptance by the end 
+user in the manner prescribed in such Installable Software Agreement. 
+Upon such
+       indication of agreement by the user, the provisioning Technology 
+will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are
+ currently may have restrictions on the import, possession, and use, 
+and/or re-export to
+   another country, of encryption software. BEFORE using any encryption 
+software, please check the country's laws, regulations and policies 
+concerning the import,
+   possession, or use, and re-export of encryption software, to see if 
+this is permitted.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.common.ecview.api/pom.xml b/org.eclipse.osbp.vaaclipse.common.ecview.api/pom.xml
new file mode 100644
index 0000000..6d2f72f
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.common.ecview.api/pom.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.eclipse.osbp.vaaclipse</groupId>
+        <artifactId>org.eclipse.osbp.vaaclipse</artifactId>
+        <version>0.9.0-SNAPSHOT</version>
+        <relativePath>..</relativePath>
+    </parent>
+    <artifactId>org.eclipse.osbp.vaaclipse.common.ecview.api</artifactId>
+    <build>
+        <sourceDirectory>src</sourceDirectory>
+        <plugins>
+        </plugins>
+    </build>
+    <packaging>eclipse-plugin</packaging>
+
+</project>
diff --git a/org.eclipse.osbp.vaaclipse.common.ecview.api/src/org/eclipse/osbp/vaaclipse/common/ecview/api/IECViewContainer.java b/org.eclipse.osbp.vaaclipse.common.ecview.api/src/org/eclipse/osbp/vaaclipse/common/ecview/api/IECViewContainer.java
new file mode 100644
index 0000000..7b173d6
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.common.ecview.api/src/org/eclipse/osbp/vaaclipse/common/ecview/api/IECViewContainer.java
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.common.ecview.api;
+
+import java.util.List;
+
+import org.eclipse.osbp.ecview.core.common.editpart.IViewEditpart;
+
+/**
+ * Keeps track of active ecview instances.
+ */
+public interface IECViewContainer {
+
+	/**
+	 * Returns a list with all ECViews registered with this Vaaclipse session.
+	 * 
+	 * @return
+	 */
+	List<IViewEditpart> getECViews();
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.common.ecview.api/src/org/eclipse/osbp/vaaclipse/common/ecview/api/IECViewSessionHelper.java b/org.eclipse.osbp.vaaclipse.common.ecview.api/src/org/eclipse/osbp/vaaclipse/common/ecview/api/IECViewSessionHelper.java
new file mode 100644
index 0000000..389534e
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.common.ecview.api/src/org/eclipse/osbp/vaaclipse/common/ecview/api/IECViewSessionHelper.java
@@ -0,0 +1,32 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.common.ecview.api;
+
+import java.util.Map;
+
+/**
+ * Instances of this service need to be created in a Vaaclipse UI scoped manner.
+ * Every vaadin.UI will get its own instance.<br>
+ * So session and UI based information like locale, userName,... are available.
+ * 
+ * @NoImplement by clients
+ */
+public interface IECViewSessionHelper {
+
+	/**
+	 * Creates the basic properties required to setup a proper IViewContext in
+	 * ECView.
+	 * 
+	 * @return
+	 */
+	public abstract Map<String, Object> createBasicProperties();
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.contributions/.project b/org.eclipse.osbp.vaaclipse.contributions/.project
new file mode 100644
index 0000000..3535a82
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.contributions/.project
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.vaaclipse.contributions</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.babel.editor.rbeBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.babel.editor.rbeNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.vaaclipse.contributions/META-INF/MANIFEST.MF b/org.eclipse.osbp.vaaclipse.contributions/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..df5e1f5
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.contributions/META-INF/MANIFEST.MF
@@ -0,0 +1,20 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.vaaclipse.contributions
+Bundle-Version: 0.9.0.qualifier
+Bundle-Vendor: Eclipse OSBP
+Bundle-RequiredExecutionEnvironment: JavaSE-1.7
+Require-Bundle: org.eclipse.e4.ui.model.workbench;bundle-version="0.10.1",
+ org.eclipse.e4.ui.workbench;bundle-version="0.10.3",
+ org.eclipse.e4.core.di;bundle-version="1.1.0",
+ org.eclipse.e4.core.services;bundle-version="1.0.0",
+ org.eclipse.osgi.services;bundle-version="3.3.100",
+ org.eclipse.e4.core.contexts;bundle-version="1.1.0",
+ org.eclipse.core.expressions;bundle-version="3.4.401",
+ org.eclipse.osbp.vaaclipse.api;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.emf.ecore;bundle-version="2.9.0",
+ org.eclipse.e4.core.commands;bundle-version="0.10.2"
+Bundle-SymbolicName: org.eclipse.osbp.vaaclipse.contributions;singleton:=true
+Import-Package: javax.inject;version="1.0.0",
+ javax.annotation
+Export-Package: org.eclipse.osbp.vaaclipse.contributions;version="0.9.0"
diff --git a/org.eclipse.osbp.vaaclipse.contributions/about.html b/org.eclipse.osbp.vaaclipse.contributions/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.contributions/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 1, 2016</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.contributions/about.ini b/org.eclipse.osbp.vaaclipse.contributions/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.contributions/about.ini
@@ -0,0 +1,17 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%featureText
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=
+
+# Property "appName" contains name of the application (translated)
+appName=%featureName
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+welcomePage=
diff --git a/org.eclipse.osbp.vaaclipse.contributions/about.mappings b/org.eclipse.osbp.vaaclipse.contributions/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.contributions/about.mappings
@@ -0,0 +1,6 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+0=qualifier
diff --git a/org.eclipse.osbp.vaaclipse.contributions/about.properties b/org.eclipse.osbp.vaaclipse.contributions/about.properties
new file mode 100644
index 0000000..9b05583
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.contributions/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2012, 2016 - Loetz GmbH&Co.KG (Heidelberg)
+# 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:
+#    Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.vaaclipse.contributions
+
+################ blurb property ####################################
+featureText=\
+Copyright (c) 2012-2016 - Loetz GmbH&Co.KG \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+Contributors:\n\
+    Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.vaaclipse.contributions/build.properties b/org.eclipse.osbp.vaaclipse.contributions/build.properties
new file mode 100644
index 0000000..4dc6f61
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.contributions/build.properties
@@ -0,0 +1,9 @@
+source.. = src/
+output.. = target/classes/
+bin.includes = about.properties,  about.mappings,  about.ini,  about.html,  META-INF/,\
+               .,\
+               plugin.xml,\
+               epl-v10.html,\
+               license.html
+src.includes = about.properties,  about.mappings,  about.ini,  about.html,  epl-v10.html,\
+               license.html
diff --git a/org.eclipse.osbp.vaaclipse.contributions/epl-v10.html b/org.eclipse.osbp.vaaclipse.contributions/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.contributions/epl-v10.html
@@ -0,0 +1,259 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+  body {
+    size: 8.5in 11.0in;
+    margin: 0.25in 0.5in 0.25in 0.5in;
+    tab-interval: 0.5in;
+    }
+  p {  	
+    margin-left: auto;
+    margin-top:  0.5em;
+    margin-bottom: 0.5em;
+    }
+  p.list {
+  	margin-left: 0.5in;
+    margin-top:  0.05em;
+    margin-bottom: 0.05em;
+    }
+  </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">where such changes and/or additions to the Program
+originate from and are distributed by that particular Contributor. A
+Contribution 'originates' from a Contributor if it was added to the
+Program by such Contributor itself or anyone acting on such
+Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii)
+are not derivative works of the Program.</p>
+
+<p>"Contributor" means any person or entity that distributes
+the Program.</p>
+
+<p>"Licensed Patents" mean patent claims licensable by a
+Contributor which are necessarily infringed by the use or sale of its
+Contribution alone or when combined with the Program.</p>
+
+<p>"Program" means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>"Recipient" means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works
+of, publicly display, publicly perform, distribute and sublicense the
+Contribution of such Contributor, if any, and such derivative works, in
+source code and object code form.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell,
+offer to sell, import and otherwise transfer the Contribution of such
+Contributor, if any, in source code and object code form. This patent
+license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor,
+such addition of the Contribution causes such combination to be covered
+by the Licensed Patents. The patent license shall not apply to any other
+combinations which include the Contribution. No hardware per se is
+licensed hereunder.</p>
+
+<p class="list">c) Recipient understands that although each Contributor
+grants the licenses to its Contributions set forth herein, no assurances
+are provided by any Contributor that the Program does not infringe the
+patent or other intellectual property rights of any other entity. Each
+Contributor disclaims any liability to Recipient for claims brought by
+any other entity based on infringement of intellectual property rights
+or otherwise. As a condition to exercising the rights and licenses
+granted hereunder, each Recipient hereby assumes sole responsibility to
+secure any other intellectual property rights needed, if any. For
+example, if a third party patent license is required to allow Recipient
+to distribute the Program, it is Recipient's responsibility to acquire
+that license before distributing the Program.</p>
+
+<p class="list">d) Each Contributor represents that to its knowledge it
+has sufficient copyright rights in its Contribution, if any, to grant
+the copyright license set forth in this Agreement.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">i) effectively disclaims on behalf of all Contributors
+all warranties and conditions, express and implied, including warranties
+or conditions of title and non-infringement, and implied warranties or
+conditions of merchantability and fitness for a particular purpose;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">iv) states that source code for the Program is available
+from such Contributor, and informs licensees how to obtain it in a
+reasonable manner on or through a medium customarily used for software
+exchange.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>Commercial distributors of software may accept certain
+responsibilities with respect to end users, business partners and the
+like. While this license is intended to facilitate the commercial use of
+the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create
+potential liability for other Contributors. Therefore, if a Contributor
+includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and
+indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses")
+arising from claims, lawsuits and other legal actions brought by a third
+party against the Indemnified Contributor to the extent caused by the
+acts or omissions of such Commercial Contributor in connection with its
+distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In
+order to qualify, an Indemnified Contributor must: a) promptly notify
+the Commercial Contributor in writing of such claim, and b) allow the
+Commercial Contributor to control, and cooperate with the Commercial
+Contributor in, the defense and any related settlement negotiations. The
+Indemnified Contributor may participate in any such claim at its own
+expense.</p>
+
+<p>For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor's responsibility
+alone. Under this section, the Commercial Contributor would have to
+defend claims against the other Contributors related to those
+performance claims and warranties, and if a court requires any other
+Contributor to pay any damages as a result, the Commercial Contributor
+must pay those damages.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
+OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
+ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to
+the risks and costs of program errors, compliance with applicable laws,
+damage to or loss of data, programs or equipment, and unavailability or
+interruption of operations.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
+NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of
+the remainder of the terms of this Agreement, and without further action
+by the parties hereto, such provision shall be reformed to the minimum
+extent necessary to make such provision valid and enforceable.</p>
+
+<p>If Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that the
+Program itself (excluding combinations of the Program with other
+software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the
+date such litigation is filed.</p>
+
+<p>All Recipient's rights under this Agreement shall terminate if it
+fails to comply with any of the material terms or conditions of this
+Agreement and does not cure such failure in a reasonable period of time
+after becoming aware of such noncompliance. If all Recipient's rights
+under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive.</p>
+
+<p>Everyone is permitted to copy and distribute copies of this
+Agreement, but in order to avoid inconsistency the Agreement is
+copyrighted and may only be modified in the following manner. The
+Agreement Steward reserves the right to publish new versions (including
+revisions) of this Agreement from time to time. No one other than the
+Agreement Steward has the right to modify this Agreement. The Eclipse
+Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a
+suitable separate entity. Each new version of the Agreement will be
+given a distinguishing version number. The Program (including
+Contributions) may always be distributed subject to the version of the
+Agreement under which it was received. In addition, after a new version
+of the Agreement is published, Contributor may elect to distribute the
+Program (including its Contributions) under the new version. Except as
+expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
+rights or licenses to the intellectual property of any Contributor under
+this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this
+Agreement are reserved.</p>
+
+<p>This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No party
+to this Agreement will bring a legal action under this Agreement more
+than one year after the cause of action arose. Each party waives its
+rights to a jury trial in any resulting litigation.</p>
+
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.contributions/license.html b/org.eclipse.osbp.vaaclipse.contributions/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.contributions/license.html
@@ -0,0 +1,164 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!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>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>February 1, 2011</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+   (COLLECTIVELY "CONTENT").  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse
+ Foundation is provided to you under the terms and conditions of the 
+Eclipse Public License Version 1.0
+   ("EPL").  A copy of the EPL is provided with this Content and is also
+ 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, "Program" will mean the Content.</p>
+
+<p>Content includes, but is not limited to, source code, object code, 
+documentation and other files maintained in the Eclipse Foundation 
+source code
+   repository ("Repository") in software modules ("Modules") and made 
+available as downloadable archives ("Downloads").</p>
+
+<ul>
+       <li>Content may be structured and packaged into modules to 
+facilitate delivering, extending, and upgrading the Content.  Typical 
+modules may include plug-ins ("Plug-ins"), plug-in fragments 
+("Fragments"), and features ("Features").</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&#8482; ARchive) in a directory named "plugins".</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or 
+Fragments and associated material.  Each Feature may be packaged as a 
+sub-directory in a directory named "features".  Within a Feature, files 
+named "feature.xml" may contain a list of the names and version numbers 
+of the Plug-ins
+      and/or Fragments associated with that Feature.</li>
+       <li>Features may also include other Features ("Included 
+Features"). Within a Feature, files named "feature.xml" may contain a 
+list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be 
+contained in files named "about.html" ("Abouts"). The terms and 
+conditions governing Features and
+Included Features should be contained in files named "license.html" 
+("Feature Licenses").  Abouts and Feature Licenses may be located in any
+ directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named "src" of certain Plug-ins</li>
+       <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is 
+installed using the Provisioning Technology (as defined below), you must
+ agree to a license ("Feature Update License") during the
+installation process.  If the Feature contains Included Features, the 
+Feature Update License should either provide you with the terms and 
+conditions governing the Included Features or
+inform you where you can locate them.  Feature Update Licenses may be 
+found in the "license" property of files named "feature.properties" 
+found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the 
+terms and conditions (or references to such terms and conditions) that 
+govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER 
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.
+  SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND 
+CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, 
+or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions 
+govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, 
+examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager ("Provisioning Technology") for the purpose of 
+allowing users to install software, documentation, information and/or
+   other materials (collectively "Installable Software"). This 
+capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about 
+packaging Installable Software is available at <a href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   ("Specification").</p>
+
+<p>You may use Provisioning Technology to allow other parties to install
+ Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to
+ be presented to, and accepted by, the users of the Provisioning 
+Technology
+   in accordance with the Specification. By using Provisioning 
+Technology in such a manner and making it available in accordance with 
+the
+   Specification, you further acknowledge your agreement to, and the 
+acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur ("Provisioning Process") in 
+which a user may execute the Provisioning Technology
+       on a machine ("Target Machine") with the intent of installing, 
+extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology 
+may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user 
+the terms and conditions that govern the use of the Installable
+       Software ("Installable Software Agreement") and such Installable 
+Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable 
+Software Agreement must inform the user of the terms and conditions that
+ govern
+       the Installable Software and must solicit acceptance by the end 
+user in the manner prescribed in such Installable Software Agreement. 
+Upon such
+       indication of agreement by the user, the provisioning Technology 
+will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are
+ currently may have restrictions on the import, possession, and use, 
+and/or re-export to
+   another country, of encryption software. BEFORE using any encryption 
+software, please check the country's laws, regulations and policies 
+concerning the import,
+   possession, or use, and re-export of encryption software, to see if 
+this is permitted.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.contributions/plugin.xml b/org.eclipse.osbp.vaaclipse.contributions/plugin.xml
new file mode 100644
index 0000000..b34a5cb
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.contributions/plugin.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+   <extension
+         id="id1"
+         point="org.eclipse.e4.workbench.model">
+      <processor
+            beforefragment="true"
+            class="org.eclipse.osbp.vaaclipse.contributions.MenuContributionProcessor">
+      </processor>
+   </extension>
+
+</plugin>
diff --git a/org.eclipse.osbp.vaaclipse.contributions/pom.xml b/org.eclipse.osbp.vaaclipse.contributions/pom.xml
new file mode 100644
index 0000000..4390da4
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.contributions/pom.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <artifactId>org.eclipse.osbp.vaaclipse.contributions</artifactId>
+  <packaging>eclipse-plugin</packaging>
+  <parent>
+  	<groupId>org.eclipse.osbp.vaaclipse</groupId>
+  	<artifactId>org.eclipse.osbp.vaaclipse</artifactId>
+  	<version>0.9.0-SNAPSHOT</version>
+  	<relativePath>..</relativePath>
+  </parent>
+</project>
diff --git a/org.eclipse.osbp.vaaclipse.contributions/src/org/eclipse/osbp/vaaclipse/contributions/ContributionRecord.java b/org.eclipse.osbp.vaaclipse.contributions/src/org/eclipse/osbp/vaaclipse/contributions/ContributionRecord.java
new file mode 100644
index 0000000..36c7f16
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.contributions/src/org/eclipse/osbp/vaaclipse/contributions/ContributionRecord.java
@@ -0,0 +1,339 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.contributions;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.core.expressions.Expression;
+import org.eclipse.core.expressions.ExpressionInfo;
+import org.eclipse.core.internal.expressions.OrExpression;
+import org.eclipse.e4.core.contexts.EclipseContextFactory;
+import org.eclipse.e4.core.contexts.IContextFunction;
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.ui.internal.workbench.ContributionsAnalyzer;
+import org.eclipse.e4.ui.model.application.ui.MCoreExpression;
+import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+import org.eclipse.e4.ui.model.application.ui.MExpression;
+import org.eclipse.e4.ui.model.application.ui.impl.UiFactoryImpl;
+import org.eclipse.e4.ui.model.application.ui.menu.MMenu;
+import org.eclipse.e4.ui.model.application.ui.menu.MMenuContribution;
+import org.eclipse.e4.ui.model.application.ui.menu.MMenuElement;
+import org.eclipse.e4.ui.model.application.ui.menu.MMenuSeparator;
+import org.eclipse.e4.core.commands.ExpressionContext;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+
+public class ContributionRecord {
+	public static final String FACTORY = "ContributionFactory"; //$NON-NLS-1$
+	static final String STATIC_CONTEXT = "ContributionFactoryContext"; //$NON-NLS-1$
+
+	MMenu menuModel;
+	MMenuContribution menuContribution;
+	ArrayList<MMenuElement> generatedElements = new ArrayList<MMenuElement>();
+	HashSet<MMenuElement> sharedElements = new HashSet<MMenuElement>();
+	MenuContributionProcessor renderer;
+	boolean isVisible = true;
+	private IEclipseContext infoContext;
+	private Runnable factoryDispose;
+
+	public ContributionRecord(MMenu menuModel, MMenuContribution contribution,
+			MenuContributionProcessor renderer) {
+		this.menuModel = menuModel;
+		this.menuContribution = contribution;
+		this.renderer = renderer;
+	}
+
+	public MMenuContribution getMenuContribution() {
+		return menuContribution;
+	}
+
+	/**
+	 * Access to analyze for tests. For Looking, not touching!
+	 * 
+	 * @return the shared elements collection
+	 */
+	public Collection<MMenuElement> getSharedElements() {
+		return sharedElements;
+	}
+
+	/**
+	 * Access to analyze for tests. For Looking, not touching!
+	 * 
+	 * @return the generated elements collection
+	 */
+	public Collection<MMenuElement> getGeneratedElements() {
+		return generatedElements;
+	}
+
+	/**
+	 * @param context
+	 */
+	public void updateVisibility(IEclipseContext context) {
+		ExpressionContext exprContext = new ExpressionContext(context);
+		updateIsVisible(exprContext);
+		HashSet<ContributionRecord> recentlyUpdated = new HashSet<ContributionRecord>();
+		recentlyUpdated.add(this);
+		for (MMenuElement item : generatedElements) {
+			boolean currentVisibility = computeVisibility(recentlyUpdated,
+					item, exprContext);
+			if (item.isVisible() != currentVisibility) {
+				item.setVisible(currentVisibility);
+			}
+		}
+		for (MMenuElement item : sharedElements) {
+			boolean currentVisibility = computeVisibility(recentlyUpdated,
+					item, exprContext);
+			if (item.isVisible() != currentVisibility) {
+				item.setVisible(currentVisibility);
+			}
+		}
+	}
+
+	public void collectInfo(ExpressionInfo info) {
+		ContributionsAnalyzer.collectInfo(info,
+				menuContribution.getVisibleWhen());
+		for (MMenuElement item : generatedElements) {
+			ContributionsAnalyzer.collectInfo(info, item.getVisibleWhen());
+		}
+		for (MMenuElement item : sharedElements) {
+			ContributionsAnalyzer.collectInfo(info, item.getVisibleWhen());
+		}
+	}
+
+	public void updateIsVisible(ExpressionContext exprContext) {
+		isVisible = ContributionsAnalyzer.isVisible(menuContribution,
+				exprContext);
+	}
+
+	public boolean computeVisibility(
+			HashSet<ContributionRecord> recentlyUpdated, MMenuElement item,
+			ExpressionContext exprContext) {
+		boolean currentVisibility = isVisible;
+		if (item instanceof MMenu || item instanceof MMenuSeparator) {
+			ArrayList<ContributionRecord> list = renderer.getList(item);
+			if (list != null) {
+				Iterator<ContributionRecord> cr = list.iterator();
+				while (!currentVisibility && cr.hasNext()) {
+					ContributionRecord rec = cr.next();
+					if (!recentlyUpdated.contains(rec)) {
+						rec.updateIsVisible(exprContext);
+						recentlyUpdated.add(rec);
+					}
+					currentVisibility |= rec.isVisible;
+				}
+			}
+		}
+		if (currentVisibility
+				&& item.getVisibleWhen() instanceof MCoreExpression) {
+			boolean val = ContributionsAnalyzer.isVisible(
+					(MCoreExpression) item.getVisibleWhen(), exprContext);
+			currentVisibility = val;
+		}
+		return currentVisibility;
+	}
+
+	private Expression getExpression(MExpression expression) {
+		if (expression instanceof MCoreExpression) {
+			Object coreExpression = ((MCoreExpression) expression)
+					.getCoreExpression();
+			return coreExpression instanceof Expression ? (Expression) coreExpression
+					: null;
+		}
+		return null;
+	}
+
+	private MExpression merge(MExpression expressionA, MExpression expressionB) {
+		Expression coreExpressionA = getExpression(expressionA);
+		Expression coreExpressionB = getExpression(expressionB);
+		if (coreExpressionA == null || coreExpressionB == null) {
+			// implied to always be visible
+			return null;
+		}
+
+		// combine the two expressions
+		OrExpression expression = new OrExpression();
+		expression.add(coreExpressionA);
+		expression.add(coreExpressionB);
+
+		MCoreExpression exp = UiFactoryImpl.eINSTANCE.createCoreExpression();
+		exp.setCoreExpressionId("programmatic.value"); //$NON-NLS-1$
+		exp.setCoreExpression(expression);
+		return exp;
+	}
+
+	public boolean mergeIntoModel() {
+		int idx = getIndex(menuModel, menuContribution.getPositionInParent());
+		if (idx == -1) {
+			return false;
+		}
+
+		final List<MMenuElement> copyElements;
+		if (menuContribution.getTransientData().get(FACTORY) != null) {
+			copyElements = mergeFactoryIntoModel();
+		} else {
+			copyElements = new ArrayList<MMenuElement>();
+			for (MMenuElement item : menuContribution.getChildren()) {
+				MMenuElement copy = (MMenuElement) EcoreUtil
+						.copy((EObject) item);
+				copyElements.add(copy);
+			}
+		}
+
+		for (MMenuElement copy : copyElements) {
+			if (copy instanceof MMenu) {
+				MMenu shared = findExistingMenu(copy.getElementId());
+				if (shared == null) {
+					shared = (MMenu) copy;
+					menuModel.getChildren().add(idx++, copy);
+				} else {
+					shared.setVisibleWhen(merge(
+							menuContribution.getVisibleWhen(),
+							shared.getVisibleWhen()));
+					copy = shared;
+				}
+				sharedElements.add(shared);
+			} else if (copy instanceof MMenuSeparator) {
+				MMenuSeparator shared = findExistingSeparator(copy
+						.getElementId());
+				if (shared == null) {
+					shared = (MMenuSeparator) copy;
+					menuModel.getChildren().add(idx++, copy);
+				} else {
+					copy = shared;
+				}
+				sharedElements.add(shared);
+			} else {
+				generatedElements.add(copy);
+				menuModel.getChildren().add(idx++, copy);
+			}
+			if (copy instanceof MMenu || copy instanceof MMenuSeparator) {
+				ArrayList<ContributionRecord> array = renderer.getList(copy);
+				array.add(this);
+			}
+		}
+		return true;
+	}
+
+	/**
+	 * @return
+	 */
+	private List<MMenuElement> mergeFactoryIntoModel() {
+		Object obj = menuContribution.getTransientData().get(FACTORY);
+		if (!(obj instanceof IContextFunction)) {
+			return Collections.EMPTY_LIST;
+		}
+		IEclipseContext staticContext = getStaticContext();
+		staticContext.remove(List.class);
+		// TODO fp
+		factoryDispose = (Runnable) ((IContextFunction) obj).compute(
+				staticContext, null);
+		return staticContext.get(List.class);
+	}
+
+	private IEclipseContext getStaticContext() {
+		if (infoContext == null) {
+			IEclipseContext parentContext = renderer.getContext(menuModel);
+			if (parentContext != null) {
+				infoContext = parentContext.createChild(STATIC_CONTEXT);
+			} else {
+				infoContext = EclipseContextFactory.create(STATIC_CONTEXT);
+			}
+			ContributionsAnalyzer.populateModelInterfaces(menuModel,
+					infoContext, menuModel.getClass().getInterfaces());
+			infoContext.set(MenuContributionProcessor.class, renderer);
+		}
+		return infoContext;
+	}
+
+	MMenu findExistingMenu(String id) {
+		if (id == null) {
+			return null;
+		}
+		for (MMenuElement item : menuModel.getChildren()) {
+			if (item instanceof MMenu && id.equals(item.getElementId())) {
+				return (MMenu) item;
+			}
+		}
+		return null;
+	}
+
+	MMenuSeparator findExistingSeparator(String id) {
+		if (id == null) {
+			return null;
+		}
+		for (MMenuElement item : menuModel.getChildren()) {
+			if (item instanceof MMenuSeparator
+					&& id.equals(item.getElementId())) {
+				return (MMenuSeparator) item;
+			}
+		}
+		return null;
+	}
+
+	public void dispose() {
+		for (MMenuElement copy : generatedElements) {
+			menuModel.getChildren().remove(copy);
+		}
+		for (MMenuElement shared : sharedElements) {
+			ArrayList<ContributionRecord> array = renderer.getList(shared);
+			array.remove(this);
+			if (array.isEmpty()) {
+				menuModel.getChildren().remove(shared);
+			}
+		}
+		if (factoryDispose != null) {
+			factoryDispose.run();
+			factoryDispose = null;
+		}
+	}
+
+	private static int getIndex(MElementContainer<?> menuModel,
+			String positionInParent) {
+		String id = null;
+		String modifier = null;
+		if (positionInParent != null && positionInParent.length() > 0) {
+			String[] array = positionInParent.split("="); //$NON-NLS-1$
+			modifier = array[0];
+			id = array[1];
+		}
+		if (id == null) {
+			return menuModel.getChildren().size();
+		}
+
+		int idx = 0;
+		int size = menuModel.getChildren().size();
+		while (idx < size) {
+			if (id.equals(menuModel.getChildren().get(idx).getElementId())) {
+				if ("after".equals(modifier)) { //$NON-NLS-1$
+					idx++;
+				} else if ("endof".equals(modifier)) { //$NON-NLS-1$
+					// Skip current menu item
+					idx++;
+
+					// Skip all menu items until next MenuSeparator is found
+					while (idx < size
+							&& !(menuModel.getChildren().get(idx) instanceof MMenuSeparator && menuModel
+									.getChildren().get(idx).getElementId() != null)) {
+						idx++;
+					}
+				}
+				return idx;
+			}
+			idx++;
+		}
+		return id.equals("additions") ? menuModel.getChildren().size() : -1; //$NON-NLS-1$
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.contributions/src/org/eclipse/osbp/vaaclipse/contributions/MenuContributionProcessor.java b/org.eclipse.osbp.vaaclipse.contributions/src/org/eclipse/osbp/vaaclipse/contributions/MenuContributionProcessor.java
new file mode 100644
index 0000000..4a1e5fc
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.contributions/src/org/eclipse/osbp/vaaclipse/contributions/MenuContributionProcessor.java
@@ -0,0 +1,164 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.contributions;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+
+import javax.inject.Inject;
+
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.core.contexts.RunAndTrack;
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.ui.internal.workbench.ContributionsAnalyzer;
+import org.eclipse.e4.ui.model.application.MApplication;
+import org.eclipse.e4.ui.model.application.ui.MContext;
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.model.application.ui.menu.MMenu;
+import org.eclipse.e4.ui.model.application.ui.menu.MMenuContribution;
+import org.eclipse.e4.ui.model.application.ui.menu.MMenuElement;
+import org.eclipse.e4.ui.model.application.ui.menu.MMenuSeparator;
+import org.eclipse.e4.ui.model.application.ui.menu.MPopupMenu;
+import org.eclipse.e4.ui.workbench.modeling.EModelService;
+import org.eclipse.osbp.vaaclipse.api.MenuContributionService;
+
+/**
+ * @author rushan
+ *
+ */
+public class MenuContributionProcessor implements MenuContributionService {
+	@Inject
+	MApplication application;
+	@Inject
+	EModelService modelService;
+
+	private Map<MMenuElement, ArrayList<ContributionRecord>> sharedElementToRecord = new HashMap<MMenuElement, ArrayList<ContributionRecord>>();
+
+	@Execute
+	public void start(IEclipseContext context) {
+		context.set(MenuContributionService.class, this);
+	}
+
+	@Override
+	public void addContributions(MMenu menu) {
+		processContributions(menu, menu instanceof MPopupMenu);
+	}
+
+	/**
+	 * @param menuModel
+	 * @param isMenuBar
+	 * @param isPopup
+	 */
+	private void processContributions(MMenu menuModel, boolean isPopup) {
+		if (menuModel.getElementId() == null) {
+			return;
+		}
+		final ArrayList<MMenuContribution> toContribute = new ArrayList<MMenuContribution>();
+		ContributionsAnalyzer.XXXgatherMenuContributions(menuModel,
+				application.getMenuContributions(), menuModel.getElementId(),
+				toContribute, null, isPopup);
+		generateContributions(menuModel, toContribute);
+		// for (MMenuElement element : menuModel.getChildren()) {
+		// if (element instanceof MMenu) {
+		// processContributions((MMenu) element, isPopup);
+		// }
+		// }
+	}
+
+	/**
+	 * @param menuModel
+	 * @param toContribute
+	 */
+	private void generateContributions(MMenu menuModel,
+			ArrayList<MMenuContribution> toContribute) {
+		HashSet<String> existingMenuIds = new HashSet<String>();
+		HashSet<String> existingSeparatorNames = new HashSet<String>();
+		for (MMenuElement child : menuModel.getChildren()) {
+			String elementId = child.getElementId();
+			if (child instanceof MMenu && elementId != null) {
+				existingMenuIds.add(elementId);
+			} else if (child instanceof MMenuSeparator && elementId != null) {
+				existingSeparatorNames.add(elementId);
+			}
+		}
+
+		boolean done = toContribute.size() == 0;
+		while (!done) {
+			ArrayList<MMenuContribution> curList = new ArrayList<MMenuContribution>(
+					toContribute);
+			int retryCount = toContribute.size();
+			toContribute.clear();
+
+			for (MMenuContribution menuContribution : curList) {
+				if (!processAddition(menuModel, menuContribution,
+						existingMenuIds, existingSeparatorNames)) {
+					toContribute.add(menuContribution);
+				}
+			}
+
+			// We're done if the retryList is now empty (everything done) or
+			// if the list hasn't changed at all (no hope)
+			done = (toContribute.size() == 0)
+					|| (toContribute.size() == retryCount);
+		}
+	}
+
+	/**
+	 * @param menuModel
+	 * @param manager
+	 * @param menuContribution
+	 * @return true if the menuContribution was processed
+	 */
+	private boolean processAddition(MMenu menuModel,
+			MMenuContribution menuContribution,
+			final HashSet<String> existingMenuIds,
+			HashSet<String> existingSeparatorNames) {
+		final ContributionRecord record = new ContributionRecord(menuModel,
+				menuContribution, this);
+		if (!record.mergeIntoModel()) {
+			return false;
+		}
+
+		final IEclipseContext parentContext = modelService
+				.getContainingContext(menuModel);
+		parentContext.runAndTrack(new RunAndTrack() {
+			@Override
+			public boolean changed(IEclipseContext context) {
+				record.updateVisibility(parentContext.getActiveLeaf());
+				return true;
+			}
+		});
+
+		return true;
+	}
+
+	ArrayList<ContributionRecord> getList(MMenuElement item) {
+		ArrayList<ContributionRecord> tmp = sharedElementToRecord.get(item);
+		if (tmp == null) {
+			tmp = new ArrayList<ContributionRecord>();
+			sharedElementToRecord.put(item, tmp);
+		}
+		return tmp;
+	}
+
+	public void removeContributions(MMenu menu) {
+
+	}
+
+	IEclipseContext getContext(MUIElement element) {
+		if (element instanceof MContext) {
+			return ((MContext) element).getContext();
+		}
+		return modelService.getContainingContext(element);
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.emf.addon/.project b/org.eclipse.osbp.vaaclipse.emf.addon/.project
new file mode 100644
index 0000000..8306301
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf.addon/.project
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.vaaclipse.emf.addon</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ds.core.builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.babel.editor.rbeBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.babel.editor.rbeNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.vaaclipse.emf.addon/META-INF/MANIFEST.MF b/org.eclipse.osbp.vaaclipse.emf.addon/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..be4be15
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf.addon/META-INF/MANIFEST.MF
@@ -0,0 +1,17 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.vaaclipse.emf.addon
+Bundle-SymbolicName: org.eclipse.osbp.vaaclipse.emf.addon
+Bundle-Vendor: Eclipse OSBP
+Bundle-Version: 0.9.0.qualifier
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Require-Bundle: javax.annotation;bundle-version="[1.1.0,1.2.0)",
+ org.eclipse.osbp.vaadin.emf;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.vaaclipse.emf;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.e4.core.contexts,
+ org.eclipse.e4.core.di;bundle-version="1.4.0",
+ org.eclipse.osbp.vaaclipse.common.ecview.api;bundle-version="[0.9.0,0.10.0)"
+Import-Package: javax.inject,
+ org.slf4j;version="1.7.2"
+Bundle-ActivationPolicy: lazy
+Export-Package: org.eclipse.osbp.vaaclipse.addon;version="0.9.0"
diff --git a/org.eclipse.osbp.vaaclipse.emf.addon/about.html b/org.eclipse.osbp.vaaclipse.emf.addon/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf.addon/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 1, 2016</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.emf.addon/about.ini b/org.eclipse.osbp.vaaclipse.emf.addon/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf.addon/about.ini
@@ -0,0 +1,17 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%featureText
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=
+
+# Property "appName" contains name of the application (translated)
+appName=%featureName
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+welcomePage=
diff --git a/org.eclipse.osbp.vaaclipse.emf.addon/about.mappings b/org.eclipse.osbp.vaaclipse.emf.addon/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf.addon/about.mappings
@@ -0,0 +1,6 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+0=qualifier
diff --git a/org.eclipse.osbp.vaaclipse.emf.addon/about.properties b/org.eclipse.osbp.vaaclipse.emf.addon/about.properties
new file mode 100644
index 0000000..76c4354
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf.addon/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2012, 2016 - Loetz GmbH&Co.KG (Heidelberg)
+# 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:
+#    Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.vaaclipse.emf.addon
+
+################ blurb property ####################################
+featureText=\
+Copyright (c) 2012-2016 - Loetz GmbH&Co.KG \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+Contributors:\n\
+    Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.vaaclipse.emf.addon/build.properties b/org.eclipse.osbp.vaaclipse.emf.addon/build.properties
new file mode 100644
index 0000000..368929f
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf.addon/build.properties
@@ -0,0 +1,6 @@
+source.. = src/
+output.. = bin/
+bin.includes = about.properties,  about.mappings,  about.ini,  about.html,  META-INF/,\
+               .,\
+               license.html
+src.includes = about.properties,  about.mappings,  about.ini,  about.html,  license.html
diff --git a/org.eclipse.osbp.vaaclipse.emf.addon/epl-v10.html b/org.eclipse.osbp.vaaclipse.emf.addon/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf.addon/epl-v10.html
@@ -0,0 +1,259 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+  body {
+    size: 8.5in 11.0in;
+    margin: 0.25in 0.5in 0.25in 0.5in;
+    tab-interval: 0.5in;
+    }
+  p {  	
+    margin-left: auto;
+    margin-top:  0.5em;
+    margin-bottom: 0.5em;
+    }
+  p.list {
+  	margin-left: 0.5in;
+    margin-top:  0.05em;
+    margin-bottom: 0.05em;
+    }
+  </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">where such changes and/or additions to the Program
+originate from and are distributed by that particular Contributor. A
+Contribution 'originates' from a Contributor if it was added to the
+Program by such Contributor itself or anyone acting on such
+Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii)
+are not derivative works of the Program.</p>
+
+<p>"Contributor" means any person or entity that distributes
+the Program.</p>
+
+<p>"Licensed Patents" mean patent claims licensable by a
+Contributor which are necessarily infringed by the use or sale of its
+Contribution alone or when combined with the Program.</p>
+
+<p>"Program" means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>"Recipient" means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works
+of, publicly display, publicly perform, distribute and sublicense the
+Contribution of such Contributor, if any, and such derivative works, in
+source code and object code form.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell,
+offer to sell, import and otherwise transfer the Contribution of such
+Contributor, if any, in source code and object code form. This patent
+license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor,
+such addition of the Contribution causes such combination to be covered
+by the Licensed Patents. The patent license shall not apply to any other
+combinations which include the Contribution. No hardware per se is
+licensed hereunder.</p>
+
+<p class="list">c) Recipient understands that although each Contributor
+grants the licenses to its Contributions set forth herein, no assurances
+are provided by any Contributor that the Program does not infringe the
+patent or other intellectual property rights of any other entity. Each
+Contributor disclaims any liability to Recipient for claims brought by
+any other entity based on infringement of intellectual property rights
+or otherwise. As a condition to exercising the rights and licenses
+granted hereunder, each Recipient hereby assumes sole responsibility to
+secure any other intellectual property rights needed, if any. For
+example, if a third party patent license is required to allow Recipient
+to distribute the Program, it is Recipient's responsibility to acquire
+that license before distributing the Program.</p>
+
+<p class="list">d) Each Contributor represents that to its knowledge it
+has sufficient copyright rights in its Contribution, if any, to grant
+the copyright license set forth in this Agreement.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">i) effectively disclaims on behalf of all Contributors
+all warranties and conditions, express and implied, including warranties
+or conditions of title and non-infringement, and implied warranties or
+conditions of merchantability and fitness for a particular purpose;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">iv) states that source code for the Program is available
+from such Contributor, and informs licensees how to obtain it in a
+reasonable manner on or through a medium customarily used for software
+exchange.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>Commercial distributors of software may accept certain
+responsibilities with respect to end users, business partners and the
+like. While this license is intended to facilitate the commercial use of
+the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create
+potential liability for other Contributors. Therefore, if a Contributor
+includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and
+indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses")
+arising from claims, lawsuits and other legal actions brought by a third
+party against the Indemnified Contributor to the extent caused by the
+acts or omissions of such Commercial Contributor in connection with its
+distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In
+order to qualify, an Indemnified Contributor must: a) promptly notify
+the Commercial Contributor in writing of such claim, and b) allow the
+Commercial Contributor to control, and cooperate with the Commercial
+Contributor in, the defense and any related settlement negotiations. The
+Indemnified Contributor may participate in any such claim at its own
+expense.</p>
+
+<p>For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor's responsibility
+alone. Under this section, the Commercial Contributor would have to
+defend claims against the other Contributors related to those
+performance claims and warranties, and if a court requires any other
+Contributor to pay any damages as a result, the Commercial Contributor
+must pay those damages.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
+OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
+ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to
+the risks and costs of program errors, compliance with applicable laws,
+damage to or loss of data, programs or equipment, and unavailability or
+interruption of operations.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
+NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of
+the remainder of the terms of this Agreement, and without further action
+by the parties hereto, such provision shall be reformed to the minimum
+extent necessary to make such provision valid and enforceable.</p>
+
+<p>If Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that the
+Program itself (excluding combinations of the Program with other
+software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the
+date such litigation is filed.</p>
+
+<p>All Recipient's rights under this Agreement shall terminate if it
+fails to comply with any of the material terms or conditions of this
+Agreement and does not cure such failure in a reasonable period of time
+after becoming aware of such noncompliance. If all Recipient's rights
+under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive.</p>
+
+<p>Everyone is permitted to copy and distribute copies of this
+Agreement, but in order to avoid inconsistency the Agreement is
+copyrighted and may only be modified in the following manner. The
+Agreement Steward reserves the right to publish new versions (including
+revisions) of this Agreement from time to time. No one other than the
+Agreement Steward has the right to modify this Agreement. The Eclipse
+Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a
+suitable separate entity. Each new version of the Agreement will be
+given a distinguishing version number. The Program (including
+Contributions) may always be distributed subject to the version of the
+Agreement under which it was received. In addition, after a new version
+of the Agreement is published, Contributor may elect to distribute the
+Program (including its Contributions) under the new version. Except as
+expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
+rights or licenses to the intellectual property of any Contributor under
+this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this
+Agreement are reserved.</p>
+
+<p>This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No party
+to this Agreement will bring a legal action under this Agreement more
+than one year after the cause of action arose. Each party waives its
+rights to a jury trial in any resulting litigation.</p>
+
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.emf.addon/license.html b/org.eclipse.osbp.vaaclipse.emf.addon/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf.addon/license.html
@@ -0,0 +1,164 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!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>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>February 1, 2011</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+   (COLLECTIVELY "CONTENT").  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse
+ Foundation is provided to you under the terms and conditions of the 
+Eclipse Public License Version 1.0
+   ("EPL").  A copy of the EPL is provided with this Content and is also
+ 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, "Program" will mean the Content.</p>
+
+<p>Content includes, but is not limited to, source code, object code, 
+documentation and other files maintained in the Eclipse Foundation 
+source code
+   repository ("Repository") in software modules ("Modules") and made 
+available as downloadable archives ("Downloads").</p>
+
+<ul>
+       <li>Content may be structured and packaged into modules to 
+facilitate delivering, extending, and upgrading the Content.  Typical 
+modules may include plug-ins ("Plug-ins"), plug-in fragments 
+("Fragments"), and features ("Features").</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&#8482; ARchive) in a directory named "plugins".</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or 
+Fragments and associated material.  Each Feature may be packaged as a 
+sub-directory in a directory named "features".  Within a Feature, files 
+named "feature.xml" may contain a list of the names and version numbers 
+of the Plug-ins
+      and/or Fragments associated with that Feature.</li>
+       <li>Features may also include other Features ("Included 
+Features"). Within a Feature, files named "feature.xml" may contain a 
+list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be 
+contained in files named "about.html" ("Abouts"). The terms and 
+conditions governing Features and
+Included Features should be contained in files named "license.html" 
+("Feature Licenses").  Abouts and Feature Licenses may be located in any
+ directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named "src" of certain Plug-ins</li>
+       <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is 
+installed using the Provisioning Technology (as defined below), you must
+ agree to a license ("Feature Update License") during the
+installation process.  If the Feature contains Included Features, the 
+Feature Update License should either provide you with the terms and 
+conditions governing the Included Features or
+inform you where you can locate them.  Feature Update Licenses may be 
+found in the "license" property of files named "feature.properties" 
+found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the 
+terms and conditions (or references to such terms and conditions) that 
+govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER 
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.
+  SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND 
+CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, 
+or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions 
+govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, 
+examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager ("Provisioning Technology") for the purpose of 
+allowing users to install software, documentation, information and/or
+   other materials (collectively "Installable Software"). This 
+capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about 
+packaging Installable Software is available at <a href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   ("Specification").</p>
+
+<p>You may use Provisioning Technology to allow other parties to install
+ Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to
+ be presented to, and accepted by, the users of the Provisioning 
+Technology
+   in accordance with the Specification. By using Provisioning 
+Technology in such a manner and making it available in accordance with 
+the
+   Specification, you further acknowledge your agreement to, and the 
+acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur ("Provisioning Process") in 
+which a user may execute the Provisioning Technology
+       on a machine ("Target Machine") with the intent of installing, 
+extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology 
+may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user 
+the terms and conditions that govern the use of the Installable
+       Software ("Installable Software Agreement") and such Installable 
+Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable 
+Software Agreement must inform the user of the terms and conditions that
+ govern
+       the Installable Software and must solicit acceptance by the end 
+user in the manner prescribed in such Installable Software Agreement. 
+Upon such
+       indication of agreement by the user, the provisioning Technology 
+will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are
+ currently may have restrictions on the import, possession, and use, 
+and/or re-export to
+   another country, of encryption software. BEFORE using any encryption 
+software, please check the country's laws, regulations and policies 
+concerning the import,
+   possession, or use, and re-export of encryption software, to see if 
+this is permitted.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.emf.addon/pom.xml b/org.eclipse.osbp.vaaclipse.emf.addon/pom.xml
new file mode 100644
index 0000000..0223ae7
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf.addon/pom.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <artifactId>org.eclipse.osbp.vaaclipse.emf.addon</artifactId>
+    <packaging>eclipse-plugin</packaging>
+    <parent>
+        <groupId>org.eclipse.osbp.vaaclipse</groupId>
+        <artifactId>org.eclipse.osbp.vaaclipse</artifactId>
+        <version>0.9.0-SNAPSHOT</version>
+        <relativePath>..</relativePath>
+    </parent>
+</project>
diff --git a/org.eclipse.osbp.vaaclipse.emf.addon/src/org/eclipse/osbp/vaaclipse/addon/EMFAddon.java b/org.eclipse.osbp.vaaclipse.emf.addon/src/org/eclipse/osbp/vaaclipse/addon/EMFAddon.java
new file mode 100644
index 0000000..438b781
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf.addon/src/org/eclipse/osbp/vaaclipse/addon/EMFAddon.java
@@ -0,0 +1,43 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.addon;
+
+import javax.annotation.PostConstruct;
+import javax.inject.Inject;
+
+import org.eclipse.e4.core.contexts.ContextInjectionFactory;
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.osbp.vaaclipse.common.ecview.api.IECViewContainer;
+import org.eclipse.osbp.vaaclipse.emf.ModeledUiClickController;
+import org.eclipse.osbp.vaadin.emf.api.IModelingContext;
+
+/**
+ * Activates the whole EMF modeling addon and ensures, that require parts are
+ * injected and setup properly.
+ */
+@SuppressWarnings("restriction")
+public class EMFAddon {
+
+	@Inject
+	private IEclipseContext context;
+
+	@PostConstruct
+	protected void setup() {
+
+		context.get(IModelingContext.class);
+		context.get(IECViewContainer.class);
+
+		ModeledUiClickController controller = ContextInjectionFactory.make(
+				ModeledUiClickController.class, context);
+		context.set(ModeledUiClickController.class, controller);
+	}
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.emf.api/.project b/org.eclipse.osbp.vaaclipse.emf.api/.project
new file mode 100644
index 0000000..0a80774
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf.api/.project
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.vaaclipse.emf.api</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.babel.editor.rbeBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.babel.editor.rbeNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.vaaclipse.emf.api/META-INF/MANIFEST.MF b/org.eclipse.osbp.vaaclipse.emf.api/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..9c5b36d
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf.api/META-INF/MANIFEST.MF
@@ -0,0 +1,14 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.vaaclipse.emf.api
+Bundle-SymbolicName: org.eclipse.osbp.vaaclipse.emf.api
+Bundle-Vendor: Eclipse OSBP
+Bundle-Version: 0.9.0.qualifier
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Require-Bundle: org.eclipse.e4.ui.model.workbench,
+ org.eclipse.emf.ecore,
+ org.eclipse.e4.core.contexts,
+ org.eclipse.osbp.vaadin.emf.api;bundle-version="[0.9.0,0.10.0)";visibility:=reexport
+Export-Package: org.eclipse.osbp.vaaclipse.emf.api.dialog;version="0.9.0",
+ org.eclipse.osbp.vaaclipse.emf.api.perspective;version="0.9.0",
+ org.eclipse.osbp.vaaclipse.emf.api.view;version="0.9.0"
diff --git a/org.eclipse.osbp.vaaclipse.emf.api/about.html b/org.eclipse.osbp.vaaclipse.emf.api/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf.api/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 1, 2016</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.emf.api/about.ini b/org.eclipse.osbp.vaaclipse.emf.api/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf.api/about.ini
@@ -0,0 +1,17 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%featureText
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=
+
+# Property "appName" contains name of the application (translated)
+appName=%featureName
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+welcomePage=
diff --git a/org.eclipse.osbp.vaaclipse.emf.api/about.mappings b/org.eclipse.osbp.vaaclipse.emf.api/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf.api/about.mappings
@@ -0,0 +1,6 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+0=qualifier
diff --git a/org.eclipse.osbp.vaaclipse.emf.api/about.properties b/org.eclipse.osbp.vaaclipse.emf.api/about.properties
new file mode 100644
index 0000000..6fa5802
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf.api/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2012, 2016 - Loetz GmbH&Co.KG (Heidelberg)
+# 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:
+#    Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.vaaclipse.emf.api
+
+################ blurb property ####################################
+featureText=\
+Copyright (c) 2012-2016 - Loetz GmbH&Co.KG \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+Contributors:\n\
+    Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.vaaclipse.emf.api/build.properties b/org.eclipse.osbp.vaaclipse.emf.api/build.properties
new file mode 100644
index 0000000..368929f
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf.api/build.properties
@@ -0,0 +1,6 @@
+source.. = src/
+output.. = bin/
+bin.includes = about.properties,  about.mappings,  about.ini,  about.html,  META-INF/,\
+               .,\
+               license.html
+src.includes = about.properties,  about.mappings,  about.ini,  about.html,  license.html
diff --git a/org.eclipse.osbp.vaaclipse.emf.api/epl-v10.html b/org.eclipse.osbp.vaaclipse.emf.api/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf.api/epl-v10.html
@@ -0,0 +1,259 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+  body {
+    size: 8.5in 11.0in;
+    margin: 0.25in 0.5in 0.25in 0.5in;
+    tab-interval: 0.5in;
+    }
+  p {  	
+    margin-left: auto;
+    margin-top:  0.5em;
+    margin-bottom: 0.5em;
+    }
+  p.list {
+  	margin-left: 0.5in;
+    margin-top:  0.05em;
+    margin-bottom: 0.05em;
+    }
+  </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">where such changes and/or additions to the Program
+originate from and are distributed by that particular Contributor. A
+Contribution 'originates' from a Contributor if it was added to the
+Program by such Contributor itself or anyone acting on such
+Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii)
+are not derivative works of the Program.</p>
+
+<p>"Contributor" means any person or entity that distributes
+the Program.</p>
+
+<p>"Licensed Patents" mean patent claims licensable by a
+Contributor which are necessarily infringed by the use or sale of its
+Contribution alone or when combined with the Program.</p>
+
+<p>"Program" means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>"Recipient" means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works
+of, publicly display, publicly perform, distribute and sublicense the
+Contribution of such Contributor, if any, and such derivative works, in
+source code and object code form.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell,
+offer to sell, import and otherwise transfer the Contribution of such
+Contributor, if any, in source code and object code form. This patent
+license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor,
+such addition of the Contribution causes such combination to be covered
+by the Licensed Patents. The patent license shall not apply to any other
+combinations which include the Contribution. No hardware per se is
+licensed hereunder.</p>
+
+<p class="list">c) Recipient understands that although each Contributor
+grants the licenses to its Contributions set forth herein, no assurances
+are provided by any Contributor that the Program does not infringe the
+patent or other intellectual property rights of any other entity. Each
+Contributor disclaims any liability to Recipient for claims brought by
+any other entity based on infringement of intellectual property rights
+or otherwise. As a condition to exercising the rights and licenses
+granted hereunder, each Recipient hereby assumes sole responsibility to
+secure any other intellectual property rights needed, if any. For
+example, if a third party patent license is required to allow Recipient
+to distribute the Program, it is Recipient's responsibility to acquire
+that license before distributing the Program.</p>
+
+<p class="list">d) Each Contributor represents that to its knowledge it
+has sufficient copyright rights in its Contribution, if any, to grant
+the copyright license set forth in this Agreement.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">i) effectively disclaims on behalf of all Contributors
+all warranties and conditions, express and implied, including warranties
+or conditions of title and non-infringement, and implied warranties or
+conditions of merchantability and fitness for a particular purpose;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">iv) states that source code for the Program is available
+from such Contributor, and informs licensees how to obtain it in a
+reasonable manner on or through a medium customarily used for software
+exchange.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>Commercial distributors of software may accept certain
+responsibilities with respect to end users, business partners and the
+like. While this license is intended to facilitate the commercial use of
+the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create
+potential liability for other Contributors. Therefore, if a Contributor
+includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and
+indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses")
+arising from claims, lawsuits and other legal actions brought by a third
+party against the Indemnified Contributor to the extent caused by the
+acts or omissions of such Commercial Contributor in connection with its
+distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In
+order to qualify, an Indemnified Contributor must: a) promptly notify
+the Commercial Contributor in writing of such claim, and b) allow the
+Commercial Contributor to control, and cooperate with the Commercial
+Contributor in, the defense and any related settlement negotiations. The
+Indemnified Contributor may participate in any such claim at its own
+expense.</p>
+
+<p>For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor's responsibility
+alone. Under this section, the Commercial Contributor would have to
+defend claims against the other Contributors related to those
+performance claims and warranties, and if a court requires any other
+Contributor to pay any damages as a result, the Commercial Contributor
+must pay those damages.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
+OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
+ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to
+the risks and costs of program errors, compliance with applicable laws,
+damage to or loss of data, programs or equipment, and unavailability or
+interruption of operations.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
+NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of
+the remainder of the terms of this Agreement, and without further action
+by the parties hereto, such provision shall be reformed to the minimum
+extent necessary to make such provision valid and enforceable.</p>
+
+<p>If Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that the
+Program itself (excluding combinations of the Program with other
+software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the
+date such litigation is filed.</p>
+
+<p>All Recipient's rights under this Agreement shall terminate if it
+fails to comply with any of the material terms or conditions of this
+Agreement and does not cure such failure in a reasonable period of time
+after becoming aware of such noncompliance. If all Recipient's rights
+under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive.</p>
+
+<p>Everyone is permitted to copy and distribute copies of this
+Agreement, but in order to avoid inconsistency the Agreement is
+copyrighted and may only be modified in the following manner. The
+Agreement Steward reserves the right to publish new versions (including
+revisions) of this Agreement from time to time. No one other than the
+Agreement Steward has the right to modify this Agreement. The Eclipse
+Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a
+suitable separate entity. Each new version of the Agreement will be
+given a distinguishing version number. The Program (including
+Contributions) may always be distributed subject to the version of the
+Agreement under which it was received. In addition, after a new version
+of the Agreement is published, Contributor may elect to distribute the
+Program (including its Contributions) under the new version. Except as
+expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
+rights or licenses to the intellectual property of any Contributor under
+this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this
+Agreement are reserved.</p>
+
+<p>This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No party
+to this Agreement will bring a legal action under this Agreement more
+than one year after the cause of action arose. Each party waives its
+rights to a jury trial in any resulting litigation.</p>
+
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.emf.api/license.html b/org.eclipse.osbp.vaaclipse.emf.api/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf.api/license.html
@@ -0,0 +1,164 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!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>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>February 1, 2011</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+   (COLLECTIVELY "CONTENT").  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse
+ Foundation is provided to you under the terms and conditions of the 
+Eclipse Public License Version 1.0
+   ("EPL").  A copy of the EPL is provided with this Content and is also
+ 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, "Program" will mean the Content.</p>
+
+<p>Content includes, but is not limited to, source code, object code, 
+documentation and other files maintained in the Eclipse Foundation 
+source code
+   repository ("Repository") in software modules ("Modules") and made 
+available as downloadable archives ("Downloads").</p>
+
+<ul>
+       <li>Content may be structured and packaged into modules to 
+facilitate delivering, extending, and upgrading the Content.  Typical 
+modules may include plug-ins ("Plug-ins"), plug-in fragments 
+("Fragments"), and features ("Features").</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&#8482; ARchive) in a directory named "plugins".</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or 
+Fragments and associated material.  Each Feature may be packaged as a 
+sub-directory in a directory named "features".  Within a Feature, files 
+named "feature.xml" may contain a list of the names and version numbers 
+of the Plug-ins
+      and/or Fragments associated with that Feature.</li>
+       <li>Features may also include other Features ("Included 
+Features"). Within a Feature, files named "feature.xml" may contain a 
+list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be 
+contained in files named "about.html" ("Abouts"). The terms and 
+conditions governing Features and
+Included Features should be contained in files named "license.html" 
+("Feature Licenses").  Abouts and Feature Licenses may be located in any
+ directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named "src" of certain Plug-ins</li>
+       <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is 
+installed using the Provisioning Technology (as defined below), you must
+ agree to a license ("Feature Update License") during the
+installation process.  If the Feature contains Included Features, the 
+Feature Update License should either provide you with the terms and 
+conditions governing the Included Features or
+inform you where you can locate them.  Feature Update Licenses may be 
+found in the "license" property of files named "feature.properties" 
+found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the 
+terms and conditions (or references to such terms and conditions) that 
+govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER 
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.
+  SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND 
+CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, 
+or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions 
+govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, 
+examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager ("Provisioning Technology") for the purpose of 
+allowing users to install software, documentation, information and/or
+   other materials (collectively "Installable Software"). This 
+capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about 
+packaging Installable Software is available at <a href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   ("Specification").</p>
+
+<p>You may use Provisioning Technology to allow other parties to install
+ Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to
+ be presented to, and accepted by, the users of the Provisioning 
+Technology
+   in accordance with the Specification. By using Provisioning 
+Technology in such a manner and making it available in accordance with 
+the
+   Specification, you further acknowledge your agreement to, and the 
+acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur ("Provisioning Process") in 
+which a user may execute the Provisioning Technology
+       on a machine ("Target Machine") with the intent of installing, 
+extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology 
+may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user 
+the terms and conditions that govern the use of the Installable
+       Software ("Installable Software Agreement") and such Installable 
+Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable 
+Software Agreement must inform the user of the terms and conditions that
+ govern
+       the Installable Software and must solicit acceptance by the end 
+user in the manner prescribed in such Installable Software Agreement. 
+Upon such
+       indication of agreement by the user, the provisioning Technology 
+will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are
+ currently may have restrictions on the import, possession, and use, 
+and/or re-export to
+   another country, of encryption software. BEFORE using any encryption 
+software, please check the country's laws, regulations and policies 
+concerning the import,
+   possession, or use, and re-export of encryption software, to see if 
+this is permitted.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.emf.api/pom.xml b/org.eclipse.osbp.vaaclipse.emf.api/pom.xml
new file mode 100644
index 0000000..953f799
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf.api/pom.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <artifactId>org.eclipse.osbp.vaaclipse.emf.api</artifactId>
+    <packaging>eclipse-plugin</packaging>
+    <parent>
+        <groupId>org.eclipse.osbp.vaaclipse</groupId>
+        <artifactId>org.eclipse.osbp.vaaclipse</artifactId>
+        <version>0.9.0-SNAPSHOT</version>
+        <relativePath>..</relativePath>
+    </parent>
+</project>
diff --git a/org.eclipse.osbp.vaaclipse.emf.api/src/org/eclipse/osbp/vaaclipse/emf/api/dialog/IOpenModelEditDialogService.java b/org.eclipse.osbp.vaaclipse.emf.api/src/org/eclipse/osbp/vaaclipse/emf/api/dialog/IOpenModelEditDialogService.java
new file mode 100644
index 0000000..97c1789
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf.api/src/org/eclipse/osbp/vaaclipse/emf/api/dialog/IOpenModelEditDialogService.java
@@ -0,0 +1,68 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.emf.api.dialog;
+
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * 
+ * @NoImplementByClients use {@link Participant}
+ */
+public interface IOpenModelEditDialogService {
+
+	/**
+	 * The advanced properties dialog. Also advanced properties are being shown.
+	 */
+	public static String TYPE_ADVANCED = "advanced";
+
+	/**
+	 * The simple properties dialog. Only few properties are being shown.
+	 */
+	public static String TYPE_SIMPLE = "simple";
+
+	/**
+	 * Opens an dialog to edit the given modelObjects properties.
+	 * 
+	 * @param modelObject
+	 * @param type
+	 *            the type the dialog to be opened
+	 * @param context
+	 */
+	void openEditDialog(EObject modelObject, String type,
+			IEclipseContext context);
+
+	interface Participant {
+
+		/**
+		 * Opens an dialog to edit the given modelObjects properties.
+		 * 
+		 * @param modelObject
+		 * @param type
+		 *            the type the dialog to be opened
+		 * @param context
+		 */
+		void openEditDialog(EObject modelObject, String type,
+				IEclipseContext context);
+
+		/**
+		 * Returns true, if this instance handles the given modelObject.
+		 * 
+		 * @param modelObject
+		 * @param type
+		 *            the type the dialog to be opened
+		 * @param context
+		 */
+		boolean isFor(EObject modelObject, String type, IEclipseContext context);
+
+	}
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.emf.api/src/org/eclipse/osbp/vaaclipse/emf/api/perspective/IPerspectiveLayoutProvider.java b/org.eclipse.osbp.vaaclipse.emf.api/src/org/eclipse/osbp/vaaclipse/emf/api/perspective/IPerspectiveLayoutProvider.java
new file mode 100644
index 0000000..54da783
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf.api/src/org/eclipse/osbp/vaaclipse/emf/api/perspective/IPerspectiveLayoutProvider.java
@@ -0,0 +1,46 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.emf.api.perspective;
+
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.ui.model.application.ui.advanced.MPerspective;
+
+/**
+ * Provides layouts for a given perspective.
+ */
+public interface IPerspectiveLayoutProvider {
+
+	/**
+	 * Returns the description for the provider.
+	 * 
+	 * @return
+	 */
+	String getDescription(IEclipseContext context);
+
+	/**
+	 * Is called to layout the given perspective. At this point in time, the
+	 * perspective is not added to the stack. You do not have to do so. It will
+	 * be done automatically if the perspective was added.
+	 * 
+	 * @param context
+	 * @param stack
+	 * @param perspective
+	 */
+	void layout(IEclipseContext context, MPerspective perspective);
+
+	/**
+	 * This method is called after the perspective has been added to the stack.
+	 * 
+	 * @param context
+	 * @param perspective
+	 */
+	void postAdded(IEclipseContext context, MPerspective perspective);
+}
diff --git a/org.eclipse.osbp.vaaclipse.emf.api/src/org/eclipse/osbp/vaaclipse/emf/api/view/IConstants.java b/org.eclipse.osbp.vaaclipse.emf.api/src/org/eclipse/osbp/vaaclipse/emf/api/view/IConstants.java
new file mode 100644
index 0000000..024d276
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf.api/src/org/eclipse/osbp/vaaclipse/emf/api/view/IConstants.java
@@ -0,0 +1,37 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.emf.api.view;
+
+import org.eclipse.osbp.vaadin.emf.api.IModelingConstants;
+
+public interface IConstants extends IModelingConstants {
+
+	/**
+	 * This topic is used send an EObject as an input to the tree viewer.
+	 */
+	public static String TOPIC__TREE_INPUT_IN = "osbee/vaaclipse/emf/tree/input";
+
+	/**
+	 * This topic is used send an EObject that was selected by the tree viewer.
+	 */
+	public static String TOPIC__TREE_SELECTION_OUT = "osbee/vaaclipse/emf/tree/selection";
+
+	/**
+	 * Tag used to mark all designer parts in the e4 application model.
+	 */
+	public static String TAG__DESIGNER_PARTS = "designer:part";
+
+	/**
+	 * Tag used to mark designer parts which should only become rendered if the
+	 * design mode is active.
+	 */
+	public static String TAG__DESIGNER_AUTO_VISIBLE = "designer:autoVisible";
+}
diff --git a/org.eclipse.osbp.vaaclipse.emf/.project b/org.eclipse.osbp.vaaclipse.emf/.project
new file mode 100644
index 0000000..fb45b14
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf/.project
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.vaaclipse.emf</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ds.core.builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.babel.editor.rbeBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>com.vaadin.integration.eclipse.addonStylesBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.babel.editor.rbeNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.vaaclipse.emf/META-INF/MANIFEST.MF b/org.eclipse.osbp.vaaclipse.emf/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..7c0ebb7
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf/META-INF/MANIFEST.MF
@@ -0,0 +1,34 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.vaaclipse.emf
+Bundle-SymbolicName: org.eclipse.osbp.vaaclipse.emf
+Bundle-Vendor: Eclipse OSBP
+Bundle-Version: 0.9.0.qualifier
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Service-Component: OSGI-INF/org.eclipse.osbp.vaaclipse.emf.ModelingContextContextFunction.xml,
+ OSGI-INF/org.eclipse.osbp.vaaclipse.emf.dialog.OpenModelEditDialog.xml
+Require-Bundle: org.eclipse.osbp.vaaclipse.emf.api;bundle-version="[0.9.0,0.10.0)";visibility:=reexport,
+ org.eclipse.e4.core.contexts,
+ org.eclipse.osbp.vaaclipse.publicapi;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.e4.core.di,
+ org.eclipse.emf.edit,
+ org.eclipse.e4.ui.workbench,
+ org.eclipse.e4.ui.model.workbench,
+ com.vaadin.server;bundle-version="7.5.7",
+ org.eclipse.e4.core.services,
+ org.eclipse.osbp.vaadin.emf;bundle-version="[0.9.0,0.10.0)",
+ javax.annotation;bundle-version="[1.1.0,1.2.0)",
+ org.eclipse.osbp.runtime.web.vaadin.common;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.runtime.common;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.xtext.common.types;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.osbp.xtext.builder.types.bundles;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.runtime.designer.api
+Import-Package: javax.inject,
+ org.osgi.service.component;version="1.2.2",
+ org.osgi.service.component.annotations;version="1.2.0",
+ org.osgi.service.event;version="1.3.0",
+ org.slf4j;version="1.7.2"
+Bundle-ActivationPolicy: lazy
+Export-Package: org.eclipse.osbp.vaaclipse.emf;x-internal:=true;version="0.9.0",
+ org.eclipse.osbp.vaaclipse.emf.handler;x-internal:=true;version="0.9.0",
+ org.eclipse.osbp.vaaclipse.emf.parts;x-internal:=true;version="0.9.0"
diff --git a/org.eclipse.osbp.vaaclipse.emf/OSGI-INF/org.eclipse.osbp.vaaclipse.emf.ModelingContextContextFunction.xml b/org.eclipse.osbp.vaaclipse.emf/OSGI-INF/org.eclipse.osbp.vaaclipse.emf.ModelingContextContextFunction.xml
new file mode 100644
index 0000000..2aa541f
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf/OSGI-INF/org.eclipse.osbp.vaaclipse.emf.ModelingContextContextFunction.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.eclipse.osbp.vaaclipse.emf.ModelingContextContextFunction">
+   <property name="service.context.key" value="org.eclipse.osbp.vaadin.emf.api.IModelingContext"/>
+   <service>
+      <provide interface="org.eclipse.e4.core.contexts.IContextFunction"/>
+   </service>
+   <implementation class="org.eclipse.osbp.vaaclipse.emf.ModelingContextContextFunction"/>
+</scr:component>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.emf/OSGI-INF/org.eclipse.osbp.vaaclipse.emf.dialog.OpenModelEditDialog.xml b/org.eclipse.osbp.vaaclipse.emf/OSGI-INF/org.eclipse.osbp.vaaclipse.emf.dialog.OpenModelEditDialog.xml
new file mode 100644
index 0000000..e040f4c
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf/OSGI-INF/org.eclipse.osbp.vaaclipse.emf.dialog.OpenModelEditDialog.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.eclipse.osbp.vaaclipse.emf.dialog.OpenModelEditDialog">
+   <service>
+      <provide interface="org.eclipse.osbp.vaaclipse.emf.api.dialog.IOpenModelEditDialogService"/>
+   </service>
+   <reference bind="addParticipant" cardinality="0..n" interface="org.eclipse.osbp.vaaclipse.emf.api.dialog.IOpenModelEditDialogService$Participant" name="Participant" policy="dynamic" unbind="removeParticipant"/>
+   <implementation class="org.eclipse.osbp.vaaclipse.emf.dialog.OpenModelEditDialog"/>
+</scr:component>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.emf/about.html b/org.eclipse.osbp.vaaclipse.emf/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf/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 1, 2016</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.emf/about.ini b/org.eclipse.osbp.vaaclipse.emf/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf/about.ini
@@ -0,0 +1,17 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%featureText
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=
+
+# Property "appName" contains name of the application (translated)
+appName=%featureName
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+welcomePage=
diff --git a/org.eclipse.osbp.vaaclipse.emf/about.mappings b/org.eclipse.osbp.vaaclipse.emf/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf/about.mappings
@@ -0,0 +1,6 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+0=qualifier
diff --git a/org.eclipse.osbp.vaaclipse.emf/about.properties b/org.eclipse.osbp.vaaclipse.emf/about.properties
new file mode 100644
index 0000000..f4cf447
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2012, 2016 - Loetz GmbH&Co.KG (Heidelberg)
+# 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:
+#    Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.vaaclipse.emf
+
+################ blurb property ####################################
+featureText=\
+Copyright (c) 2012-2016 - Loetz GmbH&Co.KG \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+Contributors:\n\
+    Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.vaaclipse.emf/build.properties b/org.eclipse.osbp.vaaclipse.emf/build.properties
new file mode 100644
index 0000000..5b0d2fa
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf/build.properties
@@ -0,0 +1,10 @@
+source.. = src/
+output.. = bin/
+bin.includes = about.properties,  about.mappings,  about.ini,  about.html,  META-INF/,\
+               .,\
+               OSGI-INF/org.eclipse.osbp.vaaclipse.emf.ModelingContextContextFunction.xml,\
+               OSGI-INF/org.eclipse.osbp.vaaclipse.emf.dialog.OpenModelEditDialog.xml,\
+               epl-v10.html,\
+               license.html
+src.includes = about.properties,  about.mappings,  about.ini,  about.html,  license.html,\
+               epl-v10.html
diff --git a/org.eclipse.osbp.vaaclipse.emf/epl-v10.html b/org.eclipse.osbp.vaaclipse.emf/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf/epl-v10.html
@@ -0,0 +1,259 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+  body {
+    size: 8.5in 11.0in;
+    margin: 0.25in 0.5in 0.25in 0.5in;
+    tab-interval: 0.5in;
+    }
+  p {  	
+    margin-left: auto;
+    margin-top:  0.5em;
+    margin-bottom: 0.5em;
+    }
+  p.list {
+  	margin-left: 0.5in;
+    margin-top:  0.05em;
+    margin-bottom: 0.05em;
+    }
+  </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">where such changes and/or additions to the Program
+originate from and are distributed by that particular Contributor. A
+Contribution 'originates' from a Contributor if it was added to the
+Program by such Contributor itself or anyone acting on such
+Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii)
+are not derivative works of the Program.</p>
+
+<p>"Contributor" means any person or entity that distributes
+the Program.</p>
+
+<p>"Licensed Patents" mean patent claims licensable by a
+Contributor which are necessarily infringed by the use or sale of its
+Contribution alone or when combined with the Program.</p>
+
+<p>"Program" means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>"Recipient" means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works
+of, publicly display, publicly perform, distribute and sublicense the
+Contribution of such Contributor, if any, and such derivative works, in
+source code and object code form.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell,
+offer to sell, import and otherwise transfer the Contribution of such
+Contributor, if any, in source code and object code form. This patent
+license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor,
+such addition of the Contribution causes such combination to be covered
+by the Licensed Patents. The patent license shall not apply to any other
+combinations which include the Contribution. No hardware per se is
+licensed hereunder.</p>
+
+<p class="list">c) Recipient understands that although each Contributor
+grants the licenses to its Contributions set forth herein, no assurances
+are provided by any Contributor that the Program does not infringe the
+patent or other intellectual property rights of any other entity. Each
+Contributor disclaims any liability to Recipient for claims brought by
+any other entity based on infringement of intellectual property rights
+or otherwise. As a condition to exercising the rights and licenses
+granted hereunder, each Recipient hereby assumes sole responsibility to
+secure any other intellectual property rights needed, if any. For
+example, if a third party patent license is required to allow Recipient
+to distribute the Program, it is Recipient's responsibility to acquire
+that license before distributing the Program.</p>
+
+<p class="list">d) Each Contributor represents that to its knowledge it
+has sufficient copyright rights in its Contribution, if any, to grant
+the copyright license set forth in this Agreement.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">i) effectively disclaims on behalf of all Contributors
+all warranties and conditions, express and implied, including warranties
+or conditions of title and non-infringement, and implied warranties or
+conditions of merchantability and fitness for a particular purpose;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">iv) states that source code for the Program is available
+from such Contributor, and informs licensees how to obtain it in a
+reasonable manner on or through a medium customarily used for software
+exchange.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>Commercial distributors of software may accept certain
+responsibilities with respect to end users, business partners and the
+like. While this license is intended to facilitate the commercial use of
+the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create
+potential liability for other Contributors. Therefore, if a Contributor
+includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and
+indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses")
+arising from claims, lawsuits and other legal actions brought by a third
+party against the Indemnified Contributor to the extent caused by the
+acts or omissions of such Commercial Contributor in connection with its
+distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In
+order to qualify, an Indemnified Contributor must: a) promptly notify
+the Commercial Contributor in writing of such claim, and b) allow the
+Commercial Contributor to control, and cooperate with the Commercial
+Contributor in, the defense and any related settlement negotiations. The
+Indemnified Contributor may participate in any such claim at its own
+expense.</p>
+
+<p>For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor's responsibility
+alone. Under this section, the Commercial Contributor would have to
+defend claims against the other Contributors related to those
+performance claims and warranties, and if a court requires any other
+Contributor to pay any damages as a result, the Commercial Contributor
+must pay those damages.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
+OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
+ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to
+the risks and costs of program errors, compliance with applicable laws,
+damage to or loss of data, programs or equipment, and unavailability or
+interruption of operations.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
+NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of
+the remainder of the terms of this Agreement, and without further action
+by the parties hereto, such provision shall be reformed to the minimum
+extent necessary to make such provision valid and enforceable.</p>
+
+<p>If Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that the
+Program itself (excluding combinations of the Program with other
+software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the
+date such litigation is filed.</p>
+
+<p>All Recipient's rights under this Agreement shall terminate if it
+fails to comply with any of the material terms or conditions of this
+Agreement and does not cure such failure in a reasonable period of time
+after becoming aware of such noncompliance. If all Recipient's rights
+under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive.</p>
+
+<p>Everyone is permitted to copy and distribute copies of this
+Agreement, but in order to avoid inconsistency the Agreement is
+copyrighted and may only be modified in the following manner. The
+Agreement Steward reserves the right to publish new versions (including
+revisions) of this Agreement from time to time. No one other than the
+Agreement Steward has the right to modify this Agreement. The Eclipse
+Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a
+suitable separate entity. Each new version of the Agreement will be
+given a distinguishing version number. The Program (including
+Contributions) may always be distributed subject to the version of the
+Agreement under which it was received. In addition, after a new version
+of the Agreement is published, Contributor may elect to distribute the
+Program (including its Contributions) under the new version. Except as
+expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
+rights or licenses to the intellectual property of any Contributor under
+this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this
+Agreement are reserved.</p>
+
+<p>This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No party
+to this Agreement will bring a legal action under this Agreement more
+than one year after the cause of action arose. Each party waives its
+rights to a jury trial in any resulting litigation.</p>
+
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.emf/license.html b/org.eclipse.osbp.vaaclipse.emf/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf/license.html
@@ -0,0 +1,164 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!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>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>February 1, 2011</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+   (COLLECTIVELY "CONTENT").  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse
+ Foundation is provided to you under the terms and conditions of the 
+Eclipse Public License Version 1.0
+   ("EPL").  A copy of the EPL is provided with this Content and is also
+ 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, "Program" will mean the Content.</p>
+
+<p>Content includes, but is not limited to, source code, object code, 
+documentation and other files maintained in the Eclipse Foundation 
+source code
+   repository ("Repository") in software modules ("Modules") and made 
+available as downloadable archives ("Downloads").</p>
+
+<ul>
+       <li>Content may be structured and packaged into modules to 
+facilitate delivering, extending, and upgrading the Content.  Typical 
+modules may include plug-ins ("Plug-ins"), plug-in fragments 
+("Fragments"), and features ("Features").</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&#8482; ARchive) in a directory named "plugins".</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or 
+Fragments and associated material.  Each Feature may be packaged as a 
+sub-directory in a directory named "features".  Within a Feature, files 
+named "feature.xml" may contain a list of the names and version numbers 
+of the Plug-ins
+      and/or Fragments associated with that Feature.</li>
+       <li>Features may also include other Features ("Included 
+Features"). Within a Feature, files named "feature.xml" may contain a 
+list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be 
+contained in files named "about.html" ("Abouts"). The terms and 
+conditions governing Features and
+Included Features should be contained in files named "license.html" 
+("Feature Licenses").  Abouts and Feature Licenses may be located in any
+ directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named "src" of certain Plug-ins</li>
+       <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is 
+installed using the Provisioning Technology (as defined below), you must
+ agree to a license ("Feature Update License") during the
+installation process.  If the Feature contains Included Features, the 
+Feature Update License should either provide you with the terms and 
+conditions governing the Included Features or
+inform you where you can locate them.  Feature Update Licenses may be 
+found in the "license" property of files named "feature.properties" 
+found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the 
+terms and conditions (or references to such terms and conditions) that 
+govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER 
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.
+  SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND 
+CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, 
+or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions 
+govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, 
+examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager ("Provisioning Technology") for the purpose of 
+allowing users to install software, documentation, information and/or
+   other materials (collectively "Installable Software"). This 
+capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about 
+packaging Installable Software is available at <a href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   ("Specification").</p>
+
+<p>You may use Provisioning Technology to allow other parties to install
+ Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to
+ be presented to, and accepted by, the users of the Provisioning 
+Technology
+   in accordance with the Specification. By using Provisioning 
+Technology in such a manner and making it available in accordance with 
+the
+   Specification, you further acknowledge your agreement to, and the 
+acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur ("Provisioning Process") in 
+which a user may execute the Provisioning Technology
+       on a machine ("Target Machine") with the intent of installing, 
+extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology 
+may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user 
+the terms and conditions that govern the use of the Installable
+       Software ("Installable Software Agreement") and such Installable 
+Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable 
+Software Agreement must inform the user of the terms and conditions that
+ govern
+       the Installable Software and must solicit acceptance by the end 
+user in the manner prescribed in such Installable Software Agreement. 
+Upon such
+       indication of agreement by the user, the provisioning Technology 
+will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are
+ currently may have restrictions on the import, possession, and use, 
+and/or re-export to
+   another country, of encryption software. BEFORE using any encryption 
+software, please check the country's laws, regulations and policies 
+concerning the import,
+   possession, or use, and re-export of encryption software, to see if 
+this is permitted.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.emf/pom.xml b/org.eclipse.osbp.vaaclipse.emf/pom.xml
new file mode 100644
index 0000000..14e5ac6
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf/pom.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <artifactId>org.eclipse.osbp.vaaclipse.emf</artifactId>
+    <packaging>eclipse-plugin</packaging>
+    <parent>
+        <groupId>org.eclipse.osbp.vaaclipse</groupId>
+        <artifactId>org.eclipse.osbp.vaaclipse</artifactId>
+        <version>0.9.0-SNAPSHOT</version>
+        <relativePath>..</relativePath>
+    </parent>
+</project>
diff --git a/org.eclipse.osbp.vaaclipse.emf/src/org/eclipse/osbp/vaaclipse/emf/ModeledUiClickController.java b/org.eclipse.osbp.vaaclipse.emf/src/org/eclipse/osbp/vaaclipse/emf/ModeledUiClickController.java
new file mode 100644
index 0000000..93fffea
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf/src/org/eclipse/osbp/vaaclipse/emf/ModeledUiClickController.java
@@ -0,0 +1,197 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.emf;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.inject.Inject;
+
+import org.eclipse.e4.core.contexts.Active;
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.core.di.annotations.Optional;
+import org.eclipse.e4.core.services.events.IEventBroker;
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.model.application.ui.advanced.MPerspectiveStack;
+import org.eclipse.e4.ui.model.application.ui.basic.MPart;
+import org.eclipse.e4.ui.model.application.ui.basic.MPartSashContainer;
+import org.eclipse.e4.ui.model.application.ui.basic.MTrimmedWindow;
+import org.eclipse.e4.ui.workbench.UIEvents;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.osbp.vaaclipse.emf.api.view.IConstants;
+import org.eclipse.osbp.vaadin.emf.api.EmfModelElementClickEvent;
+import org.osgi.service.event.Event;
+import org.osgi.service.event.EventHandler;
+import org.eclipse.osbp.vaaclipse.publicapi.events.IWidgetModelAssociations;
+import org.eclipse.osbp.vaaclipse.publicapi.events.VaaclipseUiEvents;
+
+import com.vaadin.event.LayoutEvents;
+import com.vaadin.ui.AbstractOrderedLayout;
+import com.vaadin.ui.Component;
+
+@SuppressWarnings("serial")
+public class ModeledUiClickController implements
+		LayoutEvents.LayoutClickListener, EventHandler {
+
+	@Inject
+	private IEclipseContext context;
+
+	@Inject
+	private IEventBroker eventBroker;
+
+	private boolean enabled;
+
+	private AbstractOrderedLayout content;
+
+	@PostConstruct
+	protected void setup() {
+	}
+
+	@Inject
+	protected void activate(@Active @Optional MTrimmedWindow window) {
+		if (content != null) {
+			return;
+		}
+
+		if (window != null) {
+			content = (AbstractOrderedLayout) window.getContext().get(
+					"rootLayoutClickNotifier");
+		}
+
+		if (content != null) {
+			setEnabled(true);
+		}
+	}
+
+	public void setEnabled(boolean value) {
+		if (content == null) {
+			return;
+		}
+		this.enabled = value;
+		if (enabled) {
+			content.addLayoutClickListener(this);
+
+			// e4 ui model
+			eventBroker.subscribe(
+					UIEvents.ElementContainer.TOPIC_SELECTEDELEMENT, this);
+			eventBroker.subscribe(UIEvents.Item.TOPIC_SELECTED, this);
+			eventBroker.subscribe(VaaclipseUiEvents.Item.TOPIC_EXECUTED, this);
+
+		} else {
+			if (content != null) {
+				content.removeLayoutClickListener(this);
+				content = null;
+			}
+
+			eventBroker.unsubscribe(this);
+		}
+	}
+
+	public boolean isEnabled() {
+		return enabled;
+	}
+
+	@Override
+	public void layoutClick(LayoutEvents.LayoutClickEvent event) {
+		Component clickedUI = event.getClickedComponent();
+		EObject clickedModel = context.get(IWidgetModelAssociations.class)
+				.getElement(clickedUI);
+
+		if (clickedModel == null) {
+			return;
+		}
+
+		// if designer parts where clicked, then do not send event
+		if (!isDesignerPart(clickedModel)) {
+			eventBroker.send(IConstants.TOPIC__ELEMENT_CLICKED,
+					new EmfModelElementClickEvent(clickedUI,
+							(EObject) clickedModel));
+		}
+	}
+
+	@PreDestroy
+	protected void destroy() {
+		if (isEnabled()) {
+			setEnabled(false);
+		}
+		context = null;
+		eventBroker = null;
+		content = null;
+	}
+
+	@Override
+	public void handleEvent(Event event) {
+
+		// if a perspective was selected, we need to send a layoutclick event
+		//
+		if (event.getProperty(UIEvents.EventTags.ELEMENT) instanceof MPerspectiveStack) {
+			// events from e4 application model
+			//
+			String type = (String) event.getProperty(UIEvents.EventTags.TYPE);
+			if (UIEvents.EventTypes.SET.equals(type)
+					&& event.getProperty(UIEvents.EventTags.ATTNAME).equals(
+							"selectedElement")) {
+				MUIElement newValue = (MUIElement) event
+						.getProperty(UIEvents.EventTags.NEW_VALUE);
+				// if designer parts where clicked, then do not send event
+				if (!isDesignerPart((EObject) newValue)) {
+					Object widget = context.get(IWidgetModelAssociations.class)
+							.getWidget((EObject) newValue);
+					eventBroker.send(IConstants.TOPIC__ELEMENT_CLICKED,
+							new EmfModelElementClickEvent(widget,
+									(EObject) newValue));
+				}
+			}
+		} else if (event.getTopic().endsWith(
+				VaaclipseUiEvents.Item.TOPIC_EXECUTED)) {
+			// events from e4 application model -> executed items
+			//
+			MUIElement item = (MUIElement) event.getProperty(IEventBroker.DATA);
+			// if designer parts where clicked, then do not send event
+			if (!isDesignerPart((EObject) item)) {
+				Object widget = context.get(IWidgetModelAssociations.class)
+						.getWidget((EObject) item);
+				eventBroker.send(IConstants.TOPIC__ELEMENT_CLICKED,
+						new EmfModelElementClickEvent(widget, (EObject) item));
+			}
+		}
+	}
+
+	/**
+	 * Check if the model or its parent up to part or sashContainer have the tag
+	 * "designerPart".
+	 * 
+	 * @param element
+	 * @return
+	 */
+	private boolean isDesignerPart(EObject element) {
+		if (element == null) {
+			return false;
+		}
+
+		if (!(element instanceof MUIElement)) {
+			return false;
+		}
+
+		MUIElement uiElement = (MUIElement) element;
+		if (element instanceof MPart || element instanceof MPartSashContainer) {
+			// do not check parents
+			return uiElement.getTags().contains(IConstants.TAG__DESIGNER_PARTS);
+		}
+		if (uiElement.getTags().contains(IConstants.TAG__DESIGNER_PARTS)) {
+			// it is designer part
+			return false;
+		} else {
+			// check up the parent until part or sashcontainer reached
+			EObject parent = ((EObject) element).eContainer();
+			return isDesignerPart(parent);
+		}
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.emf/src/org/eclipse/osbp/vaaclipse/emf/ModelingContext.java b/org.eclipse.osbp.vaaclipse.emf/src/org/eclipse/osbp/vaaclipse/emf/ModelingContext.java
new file mode 100644
index 0000000..0854c6f
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf/src/org/eclipse/osbp/vaaclipse/emf/ModelingContext.java
@@ -0,0 +1,116 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.emf;
+
+import java.util.Collections;
+import java.util.List;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.inject.Inject;
+
+import org.eclipse.e4.ui.model.application.MApplication;
+import org.eclipse.emf.common.command.BasicCommandStack;
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.osbp.vaadin.emf.api.IModelingContext;
+import org.eclipse.osbp.vaaclipse.publicapi.events.IWidgetModelAssociations;
+
+public class ModelingContext implements IModelingContext {
+
+	@Inject
+	private IWidgetModelAssociations uiAssociation;
+
+	@Inject
+	private MApplication application;
+
+	private AdapterFactoryEditingDomain domain;
+
+	private boolean designMode;
+
+	private CustomCommandStack commandStack;
+
+	@PostConstruct
+	protected void setup() {
+		commandStack = new CustomCommandStack();
+		domain = new AdapterFactoryEditingDomain(new ComposedAdapterFactory(
+				ComposedAdapterFactory.Descriptor.Registry.INSTANCE),
+				commandStack);
+
+		// register the domain in the context
+		application.getContext().set(EditingDomain.class, domain);
+	}
+
+	@Override
+	public void loadPerspective(URI uri) {
+		domain.loadResource(uri.toString());
+	}
+
+	@Override
+	public void setPerspective(URI uri) {
+		domain.loadResource(uri.toString());
+	}
+
+	@Override
+	public EditingDomain getEditingDomain() {
+		return domain;
+	}
+
+	@PreDestroy
+	protected void destroy() {
+		// register the domain in the context
+		application.getContext().remove(EditingDomain.class);
+		domain = null;
+	}
+
+	@Override
+	public AdapterFactory getAdapterFactory() {
+		return domain.getAdapterFactory();
+	}
+
+	@Override
+	public CommandStack getCommandStack() {
+		return commandStack;
+	}
+
+	public void persist(URI uri, EObject eObject) {
+
+	}
+
+	public EObject getModelForUi(Object component) {
+		return uiAssociation.getElement(component);
+	}
+
+	@Override
+	public boolean isDesignMode() {
+		return designMode;
+	}
+
+	@Override
+	public void setDesignMode(boolean value) {
+		this.designMode = value;
+	}
+
+	public static class CustomCommandStack extends BasicCommandStack implements
+			IModelingContext.CommandStack {
+		@Override
+		public List<Command> getAllCommands() {
+			return Collections.unmodifiableList(commandList);
+		}
+
+	}
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.emf/src/org/eclipse/osbp/vaaclipse/emf/ModelingContextContextFunction.java b/org.eclipse.osbp.vaaclipse.emf/src/org/eclipse/osbp/vaaclipse/emf/ModelingContextContextFunction.java
new file mode 100644
index 0000000..65a7d99
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf/src/org/eclipse/osbp/vaaclipse/emf/ModelingContextContextFunction.java
@@ -0,0 +1,35 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+ package org.eclipse.osbp.vaaclipse.emf;
+
+import org.eclipse.e4.core.contexts.ContextFunction;
+import org.eclipse.e4.core.contexts.ContextInjectionFactory;
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.ui.model.application.MApplication;
+import org.eclipse.osbp.vaadin.emf.api.IModelingContext;
+import org.osgi.service.component.annotations.Component;
+
+@Component(service = org.eclipse.e4.core.contexts.IContextFunction.class, property = { "service.context.key=org.eclipse.osbp.vaadin.emf.api.IModelingContext" })
+public class ModelingContextContextFunction extends ContextFunction {
+
+	@Override
+	public Object compute(IEclipseContext context, String contextKey) {
+		// add the new object to the application context
+		MApplication application = context.get(MApplication.class);
+		IEclipseContext appCtx = application.getContext();
+
+		IModelingContext modelingContext = ContextInjectionFactory.make(
+				ModelingContext.class, appCtx);
+		appCtx.set(IModelingContext.class, modelingContext);
+		return modelingContext;
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.emf/src/org/eclipse/osbp/vaaclipse/emf/dialog/OpenModelEditDialog.java b/org.eclipse.osbp.vaaclipse.emf/src/org/eclipse/osbp/vaaclipse/emf/dialog/OpenModelEditDialog.java
new file mode 100644
index 0000000..eb1d0cb
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf/src/org/eclipse/osbp/vaaclipse/emf/dialog/OpenModelEditDialog.java
@@ -0,0 +1,57 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.emf.dialog;
+
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
+
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.osbp.vaaclipse.emf.api.dialog.IOpenModelEditDialogService;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
+import org.osgi.service.component.annotations.ReferenceCardinality;
+import org.osgi.service.component.annotations.ReferencePolicy;
+
+@Component
+public class OpenModelEditDialog implements IOpenModelEditDialogService {
+
+	private Set<Participant> participants = Collections
+			.synchronizedSet(new HashSet<Participant>());
+
+	@Override
+	public void openEditDialog(EObject modelObject, String type,
+			IEclipseContext context) {
+		synchronized (participants) {
+			for (Participant participant : participants) {
+				if (participant.isFor(modelObject, type, context)) {
+					participant.openEditDialog(modelObject, type, context);
+				}
+			}
+		}
+	}
+
+	/**
+	 * Called by OSGi-DS
+	 * 
+	 * @param participant
+	 */
+	@Reference(cardinality = ReferenceCardinality.MULTIPLE, policy = ReferencePolicy.DYNAMIC)
+	protected void addParticipant(Participant participant) {
+		participants.add(participant);
+	}
+
+	protected void removeParticipant(Participant participant) {
+		participants.remove(participant);
+	}
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.emf/src/org/eclipse/osbp/vaaclipse/emf/handler/EmfTreeViewLockHandler.java b/org.eclipse.osbp.vaaclipse.emf/src/org/eclipse/osbp/vaaclipse/emf/handler/EmfTreeViewLockHandler.java
new file mode 100644
index 0000000..8de4161
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf/src/org/eclipse/osbp/vaaclipse/emf/handler/EmfTreeViewLockHandler.java
@@ -0,0 +1,35 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osbp.vaaclipse.emf.handler;
+
+import org.eclipse.e4.core.contexts.ContextInjectionFactory;
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.ui.model.application.ui.basic.MPart;
+import org.eclipse.osbp.vaaclipse.emf.parts.EmfModelTreePart;
+
+/**
+ * This handler shows the previous EObject in the tree viewer. Will show
+ * eObject.eContainer().
+ */
+public class EmfTreeViewLockHandler {
+
+	@Execute
+	public void execute(MPart part) {
+		Object object = part.getObject();
+		if (object != null) {
+			IEclipseContext childContext = part.getContext().createChild();
+			childContext.set(EmfModelTreePart.EVENT_TYPE_NAME,
+					EmfModelTreePart.EventType.LOCK);
+			ContextInjectionFactory.invoke(object, Execute.class, childContext);
+		}
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.emf/src/org/eclipse/osbp/vaaclipse/emf/handler/EmfTreeViewPreviousElementHandler.java b/org.eclipse.osbp.vaaclipse.emf/src/org/eclipse/osbp/vaaclipse/emf/handler/EmfTreeViewPreviousElementHandler.java
new file mode 100644
index 0000000..f139920
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf/src/org/eclipse/osbp/vaaclipse/emf/handler/EmfTreeViewPreviousElementHandler.java
@@ -0,0 +1,36 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.emf.handler;
+
+import org.eclipse.e4.core.contexts.ContextInjectionFactory;
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.ui.model.application.ui.basic.MPart;
+import org.eclipse.osbp.vaaclipse.emf.parts.EmfModelTreePart;
+
+/**
+ * This handler shows the previous EObject in the tree viewer. Will show
+ * eObject.eContainer().
+ */
+public class EmfTreeViewPreviousElementHandler {
+
+	@Execute
+	public void execute(MPart part) {
+		Object object = part.getObject();
+		if (object != null) {
+			IEclipseContext childContext = part.getContext().createChild();
+			childContext.set(EmfModelTreePart.EVENT_TYPE_NAME,
+					EmfModelTreePart.EventType.PREVIOUS);
+			ContextInjectionFactory.invoke(object, Execute.class, childContext);
+		}
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.emf/src/org/eclipse/osbp/vaaclipse/emf/parts/EmfCommandStackPart.java b/org.eclipse.osbp.vaaclipse.emf/src/org/eclipse/osbp/vaaclipse/emf/parts/EmfCommandStackPart.java
new file mode 100644
index 0000000..3f3736f
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf/src/org/eclipse/osbp/vaaclipse/emf/parts/EmfCommandStackPart.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.emf.parts;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.inject.Inject;
+
+import org.eclipse.osbp.vaadin.emf.api.IModelingContext;
+import org.eclipse.osbp.vaadin.emf.views.EmfCommandStackTableViewer;
+
+import com.vaadin.ui.VerticalLayout;
+
+public class EmfCommandStackPart {
+
+	@Inject
+	private IModelingContext modelingContext;
+
+	@Inject
+	private VerticalLayout parent;
+
+	private EmfCommandStackTableViewer viewer;
+
+	public EmfCommandStackPart() {
+
+	}
+
+	@PostConstruct
+	protected void setup() {
+		viewer = new EmfCommandStackTableViewer(modelingContext);
+		viewer.setSizeFull();
+		parent.addComponent(viewer);
+	}
+
+	// @Execute
+	// protected void execute(@Named(EVENT_TYPE_NAME) EventType type) {
+	// ECViewBindingDialog.open(viewer.getRootElement(), context, null, this);
+	// }
+
+	@PreDestroy
+	protected void destroy() {
+		// clear all caches in the viewer
+		viewer.dispose();
+		viewer = null;
+	}
+
+	public static enum EventType {
+		UNDO, REDO
+	}
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.emf/src/org/eclipse/osbp/vaaclipse/emf/parts/EmfModelTreePart.java b/org.eclipse.osbp.vaaclipse.emf/src/org/eclipse/osbp/vaaclipse/emf/parts/EmfModelTreePart.java
new file mode 100644
index 0000000..1ed12be
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf/src/org/eclipse/osbp/vaaclipse/emf/parts/EmfModelTreePart.java
@@ -0,0 +1,187 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.emf.parts;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.inject.Inject;
+import javax.inject.Named;
+
+import org.eclipse.e4.core.contexts.Active;
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.core.di.annotations.Optional;
+import org.eclipse.e4.core.services.events.IEventBroker;
+import org.eclipse.e4.ui.model.application.ui.advanced.MPerspective;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.osbp.runtime.designer.api.IWidgetDesignConfigurator;
+import org.eclipse.osbp.runtime.web.vaadin.common.resource.IResourceProvider;
+import org.eclipse.osbp.vaaclipse.emf.api.view.IConstants;
+import org.eclipse.osbp.vaaclipse.publicapi.events.IWidgetModelAssociations;
+import org.eclipse.osbp.vaadin.emf.actions.EObjectActionHandler;
+import org.eclipse.osbp.vaadin.emf.actions.EObjectActionHandler.EditCallback;
+import org.eclipse.osbp.vaadin.emf.api.EmfModelElementClickEvent;
+import org.eclipse.osbp.vaadin.emf.api.IModelingConstants;
+import org.eclipse.osbp.vaadin.emf.api.IModelingContext;
+import org.eclipse.osbp.vaadin.emf.views.EmfModelTreeViewer;
+import org.osgi.service.event.Event;
+import org.osgi.service.event.EventHandler;
+
+import com.vaadin.ui.VerticalLayout;
+
+/**
+ * A tree viewer which can show any EMF Model.
+ */
+public class EmfModelTreePart {
+
+	public final static String EVENT_TYPE_NAME = "eventType";
+
+	@Inject
+	private IModelingContext modelingContext;
+
+	@Inject
+	private IEventBroker eventBroker;
+
+	@Inject
+	private IEclipseContext context;
+
+	@Inject
+	private IResourceProvider resourceProvider;
+
+	@Inject
+	private VerticalLayout parent;
+
+	// @Inject
+	// private IOpenModelEditDialogService dialogOpener;
+
+	@Inject
+	private IWidgetDesignConfigurator dialogOpener;
+
+	@Inject
+	private IWidgetModelAssociations associations;
+
+	private EmfModelTreeViewer viewer;
+
+	private EventHandler selectedEObject;
+
+	/**
+	 * Locks selections
+	 */
+	private boolean locked = false;
+
+	private EditCallback editCallback;
+
+	public EmfModelTreePart() {
+
+	}
+
+	@PostConstruct
+	protected void setup() {
+		// opens a dialog to edit a model element
+		editCallback = new EObjectActionHandler.EditCallback() {
+			@Override
+			public void edit(EObject model) {
+				// dialogOpener.openEditDialog(model,
+				// context);
+				dialogOpener.openEditDialog(associations.getWidget(model),
+						model);
+			}
+		};
+		viewer = new EmfModelTreeViewer(modelingContext, resourceProvider,
+				editCallback);
+		viewer.setSizeFull();
+		parent.addComponent(viewer);
+
+		viewer.addItemClickListener(e -> {
+			eventBroker.send(IConstants.TOPIC__TREE_SELECTION_OUT,
+					e.getItemId());
+		});
+
+		selectedEObject = new EventHandler() {
+			@Override
+			public void handleEvent(Event event) {
+				if (locked) {
+					return;
+				}
+
+				Object data = event.getProperty(IEventBroker.DATA);
+				if (data instanceof EmfModelElementClickEvent) {
+					EmfModelElementClickEvent clickData = (EmfModelElementClickEvent) data;
+					viewer.setRootElement((EObject) clickData.getModelElement());
+					viewer.expand(viewer.getRootElement());
+					viewer.setSelection(viewer.getRootElement());
+				} else {
+					EObject eObject = (EObject) event
+							.getProperty(IEventBroker.DATA);
+					viewer.setRootElement(eObject);
+					viewer.expand(viewer.getRootElement());
+					viewer.setSelection(viewer.getRootElement());
+				}
+			}
+		};
+
+		eventBroker.subscribe(IModelingConstants.TOPIC__ELEMENT_CLICKED,
+				selectedEObject);
+
+	}
+
+	@Inject
+	protected void activePerspective(@Optional @Active MPerspective mPerspective) {
+		// if (viewer != null) {
+		// EObject root = EcoreUtil
+		// .getRootContainer((EObject) mPerspective);
+		// viewer.setRootElement(root);
+		// viewer.expand(root);
+		// }
+	}
+
+	@Execute
+	protected void executeEvent(@Named(EVENT_TYPE_NAME) EventType type) {
+		if (type == EventType.PREVIOUS) {
+			EObject root = viewer.getRootElement();
+			if (root != null) {
+				EObject newRoot = root.eContainer();
+				if (newRoot != null) {
+					EObject selection = viewer.getSelection();
+					viewer.setRootElement(newRoot);
+					if (selection != null) {
+						viewer.expand(selection);
+						viewer.setSelection(selection);
+					}
+				}
+			}
+		} else if (type == EventType.LOCK) {
+			locked = !locked;
+		}
+	}
+
+	@PreDestroy
+	protected void destroy() {
+		eventBroker.unsubscribe(selectedEObject);
+		selectedEObject = null;
+
+		// clear all caches in the viewer
+		viewer.setRootElement(null);
+		viewer.dispose();
+		viewer = null;
+	}
+
+	public enum EventType {
+		/**
+		 * show previous EObject
+		 */
+		PREVIOUS,
+		/**
+		 * Locks the selection
+		 */
+		LOCK
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.emf/src/org/eclipse/osbp/vaaclipse/emf/parts/EmfPropertiesPart.java b/org.eclipse.osbp.vaaclipse.emf/src/org/eclipse/osbp/vaaclipse/emf/parts/EmfPropertiesPart.java
new file mode 100644
index 0000000..bf61057
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf/src/org/eclipse/osbp/vaaclipse/emf/parts/EmfPropertiesPart.java
@@ -0,0 +1,94 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.emf.parts;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.inject.Inject;
+
+import org.eclipse.e4.core.contexts.Active;
+import org.eclipse.e4.core.di.annotations.Optional;
+import org.eclipse.e4.core.services.events.IEventBroker;
+import org.eclipse.e4.ui.model.application.ui.advanced.MPerspective;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.osbp.runtime.web.vaadin.common.resource.IResourceProvider;
+import org.eclipse.osbp.vaaclipse.emf.api.view.IConstants;
+import org.eclipse.osbp.vaadin.emf.api.IModelingContext;
+import org.eclipse.osbp.vaadin.emf.views.EmfPropertyViewer;
+import org.osgi.service.event.Event;
+import org.osgi.service.event.EventHandler;
+
+import com.vaadin.ui.VerticalLayout;
+
+/**
+ * A properties view which can show the properties of any EObject.
+ */
+public class EmfPropertiesPart {
+
+	@Inject
+	private IModelingContext modelingContext;
+
+	@Inject
+	private IEventBroker eventBroker;
+
+	@Inject
+	private IResourceProvider resourceProvider;
+
+	@Inject
+	private VerticalLayout parent;
+
+	private EmfPropertyViewer viewer;
+
+	private EventHandler selectedEObject;
+
+	public EmfPropertiesPart() {
+
+	}
+
+	@PostConstruct
+	protected void setup() {
+		viewer = new EmfPropertyViewer(modelingContext, resourceProvider);
+		viewer.setSizeFull();
+		parent.addComponent(viewer);
+
+		selectedEObject = new EventHandler() {
+			@Override
+			public void handleEvent(Event event) {
+				EObject eObject = (EObject) event
+						.getProperty(IEventBroker.DATA);
+				viewer.setRootElement(eObject);
+			}
+		};
+
+		eventBroker.subscribe(IConstants.TOPIC__TREE_SELECTION_OUT,
+				selectedEObject);
+
+	}
+
+	@Inject
+	protected void activePerspective(@Optional @Active MPerspective mPerspective) {
+		if (viewer != null) {
+			viewer.setRootElement(EcoreUtil
+					.getRootContainer((EObject) mPerspective));
+		}
+	}
+
+	@PreDestroy
+	protected void destroy() {
+		eventBroker.unsubscribe(selectedEObject);
+		selectedEObject = null;
+
+		// clear all caches in the viewer
+		viewer.setRootElement(null);
+		viewer = null;
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.emf/src/org/eclipse/osbp/vaaclipse/emf/parts/JvmTypePropertiesTreePart.java b/org.eclipse.osbp.vaaclipse.emf/src/org/eclipse/osbp/vaaclipse/emf/parts/JvmTypePropertiesTreePart.java
new file mode 100644
index 0000000..55e7464
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf/src/org/eclipse/osbp/vaaclipse/emf/parts/JvmTypePropertiesTreePart.java
@@ -0,0 +1,102 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.emf.parts;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.inject.Inject;
+
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.core.services.events.IEventBroker;
+import org.eclipse.xtext.common.types.JvmGenericType;
+import org.eclipse.osbp.dsl.xtext.types.bundles.BundleSpaceTypeProvider;
+import org.eclipse.osbp.runtime.common.types.IBundleSpace;
+import org.eclipse.osbp.runtime.web.vaadin.common.resource.IResourceProvider;
+import org.eclipse.osbp.vaadin.emf.api.IModelingContext;
+import org.eclipse.osbp.vaadin.emf.views.JvmTypePropertiesTreeViewer;
+import org.osgi.service.event.EventHandler;
+
+import com.vaadin.ui.VerticalLayout;
+
+public class JvmTypePropertiesTreePart {
+
+	public final static String EVENT_TYPE_NAME = "eventType";
+
+	@Inject
+	private IModelingContext modelingContext;
+
+	@Inject
+	private IEclipseContext context;
+
+	@Inject
+	private IEventBroker eventBroker;
+
+	@Inject
+	private IResourceProvider resourceProvider;
+
+	@Inject
+	private VerticalLayout parent;
+
+	private JvmTypePropertiesTreeViewer viewer;
+
+	private EventHandler selectedEObject;
+
+	public JvmTypePropertiesTreePart() {
+
+	}
+
+	@SuppressWarnings("restriction")
+	@PostConstruct
+	protected void setup() {
+
+		BundleSpaceTypeProvider typeProvider = new BundleSpaceTypeProvider(
+				context.get(IBundleSpace.class), modelingContext
+						.getEditingDomain().getResourceSet(), null);
+
+		viewer = new JvmTypePropertiesTreeViewer(modelingContext,
+				resourceProvider, typeProvider);
+		viewer.setSizeFull();
+		parent.addComponent(viewer);
+
+		viewer.setRootElement("com.osbp.myfirstapp.dtos.CompanyDto");
+
+		// selectedEObject = new EventHandler() {
+		// @Override
+		// public void handleEvent(Event event) {
+		// Object data = event.getProperty(IEventBroker.DATA);
+		// if (data instanceof EmfModelElementClickEvent) {
+		// EmfModelElementClickEvent clickData = (EmfModelElementClickEvent)
+		// data;
+		// viewer.setRootElement((EObject) clickData.getModelElement());
+		// viewer.expand(viewer.getRootElement());
+		// viewer.setSelection(viewer.getRootElement());
+		// } else {
+		// EObject eObject = (EObject) event
+		// .getProperty(IEventBroker.DATA);
+		// viewer.setRootElement(eObject);
+		// viewer.expand(viewer.getRootElement());
+		// viewer.setSelection(viewer.getRootElement());
+		// }
+		// }
+		// };
+	}
+
+	@PreDestroy
+	protected void destroy() {
+		// eventBroker.unsubscribe(selectedEObject);
+		selectedEObject = null;
+
+		// clear all caches in the viewer
+		viewer.setRootElement((JvmGenericType) null);
+		viewer.dispose();
+		viewer = null;
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.feature.core/.project b/org.eclipse.osbp.vaaclipse.feature.core/.project
new file mode 100644
index 0000000..8f23e56
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.feature.core/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.vaaclipse.feature.runtime.core</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.FeatureBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+		<nature>org.eclipse.pde.FeatureNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.vaaclipse.feature.core/build.properties b/org.eclipse.osbp.vaaclipse.feature.core/build.properties
new file mode 100644
index 0000000..a1f605d
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.feature.core/build.properties
@@ -0,0 +1,6 @@
+bin.includes = feature.xml,\
+               feature.properties,\
+               epl-v10.html,\
+               license.html
+src.includes = license.html,\
+               epl-v10.html
diff --git a/org.eclipse.osbp.vaaclipse.feature.core/epl-v10.html b/org.eclipse.osbp.vaaclipse.feature.core/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.feature.core/epl-v10.html
@@ -0,0 +1,259 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+  body {
+    size: 8.5in 11.0in;
+    margin: 0.25in 0.5in 0.25in 0.5in;
+    tab-interval: 0.5in;
+    }
+  p {  	
+    margin-left: auto;
+    margin-top:  0.5em;
+    margin-bottom: 0.5em;
+    }
+  p.list {
+  	margin-left: 0.5in;
+    margin-top:  0.05em;
+    margin-bottom: 0.05em;
+    }
+  </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">where such changes and/or additions to the Program
+originate from and are distributed by that particular Contributor. A
+Contribution 'originates' from a Contributor if it was added to the
+Program by such Contributor itself or anyone acting on such
+Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii)
+are not derivative works of the Program.</p>
+
+<p>"Contributor" means any person or entity that distributes
+the Program.</p>
+
+<p>"Licensed Patents" mean patent claims licensable by a
+Contributor which are necessarily infringed by the use or sale of its
+Contribution alone or when combined with the Program.</p>
+
+<p>"Program" means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>"Recipient" means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works
+of, publicly display, publicly perform, distribute and sublicense the
+Contribution of such Contributor, if any, and such derivative works, in
+source code and object code form.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell,
+offer to sell, import and otherwise transfer the Contribution of such
+Contributor, if any, in source code and object code form. This patent
+license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor,
+such addition of the Contribution causes such combination to be covered
+by the Licensed Patents. The patent license shall not apply to any other
+combinations which include the Contribution. No hardware per se is
+licensed hereunder.</p>
+
+<p class="list">c) Recipient understands that although each Contributor
+grants the licenses to its Contributions set forth herein, no assurances
+are provided by any Contributor that the Program does not infringe the
+patent or other intellectual property rights of any other entity. Each
+Contributor disclaims any liability to Recipient for claims brought by
+any other entity based on infringement of intellectual property rights
+or otherwise. As a condition to exercising the rights and licenses
+granted hereunder, each Recipient hereby assumes sole responsibility to
+secure any other intellectual property rights needed, if any. For
+example, if a third party patent license is required to allow Recipient
+to distribute the Program, it is Recipient's responsibility to acquire
+that license before distributing the Program.</p>
+
+<p class="list">d) Each Contributor represents that to its knowledge it
+has sufficient copyright rights in its Contribution, if any, to grant
+the copyright license set forth in this Agreement.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">i) effectively disclaims on behalf of all Contributors
+all warranties and conditions, express and implied, including warranties
+or conditions of title and non-infringement, and implied warranties or
+conditions of merchantability and fitness for a particular purpose;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">iv) states that source code for the Program is available
+from such Contributor, and informs licensees how to obtain it in a
+reasonable manner on or through a medium customarily used for software
+exchange.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>Commercial distributors of software may accept certain
+responsibilities with respect to end users, business partners and the
+like. While this license is intended to facilitate the commercial use of
+the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create
+potential liability for other Contributors. Therefore, if a Contributor
+includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and
+indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses")
+arising from claims, lawsuits and other legal actions brought by a third
+party against the Indemnified Contributor to the extent caused by the
+acts or omissions of such Commercial Contributor in connection with its
+distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In
+order to qualify, an Indemnified Contributor must: a) promptly notify
+the Commercial Contributor in writing of such claim, and b) allow the
+Commercial Contributor to control, and cooperate with the Commercial
+Contributor in, the defense and any related settlement negotiations. The
+Indemnified Contributor may participate in any such claim at its own
+expense.</p>
+
+<p>For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor's responsibility
+alone. Under this section, the Commercial Contributor would have to
+defend claims against the other Contributors related to those
+performance claims and warranties, and if a court requires any other
+Contributor to pay any damages as a result, the Commercial Contributor
+must pay those damages.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
+OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
+ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to
+the risks and costs of program errors, compliance with applicable laws,
+damage to or loss of data, programs or equipment, and unavailability or
+interruption of operations.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
+NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of
+the remainder of the terms of this Agreement, and without further action
+by the parties hereto, such provision shall be reformed to the minimum
+extent necessary to make such provision valid and enforceable.</p>
+
+<p>If Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that the
+Program itself (excluding combinations of the Program with other
+software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the
+date such litigation is filed.</p>
+
+<p>All Recipient's rights under this Agreement shall terminate if it
+fails to comply with any of the material terms or conditions of this
+Agreement and does not cure such failure in a reasonable period of time
+after becoming aware of such noncompliance. If all Recipient's rights
+under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive.</p>
+
+<p>Everyone is permitted to copy and distribute copies of this
+Agreement, but in order to avoid inconsistency the Agreement is
+copyrighted and may only be modified in the following manner. The
+Agreement Steward reserves the right to publish new versions (including
+revisions) of this Agreement from time to time. No one other than the
+Agreement Steward has the right to modify this Agreement. The Eclipse
+Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a
+suitable separate entity. Each new version of the Agreement will be
+given a distinguishing version number. The Program (including
+Contributions) may always be distributed subject to the version of the
+Agreement under which it was received. In addition, after a new version
+of the Agreement is published, Contributor may elect to distribute the
+Program (including its Contributions) under the new version. Except as
+expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
+rights or licenses to the intellectual property of any Contributor under
+this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this
+Agreement are reserved.</p>
+
+<p>This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No party
+to this Agreement will bring a legal action under this Agreement more
+than one year after the cause of action arose. Each party waives its
+rights to a jury trial in any resulting litigation.</p>
+
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.feature.core/feature.properties b/org.eclipse.osbp.vaaclipse.feature.core/feature.properties
new file mode 100644
index 0000000..3fada88
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.feature.core/feature.properties
@@ -0,0 +1,169 @@
+###############################################################################
+# Copyright (c) 2013 Rushan Gilmullin, Florian Pirchner, Sopot Scela
+# 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:
+#    Rushan Gilmullin, Florian Pirchner, Sopot Scela - initial API and implementation
+###############################################################################
+# feature.properties
+# contains externalized strings for feature.xml
+# "%foo" in feature.xml corresponds to the key "foo" in this file
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file should be translated.
+
+# "featureName" property - name of the feature
+featureName = Vaaclipse core bundles 
+
+# "providerName" property - name of the company that provides the feature
+providerName=Eclipse OSBP
+
+# "description" property - description of the feature
+description=. 
+
+# "updateSiteName" property - label for the update site
+updateSiteName=
+
+# "copyright" property - text of the "Feature Update Copyright"
+copyright=\
+Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+################ end of copyright property ####################################
+
+# "licenseURL" property - URL of the "Feature License"
+# do not translate value - just change to point to a locale-specific HTML page
+licenseURL=license.html
+
+# "license" property - text of the "Feature Update License"
+# should be plain text version of license agreement pointed to be "licenseURL"
+license=\
+Eclipse Foundation Software User Agreement\n\
+February 1, 2011\n\
+\n\
+Usage Of Content\n\
+\n\
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
+OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
+USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
+AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
+NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU\n\
+AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
+AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
+OR NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE\n\
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
+OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
+BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
+\n\
+Applicable Licenses\n\
+\n\
+Unless otherwise indicated, all Content made available by the\n\
+Eclipse Foundation is provided to you under the terms and conditions of\n\
+the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is\n\
+provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
+For purposes of the EPL, "Program" will mean the Content.\n\
+\n\
+Content includes, but is not limited to, source code, object code,\n\
+documentation and other files maintained in the Eclipse Foundation source code\n\
+repository ("Repository") in software modules ("Modules") and made available\n\
+as downloadable archives ("Downloads").\n\
+\n\
+       - Content may be structured and packaged into modules to facilitate delivering,\n\
+         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+         plug-in fragments ("Fragments"), and features ("Features").\n\
+       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+         in a directory named "plugins".\n\
+       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
+         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\n\
+The terms and conditions governing Plug-ins and Fragments should be\n\
+contained in files named "about.html" ("Abouts"). The terms and\n\
+conditions governing Features and Included Features should be contained\n\
+in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
+Licenses may be located in any directory of a Download or Module\n\
+including, but not limited to the following locations:\n\
+\n\
+       - The top-level (root) directory\n\
+       - Plug-in and Fragment directories\n\
+       - Inside Plug-ins and Fragments packaged as JARs\n\
+       - Sub-directories of the directory named "src" of certain Plug-ins\n\
+       - Feature directories\n\
+\n\
+Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
+Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
+Update License") during the installation process. If the Feature contains\n\
+Included Features, the Feature Update License should either provide you\n\
+with the terms and conditions governing the Included Features or inform\n\
+you where you can locate them. Feature Update Licenses may be found in\n\
+the "license" property of files named "feature.properties" found within a Feature.\n\
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the\n\
+terms and conditions (or references to such terms and conditions) that\n\
+govern your use of the associated Content in that directory.\n\
+\n\
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
+SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
+\n\
+       - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
+       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\n\
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
+TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
+is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
+govern that particular Content.\n\
+\n\
+\n\Use of Provisioning Technology\n\
+\n\
+The Eclipse Foundation makes available provisioning software, examples of which include,\n\
+but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
+the purpose of allowing users to install software, documentation, information and/or\n\
+other materials (collectively "Installable Software"). This capability is provided with\n\
+the intent of allowing such users to install, extend and update Eclipse-based products.\n\
+Information about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
+\n\
+You may use Provisioning Technology to allow other parties to install Installable Software.\n\
+You shall be responsible for enabling the applicable license agreements relating to the\n\
+Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
+in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
+making it available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the following:\n\
+\n\
+       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+          extending or updating the functionality of an Eclipse-based product.\n\
+       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+          with the Specification. Such Installable Software Agreement must inform the user of the\n\
+          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+          indication of agreement by the user, the provisioning Technology will complete installation\n\
+          of the Installable Software.\n\
+\n\
+Cryptography\n\
+\n\
+Content may contain encryption software. The country in which you are\n\
+currently may have restrictions on the import, possession, and use,\n\
+and/or re-export to another country, of encryption software. BEFORE\n\
+using any encryption software, please check the country's laws,\n\
+regulations and policies concerning the import, possession, or use, and\n\
+re-export of encryption software, to see if this is permitted.\n\
+\n\
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+########### end of license property ##########################################
diff --git a/org.eclipse.osbp.vaaclipse.feature.core/feature.xml b/org.eclipse.osbp.vaaclipse.feature.core/feature.xml
new file mode 100644
index 0000000..d782cbc
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.feature.core/feature.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) -->
+<!--# 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: -->
+<!--#     Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation -->
+<!--#======================================================================= -->
+
+<feature
+        id="org.eclipse.osbp.vaaclipse.feature.core"
+        label="%featureName"
+        version="0.9.0.qualifier"
+        provider-name="%providerName">
+        
+    <description>
+        %description
+    </description>
+        
+    <copyright>
+        %copyright
+    </copyright>
+        
+    <license url="%licenseURL">
+        %license
+    </license>
+        
+    <plugin
+        id="org.eclipse.osbp.vaaclipse.common.ecview.api"
+        download-size="0"
+        install-size="0"
+        version="0.0.0"
+        unpack="false"/>
+
+	<plugin
+        id="org.eclipse.osbp.vaaclipse.theme"
+        download-size="0"
+        install-size="0"
+        version="0.0.0"
+        unpack="false"/>
+        
+</feature>
diff --git a/org.eclipse.osbp.vaaclipse.feature.core/license.html b/org.eclipse.osbp.vaaclipse.feature.core/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.feature.core/license.html
@@ -0,0 +1,164 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!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>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>February 1, 2011</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+   (COLLECTIVELY "CONTENT").  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse
+ Foundation is provided to you under the terms and conditions of the 
+Eclipse Public License Version 1.0
+   ("EPL").  A copy of the EPL is provided with this Content and is also
+ 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, "Program" will mean the Content.</p>
+
+<p>Content includes, but is not limited to, source code, object code, 
+documentation and other files maintained in the Eclipse Foundation 
+source code
+   repository ("Repository") in software modules ("Modules") and made 
+available as downloadable archives ("Downloads").</p>
+
+<ul>
+       <li>Content may be structured and packaged into modules to 
+facilitate delivering, extending, and upgrading the Content.  Typical 
+modules may include plug-ins ("Plug-ins"), plug-in fragments 
+("Fragments"), and features ("Features").</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&#8482; ARchive) in a directory named "plugins".</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or 
+Fragments and associated material.  Each Feature may be packaged as a 
+sub-directory in a directory named "features".  Within a Feature, files 
+named "feature.xml" may contain a list of the names and version numbers 
+of the Plug-ins
+      and/or Fragments associated with that Feature.</li>
+       <li>Features may also include other Features ("Included 
+Features"). Within a Feature, files named "feature.xml" may contain a 
+list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be 
+contained in files named "about.html" ("Abouts"). The terms and 
+conditions governing Features and
+Included Features should be contained in files named "license.html" 
+("Feature Licenses").  Abouts and Feature Licenses may be located in any
+ directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named "src" of certain Plug-ins</li>
+       <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is 
+installed using the Provisioning Technology (as defined below), you must
+ agree to a license ("Feature Update License") during the
+installation process.  If the Feature contains Included Features, the 
+Feature Update License should either provide you with the terms and 
+conditions governing the Included Features or
+inform you where you can locate them.  Feature Update Licenses may be 
+found in the "license" property of files named "feature.properties" 
+found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the 
+terms and conditions (or references to such terms and conditions) that 
+govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER 
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.
+  SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND 
+CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, 
+or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions 
+govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, 
+examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager ("Provisioning Technology") for the purpose of 
+allowing users to install software, documentation, information and/or
+   other materials (collectively "Installable Software"). This 
+capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about 
+packaging Installable Software is available at <a href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   ("Specification").</p>
+
+<p>You may use Provisioning Technology to allow other parties to install
+ Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to
+ be presented to, and accepted by, the users of the Provisioning 
+Technology
+   in accordance with the Specification. By using Provisioning 
+Technology in such a manner and making it available in accordance with 
+the
+   Specification, you further acknowledge your agreement to, and the 
+acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur ("Provisioning Process") in 
+which a user may execute the Provisioning Technology
+       on a machine ("Target Machine") with the intent of installing, 
+extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology 
+may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user 
+the terms and conditions that govern the use of the Installable
+       Software ("Installable Software Agreement") and such Installable 
+Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable 
+Software Agreement must inform the user of the terms and conditions that
+ govern
+       the Installable Software and must solicit acceptance by the end 
+user in the manner prescribed in such Installable Software Agreement. 
+Upon such
+       indication of agreement by the user, the provisioning Technology 
+will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are
+ currently may have restrictions on the import, possession, and use, 
+and/or re-export to
+   another country, of encryption software. BEFORE using any encryption 
+software, please check the country's laws, regulations and policies 
+concerning the import,
+   possession, or use, and re-export of encryption software, to see if 
+this is permitted.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.feature.core/pom.xml b/org.eclipse.osbp.vaaclipse.feature.core/pom.xml
new file mode 100644
index 0000000..08ceefb
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.feature.core/pom.xml
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	<parent>
+		<groupId>org.eclipse.osbp.vaaclipse</groupId>
+		<artifactId>org.eclipse.osbp.vaaclipse</artifactId>
+		<version>0.9.0-SNAPSHOT</version>
+	</parent>
+	<artifactId>org.eclipse.osbp.vaaclipse.feature.core</artifactId>
+	<packaging>eclipse-feature</packaging>
+	<build>
+		<plugins>
+			<plugin>
+				<groupId>org.eclipse.tycho.extras</groupId>
+				<artifactId>tycho-source-feature-plugin</artifactId>
+				<version>${tychoExtrasVersion}</version>
+				<executions>
+					<execution>
+						<id>source-feature</id>
+						<phase>package</phase>
+						<goals>
+							<goal>source-feature</goal>
+						</goals>
+					</execution>
+				</executions>
+				<configuration>
+					<excludes>
+					</excludes>
+					<labelSuffix> (source)</labelSuffix>
+				</configuration>
+			</plugin>
+
+			<plugin>
+				<!-- workaround while bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=398250 
+					is not fixed -->
+				<groupId>org.eclipse.tycho</groupId>
+				<artifactId>tycho-p2-plugin</artifactId>
+				<version>${tycho-version}</version>
+				<executions>
+					<execution>
+						<id>attached-p2-metadata</id>
+						<phase>package</phase>
+						<goals>
+							<goal>p2-metadata</goal>
+						</goals>
+					</execution>
+				</executions>
+			</plugin>
+			<plugin>
+				<artifactId>maven-javadoc-plugin</artifactId>
+				<executions>
+					<execution>
+						<id>javadoc-jar</id>
+						<phase>package</phase>
+						<goals>
+							<goal>jar</goal>
+						</goals>
+					</execution>
+				</executions>
+			</plugin>
+		</plugins>
+	</build>
+
+</project>
diff --git a/org.eclipse.osbp.vaaclipse.feature.core/src/main/javadoc/README.txt b/org.eclipse.osbp.vaaclipse.feature.core/src/main/javadoc/README.txt
new file mode 100644
index 0000000..831da7e
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.feature.core/src/main/javadoc/README.txt
@@ -0,0 +1 @@
+Resource folder for javadoc resources.
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.feature.core/src/overview.html b/org.eclipse.osbp.vaaclipse.feature.core/src/overview.html
new file mode 100644
index 0000000..090b65f
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.feature.core/src/overview.html
@@ -0,0 +1,10 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+  <HEAD>
+    <TITLE>OSBP Vaaclipse Core</TITLE>
+  </HEAD>
+  <BODY>
+    The <b>OSBP Vaaclipse Core Feature</b>  ...
+	
+  </BODY>
+</HTML>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.feature.runtime.core/.project b/org.eclipse.osbp.vaaclipse.feature.runtime.core/.project
new file mode 100644
index 0000000..8f23e56
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.feature.runtime.core/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.vaaclipse.feature.runtime.core</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.FeatureBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+		<nature>org.eclipse.pde.FeatureNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.vaaclipse.feature.runtime.core/build.properties b/org.eclipse.osbp.vaaclipse.feature.runtime.core/build.properties
new file mode 100644
index 0000000..a1f605d
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.feature.runtime.core/build.properties
@@ -0,0 +1,6 @@
+bin.includes = feature.xml,\
+               feature.properties,\
+               epl-v10.html,\
+               license.html
+src.includes = license.html,\
+               epl-v10.html
diff --git a/org.eclipse.osbp.vaaclipse.feature.runtime.core/epl-v10.html b/org.eclipse.osbp.vaaclipse.feature.runtime.core/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.feature.runtime.core/epl-v10.html
@@ -0,0 +1,259 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+  body {
+    size: 8.5in 11.0in;
+    margin: 0.25in 0.5in 0.25in 0.5in;
+    tab-interval: 0.5in;
+    }
+  p {  	
+    margin-left: auto;
+    margin-top:  0.5em;
+    margin-bottom: 0.5em;
+    }
+  p.list {
+  	margin-left: 0.5in;
+    margin-top:  0.05em;
+    margin-bottom: 0.05em;
+    }
+  </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">where such changes and/or additions to the Program
+originate from and are distributed by that particular Contributor. A
+Contribution 'originates' from a Contributor if it was added to the
+Program by such Contributor itself or anyone acting on such
+Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii)
+are not derivative works of the Program.</p>
+
+<p>"Contributor" means any person or entity that distributes
+the Program.</p>
+
+<p>"Licensed Patents" mean patent claims licensable by a
+Contributor which are necessarily infringed by the use or sale of its
+Contribution alone or when combined with the Program.</p>
+
+<p>"Program" means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>"Recipient" means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works
+of, publicly display, publicly perform, distribute and sublicense the
+Contribution of such Contributor, if any, and such derivative works, in
+source code and object code form.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell,
+offer to sell, import and otherwise transfer the Contribution of such
+Contributor, if any, in source code and object code form. This patent
+license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor,
+such addition of the Contribution causes such combination to be covered
+by the Licensed Patents. The patent license shall not apply to any other
+combinations which include the Contribution. No hardware per se is
+licensed hereunder.</p>
+
+<p class="list">c) Recipient understands that although each Contributor
+grants the licenses to its Contributions set forth herein, no assurances
+are provided by any Contributor that the Program does not infringe the
+patent or other intellectual property rights of any other entity. Each
+Contributor disclaims any liability to Recipient for claims brought by
+any other entity based on infringement of intellectual property rights
+or otherwise. As a condition to exercising the rights and licenses
+granted hereunder, each Recipient hereby assumes sole responsibility to
+secure any other intellectual property rights needed, if any. For
+example, if a third party patent license is required to allow Recipient
+to distribute the Program, it is Recipient's responsibility to acquire
+that license before distributing the Program.</p>
+
+<p class="list">d) Each Contributor represents that to its knowledge it
+has sufficient copyright rights in its Contribution, if any, to grant
+the copyright license set forth in this Agreement.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">i) effectively disclaims on behalf of all Contributors
+all warranties and conditions, express and implied, including warranties
+or conditions of title and non-infringement, and implied warranties or
+conditions of merchantability and fitness for a particular purpose;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">iv) states that source code for the Program is available
+from such Contributor, and informs licensees how to obtain it in a
+reasonable manner on or through a medium customarily used for software
+exchange.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>Commercial distributors of software may accept certain
+responsibilities with respect to end users, business partners and the
+like. While this license is intended to facilitate the commercial use of
+the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create
+potential liability for other Contributors. Therefore, if a Contributor
+includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and
+indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses")
+arising from claims, lawsuits and other legal actions brought by a third
+party against the Indemnified Contributor to the extent caused by the
+acts or omissions of such Commercial Contributor in connection with its
+distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In
+order to qualify, an Indemnified Contributor must: a) promptly notify
+the Commercial Contributor in writing of such claim, and b) allow the
+Commercial Contributor to control, and cooperate with the Commercial
+Contributor in, the defense and any related settlement negotiations. The
+Indemnified Contributor may participate in any such claim at its own
+expense.</p>
+
+<p>For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor's responsibility
+alone. Under this section, the Commercial Contributor would have to
+defend claims against the other Contributors related to those
+performance claims and warranties, and if a court requires any other
+Contributor to pay any damages as a result, the Commercial Contributor
+must pay those damages.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
+OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
+ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to
+the risks and costs of program errors, compliance with applicable laws,
+damage to or loss of data, programs or equipment, and unavailability or
+interruption of operations.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
+NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of
+the remainder of the terms of this Agreement, and without further action
+by the parties hereto, such provision shall be reformed to the minimum
+extent necessary to make such provision valid and enforceable.</p>
+
+<p>If Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that the
+Program itself (excluding combinations of the Program with other
+software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the
+date such litigation is filed.</p>
+
+<p>All Recipient's rights under this Agreement shall terminate if it
+fails to comply with any of the material terms or conditions of this
+Agreement and does not cure such failure in a reasonable period of time
+after becoming aware of such noncompliance. If all Recipient's rights
+under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive.</p>
+
+<p>Everyone is permitted to copy and distribute copies of this
+Agreement, but in order to avoid inconsistency the Agreement is
+copyrighted and may only be modified in the following manner. The
+Agreement Steward reserves the right to publish new versions (including
+revisions) of this Agreement from time to time. No one other than the
+Agreement Steward has the right to modify this Agreement. The Eclipse
+Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a
+suitable separate entity. Each new version of the Agreement will be
+given a distinguishing version number. The Program (including
+Contributions) may always be distributed subject to the version of the
+Agreement under which it was received. In addition, after a new version
+of the Agreement is published, Contributor may elect to distribute the
+Program (including its Contributions) under the new version. Except as
+expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
+rights or licenses to the intellectual property of any Contributor under
+this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this
+Agreement are reserved.</p>
+
+<p>This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No party
+to this Agreement will bring a legal action under this Agreement more
+than one year after the cause of action arose. Each party waives its
+rights to a jury trial in any resulting litigation.</p>
+
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.feature.runtime.core/feature.properties b/org.eclipse.osbp.vaaclipse.feature.runtime.core/feature.properties
new file mode 100644
index 0000000..fa97fe0
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.feature.runtime.core/feature.properties
@@ -0,0 +1,169 @@
+###############################################################################
+# Copyright (c) 2013 Rushan Gilmullin, Florian Pirchner, Sopot Scela
+# 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:
+#    Rushan Gilmullin, Florian Pirchner, Sopot Scela - initial API and implementation
+###############################################################################
+# feature.properties
+# contains externalized strings for feature.xml
+# "%foo" in feature.xml corresponds to the key "foo" in this file
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file should be translated.
+
+# "featureName" property - name of the feature
+featureName = Vaaclipse core bundles for runtime
+
+# "providerName" property - name of the company that provides the feature
+providerName=Eclipse OSBP
+
+# "description" property - description of the feature
+description=. 
+
+# "updateSiteName" property - label for the update site
+updateSiteName=
+
+# "copyright" property - text of the "Feature Update Copyright"
+copyright=\
+Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+################ end of copyright property ####################################
+
+# "licenseURL" property - URL of the "Feature License"
+# do not translate value - just change to point to a locale-specific HTML page
+licenseURL=license.html
+
+# "license" property - text of the "Feature Update License"
+# should be plain text version of license agreement pointed to be "licenseURL"
+license=\
+Eclipse Foundation Software User Agreement\n\
+February 1, 2011\n\
+\n\
+Usage Of Content\n\
+\n\
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
+OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
+USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
+AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
+NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU\n\
+AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
+AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
+OR NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE\n\
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
+OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
+BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
+\n\
+Applicable Licenses\n\
+\n\
+Unless otherwise indicated, all Content made available by the\n\
+Eclipse Foundation is provided to you under the terms and conditions of\n\
+the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is\n\
+provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
+For purposes of the EPL, "Program" will mean the Content.\n\
+\n\
+Content includes, but is not limited to, source code, object code,\n\
+documentation and other files maintained in the Eclipse Foundation source code\n\
+repository ("Repository") in software modules ("Modules") and made available\n\
+as downloadable archives ("Downloads").\n\
+\n\
+       - Content may be structured and packaged into modules to facilitate delivering,\n\
+         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+         plug-in fragments ("Fragments"), and features ("Features").\n\
+       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+         in a directory named "plugins".\n\
+       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
+         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\n\
+The terms and conditions governing Plug-ins and Fragments should be\n\
+contained in files named "about.html" ("Abouts"). The terms and\n\
+conditions governing Features and Included Features should be contained\n\
+in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
+Licenses may be located in any directory of a Download or Module\n\
+including, but not limited to the following locations:\n\
+\n\
+       - The top-level (root) directory\n\
+       - Plug-in and Fragment directories\n\
+       - Inside Plug-ins and Fragments packaged as JARs\n\
+       - Sub-directories of the directory named "src" of certain Plug-ins\n\
+       - Feature directories\n\
+\n\
+Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
+Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
+Update License") during the installation process. If the Feature contains\n\
+Included Features, the Feature Update License should either provide you\n\
+with the terms and conditions governing the Included Features or inform\n\
+you where you can locate them. Feature Update Licenses may be found in\n\
+the "license" property of files named "feature.properties" found within a Feature.\n\
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the\n\
+terms and conditions (or references to such terms and conditions) that\n\
+govern your use of the associated Content in that directory.\n\
+\n\
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
+SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
+\n\
+       - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
+       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\n\
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
+TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
+is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
+govern that particular Content.\n\
+\n\
+\n\Use of Provisioning Technology\n\
+\n\
+The Eclipse Foundation makes available provisioning software, examples of which include,\n\
+but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
+the purpose of allowing users to install software, documentation, information and/or\n\
+other materials (collectively "Installable Software"). This capability is provided with\n\
+the intent of allowing such users to install, extend and update Eclipse-based products.\n\
+Information about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
+\n\
+You may use Provisioning Technology to allow other parties to install Installable Software.\n\
+You shall be responsible for enabling the applicable license agreements relating to the\n\
+Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
+in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
+making it available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the following:\n\
+\n\
+       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+          extending or updating the functionality of an Eclipse-based product.\n\
+       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+          with the Specification. Such Installable Software Agreement must inform the user of the\n\
+          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+          indication of agreement by the user, the provisioning Technology will complete installation\n\
+          of the Installable Software.\n\
+\n\
+Cryptography\n\
+\n\
+Content may contain encryption software. The country in which you are\n\
+currently may have restrictions on the import, possession, and use,\n\
+and/or re-export to another country, of encryption software. BEFORE\n\
+using any encryption software, please check the country's laws,\n\
+regulations and policies concerning the import, possession, or use, and\n\
+re-export of encryption software, to see if this is permitted.\n\
+\n\
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+########### end of license property ##########################################
diff --git a/org.eclipse.osbp.vaaclipse.feature.runtime.core/feature.xml b/org.eclipse.osbp.vaaclipse.feature.runtime.core/feature.xml
new file mode 100644
index 0000000..bdfe27f
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.feature.runtime.core/feature.xml
@@ -0,0 +1,206 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) -->
+<!--# 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: -->
+<!--#     Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation -->
+<!--#======================================================================= -->
+
+<feature
+        id="org.eclipse.osbp.vaaclipse.feature.runtime.core"
+        label="%featureName"
+        version="0.9.0.qualifier"
+        provider-name="%providerName">
+        
+    <description>
+        %description
+    </description>
+        
+    <copyright>
+        %copyright
+    </copyright>
+        
+    <license url="%licenseURL">
+        %license
+    </license>
+        
+    <requires>
+        <import plugin="org.eclipse.e4.core.commands" version="0.10.2" match="equivalent"/>
+        <import plugin="org.eclipse.e4.core.contexts" version="1.3.100" match="equivalent"/>
+        <import plugin="org.eclipse.e4.core.di" version="1.4.0" match="equivalent"/>
+        <import plugin="org.eclipse.e4.core.di.extensions" version="0.12.0" match="equivalent"/>
+        <import plugin="org.eclipse.e4.core.services" version="1.2.0" match="equivalent"/>
+        <import plugin="org.eclipse.e4.ui.model.workbench" version="1.1.0" match="equivalent"/>
+        <import plugin="org.eclipse.e4.ui.css.core" version="0.10.100" match="equivalent"/>
+        <import plugin="org.eclipse.e4.ui.di" version="1.0.0" match="equivalent"/>
+        <import plugin="org.eclipse.e4.ui.services" version="1.1.0" match="equivalent"/>
+    </requires>
+        	
+    <plugin
+        id="org.eclipse.e4.ui.model.workbench.edit"
+        download-size="0"
+        install-size="0"
+        version="0.0.0"
+        unpack="false"/>
+        
+    <plugin
+        id="org.eclipse.osbp.commons"
+        download-size="0"
+        install-size="0"
+        version="0.0.0"
+        unpack="false"/>
+        
+    <plugin
+        id="org.eclipse.osbp.e4extension"
+        download-size="0"
+        install-size="0"
+        version="0.0.0"
+        unpack="false"/>
+        
+    <plugin
+        id="org.eclipse.osbp.e4modelextension"
+        download-size="0"
+        install-size="0"
+        version="0.0.0"
+        unpack="false"/>
+        
+    <plugin
+        id="org.eclipse.osbp.vaaclipse.additions"
+        download-size="0"
+        install-size="0"
+        version="0.0.0"
+        unpack="false"/>
+        
+    <plugin
+        id="org.eclipse.osbp.vaaclipse.api"
+        download-size="0"
+        install-size="0"
+        version="0.0.0"
+        unpack="false"/>
+        
+    <plugin
+        id="org.eclipse.osbp.vaaclipse.behaviour"
+        download-size="0"
+        install-size="0"
+        version="0.0.0"
+        unpack="false"/>
+        
+    <plugin
+        id="org.eclipse.osbp.vaaclipse.common.ecview.api"
+        download-size="0"
+        install-size="0"
+        version="0.0.0"
+        unpack="false"/>
+        
+    <plugin
+        id="org.eclipse.osbp.vaaclipse.contributions"
+        download-size="0"
+        install-size="0"
+        version="0.0.0"
+        unpack="false"/>
+        
+    <plugin
+        id="org.eclipse.osbp.vaaclipse.emf"
+        download-size="0"
+        install-size="0"
+        version="0.0.0"
+        unpack="false"/>
+        
+    <plugin
+        id="org.eclipse.osbp.vaaclipse.emf.addon"
+        download-size="0"
+        install-size="0"
+        version="0.0.0"
+        unpack="false"/>
+        
+    <plugin
+        id="org.eclipse.osbp.vaaclipse.emf.api"
+        download-size="0"
+        install-size="0"
+        version="0.0.0"
+        unpack="false"/>
+        
+    <plugin
+        id="org.eclipse.osbp.vaaclipse.presentation"
+        download-size="0"
+        install-size="0"
+        version="0.0.0"
+        unpack="false"/>
+        
+    <plugin
+        id="org.eclipse.osbp.vaaclipse.publicapi"
+        download-size="0"
+        install-size="0"
+        version="0.0.0"
+        unpack="false"/>
+        
+    <plugin
+        id="org.eclipse.osbp.vaaclipse.resources"
+        download-size="0"
+        install-size="0"
+        version="0.0.0"
+        fragment="true"
+        unpack="false"/>
+        
+    <plugin
+        id="org.eclipse.osbp.vaaclipse.theme"
+        download-size="0"
+        install-size="0"
+        version="0.0.0"
+        unpack="false"/>
+        
+    <plugin
+        id="org.eclipse.osbp.vaaclipse.util"
+        download-size="0"
+        install-size="0"
+        version="0.0.0"
+        unpack="false"/>
+        
+    <plugin
+        id="org.eclipse.osbp.vaadin"
+        download-size="0"
+        install-size="0"
+        version="0.0.0"
+        unpack="false"/>
+        
+    <plugin
+        id="org.eclipse.osbp.vaaclipse.widgets"
+        download-size="0"
+        install-size="0"
+        version="0.0.0"
+        unpack="false"/>
+        
+    <plugin
+        id="org.eclipse.osbp.e4.injector.objectsuppliers"
+        download-size="0"
+        install-size="0"
+        version="0.0.0"
+        unpack="false"/>
+        
+    <plugin
+        id="org.eclipse.osbp.vaaclipse.widgetset.default"
+        download-size="0"
+        install-size="0"
+        version="0.0.0"
+        unpack="false"/>
+        
+    <plugin
+        id="org.eclipse.osbp.vaaclipse.ui.preferences.model"
+        download-size="0"
+        install-size="0"
+        version="0.0.0"
+        unpack="false"/>
+        
+    <plugin
+        id="org.eclipse.osbp.vaaclipse.ui.preferences.addon"
+        download-size="0"
+        install-size="0"
+        version="0.0.0"
+        unpack="false"/>
+        
+        
+</feature>
diff --git a/org.eclipse.osbp.vaaclipse.feature.runtime.core/license.html b/org.eclipse.osbp.vaaclipse.feature.runtime.core/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.feature.runtime.core/license.html
@@ -0,0 +1,164 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!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>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>February 1, 2011</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+   (COLLECTIVELY "CONTENT").  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse
+ Foundation is provided to you under the terms and conditions of the 
+Eclipse Public License Version 1.0
+   ("EPL").  A copy of the EPL is provided with this Content and is also
+ 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, "Program" will mean the Content.</p>
+
+<p>Content includes, but is not limited to, source code, object code, 
+documentation and other files maintained in the Eclipse Foundation 
+source code
+   repository ("Repository") in software modules ("Modules") and made 
+available as downloadable archives ("Downloads").</p>
+
+<ul>
+       <li>Content may be structured and packaged into modules to 
+facilitate delivering, extending, and upgrading the Content.  Typical 
+modules may include plug-ins ("Plug-ins"), plug-in fragments 
+("Fragments"), and features ("Features").</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&#8482; ARchive) in a directory named "plugins".</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or 
+Fragments and associated material.  Each Feature may be packaged as a 
+sub-directory in a directory named "features".  Within a Feature, files 
+named "feature.xml" may contain a list of the names and version numbers 
+of the Plug-ins
+      and/or Fragments associated with that Feature.</li>
+       <li>Features may also include other Features ("Included 
+Features"). Within a Feature, files named "feature.xml" may contain a 
+list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be 
+contained in files named "about.html" ("Abouts"). The terms and 
+conditions governing Features and
+Included Features should be contained in files named "license.html" 
+("Feature Licenses").  Abouts and Feature Licenses may be located in any
+ directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named "src" of certain Plug-ins</li>
+       <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is 
+installed using the Provisioning Technology (as defined below), you must
+ agree to a license ("Feature Update License") during the
+installation process.  If the Feature contains Included Features, the 
+Feature Update License should either provide you with the terms and 
+conditions governing the Included Features or
+inform you where you can locate them.  Feature Update Licenses may be 
+found in the "license" property of files named "feature.properties" 
+found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the 
+terms and conditions (or references to such terms and conditions) that 
+govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER 
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.
+  SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND 
+CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, 
+or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions 
+govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, 
+examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager ("Provisioning Technology") for the purpose of 
+allowing users to install software, documentation, information and/or
+   other materials (collectively "Installable Software"). This 
+capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about 
+packaging Installable Software is available at <a href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   ("Specification").</p>
+
+<p>You may use Provisioning Technology to allow other parties to install
+ Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to
+ be presented to, and accepted by, the users of the Provisioning 
+Technology
+   in accordance with the Specification. By using Provisioning 
+Technology in such a manner and making it available in accordance with 
+the
+   Specification, you further acknowledge your agreement to, and the 
+acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur ("Provisioning Process") in 
+which a user may execute the Provisioning Technology
+       on a machine ("Target Machine") with the intent of installing, 
+extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology 
+may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user 
+the terms and conditions that govern the use of the Installable
+       Software ("Installable Software Agreement") and such Installable 
+Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable 
+Software Agreement must inform the user of the terms and conditions that
+ govern
+       the Installable Software and must solicit acceptance by the end 
+user in the manner prescribed in such Installable Software Agreement. 
+Upon such
+       indication of agreement by the user, the provisioning Technology 
+will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are
+ currently may have restrictions on the import, possession, and use, 
+and/or re-export to
+   another country, of encryption software. BEFORE using any encryption 
+software, please check the country's laws, regulations and policies 
+concerning the import,
+   possession, or use, and re-export of encryption software, to see if 
+this is permitted.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.feature.runtime.core/pom.xml b/org.eclipse.osbp.vaaclipse.feature.runtime.core/pom.xml
new file mode 100644
index 0000000..7834577
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.feature.runtime.core/pom.xml
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	<parent>
+		<groupId>org.eclipse.osbp.vaaclipse</groupId>
+		<artifactId>org.eclipse.osbp.vaaclipse</artifactId>
+		<version>0.9.0-SNAPSHOT</version>
+	</parent>
+	<artifactId>org.eclipse.osbp.vaaclipse.feature.runtime.core</artifactId>
+	<packaging>eclipse-feature</packaging>
+	<build>
+		<plugins>
+			<plugin>
+				<groupId>org.eclipse.tycho.extras</groupId>
+				<artifactId>tycho-source-feature-plugin</artifactId>
+				<version>${tychoExtrasVersion}</version>
+				<executions>
+					<execution>
+						<id>source-feature</id>
+						<phase>package</phase>
+						<goals>
+							<goal>source-feature</goal>
+						</goals>
+					</execution>
+				</executions>
+				<configuration>
+					<excludes>
+						<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.model.workbench"/>
+						<plugin id="org.eclipse.e4.ui.css.core"/>
+						<plugin id="org.eclipse.e4.ui.di"/>
+						<plugin id="org.eclipse.e4.ui.services"/>
+					</excludes>
+					<labelSuffix> (source)</labelSuffix>
+				</configuration>
+			</plugin>
+
+			<plugin>
+				<!-- workaround while bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=398250 
+					is not fixed -->
+				<groupId>org.eclipse.tycho</groupId>
+				<artifactId>tycho-p2-plugin</artifactId>
+				<version>${tycho-version}</version>
+				<executions>
+					<execution>
+						<id>attached-p2-metadata</id>
+						<phase>package</phase>
+						<goals>
+							<goal>p2-metadata</goal>
+						</goals>
+					</execution>
+				</executions>
+			</plugin>
+			<plugin>
+				<artifactId>maven-javadoc-plugin</artifactId>
+				<executions>
+					<execution>
+						<id>javadoc-jar</id>
+						<phase>package</phase>
+						<goals>
+							<goal>jar</goal>
+						</goals>
+					</execution>
+				</executions>
+			</plugin>
+		</plugins>
+	</build>
+
+</project>
diff --git a/org.eclipse.osbp.vaaclipse.feature.runtime.core/src/main/javadoc/README.txt b/org.eclipse.osbp.vaaclipse.feature.runtime.core/src/main/javadoc/README.txt
new file mode 100644
index 0000000..831da7e
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.feature.runtime.core/src/main/javadoc/README.txt
@@ -0,0 +1 @@
+Resource folder for javadoc resources.
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.feature.runtime.core/src/overview.html b/org.eclipse.osbp.vaaclipse.feature.runtime.core/src/overview.html
new file mode 100644
index 0000000..fb02672
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.feature.runtime.core/src/overview.html
@@ -0,0 +1,9 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+<head>
+	<title>OSBP runtime web vaadin components feature Overview</title>
+</head>
+<body>
+<p>The <b>OSBP&nbsp;feature</b>&nbsp;contains ...</p>
+</body>
+</html>
diff --git a/org.eclipse.osbp.vaaclipse.feature.target.core/.project b/org.eclipse.osbp.vaaclipse.feature.target.core/.project
new file mode 100644
index 0000000..8f23e56
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.feature.target.core/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.vaaclipse.feature.runtime.core</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.FeatureBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+		<nature>org.eclipse.pde.FeatureNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.vaaclipse.feature.target.core/build.properties b/org.eclipse.osbp.vaaclipse.feature.target.core/build.properties
new file mode 100644
index 0000000..94fb2b8
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.feature.target.core/build.properties
@@ -0,0 +1,6 @@
+bin.includes = feature.xml,\
+               feature.properties,\
+               epl-v10.html,\
+               license.html
+src.includes = epl-v10.html,\
+               license.html
diff --git a/org.eclipse.osbp.vaaclipse.feature.target.core/epl-v10.html b/org.eclipse.osbp.vaaclipse.feature.target.core/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.feature.target.core/epl-v10.html
@@ -0,0 +1,259 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+  body {
+    size: 8.5in 11.0in;
+    margin: 0.25in 0.5in 0.25in 0.5in;
+    tab-interval: 0.5in;
+    }
+  p {  	
+    margin-left: auto;
+    margin-top:  0.5em;
+    margin-bottom: 0.5em;
+    }
+  p.list {
+  	margin-left: 0.5in;
+    margin-top:  0.05em;
+    margin-bottom: 0.05em;
+    }
+  </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">where such changes and/or additions to the Program
+originate from and are distributed by that particular Contributor. A
+Contribution 'originates' from a Contributor if it was added to the
+Program by such Contributor itself or anyone acting on such
+Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii)
+are not derivative works of the Program.</p>
+
+<p>"Contributor" means any person or entity that distributes
+the Program.</p>
+
+<p>"Licensed Patents" mean patent claims licensable by a
+Contributor which are necessarily infringed by the use or sale of its
+Contribution alone or when combined with the Program.</p>
+
+<p>"Program" means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>"Recipient" means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works
+of, publicly display, publicly perform, distribute and sublicense the
+Contribution of such Contributor, if any, and such derivative works, in
+source code and object code form.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell,
+offer to sell, import and otherwise transfer the Contribution of such
+Contributor, if any, in source code and object code form. This patent
+license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor,
+such addition of the Contribution causes such combination to be covered
+by the Licensed Patents. The patent license shall not apply to any other
+combinations which include the Contribution. No hardware per se is
+licensed hereunder.</p>
+
+<p class="list">c) Recipient understands that although each Contributor
+grants the licenses to its Contributions set forth herein, no assurances
+are provided by any Contributor that the Program does not infringe the
+patent or other intellectual property rights of any other entity. Each
+Contributor disclaims any liability to Recipient for claims brought by
+any other entity based on infringement of intellectual property rights
+or otherwise. As a condition to exercising the rights and licenses
+granted hereunder, each Recipient hereby assumes sole responsibility to
+secure any other intellectual property rights needed, if any. For
+example, if a third party patent license is required to allow Recipient
+to distribute the Program, it is Recipient's responsibility to acquire
+that license before distributing the Program.</p>
+
+<p class="list">d) Each Contributor represents that to its knowledge it
+has sufficient copyright rights in its Contribution, if any, to grant
+the copyright license set forth in this Agreement.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">i) effectively disclaims on behalf of all Contributors
+all warranties and conditions, express and implied, including warranties
+or conditions of title and non-infringement, and implied warranties or
+conditions of merchantability and fitness for a particular purpose;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">iv) states that source code for the Program is available
+from such Contributor, and informs licensees how to obtain it in a
+reasonable manner on or through a medium customarily used for software
+exchange.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>Commercial distributors of software may accept certain
+responsibilities with respect to end users, business partners and the
+like. While this license is intended to facilitate the commercial use of
+the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create
+potential liability for other Contributors. Therefore, if a Contributor
+includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and
+indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses")
+arising from claims, lawsuits and other legal actions brought by a third
+party against the Indemnified Contributor to the extent caused by the
+acts or omissions of such Commercial Contributor in connection with its
+distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In
+order to qualify, an Indemnified Contributor must: a) promptly notify
+the Commercial Contributor in writing of such claim, and b) allow the
+Commercial Contributor to control, and cooperate with the Commercial
+Contributor in, the defense and any related settlement negotiations. The
+Indemnified Contributor may participate in any such claim at its own
+expense.</p>
+
+<p>For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor's responsibility
+alone. Under this section, the Commercial Contributor would have to
+defend claims against the other Contributors related to those
+performance claims and warranties, and if a court requires any other
+Contributor to pay any damages as a result, the Commercial Contributor
+must pay those damages.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
+OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
+ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to
+the risks and costs of program errors, compliance with applicable laws,
+damage to or loss of data, programs or equipment, and unavailability or
+interruption of operations.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
+NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of
+the remainder of the terms of this Agreement, and without further action
+by the parties hereto, such provision shall be reformed to the minimum
+extent necessary to make such provision valid and enforceable.</p>
+
+<p>If Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that the
+Program itself (excluding combinations of the Program with other
+software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the
+date such litigation is filed.</p>
+
+<p>All Recipient's rights under this Agreement shall terminate if it
+fails to comply with any of the material terms or conditions of this
+Agreement and does not cure such failure in a reasonable period of time
+after becoming aware of such noncompliance. If all Recipient's rights
+under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive.</p>
+
+<p>Everyone is permitted to copy and distribute copies of this
+Agreement, but in order to avoid inconsistency the Agreement is
+copyrighted and may only be modified in the following manner. The
+Agreement Steward reserves the right to publish new versions (including
+revisions) of this Agreement from time to time. No one other than the
+Agreement Steward has the right to modify this Agreement. The Eclipse
+Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a
+suitable separate entity. Each new version of the Agreement will be
+given a distinguishing version number. The Program (including
+Contributions) may always be distributed subject to the version of the
+Agreement under which it was received. In addition, after a new version
+of the Agreement is published, Contributor may elect to distribute the
+Program (including its Contributions) under the new version. Except as
+expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
+rights or licenses to the intellectual property of any Contributor under
+this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this
+Agreement are reserved.</p>
+
+<p>This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No party
+to this Agreement will bring a legal action under this Agreement more
+than one year after the cause of action arose. Each party waives its
+rights to a jury trial in any resulting litigation.</p>
+
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.feature.target.core/feature.properties b/org.eclipse.osbp.vaaclipse.feature.target.core/feature.properties
new file mode 100644
index 0000000..eff52b4
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.feature.target.core/feature.properties
@@ -0,0 +1,169 @@
+###############################################################################
+# Copyright (c) 2013 Rushan Gilmullin, Florian Pirchner, Sopot Scela
+# 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:
+#    Rushan Gilmullin, Florian Pirchner, Sopot Scela - initial API and implementation
+###############################################################################
+# feature.properties
+# contains externalized strings for feature.xml
+# "%foo" in feature.xml corresponds to the key "foo" in this file
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file should be translated.
+
+# "featureName" property - name of the feature
+featureName = Vaaclipse core bundles for target platform
+
+# "providerName" property - name of the company that provides the feature
+providerName=Eclipse OSBP
+
+# "description" property - description of the feature
+description=. 
+
+# "updateSiteName" property - label for the update site
+updateSiteName=
+
+# "copyright" property - text of the "Feature Update Copyright"
+copyright=\
+Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+################ end of copyright property ####################################
+
+# "licenseURL" property - URL of the "Feature License"
+# do not translate value - just change to point to a locale-specific HTML page
+licenseURL=license.html
+
+# "license" property - text of the "Feature Update License"
+# should be plain text version of license agreement pointed to be "licenseURL"
+license=\
+Eclipse Foundation Software User Agreement\n\
+February 1, 2011\n\
+\n\
+Usage Of Content\n\
+\n\
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
+OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
+USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
+AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
+NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU\n\
+AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
+AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
+OR NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE\n\
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
+OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
+BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
+\n\
+Applicable Licenses\n\
+\n\
+Unless otherwise indicated, all Content made available by the\n\
+Eclipse Foundation is provided to you under the terms and conditions of\n\
+the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is\n\
+provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
+For purposes of the EPL, "Program" will mean the Content.\n\
+\n\
+Content includes, but is not limited to, source code, object code,\n\
+documentation and other files maintained in the Eclipse Foundation source code\n\
+repository ("Repository") in software modules ("Modules") and made available\n\
+as downloadable archives ("Downloads").\n\
+\n\
+       - Content may be structured and packaged into modules to facilitate delivering,\n\
+         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+         plug-in fragments ("Fragments"), and features ("Features").\n\
+       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+         in a directory named "plugins".\n\
+       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
+         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\n\
+The terms and conditions governing Plug-ins and Fragments should be\n\
+contained in files named "about.html" ("Abouts"). The terms and\n\
+conditions governing Features and Included Features should be contained\n\
+in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
+Licenses may be located in any directory of a Download or Module\n\
+including, but not limited to the following locations:\n\
+\n\
+       - The top-level (root) directory\n\
+       - Plug-in and Fragment directories\n\
+       - Inside Plug-ins and Fragments packaged as JARs\n\
+       - Sub-directories of the directory named "src" of certain Plug-ins\n\
+       - Feature directories\n\
+\n\
+Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
+Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
+Update License") during the installation process. If the Feature contains\n\
+Included Features, the Feature Update License should either provide you\n\
+with the terms and conditions governing the Included Features or inform\n\
+you where you can locate them. Feature Update Licenses may be found in\n\
+the "license" property of files named "feature.properties" found within a Feature.\n\
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the\n\
+terms and conditions (or references to such terms and conditions) that\n\
+govern your use of the associated Content in that directory.\n\
+\n\
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
+SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
+\n\
+       - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
+       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\n\
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
+TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
+is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
+govern that particular Content.\n\
+\n\
+\n\Use of Provisioning Technology\n\
+\n\
+The Eclipse Foundation makes available provisioning software, examples of which include,\n\
+but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
+the purpose of allowing users to install software, documentation, information and/or\n\
+other materials (collectively "Installable Software"). This capability is provided with\n\
+the intent of allowing such users to install, extend and update Eclipse-based products.\n\
+Information about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
+\n\
+You may use Provisioning Technology to allow other parties to install Installable Software.\n\
+You shall be responsible for enabling the applicable license agreements relating to the\n\
+Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
+in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
+making it available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the following:\n\
+\n\
+       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+          extending or updating the functionality of an Eclipse-based product.\n\
+       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+          with the Specification. Such Installable Software Agreement must inform the user of the\n\
+          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+          indication of agreement by the user, the provisioning Technology will complete installation\n\
+          of the Installable Software.\n\
+\n\
+Cryptography\n\
+\n\
+Content may contain encryption software. The country in which you are\n\
+currently may have restrictions on the import, possession, and use,\n\
+and/or re-export to another country, of encryption software. BEFORE\n\
+using any encryption software, please check the country's laws,\n\
+regulations and policies concerning the import, possession, or use, and\n\
+re-export of encryption software, to see if this is permitted.\n\
+\n\
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+########### end of license property ##########################################
diff --git a/org.eclipse.osbp.vaaclipse.feature.target.core/feature.xml b/org.eclipse.osbp.vaaclipse.feature.target.core/feature.xml
new file mode 100644
index 0000000..31e25dd
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.feature.target.core/feature.xml
@@ -0,0 +1,177 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) -->
+<!--# 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: -->
+<!--#     Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation -->
+<!--#======================================================================= -->
+
+<feature
+        id="org.eclipse.osbp.vaaclipse.feature.target.core"
+        label="%featureName"
+        version="0.9.0.qualifier"
+        provider-name="%providerName">
+        
+    <description>
+        %description
+    </description>
+        
+    <copyright>
+        %copyright
+    </copyright>
+        
+    <license url="%licenseURL">
+        %license
+    </license>
+        
+    <requires>
+        <import plugin="org.eclipse.e4.core.commands" version="0.10.2" match="equivalent"/>
+        <import plugin="org.eclipse.e4.core.contexts" version="1.3.100" match="equivalent"/>
+        <import plugin="org.eclipse.e4.core.di" version="1.4.0" match="equivalent"/>
+        <import plugin="org.eclipse.e4.core.di.extensions" version="0.12.0" match="equivalent"/>
+        <import plugin="org.eclipse.e4.core.services" version="1.2.0" match="equivalent"/>
+        <import plugin="org.eclipse.e4.ui.model.workbench" version="1.1.0" match="equivalent"/>
+        <import plugin="org.eclipse.e4.ui.css.core" version="0.10.100" match="equivalent"/>
+        <import plugin="org.eclipse.e4.ui.di" version="1.0.0" match="equivalent"/>
+        <import plugin="org.eclipse.e4.ui.services" version="1.1.0" match="equivalent"/>
+    </requires>
+        	
+    <plugin
+        id="org.eclipse.e4.ui.model.workbench.edit"
+        download-size="0"
+        install-size="0"
+        version="0.0.0"
+        unpack="false"/>
+        
+    <plugin
+        id="org.eclipse.osbp.commons"
+        download-size="0"
+        install-size="0"
+        version="0.0.0"
+        unpack="false"/>
+        
+    <plugin
+        id="org.eclipse.osbp.e4extension"
+        download-size="0"
+        install-size="0"
+        version="0.0.0"
+        unpack="false"/>
+        
+    <plugin
+        id="org.eclipse.osbp.vaaclipse.additions"
+        download-size="0"
+        install-size="0"
+        version="0.0.0"
+        unpack="false"/>
+        
+    <plugin
+        id="org.eclipse.osbp.vaaclipse.api"
+        download-size="0"
+        install-size="0"
+        version="0.0.0"
+        unpack="false"/>
+        
+    <plugin
+        id="org.eclipse.osbp.vaaclipse.behaviour"
+        download-size="0"
+        install-size="0"
+        version="0.0.0"
+        unpack="false"/>
+        
+    <plugin
+        id="org.eclipse.osbp.vaaclipse.contributions"
+        download-size="0"
+        install-size="0"
+        version="0.0.0"
+        unpack="false"/>
+        
+    <plugin
+        id="org.eclipse.osbp.vaaclipse.emf"
+        download-size="0"
+        install-size="0"
+        version="0.0.0"
+        unpack="false"/>
+        
+    <plugin
+        id="org.eclipse.osbp.vaaclipse.emf.addon"
+        download-size="0"
+        install-size="0"
+        version="0.0.0"
+        unpack="false"/>
+        
+    <plugin
+        id="org.eclipse.osbp.vaaclipse.emf.api"
+        download-size="0"
+        install-size="0"
+        version="0.0.0"
+        unpack="false"/>
+        
+    <plugin
+        id="org.eclipse.osbp.vaaclipse.presentation"
+        download-size="0"
+        install-size="0"
+        version="0.0.0"
+        unpack="false"/>
+        
+    <plugin
+        id="org.eclipse.osbp.vaaclipse.publicapi"
+        download-size="0"
+        install-size="0"
+        version="0.0.0"
+        unpack="false"/>
+        
+    <plugin
+        id="org.eclipse.osbp.vaaclipse.resources"
+        download-size="0"
+        install-size="0"
+        version="0.0.0"
+        fragment="true"
+        unpack="false"/>
+        
+    <plugin
+        id="org.eclipse.osbp.vaaclipse.theme"
+        download-size="0"
+        install-size="0"
+        version="0.0.0"
+        unpack="false"/>
+        
+    <plugin
+        id="org.eclipse.osbp.vaaclipse.util"
+        download-size="0"
+        install-size="0"
+        version="0.0.0"
+        unpack="false"/>
+        
+    <plugin
+        id="org.eclipse.osbp.vaadin"
+        download-size="0"
+        install-size="0"
+        version="0.0.0"
+        unpack="false"/>
+        
+    <plugin
+        id="org.eclipse.osbp.vaaclipse.widgets"
+        download-size="0"
+        install-size="0"
+        version="0.0.0"
+        unpack="false"/>
+        
+    <plugin
+        id="org.eclipse.osbp.e4.injector.objectsuppliers"
+        download-size="0"
+        install-size="0"
+        version="0.0.0"
+        unpack="false"/>
+        
+    <plugin
+        id="org.eclipse.osbp.vaaclipse.widgetset.default"
+        download-size="0"
+        install-size="0"
+        version="0.0.0"
+        unpack="false"/>
+        
+</feature>
diff --git a/org.eclipse.osbp.vaaclipse.feature.target.core/license.html b/org.eclipse.osbp.vaaclipse.feature.target.core/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.feature.target.core/license.html
@@ -0,0 +1,164 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!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>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>February 1, 2011</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+   (COLLECTIVELY "CONTENT").  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse
+ Foundation is provided to you under the terms and conditions of the 
+Eclipse Public License Version 1.0
+   ("EPL").  A copy of the EPL is provided with this Content and is also
+ 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, "Program" will mean the Content.</p>
+
+<p>Content includes, but is not limited to, source code, object code, 
+documentation and other files maintained in the Eclipse Foundation 
+source code
+   repository ("Repository") in software modules ("Modules") and made 
+available as downloadable archives ("Downloads").</p>
+
+<ul>
+       <li>Content may be structured and packaged into modules to 
+facilitate delivering, extending, and upgrading the Content.  Typical 
+modules may include plug-ins ("Plug-ins"), plug-in fragments 
+("Fragments"), and features ("Features").</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&#8482; ARchive) in a directory named "plugins".</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or 
+Fragments and associated material.  Each Feature may be packaged as a 
+sub-directory in a directory named "features".  Within a Feature, files 
+named "feature.xml" may contain a list of the names and version numbers 
+of the Plug-ins
+      and/or Fragments associated with that Feature.</li>
+       <li>Features may also include other Features ("Included 
+Features"). Within a Feature, files named "feature.xml" may contain a 
+list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be 
+contained in files named "about.html" ("Abouts"). The terms and 
+conditions governing Features and
+Included Features should be contained in files named "license.html" 
+("Feature Licenses").  Abouts and Feature Licenses may be located in any
+ directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named "src" of certain Plug-ins</li>
+       <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is 
+installed using the Provisioning Technology (as defined below), you must
+ agree to a license ("Feature Update License") during the
+installation process.  If the Feature contains Included Features, the 
+Feature Update License should either provide you with the terms and 
+conditions governing the Included Features or
+inform you where you can locate them.  Feature Update Licenses may be 
+found in the "license" property of files named "feature.properties" 
+found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the 
+terms and conditions (or references to such terms and conditions) that 
+govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER 
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.
+  SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND 
+CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, 
+or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions 
+govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, 
+examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager ("Provisioning Technology") for the purpose of 
+allowing users to install software, documentation, information and/or
+   other materials (collectively "Installable Software"). This 
+capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about 
+packaging Installable Software is available at <a href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   ("Specification").</p>
+
+<p>You may use Provisioning Technology to allow other parties to install
+ Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to
+ be presented to, and accepted by, the users of the Provisioning 
+Technology
+   in accordance with the Specification. By using Provisioning 
+Technology in such a manner and making it available in accordance with 
+the
+   Specification, you further acknowledge your agreement to, and the 
+acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur ("Provisioning Process") in 
+which a user may execute the Provisioning Technology
+       on a machine ("Target Machine") with the intent of installing, 
+extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology 
+may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user 
+the terms and conditions that govern the use of the Installable
+       Software ("Installable Software Agreement") and such Installable 
+Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable 
+Software Agreement must inform the user of the terms and conditions that
+ govern
+       the Installable Software and must solicit acceptance by the end 
+user in the manner prescribed in such Installable Software Agreement. 
+Upon such
+       indication of agreement by the user, the provisioning Technology 
+will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are
+ currently may have restrictions on the import, possession, and use, 
+and/or re-export to
+   another country, of encryption software. BEFORE using any encryption 
+software, please check the country's laws, regulations and policies 
+concerning the import,
+   possession, or use, and re-export of encryption software, to see if 
+this is permitted.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.feature.target.core/pom.xml b/org.eclipse.osbp.vaaclipse.feature.target.core/pom.xml
new file mode 100644
index 0000000..fab007e
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.feature.target.core/pom.xml
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	<parent>
+		<groupId>org.eclipse.osbp.vaaclipse</groupId>
+		<artifactId>org.eclipse.osbp.vaaclipse</artifactId>
+		<version>0.9.0-SNAPSHOT</version>
+	</parent>
+	<artifactId>org.eclipse.osbp.vaaclipse.feature.target.core</artifactId>
+	<packaging>eclipse-feature</packaging>
+	<build>
+		<plugins>
+			<plugin>
+				<groupId>org.eclipse.tycho.extras</groupId>
+				<artifactId>tycho-source-feature-plugin</artifactId>
+				<version>${tychoExtrasVersion}</version>
+				<executions>
+					<execution>
+						<id>source-feature</id>
+						<phase>package</phase>
+						<goals>
+							<goal>source-feature</goal>
+						</goals>
+					</execution>
+				</executions>
+				<configuration>
+					<excludes>
+						<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.model.workbench"/>
+						<plugin id="org.eclipse.e4.ui.css.core"/>
+						<plugin id="org.eclipse.e4.ui.di"/>
+						<plugin id="org.eclipse.e4.ui.services"/>
+					</excludes>
+					<labelSuffix> (source)</labelSuffix>
+				</configuration>
+			</plugin>
+
+			<plugin>
+				<!-- workaround while bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=398250 
+					is not fixed -->
+				<groupId>org.eclipse.tycho</groupId>
+				<artifactId>tycho-p2-plugin</artifactId>
+				<version>${tycho-version}</version>
+				<executions>
+					<execution>
+						<id>attached-p2-metadata</id>
+						<phase>package</phase>
+						<goals>
+							<goal>p2-metadata</goal>
+						</goals>
+					</execution>
+				</executions>
+			</plugin>
+			<plugin>
+				<artifactId>maven-javadoc-plugin</artifactId>
+				<executions>
+					<execution>
+						<id>javadoc-jar</id>
+						<phase>package</phase>
+						<goals>
+							<goal>jar</goal>
+						</goals>
+					</execution>
+				</executions>
+			</plugin>
+		</plugins>
+	</build>
+
+</project>
diff --git a/org.eclipse.osbp.vaaclipse.feature.target.core/src/main/javadoc/README.txt b/org.eclipse.osbp.vaaclipse.feature.target.core/src/main/javadoc/README.txt
new file mode 100644
index 0000000..831da7e
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.feature.target.core/src/main/javadoc/README.txt
@@ -0,0 +1 @@
+Resource folder for javadoc resources.
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.feature.target.core/src/overview.html b/org.eclipse.osbp.vaaclipse.feature.target.core/src/overview.html
new file mode 100644
index 0000000..fb02672
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.feature.target.core/src/overview.html
@@ -0,0 +1,9 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+<head>
+	<title>OSBP runtime web vaadin components feature Overview</title>
+</head>
+<body>
+<p>The <b>OSBP&nbsp;feature</b>&nbsp;contains ...</p>
+</body>
+</html>
diff --git a/org.eclipse.osbp.vaaclipse.presentation/.project b/org.eclipse.osbp.vaaclipse.presentation/.project
new file mode 100644
index 0000000..c419dca
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/.project
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.vaaclipse.presentation</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ds.core.builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.babel.editor.rbeBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.babel.editor.rbeBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.babel.editor.rbeNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.vaaclipse.presentation/META-INF/MANIFEST.MF b/org.eclipse.osbp.vaaclipse.presentation/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..32309f4
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/META-INF/MANIFEST.MF
@@ -0,0 +1,40 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.vaaclipse.presentation
+Bundle-SymbolicName: org.eclipse.osbp.vaaclipse.presentation;singleton:=true
+Bundle-Version: 0.9.0.qualifier
+Bundle-Vendor: Eclipse OSBP
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Require-Bundle: org.eclipse.e4.ui.model.workbench;bundle-version="0.10.1",
+ org.eclipse.e4.core.contexts;bundle-version="1.1.0",
+ org.eclipse.e4.ui.workbench;bundle-version="0.10.2",
+ org.eclipse.e4.core.services;bundle-version="1.0.0",
+ org.eclipse.core.runtime;bundle-version="3.8.0",
+ org.eclipse.core.commands;bundle-version="3.6.1",
+ org.eclipse.e4.core.commands;bundle-version="0.10.1",
+ org.eclipse.osgi.services;bundle-version="3.3.100",
+ org.eclipse.e4.ui.services;bundle-version="0.10.1",
+ org.eclipse.osbp.vaaclipse.api;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.e4.ui.di;bundle-version="0.10.1",
+ org.eclipse.osbp.vaadin;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.vaaclipse.publicapi;bundle-version="[0.9.0,0.10.0)",
+ com.vaadin.server;bundle-version="[7.5.7,7.7.0)",
+ com.vaadin.shared;bundle-version="[7.5.7,7.7.0)",
+ org.eclipse.osbp.vaaclipse.widgets;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.commons;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.vaaclipse.widgetset.default;bundle-version="[0.9.0,0.10.0)";resolution:=optional,
+ org.eclipse.emf.ecore;bundle-version="2.9.0",
+ org.eclipse.e4.core.di;bundle-version="1.3.0",
+ org.jsoup;bundle-version="1.7.2",
+ org.eclipse.emf.edit;bundle-version="2.10.1",
+ org.eclipse.emf.ecore.xmi;bundle-version="2.10.2",
+ org.eclipse.osbp.runtime.designer.api,
+ dragdroplayouts.osgi;bundle-version="1.1.3",
+ contextmenu.osgi;bundle-version="4.6.0"
+Export-Package: org.eclipse.osbp.vaaclipse.presentation.engine;version="0.9.0",
+ org.eclipse.osbp.vaaclipse.presentation.renderers;version="0.9.0"
+Import-Package: javax.annotation;version="1.1.0",
+ javax.inject;version="1.0.0",
+ org.slf4j;version="1.7.2"
+Bundle-Activator: org.eclipse.osbp.vaaclipse.Activator
+Bundle-ActivationPolicy: lazy
diff --git a/org.eclipse.osbp.vaaclipse.presentation/about.html b/org.eclipse.osbp.vaaclipse.presentation/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/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 1, 2016</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.presentation/about.ini b/org.eclipse.osbp.vaaclipse.presentation/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/about.ini
@@ -0,0 +1,17 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%featureText
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=
+
+# Property "appName" contains name of the application (translated)
+appName=%featureName
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+welcomePage=
diff --git a/org.eclipse.osbp.vaaclipse.presentation/about.mappings b/org.eclipse.osbp.vaaclipse.presentation/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/about.mappings
@@ -0,0 +1,6 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+0=qualifier
diff --git a/org.eclipse.osbp.vaaclipse.presentation/about.properties b/org.eclipse.osbp.vaaclipse.presentation/about.properties
new file mode 100644
index 0000000..3d71a0a
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2012, 2016 - Loetz GmbH&Co.KG (Heidelberg)
+# 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:
+#    Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.vaaclipse.presentation
+
+################ blurb property ####################################
+featureText=\
+Copyright (c) 2012-2016 - Loetz GmbH&Co.KG \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+Contributors:\n\
+    Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.vaaclipse.presentation/build.properties b/org.eclipse.osbp.vaaclipse.presentation/build.properties
new file mode 100644
index 0000000..63bcba4
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/build.properties
@@ -0,0 +1,10 @@
+source.. = src/
+output.. = target/classes/
+bin.includes = about.properties,  about.mappings,  about.ini,  about.html,  META-INF/,\
+               .,\
+               plugin.xml,\
+               license.html,\
+               epl-v10.html
+
+src.includes = about.properties,  about.mappings,  about.ini,  about.html,  license.html,\
+               epl-v10.html
diff --git a/org.eclipse.osbp.vaaclipse.presentation/epl-v10.html b/org.eclipse.osbp.vaaclipse.presentation/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/epl-v10.html
@@ -0,0 +1,259 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+  body {
+    size: 8.5in 11.0in;
+    margin: 0.25in 0.5in 0.25in 0.5in;
+    tab-interval: 0.5in;
+    }
+  p {  	
+    margin-left: auto;
+    margin-top:  0.5em;
+    margin-bottom: 0.5em;
+    }
+  p.list {
+  	margin-left: 0.5in;
+    margin-top:  0.05em;
+    margin-bottom: 0.05em;
+    }
+  </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">where such changes and/or additions to the Program
+originate from and are distributed by that particular Contributor. A
+Contribution 'originates' from a Contributor if it was added to the
+Program by such Contributor itself or anyone acting on such
+Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii)
+are not derivative works of the Program.</p>
+
+<p>"Contributor" means any person or entity that distributes
+the Program.</p>
+
+<p>"Licensed Patents" mean patent claims licensable by a
+Contributor which are necessarily infringed by the use or sale of its
+Contribution alone or when combined with the Program.</p>
+
+<p>"Program" means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>"Recipient" means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works
+of, publicly display, publicly perform, distribute and sublicense the
+Contribution of such Contributor, if any, and such derivative works, in
+source code and object code form.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell,
+offer to sell, import and otherwise transfer the Contribution of such
+Contributor, if any, in source code and object code form. This patent
+license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor,
+such addition of the Contribution causes such combination to be covered
+by the Licensed Patents. The patent license shall not apply to any other
+combinations which include the Contribution. No hardware per se is
+licensed hereunder.</p>
+
+<p class="list">c) Recipient understands that although each Contributor
+grants the licenses to its Contributions set forth herein, no assurances
+are provided by any Contributor that the Program does not infringe the
+patent or other intellectual property rights of any other entity. Each
+Contributor disclaims any liability to Recipient for claims brought by
+any other entity based on infringement of intellectual property rights
+or otherwise. As a condition to exercising the rights and licenses
+granted hereunder, each Recipient hereby assumes sole responsibility to
+secure any other intellectual property rights needed, if any. For
+example, if a third party patent license is required to allow Recipient
+to distribute the Program, it is Recipient's responsibility to acquire
+that license before distributing the Program.</p>
+
+<p class="list">d) Each Contributor represents that to its knowledge it
+has sufficient copyright rights in its Contribution, if any, to grant
+the copyright license set forth in this Agreement.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">i) effectively disclaims on behalf of all Contributors
+all warranties and conditions, express and implied, including warranties
+or conditions of title and non-infringement, and implied warranties or
+conditions of merchantability and fitness for a particular purpose;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">iv) states that source code for the Program is available
+from such Contributor, and informs licensees how to obtain it in a
+reasonable manner on or through a medium customarily used for software
+exchange.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>Commercial distributors of software may accept certain
+responsibilities with respect to end users, business partners and the
+like. While this license is intended to facilitate the commercial use of
+the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create
+potential liability for other Contributors. Therefore, if a Contributor
+includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and
+indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses")
+arising from claims, lawsuits and other legal actions brought by a third
+party against the Indemnified Contributor to the extent caused by the
+acts or omissions of such Commercial Contributor in connection with its
+distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In
+order to qualify, an Indemnified Contributor must: a) promptly notify
+the Commercial Contributor in writing of such claim, and b) allow the
+Commercial Contributor to control, and cooperate with the Commercial
+Contributor in, the defense and any related settlement negotiations. The
+Indemnified Contributor may participate in any such claim at its own
+expense.</p>
+
+<p>For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor's responsibility
+alone. Under this section, the Commercial Contributor would have to
+defend claims against the other Contributors related to those
+performance claims and warranties, and if a court requires any other
+Contributor to pay any damages as a result, the Commercial Contributor
+must pay those damages.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
+OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
+ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to
+the risks and costs of program errors, compliance with applicable laws,
+damage to or loss of data, programs or equipment, and unavailability or
+interruption of operations.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
+NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of
+the remainder of the terms of this Agreement, and without further action
+by the parties hereto, such provision shall be reformed to the minimum
+extent necessary to make such provision valid and enforceable.</p>
+
+<p>If Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that the
+Program itself (excluding combinations of the Program with other
+software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the
+date such litigation is filed.</p>
+
+<p>All Recipient's rights under this Agreement shall terminate if it
+fails to comply with any of the material terms or conditions of this
+Agreement and does not cure such failure in a reasonable period of time
+after becoming aware of such noncompliance. If all Recipient's rights
+under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive.</p>
+
+<p>Everyone is permitted to copy and distribute copies of this
+Agreement, but in order to avoid inconsistency the Agreement is
+copyrighted and may only be modified in the following manner. The
+Agreement Steward reserves the right to publish new versions (including
+revisions) of this Agreement from time to time. No one other than the
+Agreement Steward has the right to modify this Agreement. The Eclipse
+Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a
+suitable separate entity. Each new version of the Agreement will be
+given a distinguishing version number. The Program (including
+Contributions) may always be distributed subject to the version of the
+Agreement under which it was received. In addition, after a new version
+of the Agreement is published, Contributor may elect to distribute the
+Program (including its Contributions) under the new version. Except as
+expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
+rights or licenses to the intellectual property of any Contributor under
+this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this
+Agreement are reserved.</p>
+
+<p>This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No party
+to this Agreement will bring a legal action under this Agreement more
+than one year after the cause of action arose. Each party waives its
+rights to a jury trial in any resulting litigation.</p>
+
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.presentation/license.html b/org.eclipse.osbp.vaaclipse.presentation/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/license.html
@@ -0,0 +1,164 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!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>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>February 1, 2011</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+   (COLLECTIVELY "CONTENT").  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse
+ Foundation is provided to you under the terms and conditions of the 
+Eclipse Public License Version 1.0
+   ("EPL").  A copy of the EPL is provided with this Content and is also
+ 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, "Program" will mean the Content.</p>
+
+<p>Content includes, but is not limited to, source code, object code, 
+documentation and other files maintained in the Eclipse Foundation 
+source code
+   repository ("Repository") in software modules ("Modules") and made 
+available as downloadable archives ("Downloads").</p>
+
+<ul>
+       <li>Content may be structured and packaged into modules to 
+facilitate delivering, extending, and upgrading the Content.  Typical 
+modules may include plug-ins ("Plug-ins"), plug-in fragments 
+("Fragments"), and features ("Features").</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&#8482; ARchive) in a directory named "plugins".</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or 
+Fragments and associated material.  Each Feature may be packaged as a 
+sub-directory in a directory named "features".  Within a Feature, files 
+named "feature.xml" may contain a list of the names and version numbers 
+of the Plug-ins
+      and/or Fragments associated with that Feature.</li>
+       <li>Features may also include other Features ("Included 
+Features"). Within a Feature, files named "feature.xml" may contain a 
+list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be 
+contained in files named "about.html" ("Abouts"). The terms and 
+conditions governing Features and
+Included Features should be contained in files named "license.html" 
+("Feature Licenses").  Abouts and Feature Licenses may be located in any
+ directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named "src" of certain Plug-ins</li>
+       <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is 
+installed using the Provisioning Technology (as defined below), you must
+ agree to a license ("Feature Update License") during the
+installation process.  If the Feature contains Included Features, the 
+Feature Update License should either provide you with the terms and 
+conditions governing the Included Features or
+inform you where you can locate them.  Feature Update Licenses may be 
+found in the "license" property of files named "feature.properties" 
+found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the 
+terms and conditions (or references to such terms and conditions) that 
+govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER 
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.
+  SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND 
+CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, 
+or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions 
+govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, 
+examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager ("Provisioning Technology") for the purpose of 
+allowing users to install software, documentation, information and/or
+   other materials (collectively "Installable Software"). This 
+capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about 
+packaging Installable Software is available at <a href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   ("Specification").</p>
+
+<p>You may use Provisioning Technology to allow other parties to install
+ Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to
+ be presented to, and accepted by, the users of the Provisioning 
+Technology
+   in accordance with the Specification. By using Provisioning 
+Technology in such a manner and making it available in accordance with 
+the
+   Specification, you further acknowledge your agreement to, and the 
+acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur ("Provisioning Process") in 
+which a user may execute the Provisioning Technology
+       on a machine ("Target Machine") with the intent of installing, 
+extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology 
+may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user 
+the terms and conditions that govern the use of the Installable
+       Software ("Installable Software Agreement") and such Installable 
+Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable 
+Software Agreement must inform the user of the terms and conditions that
+ govern
+       the Installable Software and must solicit acceptance by the end 
+user in the manner prescribed in such Installable Software Agreement. 
+Upon such
+       indication of agreement by the user, the provisioning Technology 
+will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are
+ currently may have restrictions on the import, possession, and use, 
+and/or re-export to
+   another country, of encryption software. BEFORE using any encryption 
+software, please check the country's laws, regulations and policies 
+concerning the import,
+   possession, or use, and re-export of encryption software, to see if 
+this is permitted.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.presentation/plugin.xml b/org.eclipse.osbp.vaaclipse.presentation/plugin.xml
new file mode 100644
index 0000000..9d8f81a
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/plugin.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+   <extension
+         id="id1"
+         point="org.eclipse.e4.workbench.model">
+      <processor
+            beforefragment="true"
+            class="org.eclipse.osbp.vaaclipse.presentation.widgetinfo.WidgetInfoImpl">
+      </processor>
+   </extension>
+
+</plugin>
diff --git a/org.eclipse.osbp.vaaclipse.presentation/pom.xml b/org.eclipse.osbp.vaaclipse.presentation/pom.xml
new file mode 100644
index 0000000..ec6b101
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/pom.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <artifactId>org.eclipse.osbp.vaaclipse.presentation</artifactId>
+  <packaging>eclipse-plugin</packaging>
+  <parent>
+  	<groupId>org.eclipse.osbp.vaaclipse</groupId>
+  	<artifactId>org.eclipse.osbp.vaaclipse</artifactId>
+  	<version>0.9.0-SNAPSHOT</version>
+  	<relativePath>..</relativePath>
+  </parent>
+</project>
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/Activator.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/Activator.java
new file mode 100644
index 0000000..4cd8d8f
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/Activator.java
@@ -0,0 +1,43 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse;
+
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+
+/**
+ * @author rushan
+ *
+ */
+public class Activator implements BundleActivator {
+	private static Activator instance;
+
+	private BundleContext context;
+
+	public void start(BundleContext context) throws Exception {
+		instance = this;
+		this.context = context;
+	}
+
+	public BundleContext getContext() {
+		return context;
+	}
+
+	public static Activator getInstance() {
+		return instance;
+	}
+
+	@Override
+	public void stop(BundleContext context) throws Exception {
+		// TODO Auto-generated method stub
+
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/dnd/VaadinDropHandler.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/dnd/VaadinDropHandler.java
new file mode 100644
index 0000000..258b0f9
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/dnd/VaadinDropHandler.java
@@ -0,0 +1,282 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osbp.vaaclipse.presentation.dnd;
+
+import javax.inject.Inject;
+
+import org.eclipse.e4.core.di.annotations.Optional;
+import org.eclipse.e4.ui.model.application.MApplication;
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.model.application.ui.advanced.MArea;
+import org.eclipse.e4.ui.model.application.ui.advanced.MPerspective;
+import org.eclipse.e4.ui.model.application.ui.basic.MPartSashContainer;
+import org.eclipse.e4.ui.model.application.ui.basic.MPartSashContainerElement;
+import org.eclipse.e4.ui.model.application.ui.basic.MPartStack;
+import org.eclipse.e4.ui.model.application.ui.basic.MStackElement;
+import org.eclipse.e4.ui.model.application.ui.basic.MWindow;
+import org.eclipse.e4.ui.model.application.ui.basic.impl.BasicFactoryImpl;
+import org.eclipse.e4.ui.workbench.modeling.EModelService;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.osbp.commons.geom.GeomUtils;
+import org.eclipse.osbp.commons.geom.Side;
+import org.eclipse.osbp.commons.geom.Vector;
+import org.eclipse.osbp.vaaclipse.publicapi.change.ChangeCommand;
+import org.eclipse.osbp.vaaclipse.widgets.StackWidget;
+
+import com.vaadin.event.dd.DragAndDropEvent;
+import com.vaadin.event.dd.DropHandler;
+import com.vaadin.event.dd.acceptcriteria.AcceptAll;
+import com.vaadin.event.dd.acceptcriteria.AcceptCriterion;
+import com.vaadin.shared.ui.dd.HorizontalDropLocation;
+import com.vaadin.ui.AbstractComponent;
+import com.vaadin.ui.TabSheet.Tab;
+
+import fi.jasoft.dragdroplayouts.DDTabSheet.TabSheetTargetDetails;
+import fi.jasoft.dragdroplayouts.events.LayoutBoundTransferable;
+
+/**
+ * @author rushan
+ *
+ */
+public class VaadinDropHandler implements DropHandler {
+	private MPartStack targetPartStack;
+	private StackWidget targetTabSheet;
+
+	@Inject
+	EModelService modelService;
+
+	@Inject
+	MApplication app;
+
+	@Inject
+	@Optional
+	private EditingDomain editingDomain;
+
+	@Inject
+	public VaadinDropHandler(MPartStack targetPartStack) {
+		this.targetPartStack = targetPartStack;
+		targetTabSheet = (StackWidget) targetPartStack.getWidget();
+	}
+
+	public AcceptCriterion getAcceptCriterion() {
+		// Only allow dropping between tabs
+		// return new Not(HorizontalLocationIs.CENTER);
+
+		return AcceptAll.get();
+	}
+
+	public void drop(final DragAndDropEvent event) {
+		if (!(event.getTransferable() instanceof LayoutBoundTransferable))
+			return;
+
+		ChangeCommand command = new ChangeCommand("Drop part", ((EObject) app).eResource()) {
+			@Override
+			protected void doExecute() {
+				doDrop(event);
+			}
+		};
+		editingDomain.getCommandStack().execute(command);
+	}
+
+	protected void doDrop(DragAndDropEvent event) {
+		LayoutBoundTransferable transferable = (LayoutBoundTransferable) event
+				.getTransferable();
+		TabSheetTargetDetails details = (TabSheetTargetDetails) event
+				.getTargetDetails();
+
+		if (transferable.getSourceComponent() instanceof StackWidget) {
+			StackWidget sourceTabSheet = (StackWidget) transferable
+					.getSourceComponent();
+
+			MPartStack targetFolder = targetPartStack;
+			MPartStack sourceFolder = (MPartStack) sourceTabSheet.getData();
+
+			// this component is dragged by user
+			AbstractComponent draggingComponent = (AbstractComponent) transferable
+					.getComponent();
+			// This is model element that match to draggingComponent
+			MStackElement draggingElement = (MStackElement) draggingComponent
+					.getData();
+
+			// draggingElement must be in sourceFolder
+			if (!sourceFolder.getChildren().contains(draggingElement))
+				return;
+
+			String dropType = (String) details.getData("dropType");
+
+			if (dropType.equals("DropToTabsheetBar")) {
+				int idx = details.getOverIndex();
+				HorizontalDropLocation location = details.getDropLocation();
+
+				if (draggingComponent == details.getOverComponent()) {
+					// Dropped on itself
+					return;
+				}
+
+				if (sourceTabSheet == targetTabSheet) {// reordering tabs
+
+					if (sourceFolder != targetFolder)
+						return;
+					int modelOldPos = sourceFolder.getChildren().indexOf(
+							draggingElement);
+
+					Tab tabInNewPos = targetTabSheet.getTab(idx);
+
+					if (tabInNewPos == null)
+						return;
+
+					MUIElement elementInInsertPos = (MUIElement) ((AbstractComponent) tabInNewPos
+							.getComponent()).getData();
+					int modelNewPos = targetPartStack.getChildren().indexOf(
+							elementInInsertPos);
+
+					targetPartStack.getChildren().remove(draggingElement);
+
+					if (location == HorizontalDropLocation.RIGHT) {
+
+						if (modelOldPos > modelNewPos)
+							targetPartStack.getChildren().add(modelNewPos + 1,
+									draggingElement);
+						else
+							targetPartStack.getChildren().add(modelNewPos,
+									draggingElement);
+					} else {// LEFT OR CENTER - processed as LEFT
+						if (modelOldPos > modelNewPos)
+							targetPartStack.getChildren().add(modelNewPos,
+									draggingElement);
+						else
+							targetPartStack.getChildren().add(modelNewPos - 1,
+									draggingElement);
+
+					}
+				} else {// Adding new tab
+					sourceFolder.getChildren().remove(draggingElement);
+
+					if (idx == -1)
+						targetFolder.getChildren().add(draggingElement);
+					else {
+						Tab tabInNewPos = targetTabSheet.getTab(idx);
+						MUIElement elementInNewPos = (MUIElement) ((AbstractComponent) tabInNewPos
+								.getComponent()).getData();
+						int modelNewPos = targetPartStack.getChildren()
+								.indexOf(elementInNewPos);
+
+						int newPos = -1;
+						if (location == HorizontalDropLocation.RIGHT) {
+							targetFolder.getChildren().add(modelNewPos + 1,
+									draggingElement);
+						} else {// LEFT or CENTER - processed both as LEFT
+							targetFolder.getChildren().add(modelNewPos,
+									draggingElement);
+						}
+					}
+				}
+				targetFolder.setSelectedElement(draggingElement);
+			} else if (dropType.equals("DropToTabsheetBody")) {
+				// target widget coordinates:
+				int x0 = (Integer) details.getData("targetWidgetAbsoluteLeft");
+				int y0 = (Integer) details.getData("targetWidgetAbsoluteTop");
+				int dx = (Integer) details.getData("targetWidgetOffsetWidth");
+				int dy = (Integer) details.getData("targetWidgetOffsetHeight");
+
+				int docPrcnt = 30;
+				double docX = dx * docPrcnt / 100;
+				double docY = dy * docPrcnt / 100;
+
+				int mouseX = details.getMouseEvent().getClientX();
+				int mouseY = details.getMouseEvent().getClientY();
+
+				Vector mousePos = Vector.valueOf(mouseX, mouseY);
+
+				Integer side = GeomUtils.findDockSide(x0, y0, dx, dy, docX,
+						docY, mousePos);
+				if (side != null) {
+					targetPartStack.getChildren().remove(draggingElement);
+
+					if (side == Side.CENTER) {// drop in center is equivalent
+												// tab adding at the end of
+												// target folder
+						targetFolder.getChildren().add(draggingElement);
+						targetFolder.setSelectedElement(draggingElement);
+					} else {// if drop to sides, we must different what kind is
+							// target widget - tabsheet or area
+						boolean onEdge = false;
+
+						// Find the root of the targetFolder's sash structure
+						// This root - is area, perspective or window
+						MUIElement outerRelTo = targetFolder.getParent();
+						if (outerRelTo instanceof MPartSashContainer) {
+							while (outerRelTo != null
+									&& !(outerRelTo instanceof MArea
+											|| outerRelTo instanceof MPerspective || outerRelTo instanceof MWindow))
+								outerRelTo = outerRelTo.getParent();
+						}
+
+						// Outer element can not be null, becouse mpartstack or
+						// his sash structure must be located in one of place:
+						// area, perspective or window
+						if (outerRelTo == null)
+							return;
+
+						if (outerRelTo.getParent() == null
+								&& outerRelTo.getCurSharedRef() != null) {
+							outerRelTo = outerRelTo.getCurSharedRef();
+						}
+
+						MPartSashContainerElement relTo = null;
+
+						if (outerRelTo instanceof MArea || onEdge)
+							relTo = (MPartSashContainerElement) outerRelTo;
+						else
+							relTo = targetFolder;
+
+						// store original container data for using after model
+						// operations
+						String containerDataBeforeModelOperations = targetFolder
+								.getContainerData();
+
+						// wrap it in a stack if it's a part
+						MPartStack toInsert;
+						MStackElement stackElement = (MStackElement) draggingElement;
+						toInsert = BasicFactoryImpl.eINSTANCE.createPartStack();
+						toInsert.getChildren().add(stackElement);
+						toInsert.setSelectedElement(stackElement);
+
+						float pct = (float) (onEdge ? 0.15 : 0.3);
+						MUIElement relToParent = relTo.getParent();
+						modelService
+								.insert(toInsert, relTo, convert(side), pct);
+
+						// Force the new sash to have the same weight as the
+						// original element
+						if (relTo.getParent() != relToParent && !onEdge)
+							relTo.getParent().setContainerData(
+									containerDataBeforeModelOperations);
+					}
+				}
+			}
+		}
+	}
+
+	private int convert(Integer side) {
+		if (side == Side.LEFT)
+			return EModelService.LEFT_OF;
+		else if (side == Side.RIGHT)
+			return EModelService.RIGHT_OF;
+		else if (side == Side.BOTTOM)
+			return EModelService.BELOW;
+		else if (side == Side.TOP)
+			return EModelService.ABOVE;
+		else
+			throw new IllegalArgumentException();
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/emf/RecordingCommand.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/emf/RecordingCommand.java
new file mode 100644
index 0000000..3b23412
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/emf/RecordingCommand.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.presentation.emf;
+
+import org.eclipse.emf.common.command.AbstractCommand;
+
+public class RecordingCommand extends AbstractCommand {
+
+	@Override
+	public void execute() {
+
+	}
+
+	@Override
+	public void redo() {
+
+	}
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/engine/GenericPresentationEngine.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/engine/GenericPresentationEngine.java
new file mode 100644
index 0000000..ae4ecf0
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/engine/GenericPresentationEngine.java
@@ -0,0 +1,592 @@
+/*******************************************************************************
+ * Copyright (c) 2011 Kai Toedter, Rushan R. Gilmullin and others.
+ * 
+ * All rights reserved. This program and the accompanying materials 
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ * 
+ * Contributors:
+ *     Kai Toedter - initial API and implementation
+ *     Rushan R. Gilmullin - adoption to vaaclipse and other changes
+ ******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.presentation.engine;
+
+import java.util.List;
+import java.util.Map;
+
+import javax.annotation.PreDestroy;
+import javax.inject.Inject;
+
+import org.eclipse.e4.core.contexts.ContextInjectionFactory;
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.core.services.log.Logger;
+import org.eclipse.e4.ui.di.PersistState;
+import org.eclipse.e4.ui.model.application.MApplication;
+import org.eclipse.e4.ui.model.application.MApplicationElement;
+import org.eclipse.e4.ui.model.application.MContribution;
+import org.eclipse.e4.ui.model.application.ui.MContext;
+import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.model.application.ui.advanced.MPerspective;
+import org.eclipse.e4.ui.model.application.ui.advanced.MPlaceholder;
+import org.eclipse.e4.ui.model.application.ui.basic.MPart;
+import org.eclipse.e4.ui.model.application.ui.basic.MTrimmedWindow;
+import org.eclipse.e4.ui.model.application.ui.basic.MWindow;
+import org.eclipse.e4.ui.model.application.ui.menu.MMenu;
+import org.eclipse.e4.ui.model.application.ui.menu.MToolBar;
+import org.eclipse.e4.ui.services.internal.events.EventBroker;
+import org.eclipse.e4.ui.workbench.IPresentationEngine;
+import org.eclipse.e4.ui.workbench.UIEvents;
+import org.eclipse.e4.ui.workbench.modeling.EModelService;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.equinox.app.IApplication;
+import org.eclipse.osbp.vaaclipse.presentation.renderers.GenericRenderer;
+import org.osgi.service.event.Event;
+import org.osgi.service.event.EventHandler;
+
+/**
+ * This engine was adopted from Kai Toedter's generic renderer project. I place
+ * it in vaaclipse packages temproraly - until the generic renderer will be the
+ * part of eclipse project.
+ * 
+ * @author Kai Toedter
+ */
+@SuppressWarnings("restriction")
+public class GenericPresentationEngine implements PresentationEngine {
+
+	protected MApplication theApp;
+
+	@Inject
+	protected Logger logger;
+
+	protected RendererFactory rendererFactory;
+
+	@Inject
+	EModelService modelService;
+
+	@Inject
+	protected EventBroker eventBroker;
+
+	private final EventHandler childrenHandler = new EventHandler() {
+		@Override
+		public void handleEvent(Event event) {
+			Object changedObj = event.getProperty(UIEvents.EventTags.ELEMENT);
+
+			if (!(changedObj instanceof MElementContainer<?>)) {
+				return;
+			}
+
+			@SuppressWarnings("unchecked")
+			MElementContainer<MUIElement> changedElement = (MElementContainer<MUIElement>) changedObj;
+
+			// if changedElement has no GUI, not process adding and removing.
+			// Add will be processed later, in createGui for changedElement -
+			// the child GUI will be created in processContent
+			if (changedElement.getWidget() == null)
+				return;
+
+			GenericRenderer parentRenderer = (GenericRenderer) changedElement
+					.getRenderer();
+
+			if (parentRenderer == null)
+				return;
+
+			String eventType = (String) event
+					.getProperty(UIEvents.EventTags.TYPE);
+			if (UIEvents.EventTypes.ADD.equals(eventType)) {
+				MUIElement added = (MUIElement) event
+						.getProperty(UIEvents.EventTags.NEW_VALUE);
+				GenericRenderer renderer = rendererFactory.getRenderer(added);
+				if (added.getWidget() == null && !renderer.isLazy())
+					createGui(added);
+				if (changedElement.getWidget() != null
+						&& added.isToBeRendered())
+					parentRenderer.addChildGui(added, changedElement);
+
+				// If the element being added is a placeholder, check to see
+				// if it's 'globally visible' and, if so, remove all other
+				// 'local' placeholders referencing the same element.
+				int newLocation = modelService.getElementLocation(added);
+				if (newLocation == EModelService.IN_SHARED_AREA
+						|| newLocation == EModelService.OUTSIDE_PERSPECTIVE) {
+					MWindow topWin = modelService.getTopLevelWindowFor(added);
+					modelService.hideLocalPlaceholders(topWin, null);
+				}
+			} else if (UIEvents.EventTypes.REMOVE.equals(eventType)) {
+				MUIElement removed = (MUIElement) event
+						.getProperty(UIEvents.EventTags.OLD_VALUE);
+
+				// Ensure that the element about to be removed is not the
+				// selected element
+				if (changedElement.getSelectedElement() == removed)
+					changedElement.setSelectedElement(null);
+
+				if (removed.getWidget() != null
+						&& changedElement.getWidget() != null
+						&& removed.isToBeRendered())
+					parentRenderer.removeChildGui(removed, changedElement);
+			}
+		}
+	};
+
+	private EventHandler toBeRenderedHandler = new EventHandler() {
+		@SuppressWarnings("unchecked")
+		public void handleEvent(Event event) {
+
+			MUIElement changedElement = (MUIElement) event
+					.getProperty(UIEvents.EventTags.ELEMENT);
+			MElementContainer<?> parent = changedElement.getParent();
+
+			if (parent == null)
+				return;
+
+			GenericRenderer parentRenderer = (GenericRenderer) parent
+					.getRenderer();
+
+			if (parentRenderer == null)
+				return;
+
+			// If the parent isn't displayed who cares?
+			if (!(parent instanceof MApplication)
+					&& (parent == null || parent.getWidget() == null))
+				return;
+
+			if (changedElement.isToBeRendered()) {
+				GenericRenderer renderer = rendererFactory
+						.getRenderer(changedElement);
+				if (changedElement.getWidget() == null && !renderer.isLazy())
+					createGui(changedElement);
+
+				parentRenderer.addChildGui(changedElement,
+						(MElementContainer<MUIElement>) parent);
+			} else {
+				// Ensure that the element about to be removed is not the
+				// selected element
+				if (parent.getSelectedElement() == changedElement)
+					parent.setSelectedElement(null);
+
+				// Un-maximize the element before tearing it down
+				if (changedElement.getTags().contains(MAXIMIZED))
+					changedElement.getTags().remove(MAXIMIZED);
+
+				removeGui(changedElement);
+			}
+
+		}
+	};
+
+	private final EventHandler visibilityHandler = new EventHandler() {
+		@Override
+		public void handleEvent(Event event) {
+			MUIElement changedElement = (MUIElement) event
+					.getProperty(UIEvents.EventTags.ELEMENT);
+
+			GenericRenderer renderer = (GenericRenderer) changedElement
+					.getRenderer();
+			if (renderer == null) {
+				return;
+			}
+
+			renderer.setVisible(changedElement, changedElement.isVisible());
+		}
+	};
+
+	@Override
+	public Object createGui(MUIElement element, Object parentWidget,
+			IEclipseContext parentContext) {
+		System.out
+				.println("GenericPresentationEngine.createGui(): This method should not be used.");
+		return null;
+	}
+
+	@Override
+	public Object createGui(MUIElement element,
+			MElementContainer<MUIElement> parent, IEclipseContext parentContext) {
+		if (!element.isToBeRendered())
+			return null;
+
+		GenericRenderer renderer = rendererFactory.getRenderer(element);
+
+		Object currentWidget = element.getWidget();
+		if (currentWidget != null) {
+
+			// Object control = currentWidget;
+			// Object parentWidget = parent.getWidget();
+			// if (parentWidget instanceof ComponentContainer) {
+			// ComponentContainer currentParent = (ComponentContainer)
+			// control.getParent();
+			// if (currentParent != null && currentParent != parentWidget) {
+			// currentParent.removeComponent(control);
+			// }
+			// }
+
+			// Reparent the context (or the kid's context)
+			if (element instanceof MContext) {
+				IEclipseContext ctxt = ((MContext) element).getContext();
+				if (ctxt != null)
+					ctxt.setParent(parentContext);
+			} else {
+				List<MContext> childContexts = modelService.findElements(
+						element, null, MContext.class, null);
+				for (MContext c : childContexts) {
+					// Ensure that we only reset the context of our direct
+					// children
+					MUIElement kid = (MUIElement) c;
+					MUIElement _parent = kid.getParent();
+					if (_parent == null && kid.getCurSharedRef() != null)
+						_parent = kid.getCurSharedRef().getParent();
+					if (!(element instanceof MPlaceholder)
+							&& _parent != element)
+						continue;
+
+					if (c.getContext() != null
+							&& c.getContext().getParent() != parentContext) {
+						c.getContext().setParent(parentContext);
+					}
+				}
+			}
+
+			// Now that we have a widget let the parent (if any) know
+			if (element.getParent() instanceof MUIElement) {
+				MElementContainer<MUIElement> parentElement = element
+						.getParent();
+				GenericRenderer parentRenderer = (GenericRenderer) parentElement
+						.getRenderer();
+				if (parentRenderer != null) {
+					// TODO: check is this needed
+					// parentRenderer.refreshPlatformElement(parentElement);
+					// old swt specific code:
+					// parentRenderer.childRendered(parentElement, element);
+				}
+			}
+			return element.getWidget();
+		}
+
+		if (element instanceof MContext) {
+
+			MContext ctxt = (MContext) element;
+
+			// Assert.isTrue(ctxt.getContext() == null,
+			// "Before rendering Context should be null");
+			if (ctxt.getContext() == null) {
+				try {
+					IEclipseContext eclipseContext = getContext(parent)
+							.createChild(getContextName(element));
+					populateModelInterfaces(ctxt, eclipseContext, element
+							.getClass().getInterfaces());
+					ctxt.setContext(eclipseContext);
+
+					// make sure the context knows about these variables that
+					// have
+					// been defined in the model
+					for (String variable : ctxt.getVariables()) {
+						eclipseContext.declareModifiable(variable);
+					}
+
+					Map<String, String> props = ctxt.getProperties();
+					for (String key : props.keySet()) {
+						eclipseContext.set(key, props.get(key));
+					}
+				} catch (Exception e) {
+					// TODO - REMOVE ME AFTER TESTS!
+					e.printStackTrace();
+				}
+
+				// E4Workbench.processHierarchy(element);
+				// eclipseContext.activate();
+			}
+		}
+
+		element.setRenderer(renderer);
+
+		renderer.createWidget(element, parent);
+		if (element.getWidget() != null) {
+			renderer.bindWidget(element);
+		}
+
+		if (element instanceof MElementContainer) {
+
+			// first create the GUI for the children
+			@SuppressWarnings("unchecked")
+			MElementContainer<MUIElement> container = (MElementContainer<MUIElement>) element;
+			for (MUIElement child : container.getChildren()) {
+				if (!renderer.isLazy())
+					createGui(child);
+			}
+
+			// then let the renderer process them
+			renderer.processContents(container);
+		}
+
+		// set element visibility
+		if (element.isToBeRendered() && element.getWidget() != null)
+			renderer.setVisible(element, element.isVisible());
+
+		renderer.hookControllerLogic(element);
+
+		return element.getWidget();
+	}
+
+	private String getContextName(MUIElement element) {
+		StringBuilder builder = new StringBuilder(element.getClass()
+				.getSimpleName());
+		String elementId = element.getElementId();
+		if (elementId != null && elementId.length() != 0) {
+			builder.append(" (").append(elementId).append(") ");
+		}
+		builder.append("Context");
+		return builder.toString();
+	}
+
+	private static void populateModelInterfaces(MContext contextModel,
+			IEclipseContext context, Class<?>[] interfaces) {
+		for (Class<?> intf : interfaces) {
+			context.set(intf.getName(), contextModel);
+			populateModelInterfaces(contextModel, context, intf.getInterfaces());
+		}
+	}
+
+	@SuppressWarnings("unchecked")
+	@Override
+	public Object createGui(final MUIElement element) {
+		// Obtain the necessary parent widget
+		MElementContainer<MUIElement> parent = element.getParent();
+		if (parent == null
+				&& ((EObject) element).eContainer() instanceof MElementContainer<?>) {
+			parent = (MElementContainer<MUIElement>) ((EObject) element)
+					.eContainer();
+		}
+
+		// Obtain the necessary parent context
+		IEclipseContext parentContext = null;
+		if (element.getCurSharedRef() != null) {
+			MPlaceholder ph = element.getCurSharedRef();
+			parentContext = getContext(ph.getParent());
+		} else if (parentContext == null && element.getParent() != null) {
+			parentContext = getContext(element.getParent());
+		} else if (parentContext == null && element.getParent() == null) {
+			parentContext = getContext((MUIElement) ((EObject) element)
+					.eContainer());
+		}
+
+		return createGui(element, parent, parentContext);
+	}
+
+	private IEclipseContext getContext(MUIElement parent) {
+		if (parent instanceof MContext) {
+			return ((MContext) parent).getContext();
+		}
+		return modelService.getContainingContext(parent);
+	}
+
+	@SuppressWarnings("unchecked")
+	@Override
+	public void removeGui(MUIElement element) {
+
+		// ((GenericRenderer) element.getRenderer()).removeWidget(element,
+		// null);
+
+		// ((GenericRenderer) element.getRenderer()).disposeWidget(element);
+
+		// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+		// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+		// We call 'hideChild' *before* checking if the actual element
+		// has been rendered in order to pick up cases of 'lazy loading'
+		MUIElement parent = element.getParent();
+		GenericRenderer parentRenderer = (GenericRenderer) (parent != null ? parent
+				.getRenderer() : null);
+
+		if (parentRenderer != null && parent.getWidget() != null) {
+			parentRenderer.removeChildGui(element,
+					(MElementContainer<MUIElement>) parent);
+		}
+
+		GenericRenderer renderer = (GenericRenderer) element.getRenderer();
+
+		// If the element hasn't been rendered then this is a NO-OP
+		if (renderer != null) {
+
+			if (element instanceof MElementContainer<?>) {
+				MElementContainer<MUIElement> container = (MElementContainer<MUIElement>) element;
+				MUIElement selectedElement = container.getSelectedElement();
+				List<MUIElement> children = container.getChildren();
+				for (MUIElement child : children) {
+					// remove stuff in the "back" first
+					if (child != selectedElement) {
+						removeGui(child);
+					}
+				}
+
+				if (selectedElement != null
+						&& children.contains(selectedElement)) {
+					// now remove the selected element
+					removeGui(selectedElement);
+				}
+			} else if (element instanceof MPlaceholder) {
+				MPlaceholder ph = (MPlaceholder) element;
+				MUIElement refElement = ph.getRef();
+
+				int pcount = 0;
+				MWindow window = modelService.getTopLevelWindowFor(element);
+				for (MPlaceholder p : modelService.findElements(window, null,
+						MPlaceholder.class, null)) {
+					if (p.getRef() == refElement)
+						pcount++;
+				}
+
+				assert pcount > 0;
+
+				if (pcount == 1) {
+					removeGui(refElement);
+				}
+			}
+
+			if (element instanceof MPerspective) {
+				MPerspective perspective = (MPerspective) element;
+				for (MWindow subWindow : perspective.getWindows()) {
+					removeGui(subWindow);
+				}
+			} else if (element instanceof MWindow) {
+				MWindow window = (MWindow) element;
+				for (MWindow subWindow : window.getWindows()) {
+					removeGui(subWindow);
+				}
+
+				if (window instanceof MTrimmedWindow) {
+					MTrimmedWindow trimmedWindow = (MTrimmedWindow) window;
+					for (MUIElement trimBar : trimmedWindow.getTrimBars()) {
+						removeGui(trimBar);
+					}
+				}
+			}
+
+			if (element instanceof MContribution) {
+				MContribution contribution = (MContribution) element;
+				Object client = contribution.getObject();
+				IEclipseContext parentContext = renderer.getContext(element);
+				if (parentContext != null && client != null) {
+					try {
+						ContextInjectionFactory.invoke(client,
+								PersistState.class, parentContext, null);
+					} catch (Exception e) {
+						if (logger != null) {
+							logger.error(e);
+						}
+					}
+				}
+			}
+
+			if (element instanceof MPart) {
+				MPart part = (MPart) element;
+				MToolBar toolBar = part.getToolbar();
+				if (toolBar != null) {
+
+					if (toolBar.getWidget() != null) {
+						((GenericRenderer) (toolBar.getRenderer()))
+								.unbindWidget(toolBar);
+					}
+				}
+
+				for (MMenu menu : part.getMenus()) {
+					removeGui(menu);
+				}
+			}
+
+			renderer.unbindWidget(element);
+			renderer.disposeWidget(element);
+			element.setRenderer(null);
+			element.setWidget(null);
+
+			// unset the client object
+			if (element instanceof MContribution) {
+				MContribution contribution = (MContribution) element;
+				Object client = contribution.getObject();
+				IEclipseContext parentContext = renderer.getContext(element);
+				if (parentContext != null && client != null) {
+					try {
+						ContextInjectionFactory.uninject(client, parentContext);
+					} catch (Exception e) {
+						if (logger != null) {
+							logger.error(e);
+						}
+					}
+				}
+				contribution.setObject(null);
+			}
+
+			// dispose the context
+			if (element instanceof MContext) {
+				clearContext((MContext) element);
+			}
+		}
+	}
+
+	private void clearContext(MContext contextME) {
+		MContext ctxt = (MContext) contextME;
+		IEclipseContext lclContext = ctxt.getContext();
+		if (lclContext != null) {
+			IEclipseContext parentContext = lclContext.getParent();
+			IEclipseContext child = parentContext.getActiveChild();
+			if (child == lclContext) {
+				child.deactivate();
+			}
+
+			ctxt.setContext(null);
+			lclContext.dispose();
+		}
+	}
+
+	@Override
+	public Object run(MApplicationElement uiRoot, IEclipseContext appContext) {
+		appContext.set(IPresentationEngine.class, this);
+		appContext.set(GenericPresentationEngine.class, this);
+		if (uiRoot instanceof MApplication) {
+			theApp = (MApplication) uiRoot;
+			for (MWindow window : theApp.getChildren()) {
+				createGui(window);
+			}
+		}
+		return IApplication.EXIT_OK;
+	}
+
+	@Override
+	public void stop() {
+		if (theApp != null) {
+			for (MWindow window : theApp.getChildren()) {
+				if (window.getWidget() != null) {
+					removeGui(window);
+				}
+			}
+		}
+	}
+
+	public void postConstruct(IEclipseContext context) {
+		// Add the presentation engine to the context
+		context.set(IPresentationEngine.class.getName(), this);
+
+		eventBroker.subscribe(UIEvents.UIElement.TOPIC_TOBERENDERED,
+				toBeRenderedHandler);
+		eventBroker.subscribe(UIEvents.UIElement.TOPIC_VISIBLE,
+				visibilityHandler);
+		eventBroker.subscribe(UIEvents.ElementContainer.TOPIC_CHILDREN,
+				childrenHandler);
+	}
+
+	@PreDestroy
+	public void destroy(IEclipseContext context) {
+		context.remove(IPresentationEngine.class.getName());
+
+		eventBroker.unsubscribe(toBeRenderedHandler);
+		eventBroker.unsubscribe(visibilityHandler);
+		eventBroker.unsubscribe(childrenHandler);
+	}
+
+	// TODO
+	@Override
+	public void focusGui(MUIElement element) {
+
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/engine/GenericRendererFactory.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/engine/GenericRendererFactory.java
new file mode 100644
index 0000000..02a0ac4
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/engine/GenericRendererFactory.java
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * Copyright (c) 2011 Kai Toedter and others.
+ * 
+ * All rights reserved. This program and the accompanying materials 
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ * 
+ * Contributors:
+ *     Kai Toedter - initial API and implementation
+ ******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.presentation.engine;
+
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.osbp.vaaclipse.presentation.renderers.GenericRenderer;
+import org.eclipse.osbp.vaaclipse.presentation.renderers.VaadinRenderer;
+
+@SuppressWarnings("restriction")
+public class GenericRendererFactory implements RendererFactory {
+
+	VaadinRenderer genericRenderer = new VaadinRenderer();
+
+	@Override
+	public GenericRenderer getRenderer(MUIElement uiElement) {
+		return genericRenderer;
+	}
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/engine/PresentationEngine.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/engine/PresentationEngine.java
new file mode 100644
index 0000000..c80279f
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/engine/PresentationEngine.java
@@ -0,0 +1,31 @@
+/*******************************************************************************
+ * Copyright (c) 2011 Kai Toedter and others.
+ * 
+ * All rights reserved. This program and the accompanying materials 
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ * 
+ * Contributors:
+ *     Kai Toedter - initial API and implementation
+ ******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.presentation.engine;
+
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.workbench.IPresentationEngine;
+
+/**
+ * This engine was adopted from Kai Toedter's generic renderer project. I place
+ * it in vaaclipse packages temproraly - until the generic renderer will be the
+ * part of eclipse project.
+ * 
+ * @author Kai Toedter
+ */
+@SuppressWarnings("restriction")
+public interface PresentationEngine extends IPresentationEngine {
+	public Object createGui(MUIElement element,
+			MElementContainer<MUIElement> parent, IEclipseContext parentContext);
+}
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/engine/RendererFactory.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/engine/RendererFactory.java
new file mode 100644
index 0000000..9ecfeba
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/engine/RendererFactory.java
@@ -0,0 +1,21 @@
+/*******************************************************************************
+ * Copyright (c) 2011 Kai Toedter and others.
+ * 
+ * All rights reserved. This program and the accompanying materials 
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ * 
+ * Contributors:
+ *     Kai Toedter - initial API and implementation
+ ******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.presentation.engine;
+
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.osbp.vaaclipse.presentation.renderers.GenericRenderer;
+
+@SuppressWarnings("restriction")
+public interface RendererFactory {
+	public GenericRenderer getRenderer(MUIElement uiElement);
+}
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/engine/VaadinPresentationEngine.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/engine/VaadinPresentationEngine.java
new file mode 100644
index 0000000..2a0edc2
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/engine/VaadinPresentationEngine.java
@@ -0,0 +1,95 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.presentation.engine;
+
+import java.net.URI;
+
+import javax.annotation.PostConstruct;
+
+import org.eclipse.e4.core.contexts.ContextInjectionFactory;
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.core.services.contributions.IContributionFactory;
+import org.eclipse.e4.ui.model.application.MApplicationElement;
+import org.eclipse.e4.ui.workbench.IPresentationEngine;
+import org.eclipse.osbp.vaaclipse.api.VaadinExecutorService;
+import org.eclipse.osbp.vaaclipse.presentation.fastview.FastViewManager;
+import org.eclipse.osbp.vaaclipse.publicapi.events.PublicEvents;
+
+import com.vaadin.ui.UI;
+import com.vaadin.ui.VerticalLayout;
+
+@SuppressWarnings("restriction")
+public class VaadinPresentationEngine extends GenericPresentationEngine {
+
+	public VaadinPresentationEngine() {
+
+	}
+
+	@Override
+	public Object run(final MApplicationElement uiRoot,
+			IEclipseContext appContext) {
+
+		ContextInjectionFactory.make(FastViewManager.class, appContext);
+
+		super.run(uiRoot, appContext);
+
+		return "";
+	}
+
+	@Override
+	@PostConstruct
+	public void postConstruct(IEclipseContext context) {
+		super.postConstruct(context);
+
+		// Add the presentation engine to the context
+		context.set(IPresentationEngine.class.getName(), this);
+
+		// TODO use parameter or registry
+		IContributionFactory contribFactory = context
+				.get(IContributionFactory.class);
+		try {
+			rendererFactory = (RendererFactory) contribFactory
+					.create("bundleclass://org.eclipse.osbp.vaaclipse.presentation/org.eclipse.osbp.vaaclipse.presentation.renderers.VaadinRendererFactory",
+							context);
+		} catch (Exception e) {
+			logger.warn(e, "Could not create rendering factory");
+		}
+	}
+
+	@Override
+	public void stop() {
+		eventBroker.send(PublicEvents.EXIT_WORKBENCH, null);
+
+		super.stop();
+
+		VaadinExecutorService executor = theApp.getContext().get(
+				VaadinExecutorService.class);
+		executor.removeAllAlwaysRunnables();
+
+		final UI ui = theApp.getContext().get(UI.class);
+		Runnable runnable = new Runnable() {
+			@Override
+			public void run() {
+				ui.setContent(new VerticalLayout());
+				URI appUri = ui.getPage().getLocation();
+				ui.close();
+				ui.getPage().setLocation(appUri);
+			}
+		};
+
+		if (UI.getCurrent() == null) {
+			ui.access(runnable);
+		} else {
+			runnable.run();
+		}
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/fastview/FastViewManager.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/fastview/FastViewManager.java
new file mode 100644
index 0000000..6e6b02e
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/fastview/FastViewManager.java
@@ -0,0 +1,160 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.presentation.fastview;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.annotation.PostConstruct;
+import javax.inject.Inject;
+
+import org.eclipse.e4.core.contexts.ContextInjectionFactory;
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.core.services.events.IEventBroker;
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.model.application.ui.advanced.MPlaceholder;
+import org.eclipse.e4.ui.model.application.ui.basic.MPartStack;
+import org.eclipse.e4.ui.model.application.ui.basic.MTrimBar;
+import org.eclipse.e4.ui.model.application.ui.menu.MToolBar;
+import org.eclipse.e4.ui.workbench.modeling.EModelService;
+import org.eclipse.osbp.vaaclipse.api.Events;
+import org.eclipse.osbp.vaaclipse.widgets.StackWidget;
+import org.osgi.service.event.Event;
+import org.osgi.service.event.EventHandler;
+
+import fi.jasoft.dragdroplayouts.client.ui.LayoutDragMode;
+
+/**
+ * @author rushan
+ *
+ */
+public class FastViewManager {
+	@Inject
+	private IEclipseContext context;
+
+	@Inject
+	private EModelService modelService;
+
+	private Map<MUIElement, SingleElementFastViewManager> element2man = new HashMap<MUIElement, SingleElementFastViewManager>();
+	private Map<StackWidget, LayoutDragMode> layoutDragMode = new HashMap<StackWidget, LayoutDragMode>();
+	private Map<MUIElement, List<MPartStack>> areaStackWidgets = new HashMap<MUIElement, List<MPartStack>>();
+
+	private EventHandler minimizeHandler = new EventHandler() {
+
+		@Override
+		public void handleEvent(Event event) {
+			MUIElement minimizedElement = (MUIElement) event
+					.getProperty(Events.MinMaxEvents.PARAMETER_ELEMENT);
+
+			if (element2man.containsKey(minimizedElement))
+				return;
+
+			// Disable drag mode
+			if (minimizedElement instanceof MPartStack) {
+				disableDrag((MPartStack) minimizedElement);
+			} else if (minimizedElement instanceof MPlaceholder) // area
+			{
+				if (((MPlaceholder) minimizedElement).getRef() != null) {
+					List<MPartStack> stacks = modelService.findElements(
+							((MPlaceholder) minimizedElement).getRef(), null,
+							MPartStack.class, null);
+
+					for (MPartStack stack : stacks) {
+						if (stack.getWidget() != null) {
+							disableDrag(stack);
+						}
+					}
+					areaStackWidgets.put(minimizedElement, stacks);
+				}
+			}
+
+			// start single element fast view manager for minimizedElement
+			MTrimBar trimBar = (MTrimBar) event
+					.getProperty(Events.MinMaxEvents.PARAMETER_TRIMBAR);
+			MToolBar toolBar = (MToolBar) event
+					.getProperty(Events.MinMaxEvents.PARAMETER_TOOLBAR);
+
+			IEclipseContext manContext = context.createChild();
+			manContext.set(MUIElement.class, minimizedElement);
+			manContext.set(MTrimBar.class, trimBar);
+			manContext.set(MToolBar.class, toolBar);
+
+			SingleElementFastViewManager man = ContextInjectionFactory.make(
+					SingleElementFastViewManager.class, manContext);
+			element2man.put(minimizedElement, man);
+		}
+	};
+
+	private EventHandler restoreHandler = new EventHandler() {
+
+		@Override
+		public void handleEvent(Event event) {
+			MUIElement minimizedElement = (MUIElement) event
+					.getProperty(Events.MinMaxEvents.PARAMETER_ELEMENT);
+
+			if (!element2man.containsKey(minimizedElement))
+				return;
+
+			element2man.remove(minimizedElement).dispose();
+
+			// restore drag mode
+			if (minimizedElement instanceof MPartStack) {
+				restoreDrag((MPartStack) minimizedElement);
+			} else if (minimizedElement instanceof MPlaceholder) // area
+			{
+				MPlaceholder ph = (MPlaceholder) minimizedElement;
+				if (ph.getRef() != null) {
+					List<MPartStack> stacks = areaStackWidgets
+							.remove(minimizedElement);
+					if (stacks != null) {
+						for (MPartStack stack : stacks) {
+							restoreDrag(stack);
+						}
+					}
+				}
+			}
+		}
+	};
+
+	private void disableDrag(MPartStack stack) {
+		StackWidget sw = (StackWidget) stack.getWidget();
+		if (sw != null) {
+			if (sw.getDragMode() != null
+					&& !sw.getDragMode().equals(LayoutDragMode.NONE)) {
+				layoutDragMode.put(sw, sw.getDragMode());
+				sw.setDragMode(LayoutDragMode.NONE);
+			}
+		}
+	}
+
+	private void restoreDrag(MPartStack stack) {
+		StackWidget sw = (StackWidget) stack.getWidget();
+		if (sw != null) {
+			LayoutDragMode ldm = layoutDragMode.remove(sw);
+			if (ldm != null) {
+				sw.setDragMode(ldm);
+			}
+		}
+	}
+
+	@PostConstruct
+	public void postConstruct(IEventBroker eventBroker) {
+		eventBroker.unsubscribe(minimizeHandler);
+		eventBroker.subscribe(Events.MinMaxEvents.EVENT_MINIMIZE_ELEMENT,
+				minimizeHandler);
+
+		eventBroker.unsubscribe(restoreHandler);
+		eventBroker.subscribe(Events.MinMaxEvents.EVENT_RESTORE_ELEMENT,
+				restoreHandler);
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/fastview/SingleElementFastViewManager.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/fastview/SingleElementFastViewManager.java
new file mode 100644
index 0000000..adfa690
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/fastview/SingleElementFastViewManager.java
@@ -0,0 +1,393 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.presentation.fastview;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.inject.Inject;
+
+import org.eclipse.e4.core.services.events.IEventBroker;
+import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.model.application.ui.MUILabel;
+import org.eclipse.e4.ui.model.application.ui.SideValue;
+import org.eclipse.e4.ui.model.application.ui.advanced.MPerspective;
+import org.eclipse.e4.ui.model.application.ui.advanced.MPerspectiveStack;
+import org.eclipse.e4.ui.model.application.ui.advanced.MPlaceholder;
+import org.eclipse.e4.ui.model.application.ui.basic.MPart;
+import org.eclipse.e4.ui.model.application.ui.basic.MPartStack;
+import org.eclipse.e4.ui.model.application.ui.basic.MTrimBar;
+import org.eclipse.e4.ui.model.application.ui.basic.MWindow;
+import org.eclipse.e4.ui.model.application.ui.menu.MToolBar;
+import org.eclipse.e4.ui.workbench.IPresentationEngine;
+import org.eclipse.e4.ui.workbench.UIEvents;
+import org.eclipse.e4.ui.workbench.modeling.EModelService;
+import org.eclipse.e4.ui.workbench.modeling.EPartService;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.osbp.vaaclipse.api.Behaviour;
+import org.eclipse.osbp.vaaclipse.presentation.widgets.TrimmedWindowContent;
+import org.eclipse.osbp.vaaclipse.widgets.FastView;
+import org.osgi.service.event.EventHandler;
+
+import com.vaadin.event.MouseEvents.ClickEvent;
+import com.vaadin.event.MouseEvents.ClickListener;
+import com.vaadin.ui.Component;
+import com.vaadin.ui.Panel;
+import com.vaadin.ui.UI;
+import com.vaadin.ui.VerticalLayout;
+
+/**
+ * @author rushan
+ *
+ */
+public class SingleElementFastViewManager {
+
+	@Inject
+	UI vaadinUI;
+
+	@Inject
+	Behaviour behaviour;
+
+	@Inject
+	MUIElement minimizedElement;
+	@Inject
+	MTrimBar trimBar;
+	@Inject
+	MToolBar toolBar;
+
+	private MWindow window;
+	private Panel vaadinWindow;
+
+	// --------------------------------------------
+	// --------------------------------------------
+
+	private static final String STATE_XSIZE = "XSize"; //$NON-NLS-1$
+
+	private static final String STATE_YSIZE = "YSize"; //$NON-NLS-1$
+
+	private boolean isShowing = false;
+	private FastView hostPane;
+
+	@Inject
+	EModelService modelService;
+
+	@Inject
+	EPartService partService;
+
+	@Inject
+	protected IEventBroker eventBroker;
+
+	/**
+	 * This is the old way to subscribe to UIEvents. You should consider using
+	 * the new way as shown by handleTransientDataEvents() and described in the
+	 * article at http://wiki.eclipse.org/Eclipse4/RCP/Event_Model
+	 */
+	private EventHandler closeHandler = new EventHandler() {
+		public void handleEvent(org.osgi.service.event.Event event) {
+			if (!isShowing)
+				return;
+
+			// The only time we don't close is if I've selected my tab.
+			MUIElement changedElement = (MUIElement) event
+					.getProperty(UIEvents.EventTags.ELEMENT);
+
+			// Perspective changed, close the visible stacks
+			if (changedElement instanceof MPerspectiveStack) {
+				showStack(false);
+				return;
+			}
+
+			if (changedElement == getLeafPart(minimizedElement)) {
+				fixToolItemSelection(changedElement);
+				return;
+			}
+
+			showStack(false);
+		}
+	};
+
+	private void fixToolItemSelection(MUIElement element) {
+		// TODO: implement correctly this method
+		// if (trimStackTB == null || trimStackTB.isDisposed())
+		// return;
+		//
+		// if (isEditorStack()) {
+		// trimStackTB.getItem(1).setSelection(element != null);
+		// if (element != null)
+		// trimStackTB.getItem(1).setData(element);
+		// } else if (isPerspectiveStack()) {
+		// for (ToolItem item : trimStackTB.getItems()) {
+		// boolean result = item.getData() == null ? false : item.getData() ==
+		// element;
+		// item.setSelection(result);
+		// }
+		// } else {
+		// for (ToolItem item : trimStackTB.getItems()) {
+		// boolean result = item.getData() == null ? false : item.getData() ==
+		// element;
+		// item.setSelection(result);
+		// }
+		// }
+
+	}
+
+	private boolean isEditorStack() {
+		return minimizedElement instanceof MPlaceholder;
+	}
+
+	private boolean isPerspectiveStack() {
+		return minimizedElement instanceof MPerspectiveStack;
+	}
+
+	private MPart getLeafPart(MUIElement element) {
+		if (element instanceof MPlaceholder)
+			return getLeafPart(((MPlaceholder) element).getRef());
+
+		if (element instanceof MElementContainer<?>)
+			return getLeafPart(((MElementContainer<?>) element)
+					.getSelectedElement());
+
+		if (element instanceof MPart)
+			return (MPart) element;
+
+		return null;
+	}
+
+	private EventHandler openHandler = new EventHandler() {
+
+		public void handleEvent(org.osgi.service.event.Event event) {
+			if (isShowing)
+				return;
+
+			MPerspective currentPerspective = modelService
+					.getPerspectiveFor(minimizedElement);
+			MPerspective activePerspective = modelService
+					.getActivePerspective(window);
+
+			if (currentPerspective != activePerspective)
+				return;
+
+			MPart changedElement = (MPart) event
+					.getProperty(UIEvents.EventTags.ELEMENT);
+
+			// Open if shared area
+			if (getLeafPart(minimizedElement) == changedElement) {
+				showStack(true);
+				return;
+			}
+
+			MUIElement selectedElement = null;
+
+			if (minimizedElement instanceof MPlaceholder) {
+				selectedElement = ((MPlaceholder) minimizedElement).getRef();
+			} else if (minimizedElement instanceof MPartStack) {
+				selectedElement = ((MPartStack) minimizedElement)
+						.getSelectedElement();
+			}
+
+			if (selectedElement == null)
+				return;
+
+			if (selectedElement instanceof MPlaceholder)
+				selectedElement = ((MPlaceholder) selectedElement).getRef();
+
+			if (changedElement != selectedElement)
+				return;
+
+			showStack(true);
+		}
+	};
+
+	/**
+	 * This is the old way to subscribe to UIEvents. You should consider using
+	 * the new way as shown by handleTransientDataEvents() and described in the
+	 * article at http://wiki.eclipse.org/Eclipse4/RCP/Event_Model
+	 */
+	private EventHandler toBeRenderedHandler = new EventHandler() {
+		public void handleEvent(org.osgi.service.event.Event event) {
+			if (minimizedElement == null || trimBar == null)
+				return;
+
+			MUIElement changedElement = (MUIElement) event
+					.getProperty(UIEvents.EventTags.ELEMENT);
+
+			// if our stack is going away, so should we
+			if (changedElement == minimizedElement
+					&& !minimizedElement.isToBeRendered()) {
+				if (hostPane != null)
+					vaadinUI.removeWindow(hostPane);
+				hostPane = null;
+				return;
+			}
+		}
+	};
+
+	@PostConstruct
+	void postConstruct() {
+
+		if (window == null)
+			window = (MWindow) (trimBar.getParent() != null ? (MElementContainer<?>) trimBar
+					.getParent() : ((EObject) trimBar).eContainer());
+		vaadinWindow = (Panel) window.getWidget();
+
+		eventBroker.subscribe(UIEvents.UIElement.TOPIC_TOBERENDERED,
+				toBeRenderedHandler);
+		eventBroker.subscribe(UIEvents.UILifeCycle.BRINGTOTOP, openHandler);
+		eventBroker.subscribe(UIEvents.UILifeCycle.ACTIVATE, closeHandler);
+	}
+
+	void dispose() {
+		showStack(false);
+
+		eventBroker.unsubscribe(toBeRenderedHandler);
+		eventBroker.unsubscribe(openHandler);
+		eventBroker.unsubscribe(closeHandler);
+	}
+
+	/**
+	 * This is the old way to subscribe to UIEvents. You should consider using
+	 * the new way as shown by handleTransientDataEvents() and described in the
+	 * article at http://wiki.eclipse.org/Eclipse4/RCP/Event_Model
+	 */
+	@PreDestroy
+	void removeListeners() {
+		eventBroker.unsubscribe(openHandler);
+		eventBroker.unsubscribe(closeHandler);
+	}
+
+	private String getLabelText(MUILabel label) {
+		// Use override text if available
+		if (label instanceof MUIElement) {
+			String text = getOverrideTitleToolTip((MUIElement) label);
+			if (text != null)
+				return text;
+		}
+
+		String string = label.getLabel();
+		return string == null ? "" : string; //$NON-NLS-1$
+	}
+
+	private String getOverrideTitleToolTip(MUIElement element) {
+		String result = null;
+
+		Object stringObject = element.getTransientData().get(
+				IPresentationEngine.OVERRIDE_TITLE_TOOL_TIP_KEY);
+		if (stringObject != null && stringObject instanceof String)
+			result = (String) stringObject;
+
+		return result;
+	}
+
+	private MUILabel getLabelElement(MUIElement element) {
+		if (element instanceof MPlaceholder)
+			element = ((MPlaceholder) element).getRef();
+
+		return (MUILabel) (element instanceof MUILabel ? element : null);
+	}
+
+	/**
+	 * Create the popup menu that will appear when a minimized part has been
+	 * selected by the cursor.
+	 */
+	// private void createPopupMenu() {
+	// trimStackMenu = new Menu(trimStackTB);
+	// trimStackTB.setMenu(trimStackMenu);
+	//
+	// MenuItem closeItem = new MenuItem(trimStackMenu, SWT.NONE);
+	// closeItem.setText(Messages.TrimStack_CloseText);
+	// closeItem.addListener(SWT.Selection, new Listener() {
+	// public void handleEvent(Event event) {
+	// partService.hidePart((MPart) selectedToolItem.getData());
+	// }
+	// });
+	// }
+
+	ClickListener layoutClickListener = new ClickListener() {
+
+		@Override
+		public void click(ClickEvent event) {
+			if (isShowing)
+				showStack(false);
+			partService.requestActivation();
+		}
+	};
+
+	public synchronized void showStack(boolean show) {
+		Component ctf = (Component) minimizedElement.getWidget();
+
+		if (show && !isShowing) {
+			hostPane = getHostPane();
+			VerticalLayout vl = new VerticalLayout();
+			vl.setSizeFull();
+			hostPane.setContent(vl);
+
+			ctf.setVisible(true);
+
+			TrimmedWindowContent windowContent = (TrimmedWindowContent) vaadinWindow
+					.getContent();
+			VerticalLayout clientArea = windowContent.getClientArea();
+
+			hostPane.setTrimmedWindowClientArea(clientArea);
+			// hostPane.setContent(ctf);
+			vl.addComponent(ctf);
+
+			vaadinUI.addWindow(hostPane);
+			vaadinWindow.addClickListener(layoutClickListener);
+
+			isShowing = true;
+		} else if (!show && isShowing) {
+			if (hostPane != null) {
+				vaadinUI.removeWindow(hostPane);
+				// capture the current shell's bounds
+				toolBar.getPersistedState().put(STATE_XSIZE,
+						Float.toString(Float.valueOf(hostPane.getWidth())));
+				toolBar.getPersistedState().put(STATE_YSIZE,
+						Float.toString(Float.valueOf(hostPane.getHeight())));
+			}
+
+			fixToolItemSelection(null);
+
+			vaadinWindow.removeClickListener(layoutClickListener);
+
+			partService.requestActivation();
+
+			isShowing = false;
+		}
+	}
+
+	private FastView getHostPane() {
+		if (hostPane != null)
+			return hostPane;
+
+		// Create one
+		hostPane = new FastView();
+		hostPane.setSide(trimBar.getSide().getValue());
+		hostPane.setClosable(false);
+		hostPane.setDraggable(false);
+		if (trimBar.getSide() == SideValue.RIGHT)
+			hostPane.setResizable(false);
+		// hostPane.setResizeLazy(true);
+		hostPane.setStyleName("loading-window");
+
+		// TODO: implement closing by esc
+		// hostPane.addListener(SWT.Traverse, new Listener() {
+		// public void handleEvent(Event event) {
+		// if (event.character == SWT.ESC) {
+		// partService.requestActivation();
+		// }
+		// }
+		// });
+
+		return hostPane;
+	}
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/AreaRenderer.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/AreaRenderer.java
new file mode 100644
index 0000000..2f13255
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/AreaRenderer.java
@@ -0,0 +1,276 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.presentation.renderers;
+
+import java.util.List;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.inject.Inject;
+
+import org.eclipse.e4.core.services.events.IEventBroker;
+import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.model.application.ui.advanced.MArea;
+import org.eclipse.e4.ui.model.application.ui.advanced.MPlaceholder;
+import org.eclipse.e4.ui.model.application.ui.basic.MPartSashContainer;
+import org.eclipse.e4.ui.model.application.ui.basic.MPartSashContainerElement;
+import org.eclipse.e4.ui.model.application.ui.basic.MPartStack;
+import org.eclipse.e4.ui.workbench.IPresentationEngine;
+import org.eclipse.e4.ui.workbench.UIEvents;
+import org.eclipse.e4.ui.workbench.modeling.EModelService;
+import org.eclipse.osbp.vaaclipse.api.VaadinExecutorService;
+import org.eclipse.osbp.vaaclipse.presentation.utils.HierarchyUtils;
+import org.eclipse.osbp.vaaclipse.widgets.StackWidget;
+import org.eclipse.osbp.vaaclipse.widgets.StackWidget.StateListener;
+import org.osgi.service.event.Event;
+import org.osgi.service.event.EventHandler;
+
+import com.vaadin.ui.AbstractOrderedLayout;
+import com.vaadin.ui.Component;
+import com.vaadin.ui.HorizontalLayout;
+import com.vaadin.ui.VerticalLayout;
+
+/**
+ * @author rushan
+ * 
+ */
+public class AreaRenderer extends VaadinRenderer {
+	@Inject
+	IEventBroker eventBroker;
+
+	@Inject
+	VaadinExecutorService executorService;
+
+	private EventHandler childrenHandler = new EventHandler() {
+		public void handleEvent(Event event) {
+			Object changedObj = event.getProperty(UIEvents.EventTags.ELEMENT);
+
+			// Stacks can not contains another stacks (yes, theoretically it can
+			// contains the stack in child placeholder, but
+			// we search only top level stacks)
+			if (changedObj instanceof MPartStack)
+				return;
+
+			@SuppressWarnings("unchecked")
+			MElementContainer<? extends MUIElement> changedElement = (MElementContainer<MUIElement>) changedObj;
+
+			if (!changedElement.isToBeRendered()
+					|| changedElement.getWidget() == null)
+				return;
+
+			String eventType = (String) event
+					.getProperty(UIEvents.EventTags.TYPE);
+			MUIElement child = null;
+			if (UIEvents.EventTypes.ADD.equals(eventType))
+				child = (MUIElement) event
+						.getProperty(UIEvents.EventTags.NEW_VALUE);
+			else if (UIEvents.EventTypes.REMOVE.equals(eventType))
+				child = (MUIElement) event
+						.getProperty(UIEvents.EventTags.OLD_VALUE);
+
+			if (child == null || !child.isToBeRendered())
+				return;
+
+			if (!(child instanceof MPartStack || child instanceof MPartSashContainer))
+				return;
+
+			processChangedElement(changedElement);
+		}
+	};
+
+	private EventHandler toBeRenderedHandler = new EventHandler() {
+		public void handleEvent(Event event) {
+
+			MUIElement changedElement = (MUIElement) event
+					.getProperty(UIEvents.EventTags.ELEMENT);
+
+			if (!(changedElement instanceof MPartStack || changedElement instanceof MPartSashContainer))
+				return;
+
+			processChangedElement(changedElement);
+		}
+	};
+
+	private void processChangedElement(MUIElement changedElement) {
+		MArea area = null;
+		// if it is area we directly process it
+		if (changedElement instanceof MArea)
+			area = (MArea) changedElement;
+		else {// otherwise we find parent area
+			int loc = modelService.getElementLocation(changedElement);
+			if (loc != EModelService.IN_SHARED_AREA)
+				return;
+
+			area = findArea(changedElement);
+		}
+
+		if (area != null) {
+			final MArea closureArea = area;
+			executorService.invokeLater(closureArea, new Runnable() {
+
+				@Override
+				public void run() {
+					refreshTopRightState(closureArea);
+				}
+			});
+		}
+	}
+
+	private MArea findArea(MUIElement element) {
+		MUIElement parent = element.getParent();
+		while (parent != null) {
+			if (parent instanceof MArea)
+				return (MArea) parent;
+			parent = parent.getParent();
+		}
+		return null;
+	}
+
+	@PostConstruct
+	public void subscribe() {
+		eventBroker.subscribe(UIEvents.ElementContainer.TOPIC_CHILDREN,
+				childrenHandler);
+		eventBroker.subscribe(UIEvents.UIElement.TOPIC_TOBERENDERED,
+				toBeRenderedHandler);
+	}
+
+	@PreDestroy
+	public void unsubscribe() {
+		eventBroker.unsubscribe(childrenHandler);
+		eventBroker.unsubscribe(toBeRenderedHandler);
+	}
+
+	@Override
+	public void createWidget(MUIElement element,
+			MElementContainer<MUIElement> parent) {
+		if (!(element instanceof MArea))
+			return;
+
+		MArea area = (MArea) element;
+		AbstractOrderedLayout areaComp;
+		if (area.isHorizontal())
+			areaComp = new HorizontalLayout();
+		else
+			areaComp = new VerticalLayout();
+		areaComp.addStyleName("org_eclipse_osbp_vaaclipse_area");
+		areaComp.setSizeFull();
+		element.setWidget(areaComp);
+	}
+
+	@Override
+	public void processContents(MElementContainer<MUIElement> container) {
+		MArea area = (MArea) (MElementContainer<?>) container;
+		AbstractOrderedLayout parentPane = (AbstractOrderedLayout) area
+				.getWidget();
+		parentPane.removeAllComponents();
+		for (MUIElement element : area.getChildren()) {
+			if (element.isToBeRendered()) {
+				if (element instanceof MPlaceholder)
+					element = ((MPlaceholder) element).getRef();
+				parentPane.addComponent((Component) element.getWidget());
+			}
+		}
+
+		refreshTopRightState(area);
+	}
+
+	/**
+	 * This method finds the top right part stack (located in top right corner)
+	 * and apply its maximize and minimize buttons to entire area. Then hide the
+	 * maximize and minimize buttons of other stacks in this area. So, there are
+	 * implemented the eclipse3-like approach to manage area (in e4 swt renderer
+	 * is used other way - if more than one stack is located in area, the top
+	 * container-tabfolder is created for entire area and buttons of this
+	 * container folder is used - i found this way is too heavy-weight).
+	 */
+	@SuppressWarnings("restriction")
+	private void refreshTopRightState(final MArea area) {
+		MPartStack topLeftStak = HierarchyUtils.findTopLeftFolder(area);
+		if (topLeftStak != null) {
+			StackWidget topLeftStackWidget = (StackWidget) topLeftStak
+					.getWidget();
+			if (topLeftStackWidget != null) {
+				topLeftStackWidget.setMinMaxEnabled(true);
+				topLeftStackWidget.removeAllStateListeners();
+
+				topLeftStackWidget.addStateListener(new StateListener() {
+
+					@Override
+					public void stateChanged(int newState, int oldState) {
+						MPlaceholder ph = area.getCurSharedRef();
+						if (oldState == 0 && newState == 1)
+							setState(ph, IPresentationEngine.MAXIMIZED);
+						else if (oldState == 1 && newState == 0)
+							setState(ph, null);
+						else if (oldState == 1 && newState == -1) {
+							ph.getTags().remove(IPresentationEngine.MINIMIZED);
+							ph.getTags().remove(IPresentationEngine.MAXIMIZED);
+							ph.getTags().add(IPresentationEngine.MINIMIZED);
+						} else if (oldState == -1 && newState == 0) {
+							ph.getTags().remove(
+									IPresentationEngine.MINIMIZED_BY_ZOOM);
+							ph.getTags().remove(IPresentationEngine.MINIMIZED);
+						} else if (oldState == 0 && newState == -1)
+							setState(ph, IPresentationEngine.MINIMIZED);
+					}
+
+					private void setState(MUIElement element, String state) {
+						element.getTags().remove(
+								IPresentationEngine.MINIMIZED_BY_ZOOM);
+						if (IPresentationEngine.MINIMIZED.equals(state)) {
+							element.getTags().remove(
+									IPresentationEngine.MAXIMIZED);
+							element.getTags()
+									.add(IPresentationEngine.MINIMIZED);
+						} else if (IPresentationEngine.MAXIMIZED.equals(state)) {
+							element.getTags().remove(
+									IPresentationEngine.MINIMIZED);
+							element.getTags()
+									.add(IPresentationEngine.MAXIMIZED);
+						} else {
+							element.getTags().remove(
+									IPresentationEngine.MINIMIZED);
+							element.getTags().remove(
+									IPresentationEngine.MAXIMIZED);
+						}
+					}
+				});
+			}
+
+			List<MPartStack> stacks = modelService.findElements(area, null,
+					MPartStack.class, null);
+
+			for (MPartStack stack : stacks) {
+				if (stack.isToBeRendered() && stack != topLeftStak) {
+					StackWidget stackWidget = (StackWidget) stack.getWidget();
+					if (stackWidget != null) {
+						stackWidget.setMinMaxEnabled(false);
+						stackWidget.removeAllStateListeners();
+					}
+				}
+			}
+		}
+	}
+
+	@Override
+	public void addChildGui(MUIElement child,
+			MElementContainer<MUIElement> element) {
+		if (!(child instanceof MPartSashContainerElement))
+			return;
+
+		AbstractOrderedLayout areaWidget = (AbstractOrderedLayout) element
+				.getWidget();
+		int index = indexOf(child, element);
+		areaWidget.addComponent((Component) child.getWidget(), index);
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/BasicMenuToolbarTrimbarRenderer.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/BasicMenuToolbarTrimbarRenderer.java
new file mode 100644
index 0000000..a1c434c
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/BasicMenuToolbarTrimbarRenderer.java
@@ -0,0 +1,19 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.presentation.renderers;
+
+/**
+ * @author rushan
+ *
+ */
+public class BasicMenuToolbarTrimbarRenderer extends VaadinRenderer {
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/GenericRenderer.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/GenericRenderer.java
new file mode 100644
index 0000000..f047f89
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/GenericRenderer.java
@@ -0,0 +1,48 @@
+/*******************************************************************************
+ * Copyright (c) 2011 Kai Toedter and others.
+ * 
+ * All rights reserved. This program and the accompanying materials 
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ * 
+ * Contributors:
+ *     Kai Toedter - initial API and implementation
+ *     Rushan R. Gilmullin - adaption to vaaclipse needs
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.presentation.renderers;
+
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+
+/**
+ * The beginning point of this renderer interface is a Kai Toedter's
+ * GenericRenderer class. I place it in vaaclipse packages temproraly - until
+ * the generic renderer will be the part of eclipse project.
+ * 
+ * @author Kai Toedter
+ */
+public interface GenericRenderer {
+	void createWidget(MUIElement element, MElementContainer<MUIElement> parent);
+
+	void disposeWidget(MUIElement element);
+
+	void processContents(MElementContainer<MUIElement> element);
+
+	void addChildGui(MUIElement child, MElementContainer<MUIElement> element);
+
+	void removeChildGui(MUIElement element, MElementContainer<MUIElement> parent);
+
+	boolean isLazy();
+
+	void hookControllerLogic(MUIElement element);
+
+	IEclipseContext getContext(MUIElement part);
+
+	void setVisible(MUIElement changedElement, boolean visible);
+
+	void bindWidget(MUIElement element);
+
+	void unbindWidget(MUIElement element);
+}
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/ItemRenderer.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/ItemRenderer.java
new file mode 100644
index 0000000..4120d61
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/ItemRenderer.java
@@ -0,0 +1,224 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.presentation.renderers;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.inject.Inject;
+
+import org.eclipse.core.commands.ParameterizedCommand;
+import org.eclipse.core.commands.common.NotDefinedException;
+import org.eclipse.e4.core.commands.ECommandService;
+import org.eclipse.e4.core.commands.EHandlerService;
+import org.eclipse.e4.core.contexts.ContextInjectionFactory;
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.core.di.annotations.CanExecute;
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.ui.model.application.commands.MParameter;
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.model.application.ui.basic.MWindow;
+import org.eclipse.e4.ui.model.application.ui.menu.MDirectMenuItem;
+import org.eclipse.e4.ui.model.application.ui.menu.MDirectToolItem;
+import org.eclipse.e4.ui.model.application.ui.menu.MHandledItem;
+import org.eclipse.e4.ui.model.application.ui.menu.MItem;
+import org.eclipse.e4.ui.model.application.ui.menu.MMenuItem;
+import org.eclipse.e4.ui.services.internal.events.EventBroker;
+import org.eclipse.e4.ui.workbench.modeling.EModelService;
+import org.eclipse.osbp.vaaclipse.api.VaadinExecutorService;
+import org.eclipse.osbp.vaaclipse.publicapi.events.VaaclipseUiEvents;
+
+import com.vaadin.ui.MenuBar.Command;
+import com.vaadin.ui.MenuBar.MenuItem;
+
+@SuppressWarnings("restriction")
+public abstract class ItemRenderer extends VaadinRenderer {
+
+	@Inject
+	EventBroker eventBroker;
+
+	@Inject
+	EModelService modelService;
+
+	@Inject
+	protected VaadinExecutorService executorService;
+
+	protected Map<MItem, Runnable> enabledUpdaters = new HashMap<MItem, Runnable>();
+
+	protected void registerEnablementUpdaters(final MItem item) {
+		if (!enabledUpdaters.containsKey(item)) {
+			Runnable runnable = new Runnable() {
+
+				@Override
+				public void run() {
+					updateItemEnablement(item);
+				}
+			};
+			this.enabledUpdaters.put(item, runnable);
+			executorService.invokeLaterAlways(runnable);
+		}
+	}
+
+	protected abstract void updateItemEnablement(MItem item);
+
+	public boolean canExecute(MItem item) {
+		// override by sub classes
+		return true;
+	}
+
+	protected boolean canExecute(MHandledItem item) {
+		final IEclipseContext eclipseContext = getContext(item);
+		if (eclipseContext == null) // item is not in hierarchy
+			return false;
+		EHandlerService service = (EHandlerService) eclipseContext
+				.get(EHandlerService.class.getName());
+		if (service == null)
+			return false;
+		ParameterizedCommand command = item.getWbCommand();
+		if (command == null) {
+			command = generateParameterizedCommand(item, eclipseContext);
+		}
+		if (command == null) {
+			return false;
+		}
+		eclipseContext.set(MItem.class, item);
+		setupContext(eclipseContext, item);
+		return service.canExecute(command, eclipseContext);
+	}
+
+	@Override
+	public void disposeWidget(MUIElement element) {
+		unregisterEnabledUpdater(element);
+	}
+
+	private void unregisterEnabledUpdater(MUIElement element) {
+		Runnable runnable = enabledUpdaters.remove(element);
+		if (runnable != null) {
+			executorService.removeAlwaysRunnable(runnable);
+		}
+	}
+
+	protected String prepareText(MMenuItem model) {
+		String text = model.getLocalizedLabel();
+		if (model instanceof MHandledItem) {
+			MHandledItem handledItem = (MHandledItem) model;
+			generateParameterizedCommand(handledItem, context);
+			ParameterizedCommand cmd = handledItem.getWbCommand();
+			if (cmd != null && (text == null || text.length() == 0)) {
+				try {
+					text = cmd.getName();
+				} catch (NotDefinedException e) {
+					e.printStackTrace();
+				}
+			}
+		}
+		if (text == null)
+			text = "Blank";
+		return text;
+	}
+
+	protected ParameterizedCommand generateParameterizedCommand(
+			final MHandledItem item, final IEclipseContext lclContext) {
+		ECommandService cmdService = (ECommandService) lclContext
+				.get(ECommandService.class.getName());
+		Map<String, Object> parameters = null;
+		List<MParameter> modelParms = item.getParameters();
+		if (modelParms != null && !modelParms.isEmpty()) {
+			parameters = new HashMap<String, Object>();
+			for (MParameter mParm : modelParms) {
+				parameters.put(mParm.getName(), mParm.getValue());
+			}
+		}
+		if (item.getCommand() != null) {
+			ParameterizedCommand cmd = cmdService.createCommand(item
+					.getCommand().getElementId(), parameters);
+			item.setWbCommand(cmd);
+
+			return cmd;
+		} else
+			return null;
+	}
+
+	protected Command createParametrizedCommandEventHandler(
+			final MHandledItem item) {
+		return new Command() {
+
+			@Override
+			public void menuSelected(MenuItem selectedItem) {
+				executeItem(item);
+			}
+		};
+	}
+
+	protected Command createEventHandler(final MItem item) {
+		return new Command() {
+
+			@Override
+			public void menuSelected(MenuItem selectedItem) {
+				executeItem(item);
+			}
+		};
+	}
+
+	public void executeItem(final MHandledItem item) {
+		final IEclipseContext eclipseContext = getContext(item);
+		EHandlerService service = (EHandlerService) eclipseContext
+				.get(EHandlerService.class.getName());
+		ParameterizedCommand command = item.getWbCommand();
+		if (command == null) {
+			command = generateParameterizedCommand(item, eclipseContext);
+		}
+		if (command == null) {
+			System.err.println("Failed to execute: " + item.getCommand());
+			return;
+		}
+		eclipseContext.set(MItem.class, item);
+		setupContext(eclipseContext, item);
+		service.executeHandler(command);
+		eclipseContext.remove(MItem.class.getName());
+
+		eventBroker.send(VaaclipseUiEvents.Item.TOPIC_EXECUTED, item);
+	}
+
+	public void executeItem(final MItem item) {
+		if (item instanceof MHandledItem) {
+			MHandledItem mHandled = (MHandledItem) item;
+			executeItem(mHandled);
+		} else {
+			final IEclipseContext eclipseContext = getContext(item);
+			eclipseContext.set(MItem.class, item);
+			setupContext(eclipseContext, item);
+			if (item instanceof MDirectToolItem) {
+				Object toolItem = ((MDirectToolItem) item).getObject();
+				if ((Boolean) ContextInjectionFactory.invoke(toolItem,
+						CanExecute.class, eclipseContext, true))
+					ContextInjectionFactory.invoke(toolItem, Execute.class,
+							eclipseContext);
+			} else if (item instanceof MDirectMenuItem) {
+				Object menuItem = ((MDirectMenuItem) item).getObject();
+				if ((Boolean) ContextInjectionFactory.invoke(menuItem,
+						CanExecute.class, eclipseContext, true))
+					ContextInjectionFactory.invoke(menuItem, Execute.class,
+							eclipseContext);
+			}
+			eclipseContext.remove(MItem.class);
+		}
+
+		eventBroker.send(VaaclipseUiEvents.Item.TOPIC_EXECUTED, item);
+	}
+
+	protected void setupContext(IEclipseContext context, MItem item) {
+		MWindow window = modelService.getTopLevelWindowFor(item);
+		context.set(MWindow.class, window);
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/MenuItemRenderer.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/MenuItemRenderer.java
new file mode 100644
index 0000000..fd60b02
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/MenuItemRenderer.java
@@ -0,0 +1,335 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.presentation.renderers;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.inject.Inject;
+
+import org.eclipse.e4.core.contexts.ContextInjectionFactory;
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.core.di.annotations.CanExecute;
+import org.eclipse.e4.core.services.contributions.IContributionFactory;
+import org.eclipse.e4.core.services.events.IEventBroker;
+import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.model.application.ui.menu.MDirectMenuItem;
+import org.eclipse.e4.ui.model.application.ui.menu.MHandledItem;
+import org.eclipse.e4.ui.model.application.ui.menu.MHandledMenuItem;
+import org.eclipse.e4.ui.model.application.ui.menu.MItem;
+import org.eclipse.e4.ui.model.application.ui.menu.MMenu;
+import org.eclipse.e4.ui.model.application.ui.menu.MMenuItem;
+//import org.eclipse.e4.ui.model.application.ui.menu.MOpaqueMenuItem;
+import org.eclipse.e4.ui.workbench.UIEvents;
+import org.eclipse.osbp.vaaclipse.presentation.utils.Commons;
+import org.eclipse.osbp.vaaclipse.publicapi.resources.ResourceHelper;
+import org.osgi.service.event.Event;
+import org.osgi.service.event.EventHandler;
+
+import com.vaadin.server.Resource;
+import com.vaadin.ui.MenuBar;
+import com.vaadin.ui.MenuBar.Command;
+import com.vaadin.ui.MenuBar.MenuItem;
+
+@SuppressWarnings("restriction")
+public class MenuItemRenderer extends ItemRenderer {
+
+	@Inject
+	IContributionFactory contributionFactory;
+
+	@Inject
+	IEventBroker eventBroker;
+
+	private EventHandler itemUpdater = new EventHandler() {
+		public void handleEvent(Event event) {
+			// Ensure that this event is for a MMenuItem
+			if (!(event.getProperty(UIEvents.EventTags.ELEMENT) instanceof MMenuItem))
+				return;
+
+			MMenuItem itemModel = (MMenuItem) event
+					.getProperty(UIEvents.EventTags.ELEMENT);
+
+			MenuItem ici = (MenuItem) itemModel.getWidget();
+			if (ici == null) {
+				return;
+			}
+
+			String attName = (String) event
+					.getProperty(UIEvents.EventTags.ATTNAME);
+			String newValue = (String) event
+					.getProperty(UIEvents.EventTags.NEW_VALUE);
+			if (UIEvents.UILabel.LABEL.equals(attName)) {
+				ici.setText(newValue);
+			} else if (UIEvents.UILabel.ICONURI.equals(attName)) {
+				Resource icon = ResourceHelper.createResource(newValue);
+				ici.setIcon(icon);
+			} else if (UIEvents.UILabel.TOOLTIP.equals(attName)) {
+				ici.setDescription(newValue);
+			}
+		}
+	};
+
+	private EventHandler enabledUpdater = new EventHandler() {
+		public void handleEvent(Event event) {
+			// Ensure that this event is for a MMenuItem
+			if (!(event.getProperty(UIEvents.EventTags.ELEMENT) instanceof MMenuItem))
+				return;
+
+			MMenuItem itemModel = (MMenuItem) event
+					.getProperty(UIEvents.EventTags.ELEMENT);
+			MenuItem ici = (MenuItem) itemModel.getWidget();
+			if (ici != null) {
+				Boolean newValue = (Boolean) event
+						.getProperty(UIEvents.EventTags.NEW_VALUE);
+				ici.setEnabled(newValue);
+			}
+		}
+	};
+
+	private EventHandler selectedUpdater = new EventHandler() {
+		public void handleEvent(Event event) {
+			// Ensure that this event is for a MMenuItem
+			if (!(event.getProperty(UIEvents.EventTags.ELEMENT) instanceof MMenuItem))
+				return;
+
+			MMenuItem itemModel = (MMenuItem) event
+					.getProperty(UIEvents.EventTags.ELEMENT);
+			MenuItem ici = (MenuItem) itemModel.getWidget();
+			if (ici != null) {
+				Boolean newValue = (Boolean) event
+						.getProperty(UIEvents.EventTags.NEW_VALUE);
+				ici.setChecked(newValue);
+			}
+		}
+	};
+
+	@PostConstruct
+	public void postConstruct() {
+		eventBroker.subscribe(UIEvents.UILabel.TOPIC_ALL, itemUpdater);
+		eventBroker.subscribe(UIEvents.Item.TOPIC_ENABLED, enabledUpdater);
+		eventBroker.subscribe(UIEvents.Item.TOPIC_SELECTED, selectedUpdater);
+		eventBroker.subscribe(UIEvents.ElementContainer.TOPIC_CHILDREN,
+				childrenMoveUpdater);
+		eventBroker.subscribe(UIEvents.UILabel.TOPIC_LOCALIZED_LABEL,
+				localizeLabel);
+		eventBroker.subscribe(UIEvents.UILabel.TOPIC_LOCALIZED_TOOLTIP,
+				localizeTooltip);
+		eventBroker.subscribe(UIEvents.UILabel.TOPIC_LABEL, localizeLabel);
+		eventBroker.subscribe(UIEvents.UILabel.TOPIC_TOOLTIP, localizeTooltip);
+	}
+
+	@PreDestroy
+	public void preDestroy() {
+		eventBroker.unsubscribe(itemUpdater);
+		eventBroker.unsubscribe(enabledUpdater);
+		eventBroker.unsubscribe(selectedUpdater);
+		eventBroker.unsubscribe(childrenMoveUpdater);
+		eventBroker.unsubscribe(localizeLabel);
+		eventBroker.unsubscribe(localizeTooltip);
+	}
+	
+	private EventHandler childrenMoveUpdater = new EventHandler() {
+		@SuppressWarnings("unchecked")
+		public void handleEvent(Event event) {
+			// Ensure that this event is for a MMenuItem
+			if (!(event.getProperty(UIEvents.EventTags.ELEMENT) instanceof MMenu))
+				return;
+
+			MElementContainer<MUIElement> menu = (MElementContainer<MUIElement>) event
+					.getProperty(UIEvents.EventTags.ELEMENT);
+
+			String type = (String) event.getProperty(UIEvents.EventTags.TYPE);
+
+			// on move, we unrender an render the UI again
+			//
+			if (UIEvents.EventTypes.MOVE.equals(type)) {
+				for (MUIElement item : menu.getChildren()) {
+					removeChildGui(item, menu);
+				}
+
+				for (MUIElement item : menu.getChildren()) {
+					createWidget(item, menu);
+				}
+			}
+		}
+	};
+
+	@Override
+	public void createWidget(MUIElement element,
+			MElementContainer<MUIElement> parent) {
+
+		if (!element.isToBeRendered())
+			return;
+
+		if (element instanceof MMenuItem) {
+			MMenuItem model = (MMenuItem) element;
+
+			// --------------------
+			// Prepare the text
+			String text = prepareText(model);
+			text = text.replaceAll("&", "");
+
+			// Prepare the icon
+			Resource icon = model.getIconURI() != null ? ResourceHelper
+					.createResource(model.getIconURI()) : null;
+
+			// Prepare the command
+			Command command = null;
+			if (model instanceof MDirectMenuItem) {
+				final MDirectMenuItem item = (MDirectMenuItem) model;
+				item.setObject(contributionFactory.create(
+						item.getContributionURI(), getContext(item)));
+
+				command = createEventHandler(item);
+			} else if (model instanceof MHandledMenuItem) {
+				final MHandledMenuItem item = (MHandledMenuItem) model;
+				command = createParametrizedCommandEventHandler(item);
+			}
+
+			MUIElement nextRenderableAndVisible = findNextRendarableAndVisible(
+					element, parent);
+			MenuItem item = null;
+			if (nextRenderableAndVisible == null)
+				item = ((MenuItem) parent.getWidget()).addItem(text, icon,
+						command);
+			else
+				item = ((MenuItem) parent.getWidget()).addItemBefore(text,
+						icon, command,
+						(MenuItem) nextRenderableAndVisible.getWidget());
+			// -----------------
+
+			element.setWidget(item);
+
+			updateItemEnablement(model);
+			item.setEnabled(model.isEnabled());
+
+			// set the check mode
+			switch (model.getType()) {
+			case CHECK:
+				item.setCheckable(true);
+				item.setChecked(model.isSelected());
+				break;
+			default:
+				item.setCheckable(false);
+				break;
+			}
+
+			registerEnablementUpdaters(model);
+		}
+	}
+
+	protected void updateItemEnablement(MItem item) {
+		if (!(item.getWidget() instanceof MenuItem))
+			return;
+
+		MenuItem widget = (MenuItem) item.getWidget();
+		if (widget == null)
+			return;
+
+		item.setEnabled(canExecute(item));
+	}
+
+	public boolean canExecute(MItem item) {
+		if (item instanceof MHandledItem)
+			return canExecute((MHandledItem) item);
+		else if (item instanceof MDirectMenuItem)
+			return canExecute((MDirectMenuItem) item);
+		else
+			return false;
+	}
+
+	private boolean canExecute(MDirectMenuItem item) {
+		final IEclipseContext eclipseContext = getContext(item);
+		eclipseContext.set(MItem.class, item);
+		setupContext(eclipseContext, item);
+		return (Boolean) ContextInjectionFactory.invoke(item, CanExecute.class,
+				eclipseContext, true);
+	}
+
+	@Override
+	public void hookControllerLogic(MUIElement me) {
+		// the listener already attached (when created - vaadin API issue)
+	}
+
+	@Override
+	protected void setupContext(IEclipseContext context, MItem item) {
+		context.set(MMenuItem.class, (MMenuItem) item);
+
+		if (item instanceof MDirectMenuItem)
+			context.set(MDirectMenuItem.class, (MDirectMenuItem) item);
+		else if (item instanceof MHandledMenuItem)
+			context.set(MHandledMenuItem.class, (MHandledMenuItem) item);
+		// TODO luna - check this
+		// else if (item instanceof MOpaqueMenuItem)
+		// context.set(MOpaqueMenuItem.class, (MOpaqueMenuItem) item);
+	}
+
+	@Override
+	public void setVisible(MUIElement changedElement, boolean visible) {
+		((MenuItem) changedElement.getWidget()).setVisible(visible);
+	}
+	
+	@Override
+	public void removeChildGui(MUIElement element,
+			MElementContainer<MUIElement> parent) {
+		MenuItem childItem = (MenuItem) element.getWidget();
+
+		if (parent.getWidget() instanceof MenuBar) {
+			MenuBar bar = (MenuBar) parent.getWidget();
+			bar.removeItem(childItem);
+		} else if (parent.getWidget() instanceof MenuItem) {
+			MenuItem parentItem = (MenuItem) parent.getWidget();
+			parentItem.removeChild(childItem);
+		}
+	}
+
+	private EventHandler localizeLabel = new EventHandler() {
+		@Override
+		public void handleEvent(Event event) {
+			Object element = event.getProperty(UIEvents.EventTags.ELEMENT);
+
+			if (!(element instanceof MMenuItem))
+				return;
+
+			MMenuItem item = (MMenuItem) element;
+			final MenuItem menuItem = (MenuItem) item.getWidget();
+
+			String newValue = (String) event
+					.getProperty(UIEvents.EventTags.NEW_VALUE);
+
+			String label = Commons.trim(newValue);
+			if (menuItem != null) {
+				menuItem.setText(label);
+			}
+		}
+	};
+
+	private EventHandler localizeTooltip = new EventHandler() {
+		@Override
+		public void handleEvent(Event event) {
+			Object element = event.getProperty(UIEvents.EventTags.ELEMENT);
+
+			if (!(element instanceof MMenuItem))
+				return;
+
+			MMenuItem item = (MMenuItem) element;
+			final MenuItem menuItem = (MenuItem) item.getWidget();
+
+			String newValue = (String) event
+					.getProperty(UIEvents.EventTags.NEW_VALUE);
+
+			if (menuItem != null) {
+				menuItem.setDescription(newValue);
+			}
+		}
+	};
+}
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/MenuRenderer.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/MenuRenderer.java
new file mode 100644
index 0000000..6d21096
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/MenuRenderer.java
@@ -0,0 +1,264 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.presentation.renderers;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.inject.Inject;
+
+import org.eclipse.e4.core.commands.ExpressionContext;
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.core.contexts.RunAndTrack;
+import org.eclipse.e4.core.services.events.IEventBroker;
+import org.eclipse.e4.ui.internal.workbench.ContributionsAnalyzer;
+import org.eclipse.e4.ui.model.application.ui.MCoreExpression;
+import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.model.application.ui.MUILabel;
+import org.eclipse.e4.ui.model.application.ui.basic.MWindow;
+import org.eclipse.e4.ui.model.application.ui.menu.MMenu;
+import org.eclipse.e4.ui.model.application.ui.menu.MMenuElement;
+import org.eclipse.e4.ui.workbench.UIEvents;
+import org.eclipse.osbp.vaaclipse.api.MenuContributionService;
+import org.eclipse.osbp.vaaclipse.api.VaadinExecutorService;
+import org.eclipse.osbp.vaaclipse.publicapi.resources.ResourceHelper;
+import org.osgi.service.event.Event;
+import org.osgi.service.event.EventHandler;
+
+import com.vaadin.server.Resource;
+import com.vaadin.ui.MenuBar;
+import com.vaadin.ui.MenuBar.MenuItem;
+
+@SuppressWarnings("restriction")
+public class MenuRenderer extends BasicMenuToolbarTrimbarRenderer {
+	@Inject
+	MenuContributionService contributionService;
+
+	@Inject
+	VaadinExecutorService execService;
+
+	@Inject
+	IEventBroker eventBroker;
+
+	@Override
+	public void createWidget(MUIElement element,
+			MElementContainer<MUIElement> parent) {
+		if (!(element instanceof MMenu) || !element.isToBeRendered())
+			return;
+
+		if (MWindow.class.isAssignableFrom(parent.getClass())) {
+			MenuBar menuBar = new MenuBar();
+			element.setWidget(menuBar);
+		} else {
+			String text = ((MUILabel) element).getLocalizedLabel();
+			if (text != null)
+				text = text.trim();
+			else
+				text = "NoName";
+			text = text.replaceAll("&", "");
+
+			MUIElement nextRenderableAndVisible = findNextRendarableAndVisible(
+					element, parent);
+			MenuItem item = null;
+			if (parent.getWidget() instanceof MenuBar) {
+				if (nextRenderableAndVisible == null)
+					item = ((MenuBar) parent.getWidget()).addItem(text, null,
+							null);
+				else
+					item = ((MenuBar) parent.getWidget()).addItemBefore(text,
+							null, null,
+							(MenuItem) nextRenderableAndVisible.getWidget());
+			} else if (parent.getWidget() instanceof MenuItem) {
+				if (nextRenderableAndVisible == null)
+					item = ((MenuItem) parent.getWidget()).addItem(text, null,
+							null);
+				else
+					item = ((MenuItem) parent.getWidget()).addItemBefore(text,
+							null, null,
+							(MenuItem) nextRenderableAndVisible.getWidget());
+			}
+
+			element.setWidget(item);
+		}
+	}
+
+	@Override
+	public void processContents(MElementContainer<MUIElement> element) {
+		final MMenu menu = (MMenu) (MElementContainer<?>) element;
+
+		final IEclipseContext ctx = getContext(menu);
+		final ExpressionContext eContext = new ExpressionContext(ctx);
+
+		// Before contribution added:
+		// visible when support for original trimbar elements (without
+		// contributed)
+		for (final MMenuElement child : menu.getChildren()) {
+			if (child.getVisibleWhen() != null) {
+				ctx.runAndTrack(new RunAndTrack() {
+					@Override
+					public boolean changed(IEclipseContext context) {
+
+						if (!menu.isToBeRendered() || !menu.isVisible()
+								|| menu.getWidget() == null) {
+							System.err.println("remove context tracker");
+							return false;
+						}
+
+						final boolean rc = ContributionsAnalyzer.isVisible(
+								(MCoreExpression) child.getVisibleWhen(),
+								eContext);
+						Runnable runnable = new Runnable() {
+
+							@Override
+							public void run() {
+								child.setToBeRendered(rc);
+							}
+						};
+						execService.invokeLater(runnable);
+
+						return true;
+					}
+				});
+			}
+		}
+		// Then add contributions using contribution service:
+		contributionService
+				.addContributions((MMenu) (MElementContainer<?>) element);
+	}
+
+	@Override
+	public void disposeWidget(MUIElement element) {
+		contributionService
+				.removeContributions((MMenu) (MElementContainer<?>) element);
+	}
+
+	@Override
+	public void addChildGui(MUIElement child,
+			MElementContainer<MUIElement> parent) {
+		createWidget(child, parent);
+	}
+
+	@Override
+	public void removeChildGui(MUIElement element,
+			MElementContainer<MUIElement> parent) {
+		MenuItem childItem = (MenuItem) element.getWidget();
+
+		if (parent.getWidget() instanceof MenuBar) {
+			MenuBar bar = (MenuBar) parent.getWidget();
+			bar.removeItem(childItem);
+		} else if (parent.getWidget() instanceof MenuItem) {
+			MenuItem parentItem = (MenuItem) parent.getWidget();
+			parentItem.removeChild(childItem);
+		}
+	}
+
+	@Override
+	public void setVisible(MUIElement changedElement, boolean visible) {
+		if (changedElement.getWidget() instanceof MenuBar)
+			((MenuBar) changedElement.getWidget()).setVisible(visible);
+		else if (changedElement.getWidget() instanceof MenuItem)
+			((MenuItem) changedElement.getWidget()).setVisible(visible);
+	}
+
+	@PostConstruct
+	public void postConstruct() {
+		eventBroker.subscribe(UIEvents.UILabel.TOPIC_ALL, itemUpdater);
+		eventBroker.subscribe(UIEvents.Menu.TOPIC_ENABLED, itemUpdater);
+		eventBroker.subscribe(UIEvents.ElementContainer.TOPIC_CHILDREN,
+				childrenMoveUpdater);
+	}
+
+	@PreDestroy
+	public void preDestroy() {
+		eventBroker.unsubscribe(itemUpdater);
+		eventBroker.unsubscribe(childrenMoveUpdater);
+	}
+
+	private EventHandler childrenMoveUpdater = new EventHandler() {
+		@SuppressWarnings("unchecked")
+		public void handleEvent(Event event) {
+			// Ensure that this event is for a MMenuItem
+			if (!(event.getProperty(UIEvents.EventTags.ELEMENT) instanceof MMenu))
+				return;
+
+			MElementContainer<MUIElement> menu = (MElementContainer<MUIElement>) event
+					.getProperty(UIEvents.EventTags.ELEMENT);
+
+			String type = (String) event.getProperty(UIEvents.EventTags.TYPE);
+
+			// on move, we unrender an render the UI again
+			//
+			if (UIEvents.EventTypes.MOVE.equals(type)) {
+				for (MUIElement item : menu.getChildren()) {
+					removeChildGui(item, menu);
+				}
+
+				for (MUIElement item : menu.getChildren()) {
+					createWidget(item, menu);
+				}
+			}
+		}
+	};
+
+	private EventHandler itemUpdater = new EventHandler() {
+		public void handleEvent(Event event) {
+			// Ensure that this event is for a MMenuItem
+			if (!(event.getProperty(UIEvents.EventTags.ELEMENT) instanceof MMenu))
+				return;
+
+			MMenu model = (MMenu) event.getProperty(UIEvents.EventTags.ELEMENT);
+			if (model.getWidget() instanceof MenuItem) {
+				MenuItem ici = (MenuItem) model.getWidget();
+				if (ici == null) {
+					return;
+				}
+
+				String attName = (String) event
+						.getProperty(UIEvents.EventTags.ATTNAME);
+				Object newValue = event
+						.getProperty(UIEvents.EventTags.NEW_VALUE);
+				if (UIEvents.UILabel.LABEL.equals(attName)) {
+					ici.setText((String) newValue);
+				} else if (UIEvents.UILabel.ICONURI.equals(attName)) {
+					Resource icon = ResourceHelper
+							.createResource((String) newValue);
+					ici.setIcon(icon);
+				} else if (UIEvents.UILabel.TOOLTIP.equals(attName)) {
+					ici.setDescription((String) newValue);
+				} else if (UIEvents.Item.ENABLED.equals(attName)) {
+					ici.setEnabled((boolean) newValue);
+				}
+			} else if (model.getWidget() instanceof MenuBar) {
+				MenuBar ici = (MenuBar) model.getWidget();
+				if (ici == null) {
+					return;
+				}
+
+				String attName = (String) event
+						.getProperty(UIEvents.EventTags.ATTNAME);
+				Object newValue = event
+						.getProperty(UIEvents.EventTags.NEW_VALUE);
+				if (UIEvents.UILabel.ICONURI.equals(attName)) {
+					Resource icon = ResourceHelper
+							.createResource((String) newValue);
+					ici.setIcon(icon);
+				} else if (UIEvents.UILabel.TOOLTIP.equals(attName)) {
+					ici.setDescription((String) newValue);
+				} else if (UIEvents.Item.ENABLED.equals(attName)) {
+					ici.setEnabled((boolean) newValue);
+				} else if (UIEvents.Menu.ENABLED.equals(attName)) {
+					ici.setEnabled((boolean) newValue);
+				}
+			}
+		}
+	};
+}
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/MenuSeparatorRenderer.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/MenuSeparatorRenderer.java
new file mode 100644
index 0000000..1b775bf
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/MenuSeparatorRenderer.java
@@ -0,0 +1,47 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.presentation.renderers;
+
+import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.model.application.ui.menu.MMenuSeparator;
+
+import com.vaadin.ui.MenuBar.MenuItem;
+
+/**
+ * @author rushan
+ *
+ */
+public class MenuSeparatorRenderer extends VaadinRenderer {
+	@Override
+	public void createWidget(MUIElement element,
+			MElementContainer<MUIElement> parent) {
+		if (!(element instanceof MMenuSeparator))
+			return;
+
+		MUIElement nextRenderableAndVisible = findNextRendarableAndVisible(
+				element, parent);
+
+		MenuItem separator = null;
+		if (nextRenderableAndVisible == null)
+			separator = ((MenuItem) parent.getWidget()).addSeparator();
+		else
+			separator = ((MenuItem) parent.getWidget())
+					.addSeparatorBefore((MenuItem) nextRenderableAndVisible
+							.getWidget());
+		element.setWidget(separator);
+	}
+
+	@Override
+	public void setVisible(MUIElement changedElement, boolean visible) {
+		((MenuItem) changedElement.getWidget()).setVisible(visible);
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/PartRenderer.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/PartRenderer.java
new file mode 100644
index 0000000..d302084
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/PartRenderer.java
@@ -0,0 +1,158 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.presentation.renderers;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.inject.Inject;
+
+import org.eclipse.e4.core.contexts.ContextInjectionFactory;
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.core.services.contributions.IContributionFactory;
+import org.eclipse.e4.core.services.events.IEventBroker;
+import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.model.application.ui.basic.MInputPart;
+import org.eclipse.e4.ui.model.application.ui.basic.MPart;
+import org.eclipse.e4.ui.model.application.ui.menu.MToolBar;
+import org.eclipse.e4.ui.workbench.IPresentationEngine;
+import org.eclipse.e4.ui.workbench.UIEvents;
+import org.eclipse.e4.ui.workbench.UIEvents.EventTags;
+import org.eclipse.osbp.vaaclipse.presentation.renderers.callback.PartItemExecutionService;
+import org.eclipse.osbp.vaaclipse.publicapi.commands.IPartItemExecutionService;
+import org.eclipse.osbp.vaaclipse.publicapi.editor.SavePromptSetup;
+import org.osgi.service.event.Event;
+import org.osgi.service.event.EventHandler;
+
+import com.vaadin.ui.AbstractLayout;
+import com.vaadin.ui.Component;
+import com.vaadin.ui.ComponentContainer;
+import com.vaadin.ui.CssLayout;
+import com.vaadin.ui.Panel;
+import com.vaadin.ui.VerticalLayout;
+
+@SuppressWarnings("restriction")
+public class PartRenderer extends VaadinRenderer {
+
+	private Map<MPart, SavePromptSetup> savePrompts = new HashMap<MPart, SavePromptSetup>();
+
+	@Inject
+	IPresentationEngine renderingEngine;
+
+	@Inject
+	IEventBroker eventBroker;
+
+	private EventHandler contributionURIChanged = new EventHandler() {
+		@Override
+		public void handleEvent(Event event) {
+			Object changedObj = event.getProperty(EventTags.ELEMENT);
+			if (!(changedObj instanceof MPart)) {
+				return;
+			}
+
+			final MPart part = (MPart) changedObj;
+			IEclipseContext localContext = part.getContext();
+			IContributionFactory contributionFactory = (IContributionFactory) localContext
+					.get(IContributionFactory.class.getName());
+			Object newPart = contributionFactory.create(part.getContributionURI(),
+					localContext);
+
+			if(part.getObject() != null) {
+				ContextInjectionFactory.uninject(part.getObject(), localContext);
+			}
+			
+			part.setObject(newPart);
+		}
+	};
+
+	public SavePromptSetup getSavePromptSetup(MPart part) {
+		return savePrompts.get(part);
+	}
+
+	@Override
+	public void createWidget(MUIElement element,
+			MElementContainer<MUIElement> parent) {
+		Panel shortcutReceiver = new Panel();
+		shortcutReceiver.setSizeFull();
+
+		VerticalLayout pane = new VerticalLayout();
+		shortcutReceiver.setContent(pane);
+		pane.setSizeFull();
+		final MPart part = (MPart) element;
+		// toolbar
+		MToolBar toolbar = part.getToolbar();
+		if (toolbar != null && toolbar.isToBeRendered()) {
+			// create toolbar area
+			CssLayout toolbarArea = new CssLayout();
+			toolbarArea.setStyleName("mparttoolbararea");
+			toolbarArea.setSizeUndefined();
+			toolbarArea.setWidth("100%");
+			pane.addComponent(toolbarArea);
+
+			// create toolbar
+			Component toolbarWidget = (Component) renderingEngine
+					.createGui(toolbar);
+			((AbstractLayout) toolbarWidget).setSizeUndefined();
+			toolbarWidget.setStyleName("mparttoolbar");
+			toolbarArea.addComponent(toolbarWidget);
+		}
+
+		VerticalLayout contributionArea = new VerticalLayout();
+		contributionArea.setSizeFull();
+		pane.addComponent(contributionArea);
+		pane.setExpandRatio(contributionArea, 100);
+
+		pane.setStyleName("part");
+		element.setWidget(shortcutReceiver);
+
+		IEclipseContext localContext = part.getContext();
+		localContext.set(Component.class, contributionArea);
+		localContext.set(ComponentContainer.class, contributionArea);
+		localContext.set(VerticalLayout.class, contributionArea);
+		localContext.set(MPart.class, part);
+		localContext.set(IPartItemExecutionService.class,
+				new PartItemExecutionService());
+
+		SavePromptSetup savePromptProvider = new SavePromptSetup();
+		savePrompts.put(part, savePromptProvider);
+		localContext.set(SavePromptSetup.class, savePromptProvider);
+		if (part instanceof MInputPart)
+			localContext.set(MInputPart.class, (MInputPart) part);
+
+		IContributionFactory contributionFactory = (IContributionFactory) localContext
+				.get(IContributionFactory.class.getName());
+		Object newPart = contributionFactory.create(part.getContributionURI(),
+				localContext);
+
+		part.setObject(newPart);
+	}
+
+	@Override
+	public void disposeWidget(MUIElement element) {
+		this.savePrompts.remove(element);
+	}
+
+	@PostConstruct
+	public void postConstruct() {
+		eventBroker.subscribe(UIEvents.Contribution.TOPIC_CONTRIBUTIONURI,
+				contributionURIChanged);
+	}
+
+	@PreDestroy
+	public void dispose() {
+		eventBroker.unsubscribe(contributionURIChanged);
+	}
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/PerspectiveRenderer.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/PerspectiveRenderer.java
new file mode 100644
index 0000000..8e24861
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/PerspectiveRenderer.java
@@ -0,0 +1,117 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.presentation.renderers;
+
+import java.util.Map.Entry;
+
+import javax.annotation.PreDestroy;
+import javax.inject.Inject;
+
+import org.eclipse.e4.core.di.annotations.Optional;
+import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.model.application.ui.advanced.MPerspective;
+import org.eclipse.e4.ui.model.application.ui.basic.MPartSashContainerElement;
+import org.eclipse.e4.ui.model.application.ui.basic.MStackElement;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.osbp.runtime.designer.api.IDesignerService;
+import org.eclipse.osbp.runtime.designer.api.IWidgetDesignConfigurator;
+
+import com.vaadin.ui.Component;
+import com.vaadin.ui.VerticalLayout;
+
+/**
+ * @author rushan
+ *
+ */
+public class PerspectiveRenderer extends VaadinRenderer implements
+		IDesignerService.IDesignListener {
+
+	@Inject
+	@Optional
+	private IDesignerService designerService;
+
+	@Override
+	public void createWidget(MUIElement element,
+			MElementContainer<MUIElement> parent) {
+		if (!(element instanceof MPerspective))
+			return;
+
+		VerticalLayout perspectivePanel = new VerticalLayout();
+		perspectivePanel.setSizeFull();
+		element.setWidget(perspectivePanel);
+
+		MPerspective p = (MPerspective) element;
+
+		if (p.getIconURI() == null && p.getLabel() == null) {
+			p.setIconURI("platform:/plugin/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/blank_perspective.png");
+		}
+
+		if (designerService != null) {
+			designerService.addListener(this);
+
+			if (designerService.isDesignMode()) {
+				updateDesigner(true);
+			}
+		}
+	}
+	
+	@PreDestroy
+	public void preDestroy() {
+
+		if (designerService != null) {
+			designerService.removeListener(this);
+		}
+	}
+
+	@Override
+	public void notify(IDesignerService.DesignEvent event) {
+		updateDesigner(event.getType() == IDesignerService.EventType.ENABLED);
+	}
+
+	private void updateDesigner(boolean enabled) {
+		IWidgetDesignConfigurator designConfigurator = context
+				.get(IWidgetDesignConfigurator.class);
+//		if (designConfigurator != null) {
+//			for (Entry<Component, MStackElement> entry : vaatab2Element
+//					.entrySet()) {
+//				designConfigurator.configure(entry.getKey(),
+//						(EObject) entry.getValue(), enabled);
+//			}
+//		}
+	}
+
+	@Override
+	public void processContents(MElementContainer<MUIElement> element) {
+		VerticalLayout perspectivePanel = (VerticalLayout) element.getWidget();
+		for (MUIElement e : element.getChildren()) {
+			if (e.isToBeRendered() && e.getWidget() != null) {
+				perspectivePanel.addComponent((Component) e.getWidget());
+			}
+		}
+	}
+
+	@Override
+	public void addChildGui(MUIElement child,
+			MElementContainer<MUIElement> element) {
+		if (!(child instanceof MPartSashContainerElement))
+			return;
+
+		VerticalLayout sw = (VerticalLayout) element.getWidget();
+		int index = indexOf(child, element);
+		sw.addComponent((Component) child.getWidget(), index);
+		
+		if(designerService != null && designerService.isDesignMode()) {
+			updateDesigner(designerService.isDesignMode());
+		}
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/PerspectiveStackRenderer.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/PerspectiveStackRenderer.java
new file mode 100644
index 0000000..1024f74
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/PerspectiveStackRenderer.java
@@ -0,0 +1,1077 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.presentation.renderers;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.inject.Inject;
+
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.core.di.annotations.Optional;
+import org.eclipse.e4.core.services.events.IEventBroker;
+import org.eclipse.e4.ui.model.application.MApplication;
+import org.eclipse.e4.ui.model.application.ui.MContext;
+import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.model.application.ui.advanced.MPerspective;
+import org.eclipse.e4.ui.model.application.ui.advanced.MPerspectiveStack;
+import org.eclipse.e4.ui.model.application.ui.advanced.MPlaceholder;
+import org.eclipse.e4.ui.model.application.ui.basic.MPartStack;
+import org.eclipse.e4.ui.model.application.ui.basic.MWindow;
+import org.eclipse.e4.ui.workbench.IPresentationEngine;
+import org.eclipse.e4.ui.workbench.UIEvents;
+import org.eclipse.e4.ui.workbench.UIEvents.EventTags;
+import org.eclipse.e4.ui.workbench.modeling.EPartService;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.xmi.XMIResource;
+import org.eclipse.emf.ecore.xmi.impl.XMIResourceImpl;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.osbp.runtime.designer.api.IDesignerService;
+import org.eclipse.osbp.runtime.designer.api.IDesignerService.DesignEvent;
+import org.eclipse.osbp.runtime.designer.api.IDesignerService.EventType;
+import org.eclipse.osbp.runtime.designer.api.IWidgetDesignConfigurator;
+import org.eclipse.osbp.vaaclipse.Activator;
+import org.eclipse.osbp.vaaclipse.api.ResourceInfoProvider;
+import org.eclipse.osbp.vaaclipse.presentation.engine.GenericPresentationEngine;
+import org.eclipse.osbp.vaaclipse.presentation.utils.Commons;
+import org.eclipse.osbp.vaaclipse.presentation.utils.HierarchyUtils;
+import org.eclipse.osbp.vaaclipse.publicapi.authentication.AuthenticationConstants;
+import org.eclipse.osbp.vaaclipse.publicapi.change.ChangeCommand;
+import org.eclipse.osbp.vaaclipse.publicapi.change.SimpleCommand;
+import org.eclipse.osbp.vaaclipse.publicapi.model.Tags;
+import org.eclipse.osbp.vaaclipse.publicapi.perspective.IPerspectiveHandler;
+import org.eclipse.osbp.vaaclipse.publicapi.resources.BundleResource;
+import org.eclipse.osbp.vaaclipse.publicapi.resources.ResourceHelper;
+import org.eclipse.osbp.vaaclipse.widgets.StackWidget;
+import org.eclipse.osbp.vaaclipse.widgets.TwoStateToolbarButton;
+import org.eclipse.osbp.vaadin.optiondialog.OptionDialog;
+import org.eclipse.osbp.vaadin.optiondialog.OptionDialog.OptionsAlign;
+import org.osgi.framework.ServiceReference;
+import org.osgi.service.event.Event;
+import org.osgi.service.event.EventHandler;
+import org.vaadin.peter.contextmenu.ContextMenu;
+import org.vaadin.peter.contextmenu.ContextMenu.ContextMenuItem;
+import org.vaadin.peter.contextmenu.ContextMenu.ContextMenuItemClickEvent;
+
+import com.vaadin.data.Item;
+import com.vaadin.data.util.IndexedContainer;
+import com.vaadin.event.dd.DragAndDropEvent;
+import com.vaadin.event.dd.DropHandler;
+import com.vaadin.event.dd.acceptcriteria.AcceptAll;
+import com.vaadin.event.dd.acceptcriteria.AcceptCriterion;
+import com.vaadin.server.Resource;
+import com.vaadin.server.Sizeable.Unit;
+import com.vaadin.server.StreamVariable;
+import com.vaadin.server.ThemeResource;
+import com.vaadin.ui.Button;
+import com.vaadin.ui.Button.ClickEvent;
+import com.vaadin.ui.Button.ClickListener;
+import com.vaadin.ui.Component;
+import com.vaadin.ui.ComponentContainer;
+import com.vaadin.ui.DragAndDropWrapper;
+import com.vaadin.ui.DragAndDropWrapper.WrapperTransferable;
+import com.vaadin.ui.HorizontalLayout;
+import com.vaadin.ui.Html5File;
+import com.vaadin.ui.Label;
+import com.vaadin.ui.Notification;
+import com.vaadin.ui.Notification.Type;
+import com.vaadin.ui.Panel;
+import com.vaadin.ui.Table;
+import com.vaadin.ui.UI;
+import com.vaadin.ui.VerticalLayout;
+
+/**
+ * @author rushan
+ * 
+ */
+public class PerspectiveStackRenderer extends VaadinRenderer implements
+		IDesignerService.IDesignListener {
+
+	/**
+	 * Removes the perspective from stack if it is closed.
+	 */
+	private static final String TAG__REMOVE_ON_CLOSE = "remove_on_close";
+	
+	/**
+	 * The perspective is not visible in the open perspective dialog.
+	 */
+	private static final String TAG__NOT_IN_OPEN_PERSPECTIVE_DIALOG = "not_in_open_perspective_dialog";
+
+	private MPerspectiveStack perspectiveStackForSwitcher;
+	private HorizontalLayout perspectiveSwitcherPanel;
+	private Map<MPerspective, TwoStateToolbarButton> perspective_button = new HashMap<MPerspective, TwoStateToolbarButton>();
+	private Map<Component, PerspectiveContextMenu> button2ContextMenu = new HashMap<Component, PerspectiveContextMenu>();
+
+	private MPerspective activePerspective;
+	@Inject
+	private UI vaadinUI;
+
+	@Inject
+	@Optional
+	private IPerspectiveHandler perspectiveRegistry;
+
+	@Inject
+	@Optional
+	private EditingDomain editingDomain;
+
+	@Inject
+	@Optional
+	private IDesignerService designerService;
+
+	@SuppressWarnings("serial")
+	private static class PerspectiveContextMenu extends ContextMenu {
+		private ContextMenuItem showTextItem;
+		private ContextMenuItem closeItem;
+
+		private static final String SHOW_TEXT = "Show Text";
+		Resource checkIcon = new ThemeResource(
+				"../vaaclipse_default_theme/img/check.png");
+
+		public PerspectiveContextMenu(boolean iconsOnly) {
+			createItems(iconsOnly);
+			setIconsOnly(iconsOnly);
+		}
+
+		private void createItems(boolean iconsOnly) {
+			closeItem = addItem("Close");
+			closeItem.setSeparatorVisible(true);
+			showTextItem = addItem(SHOW_TEXT, checkIcon);
+		}
+
+		public ContextMenuItem getShowTextItem() {
+			return showTextItem;
+		}
+
+		public ContextMenuItem getCloseItem() {
+			return closeItem;
+		}
+
+		void setIconsOnly(boolean iconsOnly) {
+			showTextItem.setIcon(!iconsOnly ? checkIcon : null);
+		}
+	}
+
+	public HorizontalLayout getPerspectiveSwitcher() {
+		return perspectiveSwitcherPanel;
+	}
+
+	public MPerspectiveStack getPerspectiveStackForSwitcher() {
+		return perspectiveStackForSwitcher;
+	}
+
+	@Inject
+	IEventBroker eventBroker;
+
+	@Inject
+	MApplication application;
+
+	@Inject
+	EPartService partService;
+
+	@Inject
+	GenericPresentationEngine engine;
+
+	static final String PERSPECTIVE_LABEL = "PerspectiveLabel";
+	static final String PERSPECTIVE_ICON = "PerspectiveIcon";
+
+	private final EventHandler tagListener = new EventHandler() {
+		@SuppressWarnings("unused")
+		@Override
+		public void handleEvent(Event event) {
+			Object changedObj = event.getProperty(EventTags.ELEMENT);
+
+			if (!(changedObj instanceof MPerspectiveStack)) {
+				return;
+			}
+
+			final MPerspectiveStack changedElement = (MPerspectiveStack) changedObj;
+
+			String eventType = (String) event
+					.getProperty(UIEvents.EventTags.TYPE);
+			String tag = (String) event
+					.getProperty(UIEvents.EventTags.NEW_VALUE);
+			String oldVal = (String) event
+					.getProperty(UIEvents.EventTags.OLD_VALUE);
+
+			if (UIEvents.EventTypes.ADD.equals(eventType)
+					&& Tags.ICONS_ONLY.equals(tag)) {
+				for (Map.Entry<MPerspective, TwoStateToolbarButton> entry : perspective_button
+						.entrySet()) {
+					MPerspective perspective = entry.getKey();
+					TwoStateToolbarButton button = entry.getValue();
+					button.setLabelAndIcon(null,
+							Commons.trim(perspective.getIconURI()));
+
+					PerspectiveContextMenu menu = button2ContextMenu
+							.get(button);
+					menu.setIconsOnly(true);
+				}
+			} else if (UIEvents.EventTypes.REMOVE.equals(eventType)
+					&& Tags.ICONS_ONLY.equals(oldVal)) {
+				for (Map.Entry<MPerspective, TwoStateToolbarButton> entry : perspective_button
+						.entrySet()) {
+					MPerspective perspective = entry.getKey();
+					TwoStateToolbarButton button = entry.getValue();
+					button.setLabelAndIcon(
+							Commons.trim(perspective.getLabel()),
+							Commons.trim(perspective.getIconURI()));
+
+					PerspectiveContextMenu menu = button2ContextMenu
+							.get(button);
+					menu.setIconsOnly(false);
+				}
+			}
+		}
+	};
+
+	private EventHandler selectPerspectiveHandler = new EventHandler() {
+		@SuppressWarnings("unchecked")
+		public void handleEvent(Event event) {
+			Object element = event.getProperty(UIEvents.EventTags.ELEMENT);
+
+			if (!(element instanceof MPerspectiveStack))
+				return;
+
+			MPerspectiveStack stack = (MPerspectiveStack) element;
+			if (stack.getRenderer() != PerspectiveStackRenderer.this)
+				return;
+			@SuppressWarnings("unused")
+			PerspectiveStackRenderer psr = (PerspectiveStackRenderer) stack
+					.getRenderer();
+
+			// Gather up the elements that are being 'hidden' by this change
+			MUIElement oldSel = (MUIElement) event
+					.getProperty(UIEvents.EventTags.OLD_VALUE);
+			if (oldSel != null) {
+				@SuppressWarnings("unused")
+				List<MUIElement> goingHidden = new ArrayList<MUIElement>();
+			}
+
+			if (oldSel != null) {
+				perspective_button.get(oldSel).setCheckedState(false);
+				perspective_button.get(oldSel)
+						.setSwitchStateByUserClickEnabled(true);
+
+				hideElementRecursive(oldSel);
+			}
+
+			((VerticalLayout) stack.getWidget()).removeAllComponents();
+
+			if (stack.getSelectedElement() != null) {
+				showElementRecursive(stack.getSelectedElement());
+				((VerticalLayout) stack.getWidget())
+						.addComponent((Component) stack.getSelectedElement()
+								.getWidget());
+				perspective_button.get(stack.getSelectedElement())
+						.setCheckedState(true);
+				perspective_button.get(stack.getSelectedElement())
+						.setSwitchStateByUserClickEnabled(false);
+
+				// mark the perspective as active
+				switchPerspective(stack.getSelectedElement());
+			} else if (oldSel instanceof MElementContainer<?>) {
+				disconnectReferencedElementsFromPerspectiveWidgets((MElementContainer<? extends MUIElement>) oldSel);
+			}
+
+		}
+	};
+
+	private EventHandler localizeLabel = new EventHandler() {
+		@Override
+		public void handleEvent(Event event) {
+			Object element = event.getProperty(UIEvents.EventTags.ELEMENT);
+
+			if (!(element instanceof MPerspective))
+				return;
+
+			MPerspective perspective = (MPerspective) element;
+
+			String newValue = (String) event
+					.getProperty(UIEvents.EventTags.NEW_VALUE);
+
+			boolean iconsOnly = perspectiveStackForSwitcher.getTags().contains(
+					Tags.ICONS_ONLY);
+			String label = iconsOnly ? null : Commons.trim(newValue);
+			String iconURI = Commons.trim(perspective.getIconURI());
+
+			TwoStateToolbarButton button = perspective_button.get(perspective);
+			if (button != null) {
+				button.setLabelAndIcon(label, iconURI);
+			}
+		}
+	};
+
+	private EventHandler iconURI = new EventHandler() {
+		@Override
+		public void handleEvent(Event event) {
+			Object element = event.getProperty(UIEvents.EventTags.ELEMENT);
+
+			if (!(element instanceof MPerspective))
+				return;
+
+			MPerspective perspective = (MPerspective) element;
+
+			String newValue = (String) event
+					.getProperty(UIEvents.EventTags.NEW_VALUE);
+
+			TwoStateToolbarButton button = perspective_button.get(perspective);
+			if (button != null) {
+				button.setIconURI(newValue);
+			}
+		}
+	};
+
+	private EventHandler localizeTooltip = new EventHandler() {
+		@Override
+		public void handleEvent(Event event) {
+			Object element = event.getProperty(UIEvents.EventTags.ELEMENT);
+
+			if (!(element instanceof MPerspective))
+				return;
+
+			MPerspective perspective = (MPerspective) element;
+
+			if (perspective.getTooltip() != null) {
+				String newValue = (String) event
+						.getProperty(UIEvents.EventTags.NEW_VALUE);
+				TwoStateToolbarButton button = perspective_button
+						.get(perspective);
+				if (button != null) {
+					button.setDescription(newValue);
+				}
+			}
+		}
+	};
+
+	private void disconnectReferencedElementsFromPerspectiveWidgets(
+			MElementContainer<? extends MUIElement> container) {
+		for (MUIElement e : container.getChildren()) {
+			if (e instanceof MPlaceholder) {
+				MPlaceholder ph = (MPlaceholder) e;
+				if (ph.isToBeRendered()) {
+					ComponentContainer phComponent = (ComponentContainer) ph
+							.getWidget();
+					Component refComponent = (Component) ph.getRef()
+							.getWidget();
+					phComponent.removeComponent(refComponent);
+				}
+			}
+		}
+	}
+
+	@PostConstruct
+	public void postConstruct() {
+		eventBroker.subscribe(UIEvents.ElementContainer.TOPIC_SELECTEDELEMENT,
+				selectPerspectiveHandler);
+		eventBroker.subscribe(UIEvents.ApplicationElement.TOPIC_TAGS,
+				tagListener);
+		eventBroker.subscribe(UIEvents.UILabel.TOPIC_LOCALIZED_LABEL,
+				localizeLabel);
+		eventBroker.subscribe(UIEvents.UILabel.TOPIC_LOCALIZED_TOOLTIP,
+				localizeTooltip);
+		eventBroker.subscribe(UIEvents.UILabel.TOPIC_LABEL, localizeLabel);
+		eventBroker.subscribe(UIEvents.UILabel.TOPIC_TOOLTIP, localizeTooltip);
+		eventBroker.subscribe(UIEvents.UILabel.TOPIC_ICONURI, iconURI);
+		eventBroker.subscribe(UIEvents.ElementContainer.TOPIC_CHILDREN,
+				childrenMoveUpdater);
+	}
+
+	@PreDestroy
+	public void preDestroy() {
+
+		if (designerService != null) {
+			designerService.removeListener(this);
+		}
+
+		eventBroker.unsubscribe(selectPerspectiveHandler);
+		eventBroker.unsubscribe(tagListener);
+		eventBroker.unsubscribe(localizeLabel);
+		eventBroker.unsubscribe(localizeTooltip);
+		eventBroker.unsubscribe(iconURI);
+		eventBroker.unsubscribe(childrenMoveUpdater);
+	}
+
+	private EventHandler childrenMoveUpdater = new EventHandler() {
+		@SuppressWarnings("unchecked")
+		public void handleEvent(Event event) {
+			// Ensure that this event is for a MMenuItem
+			if (!(event.getProperty(UIEvents.EventTags.ELEMENT) instanceof MPerspectiveStack))
+				return;
+
+			MElementContainer<MUIElement> stack = (MElementContainer<MUIElement>) event
+					.getProperty(UIEvents.EventTags.ELEMENT);
+			String type = (String) event.getProperty(UIEvents.EventTags.TYPE);
+
+			// on move, we unrender an render the UI again
+			//
+			if (UIEvents.EventTypes.MOVE.equals(type)) {
+				MUIElement newValue = (MUIElement) event
+						.getProperty(UIEvents.EventTags.NEW_VALUE);
+				removeChildGui(newValue, stack);
+				addChildGui(newValue, stack);
+			}
+		}
+	};
+	private DragAndDropWrapper html5Drop;
+
+	@Override
+	public boolean isLazy() {
+		return true;
+	}
+
+	@Override
+	public void createWidget(MUIElement element,
+			MElementContainer<MUIElement> parent) {
+		if (perspectiveSwitcherPanel == null)
+			initializePerspectiveSwticherPanel((MPerspectiveStack) element);
+
+		VerticalLayout perspectiveStackContent = new VerticalLayout();
+		perspectiveStackContent.setSizeFull();
+		element.setWidget(perspectiveStackContent);
+
+		if (designerService != null) {
+			designerService.addListener(this);
+
+			if (designerService.isDesignMode()) {
+				updateDesigner(true);
+			}
+		}
+	}
+
+	@SuppressWarnings("serial")
+	private void initializePerspectiveSwticherPanel(
+			MPerspectiveStack perspectiveStack) {
+		if (perspectiveSwitcherPanel != null)
+			return;
+		// initialize perspective switcher panel
+		perspectiveStackForSwitcher = perspectiveStack;
+
+		perspectiveSwitcherPanel = new HorizontalLayout();
+		perspectiveSwitcherPanel.setStyleName("perspectivepanel");
+		perspectiveSwitcherPanel.setSizeUndefined();
+
+		Button openPerspectiveButton = new Button("Open");
+		openPerspectiveButton.addStyleName("vaaclipsebutton");
+		openPerspectiveButton.addStyleName("icononly");
+		openPerspectiveButton.setIcon(new ThemeResource(
+				"../vaaclipse_default_theme/img/open_perspective.png"));
+
+		html5Drop = new DragAndDropWrapper(openPerspectiveButton);
+		html5Drop.setDropHandler(new PerspectiveDropHandler());
+
+		perspectiveSwitcherPanel.addComponent(html5Drop);
+
+		openPerspectiveButton.addClickListener(new Button.ClickListener() {
+
+			@Override
+			public void buttonClick(ClickEvent event) {
+				openOpenPerspectiveWindow();
+
+				// change focus
+				Component parent = event.getButton().getParent();
+				while (parent != null) {
+					if (parent instanceof Component.Focusable) {
+						((Component.Focusable) parent).focus();
+						break;
+					} else {
+						parent = parent.getParent();
+					}
+				}
+			}
+		});
+
+		// add separator between openPerspectiveButton and perspective's buttons
+		Label separator = new Label();
+		separator.setSizeUndefined();
+		separator.addStyleName("horizontalseparator");
+		separator.setHeight("100%");
+		perspectiveSwitcherPanel.addComponent(separator);
+
+		// add buttons to perspective switch panel
+		for (final MPerspective perspective : perspectiveStackForSwitcher
+				.getChildren()) {
+			if (perspective.isToBeRendered()) {
+				Component button = createPerspectiveButton(perspective);
+				if (button != null) {
+					perspectiveSwitcherPanel.addComponent(button);
+				}
+			}
+		}
+	}
+
+	@SuppressWarnings("serial")
+	private Component createPerspectiveButton(final MPerspective perspective) {
+		if (!perspective.isVisible())
+			return null;
+		boolean iconsOnly = perspectiveStackForSwitcher.getTags().contains(
+				Tags.ICONS_ONLY);
+		String label = iconsOnly ? null : Commons.trim(perspective
+				.getLocalizedLabel());
+		String iconURI = Commons.trim(perspective.getIconURI());
+
+		final TwoStateToolbarButton button = new TwoStateToolbarButton(label,
+				iconURI);
+
+		if (perspective.getTooltip() != null) {
+			button.setDescription(perspective.getLocalizedTooltip());
+		}
+
+		button.addListener(new ClickListener() {
+			public void buttonClick(ClickEvent event) {
+				if (editingDomain != null) {
+					SimpleCommand command = new SimpleCommand(
+							"Switch perspective: "
+									+ activePerspective.getLocalizedLabel()
+									+ " <--> "
+									+ perspective.getLocalizedLabel()) {
+						final MPerspective oldPerspective = activePerspective;
+						final MPerspective newPerspective = perspective;
+
+						@Override
+						protected void doExecute() {
+							switchPerspective(newPerspective);
+						}
+
+						@Override
+						protected void doUndo() {
+							switchPerspective(oldPerspective);
+						}
+					};
+					editingDomain.getCommandStack().execute(command);
+
+				} else {
+					switchPerspective(perspective);
+				}
+			}
+		});
+
+		// Create context menu
+		final PerspectiveContextMenu menu = new PerspectiveContextMenu(
+				iconsOnly);
+
+		// closeItem.setSeparatorVisible(true);
+
+		// showTextItem.addStyleName("close-perspective-item"); //bugfixing
+		// style for ie9 (context menu addon has bug for ie9)
+
+		menu.addItemClickListener(new ContextMenu.ContextMenuItemClickListener() {
+			@Override
+			public void contextMenuItemClicked(ContextMenuItemClickEvent event) {
+				ContextMenuItem clickedItem = (ContextMenuItem) event
+						.getSource();
+
+				if (clickedItem == menu.getCloseItem()) {
+					if (perspective.getTags().contains(TAG__REMOVE_ON_CLOSE)) {
+						// sends new messages
+						modelService.removePerspectiveModel(perspective,
+								perspective.getContext().get(MWindow.class));
+						
+						switchToPreviousPerspective(perspective);
+						
+					} else if (perspective == activePerspective) {
+						switchToPreviousPerspective(perspective);
+					}
+
+					perspective.setToBeRendered(false);
+
+				} else if (clickedItem == menu.getShowTextItem()) {
+					if (perspectiveStackForSwitcher.getTags().contains(
+							Tags.ICONS_ONLY))
+						perspectiveStackForSwitcher.getTags().remove(
+								Tags.ICONS_ONLY);
+					else
+						perspectiveStackForSwitcher.getTags().add(
+								Tags.ICONS_ONLY);
+				}
+			}
+		});
+
+		menu.setAsContextMenuOf(button);
+		button2ContextMenu.put(button, menu);
+		perspective_button.put(perspective, button);
+		return button;
+	}
+
+	@Override
+	public void notify(DesignEvent event) {
+		updateDesigner(event.getType() == EventType.ENABLED);
+	}
+
+	private void updateDesigner(boolean enabled) {
+		IWidgetDesignConfigurator designConfigurator = context
+				.get(IWidgetDesignConfigurator.class);
+		if (designConfigurator != null) {
+			for (Map.Entry<MPerspective, TwoStateToolbarButton> entry : perspective_button
+					.entrySet()) {
+				designConfigurator.configure(entry.getValue(),
+						(EObject) entry.getKey(), enabled);
+			}
+		}
+	}
+
+	@Override
+	public void processContents(MElementContainer<MUIElement> element) {
+		if (element.getChildren().isEmpty())
+			return;
+
+		MPerspectiveStack perspectiveStack = (MPerspectiveStack) (MElementContainer<?>) element;
+		MPerspective selectedPerspective = perspectiveStack
+				.getSelectedElement();
+		if (selectedPerspective == null) {
+			// try to find by registry
+			if (perspectiveRegistry != null) {
+				String userId = (String) context
+						.get(AuthenticationConstants.USER_ID);
+				String perspectiveId = perspectiveRegistry
+						.getDefaultPerspective(userId);
+				if (perspectiveId != null) {
+					selectedPerspective = perspectiveRegistry
+							.findPerspectiveWithId(perspectiveId);
+				}
+				if (selectedPerspective == null) {
+					selectedPerspective = (MPerspective) findFirstRenderableAndVisibleElement(perspectiveStack);
+				}
+			} else {
+				// use the first elemet
+				selectedPerspective = (MPerspective) findFirstRenderableAndVisibleElement(perspectiveStack);
+			}
+		}
+
+		if (selectedPerspective != null) {
+			if (!selectedPerspective.isToBeRendered()
+					|| !selectedPerspective.isVisible()) {
+				selectedPerspective = (MPerspective) findFirstRenderableAndVisibleElement(perspectiveStack);
+				if (selectedPerspective != null) {
+					switchPerspective(selectedPerspective);
+				} else {
+					perspectiveStack.setSelectedElement(null);
+				}
+			} else {
+				// reset selected element (set selected element handler will
+				// work)
+				perspectiveStack.setSelectedElement(null);
+				switchPerspective(selectedPerspective);
+			}
+		}
+
+		refreshPerspectiveStackVisibility(perspectiveStack);
+	}
+
+	private void switchPerspective(MPerspective perspective) {
+		if (perspective.isToBeRendered() && perspective.getWidget() == null)
+			engine.createGui(perspective);
+		partService.switchPerspective(perspective);
+		this.activePerspective = perspective;
+		if (perspective.getElementId() != null) {
+			String perspectiveId = perspective.getElementId().trim();
+			application.getContext().set("activePerspective", perspectiveId);
+		}
+	}
+
+	private void refreshPerspectiveStackVisibility(MPerspectiveStack stack) {
+		perspectiveSwitcherPanel.setVisible(stack.getChildren().size() > 0);
+	}
+
+	@Override
+	public void addChildGui(MUIElement child,
+			MElementContainer<MUIElement> element) {
+		MPerspectiveStack stack = (MPerspectiveStack) (MElementContainer<?>) element;
+		MPerspective p = (MPerspective) child;
+
+		Component button = createPerspectiveButton(p);
+		// shift on 2 - the first child - open perspective button, the second
+		// child - is separator
+		int index = indexOf(child, element) + 2;
+		perspectiveSwitcherPanel.addComponent(button, Math.min(index,
+				perspectiveSwitcherPanel.getComponentCount() - 1));
+
+		refreshPerspectiveStackVisibility(stack);
+	}
+
+	@Override
+	public void removeChildGui(MUIElement child,
+			MElementContainer<MUIElement> element) {
+		MPerspectiveStack stack = (MPerspectiveStack) (MElementContainer<?>) element;
+		MPerspective p = (MPerspective) child;
+
+		Button button = perspective_button.remove(p);
+		if (button != null) {
+			perspectiveSwitcherPanel.removeComponent(button);
+			button2ContextMenu.remove(button);
+		}
+
+		refreshPerspectiveStackVisibility(stack);
+	}
+
+	private void openOpenPerspectiveWindow() {
+		OptionDialog dlg = new OptionDialog();
+		dlg.setCaption("Open perspective");
+
+		ServiceReference<ResourceInfoProvider> resourceInfoProviderRef = Activator
+				.getInstance().getContext()
+				.getServiceReference(ResourceInfoProvider.class);
+		if (resourceInfoProviderRef != null) {
+			ResourceInfoProvider resourceInfoProvider = Activator.getInstance()
+					.getContext().getService(resourceInfoProviderRef);
+			if (resourceInfoProvider.getApplicationHeaderIcon() != null) {
+				dlg.setIcon(BundleResource.valueOf(resourceInfoProvider
+						.getApplicationHeaderIcon()));
+			}
+		}
+
+		dlg.setModal(true);
+		dlg.setWidth(360, Unit.PIXELS);
+		dlg.setHeight(440, Unit.PIXELS);
+		dlg.addOption(0, "OK");
+		dlg.addOption(1, "CANCEL");
+		dlg.setOptionButtonsWidth(80, Unit.PIXELS);
+		dlg.setOptionButtonsAlignment(OptionsAlign.RIGHT);
+
+		vaadinUI.addWindow(dlg);
+
+		dlg.setComponentProvider(new OptionDialog.ComponentProvider() {
+
+			Panel panel;
+			Table list;
+			IndexedContainer container;
+
+			@SuppressWarnings("unchecked")
+			@Override
+			public Component getComponent(OptionDialog optionDialog) {
+				if (panel == null) {
+					container = new IndexedContainer();
+					container.addContainerProperty(PERSPECTIVE_ICON,
+							Resource.class, null);
+					container.addContainerProperty(PERSPECTIVE_LABEL,
+							String.class, null);
+
+					for (MPerspective p : perspectiveStackForSwitcher
+							.getChildren()) {
+						if (!p.isVisible()) {
+							continue;
+						}
+						
+						if(p.getTags().contains(TAG__NOT_IN_OPEN_PERSPECTIVE_DIALOG)) {
+							continue;
+						}
+						
+						Item item = container.addItem(p.getElementId());
+						Resource icon = ResourceHelper.createResource(p
+								.getIconURI());
+						if (icon != null) {
+							item.getItemProperty(PERSPECTIVE_ICON).setValue(
+									icon);
+						}
+						item.getItemProperty(PERSPECTIVE_LABEL).setValue(
+								p.getLabel());
+					}
+
+					panel = new Panel();
+					list = new Table();
+					list.addStyleName("open_perspective_window");
+					panel.setContent(list);
+					list.setSizeFull();
+					list.setSelectable(true);
+					list.setMultiSelect(false);
+					list.setContainerDataSource(container);
+					list.setColumnHeaderMode(Table.COLUMN_HEADER_MODE_HIDDEN);
+					list.setVisibleColumns(new Object[] { PERSPECTIVE_LABEL });
+					list.setRowHeaderMode(Table.ROW_HEADER_MODE_ICON_ONLY);
+					list.setItemIconPropertyId(PERSPECTIVE_ICON);
+					list.setColumnExpandRatio(PERSPECTIVE_LABEL, 1);
+				}
+				return panel;
+			}
+
+			@Override
+			public void optionSelected(OptionDialog dlg, int optionId) {
+				if (optionId == 0) {
+					// selected perspective's elementId
+					String perspectiveId = (String) list.getValue();
+					if (perspectiveId != null) {
+						MPerspective perspective = (MPerspective) modelService
+								.find(perspectiveId,
+										perspectiveStackForSwitcher);
+						if (!perspective.isToBeRendered())
+							perspective.setToBeRendered(true);
+						switchPerspective(perspective);
+					}
+				}
+				dlg.close();
+			}
+
+			@Override
+			public void setMessage(String message) {
+			}
+		});
+	}
+
+	// -------------------------------------------------------
+	// -------------------------------------------------------
+	private void hideElementRecursive(MUIElement element) {
+		if (element == null || element.getWidget() == null)
+			return;
+
+		if (element instanceof MPlaceholder) {
+			MPlaceholder ph = (MPlaceholder) element;
+			element = ph.getRef();
+		}
+
+		// Hide any floating windows
+		if (element instanceof MWindow && element.getWidget() != null) {
+			element.setVisible(false);
+		}
+
+		if (element instanceof MElementContainer<?>) {
+			MElementContainer<?> container = (MElementContainer<?>) element;
+			for (MUIElement childElement : container.getChildren()) {
+				hideElementRecursive(childElement);
+			}
+
+			// OK, now process detached windows
+			if (element instanceof MWindow) {
+				for (MWindow w : ((MWindow) element).getWindows()) {
+					hideElementRecursive(w);
+				}
+			} else if (element instanceof MPerspective) {
+				for (MWindow w : ((MPerspective) element).getWindows()) {
+					hideElementRecursive(w);
+				}
+			}
+		}
+	}
+
+	private void showElementRecursive(MUIElement element) {
+		if (!element.isToBeRendered())
+			return;
+
+		if (element instanceof MPlaceholder && element.getWidget() != null) {
+			MPlaceholder ph = (MPlaceholder) element;
+			MUIElement ref = ph.getRef();
+			ref.setCurSharedRef(ph);
+
+			ComponentContainer phComponent = (ComponentContainer) ph
+					.getWidget();
+			Component refComponent = (Component) ph.getRef().getWidget();
+			phComponent.addComponent(refComponent);
+
+			element = ref;
+
+			// top right folder
+			MPartStack topLeftStack = HierarchyUtils.findTopLeftFolder(ph
+					.getRef());
+			if (topLeftStack != null) {
+				if (ph.getTags().contains(IPresentationEngine.MAXIMIZED))
+					((StackWidget) topLeftStack.getWidget()).setState(1);
+				else if (ph.getTags().contains(IPresentationEngine.MINIMIZED))
+					((StackWidget) topLeftStack.getWidget()).setState(-1);
+				else {
+					if (((StackWidget) topLeftStack.getWidget()) != null) {
+						((StackWidget) topLeftStack.getWidget()).setState(0);
+					}
+				}
+
+			}
+		}
+
+		if (element instanceof MContext) {
+			IEclipseContext context = ((MContext) element).getContext();
+			if (context != null) {
+				IEclipseContext newParentContext = modelService
+						.getContainingContext(element);
+				if (context.getParent() != newParentContext) {
+					context.setParent(newParentContext);
+				}
+			}
+		}
+
+		// Show any floating windows
+		if (element instanceof MWindow && element.getWidget() != null) {
+			int visCount = 0;
+			for (MUIElement kid : ((MWindow) element).getChildren()) {
+				if (kid.isToBeRendered() && kid.isVisible())
+					visCount++;
+			}
+			if (visCount > 0)
+				element.setVisible(true);
+		}
+
+		if (element instanceof MElementContainer<?>) {
+			MElementContainer<?> container = (MElementContainer<?>) element;
+			List<MUIElement> kids = new ArrayList<MUIElement>(
+					container.getChildren());
+			for (MUIElement childElement : kids) {
+				showElementRecursive(childElement);
+			}
+
+			// OK, now process detached windows
+			if (element instanceof MWindow) {
+				for (MWindow w : ((MWindow) element).getWindows()) {
+					showElementRecursive(w);
+				}
+			} else if (element instanceof MPerspective) {
+				for (MWindow w : ((MPerspective) element).getWindows()) {
+					showElementRecursive(w);
+				}
+			}
+		}
+	}
+
+	private void switchToPreviousPerspective(final MPerspective perspective) {
+		MPerspective prevRenderableAndVisiblePerspective = null, nextRenderableAndVisiblePerspective = null;
+		boolean startSearch = false;
+		for (MPerspective p : perspectiveStackForSwitcher
+				.getChildren()) {
+			if (startSearch && p.isToBeRendered()
+					&& p.isVisible()) {
+				nextRenderableAndVisiblePerspective = p;
+				break;
+			}
+
+			if (p == perspective)
+				startSearch = true;
+
+			if (!startSearch && p.isToBeRendered()
+					&& p.isVisible()) {
+				prevRenderableAndVisiblePerspective = p;
+			}
+		}
+
+		MPerspective newSelectedPerspective = nextRenderableAndVisiblePerspective != null ? nextRenderableAndVisiblePerspective
+				: prevRenderableAndVisiblePerspective;
+
+		if (newSelectedPerspective != null) {
+			switchPerspective(newSelectedPerspective);
+		}
+	}
+
+	private class PerspectiveDropHandler implements DropHandler {
+		private static final long FILE_SIZE_LIMIT = 2 * 1024 * 1024; // 2MB
+
+		public PerspectiveDropHandler() {
+		}
+
+		@Override
+		public void drop(final DragAndDropEvent dropEvent) {
+			// expecting this to be an html5 drag
+			final WrapperTransferable tr = (WrapperTransferable) dropEvent
+					.getTransferable();
+			final Html5File[] files = tr.getFiles();
+			if (files != null) {
+				for (final Html5File html5File : files) {
+					final String fileName = html5File.getFileName();
+					// if (!fileName.endsWith(".perspective")) {
+					// continue;
+					// }
+					if (html5File.getFileSize() > FILE_SIZE_LIMIT) {
+						Notification
+								.show("File rejected. Max 2Mb files are accepted by Sampler",
+										Notification.Type.WARNING_MESSAGE);
+					} else {
+						final ByteArrayOutputStream bas = new ByteArrayOutputStream();
+						final StreamVariable streamVariable = new StreamVariable() {
+							@Override
+							public OutputStream getOutputStream() {
+								return bas;
+							}
+
+							@Override
+							public boolean listenProgress() {
+								return false;
+							}
+
+							@Override
+							public void onProgress(
+									final StreamingProgressEvent event) {
+							}
+
+							@Override
+							public void streamingStarted(
+									final StreamingStartEvent event) {
+							}
+
+							@Override
+							public void streamingFinished(
+									final StreamingEndEvent event) {
+								addPerspective(
+										fileName,
+										html5File.getType(),
+										new ByteArrayInputStream(bas
+												.toByteArray()));
+							}
+
+							@Override
+							public void streamingFailed(
+									final StreamingErrorEvent event) {
+							}
+
+							@Override
+							public boolean isInterrupted() {
+								return false;
+							}
+						};
+						html5File.setStreamVariable(streamVariable);
+					}
+				}
+			}
+		}
+
+		@SuppressWarnings("restriction")
+		private void addPerspective(final String name, final String type,
+				final InputStream stream) {
+			XMIResource resource = new XMIResourceImpl(
+					URI.createURI("perspective" + name));
+			try {
+				resource.load(stream, null);
+
+				final MPerspective perspective = (MPerspective) resource
+						.getContents().get(0);
+				ChangeCommand command = new ChangeCommand("Drop perspective: "
+						+ perspective.getLocalizedLabel(),
+						((EObject) getPerspectiveStackForSwitcher())
+								.eResource()) {
+					@Override
+					protected void doExecute() {
+						// add the perspective
+						//
+						getPerspectiveStackForSwitcher().getChildren().add(
+								perspective);
+						getPerspectiveStackForSwitcher().setSelectedElement(
+								perspective);
+					}
+				};
+				editingDomain.getCommandStack().execute(command);
+
+				resource.unload();
+
+			} catch (IOException e) {
+				Notification.show(e.toString(), Type.ERROR_MESSAGE);
+			}
+		}
+
+		@Override
+		public AcceptCriterion getAcceptCriterion() {
+			return AcceptAll.get();
+		}
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/PlaceholderRenderer.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/PlaceholderRenderer.java
new file mode 100644
index 0000000..e3f043d
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/PlaceholderRenderer.java
@@ -0,0 +1,121 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.presentation.renderers;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.inject.Inject;
+
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.core.services.events.IEventBroker;
+import org.eclipse.e4.ui.model.application.ui.MContext;
+import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.model.application.ui.advanced.MPlaceholder;
+import org.eclipse.e4.ui.model.application.ui.basic.MPartStack;
+import org.eclipse.e4.ui.workbench.IPresentationEngine;
+import org.eclipse.e4.ui.workbench.UIEvents;
+import org.eclipse.e4.ui.workbench.UIEvents.EventTags;
+import org.eclipse.osbp.vaaclipse.presentation.utils.HierarchyUtils;
+import org.eclipse.osbp.vaaclipse.widgets.StackWidget;
+import org.osgi.service.event.Event;
+import org.osgi.service.event.EventHandler;
+
+import com.vaadin.ui.Component;
+import com.vaadin.ui.VerticalLayout;
+
+/**
+ * @author rushan
+ *
+ */
+public class PlaceholderRenderer extends VaadinRenderer {
+	@Inject
+	IPresentationEngine renderingEngine;
+
+	@Inject
+	private IEventBroker eventBroker;
+
+	@Override
+	public void createWidget(MUIElement element,
+			MElementContainer<MUIElement> parent) {
+		MPlaceholder ph = (MPlaceholder) element;
+		final MUIElement ref = ph.getRef();
+		ref.setCurSharedRef(ph);
+
+		VerticalLayout phComp = new VerticalLayout();
+		phComp.setSizeFull();
+		phComp.setMargin(false);
+		ph.setWidget(phComp);
+
+		Component refWidget = (Component) ref.getWidget();
+		if (refWidget == null) {
+			ref.setToBeRendered(true);
+			refWidget = (Component) renderingEngine.createGui(ref);
+		}
+
+		if (refWidget.getParent() != phComp) {
+			phComp.addComponent(refWidget);
+		}
+
+		if (ref instanceof MContext) {
+			IEclipseContext context = ((MContext) ref).getContext();
+			IEclipseContext newParentContext = getContext(ph);
+			if (context.getParent() != newParentContext) {
+				context.setParent(newParentContext);
+			}
+		}
+	}
+
+	EventHandler tagListener = new EventHandler() {
+		@Override
+		public void handleEvent(Event event) {
+			Object changedObj = event.getProperty(EventTags.ELEMENT);
+			String eventType = (String) event
+					.getProperty(UIEvents.EventTags.TYPE);
+			String tag = (String) event
+					.getProperty(UIEvents.EventTags.NEW_VALUE);
+
+			if (!(changedObj instanceof MPlaceholder)) {
+				return;
+			}
+
+			final MPlaceholder ph = (MPlaceholder) changedObj;
+			MPartStack topLeftStack = HierarchyUtils.findTopLeftFolder(ph
+					.getRef());
+			if (topLeftStack != null) {
+				StackWidget stackWidget = (StackWidget) topLeftStack
+						.getWidget();
+
+				if (UIEvents.EventTypes.ADD.equals(eventType)) {
+					if (IPresentationEngine.MINIMIZED.equals(tag)) {
+						stackWidget.setState(-1);
+					} else if (IPresentationEngine.MAXIMIZED.equals(tag)) {
+						stackWidget.setState(1);
+					}
+				} else if (UIEvents.EventTypes.REMOVE.equals(eventType)) {
+					stackWidget.setState(0);
+				}
+			}
+		}
+	};
+
+	@PostConstruct
+	void postConstruct() {
+		eventBroker.subscribe(UIEvents.ApplicationElement.TOPIC_TAGS,
+				tagListener);
+	}
+
+	@PreDestroy
+	void preDestroy() {
+		eventBroker.unsubscribe(tagListener);
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/SashRenderer.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/SashRenderer.java
new file mode 100644
index 0000000..970c2b5
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/SashRenderer.java
@@ -0,0 +1,485 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.presentation.renderers;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.inject.Inject;
+
+import org.eclipse.e4.core.di.annotations.Optional;
+import org.eclipse.e4.core.services.events.IEventBroker;
+import org.eclipse.e4.core.services.log.Logger;
+import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.model.application.ui.basic.MPartSashContainer;
+import org.eclipse.e4.ui.model.application.ui.basic.MPartSashContainerElement;
+import org.eclipse.e4.ui.model.application.ui.basic.MWindow;
+import org.eclipse.e4.ui.workbench.UIEvents;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.osbp.runtime.designer.api.IDesignerService;
+import org.eclipse.osbp.runtime.designer.api.IDesignerService.IDesignListener;
+import org.eclipse.osbp.runtime.designer.api.IWidgetDesignConfigurator;
+import org.eclipse.osbp.vaaclipse.presentation.widgets.TrimmedWindowContent;
+import org.eclipse.osbp.vaaclipse.publicapi.model.Tags;
+import org.eclipse.osbp.vaaclipse.widgets.SashWidget;
+import org.eclipse.osbp.vaaclipse.widgets.SashWidgetHorizontal;
+import org.eclipse.osbp.vaaclipse.widgets.SashWidgetVertical;
+import org.eclipse.osbp.vaaclipse.widgets.SplitPositionChangedListener;
+import org.osgi.service.event.Event;
+import org.osgi.service.event.EventHandler;
+
+import com.vaadin.ui.AbstractComponent;
+import com.vaadin.ui.AbstractSplitPanel;
+import com.vaadin.ui.Component;
+import com.vaadin.ui.ComponentContainer;
+import com.vaadin.ui.Panel;
+import com.vaadin.ui.VerticalLayout;
+
+public class SashRenderer extends VaadinRenderer implements IDesignListener {
+
+	@Inject
+	IEventBroker eventBroker;
+
+	@Inject
+	Logger logger;
+
+	@Inject
+	@Optional
+	private IDesignerService designerService;
+
+	private boolean ignoreSashWeights = false;
+
+	private EventHandler sashWeightHandler = new EventHandler() {
+		public void handleEvent(Event event) {
+
+			if (ignoreSashWeights)
+				return;
+
+			// Ensure that this event is for a MPartSashContainer
+			MUIElement element = (MUIElement) event
+					.getProperty(UIEvents.EventTags.ELEMENT);
+			MElementContainer<MUIElement> parent = element.getParent();
+			if (parent.getRenderer() != SashRenderer.this)
+				return;
+
+			MPartSashContainer sash = (MPartSashContainer) (MElementContainer<?>) element
+					.getParent();
+			setWeights(sash);
+		}
+	};
+
+	private final EventHandler visibilityHandler = new EventHandler() {
+		@Override
+		public void handleEvent(Event event) {
+			MUIElement changedElement = (MUIElement) event
+					.getProperty(UIEvents.EventTags.ELEMENT);
+
+			if ((MElementContainer<?>) changedElement.getParent() instanceof MPartSashContainer) {
+				MPartSashContainer sash = (MPartSashContainer) (MElementContainer<?>) changedElement
+						.getParent();
+
+				if (sash.getRenderer() == null) {
+					return;
+				}
+
+				((SashRenderer) sash.getRenderer()).refreshSashContainer(sash);
+
+				boolean visible = false;
+				for (MPartSashContainerElement child : sash.getChildren()) {
+					if (child.isVisible()) {
+						visible = true;
+						break;
+					}
+				}
+				if (sash.isVisible() != visible)
+					sash.setVisible(visible);
+			}
+		}
+	};
+
+	private Set<MPartSashContainer> sashContainers = new HashSet<>();
+
+	@Override
+	public void createWidget(MUIElement element,
+			MElementContainer<MUIElement> parent) {
+		if (!(element instanceof MPartSashContainer)) {
+			return;
+		}
+		VerticalLayout layout = new VerticalLayout();
+		layout.setSizeFull();
+
+		element.setWidget(layout);
+
+		sashContainers.add((MPartSashContainer) element);
+
+		if (designerService != null) {
+			designerService.addListener(this);
+
+			if (designerService.isDesignMode()) {
+				updateDesigner(true);
+			}
+		}
+
+	}
+
+	@Override
+	public void processContents(final MElementContainer<MUIElement> element) {
+		refreshSashContainer((MPartSashContainer) (MElementContainer<?>) element);
+	}
+
+	public void generateSplitPanelStructure(MPartSashContainer sash) {
+		VerticalLayout layout = (VerticalLayout) sash.getWidget();
+		layout.removeAllComponents();
+
+		ComponentContainer sashWidget = null;
+
+		@SuppressWarnings("unchecked")
+		List<MPartSashContainerElement> renderableAndVisible = (List<MPartSashContainerElement>) filterRenderableAndVisibleElements(sash);
+
+		if (renderableAndVisible.isEmpty()) {
+			sashWidget = new VerticalLayout();
+		} else if (renderableAndVisible.size() == 1) {
+			sashWidget = new VerticalLayout();
+			MPartSashContainerElement child = renderableAndVisible.get(0);
+			sashWidget.addComponent((Component) child.getWidget());
+		} else {
+			sashWidget = sash.isHorizontal() ? new SashWidgetHorizontal()
+					: new SashWidgetVertical();
+			AbstractSplitPanel currentSashWidget = (AbstractSplitPanel) sashWidget;
+			currentSashWidget
+					.setLocked(sash.getTags().contains(Tags.NO_RESIZE));
+			for (int i = 0; i < renderableAndVisible.size(); i++) {
+				MPartSashContainerElement child = renderableAndVisible.get(i);
+
+				if (currentSashWidget.getFirstComponent() == null) {
+					currentSashWidget.setFirstComponent((Component) child
+							.getWidget());
+				} else {
+					if (i == renderableAndVisible.size() - 1) {
+						currentSashWidget.setSecondComponent((Component) child
+								.getWidget());
+					} else {
+						AbstractSplitPanel newSashWidget = sash.isHorizontal() ? new SashWidgetHorizontal()
+								: new SashWidgetVertical();
+						newSashWidget.setLocked(sash.getTags().contains(
+								Tags.NO_RESIZE));
+						newSashWidget.setFirstComponent((Component) child
+								.getWidget());
+						currentSashWidget.setSecondComponent(newSashWidget);
+						currentSashWidget = newSashWidget;
+					}
+				}
+			}
+		}
+
+		sashWidget.setSizeFull();
+		layout.addComponent(sashWidget);
+
+		setWeights(sash);
+	}
+
+	@Override
+	public void notify(IDesignerService.DesignEvent event) {
+		updateDesigner(event.getType() == IDesignerService.EventType.ENABLED);
+	}
+
+	private void updateDesigner(boolean enabled) {
+		for (MPartSashContainer container : sashContainers) {
+			for (MPartSashContainerElement child : container.getChildren()) {
+				if (child.getWidget() != null && child.isToBeRendered()) {
+					updateDesigner(enabled, child);
+				}
+			}
+		}
+	}
+
+	private void updateDesigner(boolean enabled, MPartSashContainerElement child) {
+		IWidgetDesignConfigurator designConfigurator = context
+				.get(IWidgetDesignConfigurator.class);
+		if (designConfigurator != null) {
+			designConfigurator.configure(child.getWidget(), (EObject) child,
+					enabled);
+		}
+	}
+
+	void setWeights(MPartSashContainer sash) {
+		@SuppressWarnings("unchecked")
+		List<MPartSashContainerElement> renderableAndVisible = (List<MPartSashContainerElement>) filterRenderableAndVisibleElements(sash);
+		if (renderableAndVisible.size() < 2)
+			return;
+
+		Map<MPartSashContainerElement, Double> weights = new HashMap<MPartSashContainerElement, Double>();
+		Map<Component, MPartSashContainerElement> map = new HashMap<Component, MPartSashContainerElement>();
+		double total_weight = 0;
+		for (MPartSashContainerElement children : renderableAndVisible) {
+			String data = children.getContainerData();
+			double weight = parseContainerData(data);
+
+			map.put((Component) children.getWidget(), children);
+			weights.put(children, weight);
+			total_weight += weight;
+		}
+
+		if (total_weight == 0.0) // all child elements has zero weight
+			total_weight = 1.0;
+
+		AbstractSplitPanel topSashWidget = (AbstractSplitPanel) ((VerticalLayout) sash
+				.getWidget()).getComponent(0);
+		AbstractSplitPanel currentSashWidget = topSashWidget;
+		while (true) {
+			MPartSashContainerElement e1 = map.get(currentSashWidget
+					.getFirstComponent());
+			// the first - is always element
+			double w = weights.get(e1);
+			double pos = (w / total_weight) * 100;
+			currentSashWidget.setSplitPosition((float) pos);
+
+			if (map.containsKey(currentSashWidget.getSecondComponent()))
+				break;
+
+			currentSashWidget = (AbstractSplitPanel) currentSashWidget
+					.getSecondComponent();
+			total_weight = total_weight - w;
+		}
+	}
+
+	public void refreshSashContainer(MPartSashContainer sash) {
+
+		// sashContainersMap.remove(sash);
+
+		generateSplitPanelStructure(sash);
+		addSplitPaneListener(sash);
+	}
+
+	@PostConstruct
+	void postConstruct() {
+		eventBroker.subscribe(UIEvents.UIElement.TOPIC_CONTAINERDATA,
+				sashWeightHandler);
+		eventBroker.subscribe(UIEvents.UIElement.TOPIC_VISIBLE,
+				visibilityHandler);
+		eventBroker.subscribe(UIEvents.ElementContainer.TOPIC_CHILDREN,
+				childrenMoveUpdater);
+	}
+
+	@PreDestroy
+	public void preDestroy() {
+
+		if (designerService != null) {
+			designerService.removeListener(this);
+		}
+
+		eventBroker.unsubscribe(sashWeightHandler);
+		eventBroker.unsubscribe(visibilityHandler);
+		eventBroker.unsubscribe(childrenMoveUpdater);
+	}
+
+	private EventHandler childrenMoveUpdater = new EventHandler() {
+		public void handleEvent(Event event) {
+			// Ensure that this event is for a MMenuItem
+			if (!(event.getProperty(UIEvents.EventTags.ELEMENT) instanceof MPartSashContainer))
+				return;
+
+			MPartSashContainer sash = (MPartSashContainer) event
+					.getProperty(UIEvents.EventTags.ELEMENT);
+			String type = (String) event.getProperty(UIEvents.EventTags.TYPE);
+
+			// on move, we unrender an render the UI again
+			//
+			if (UIEvents.EventTypes.MOVE.equals(type)) {
+				// refreshSashContainer(sash);
+			}
+		}
+	};
+
+	@Override
+	public void hookControllerLogic(MUIElement element) {
+		// Controller logic is added in refreshSashContainer method. The widget
+		// hierarchy regenerated on each add and remove gui,
+		// so listeners must added each time when sash widget created
+	}
+
+	public void addSplitPaneListener(MUIElement element) {
+		final MPartSashContainer sash = (MPartSashContainer) element;
+
+		List<MPartSashContainerElement> renderableAndVisible = (List<MPartSashContainerElement>) filterRenderableAndVisibleElements(sash);
+
+		if (renderableAndVisible.size() > 1) {
+			for (MPartSashContainerElement child : renderableAndVisible) {
+				Component childComponent = (Component) child.getWidget();
+				if (childComponent.getParent() instanceof SashWidget) {
+					SashWidget sashWidget = (SashWidget) childComponent
+							.getParent();
+					sashWidget.addListener(new SplitPositionChangedListener() {
+
+						@Override
+						public void processEvent(AbstractSplitPanel splitPanel,
+								float newSplitPos) {
+							AbstractComponent firstWidget = (AbstractComponent) splitPanel
+									.getFirstComponent();
+
+							// filter renderable and visible again (list can be
+							// changed)
+							List<MPartSashContainerElement> renderableAndVisible = (List<MPartSashContainerElement>) filterRenderableAndVisibleElements(sash);
+							MPartSashContainerElement firstChild = null;
+							double rest_weight = 0;
+							List<MPartSashContainerElement> restChilds = new LinkedList<MPartSashContainerElement>();
+							for (int i = 0; i < renderableAndVisible.size(); i++) {
+								MPartSashContainerElement child = renderableAndVisible
+										.get(i);
+								if (firstWidget.equals(child.getWidget())) {
+									firstChild = child;
+								}
+
+								if (firstChild != null) {
+									try {
+										double w = parseContainerData(child
+												.getContainerData());
+										rest_weight += w;
+									} catch (NumberFormatException e) {
+										logger.error("Changing weights of SashContainer's childs is failed. Can not parse children container data");
+										return;
+									}
+
+									restChilds.add(child);
+								}
+							}
+
+							if (restChilds.size() > 1) {
+								// String debugstr = "weights: ";
+								ignoreSashWeights = true;
+
+								double rest_weight_except_first = rest_weight
+										- parseContainerData(firstChild
+												.getContainerData());
+								double newW1 = (newSplitPos / 100)
+										* rest_weight;
+								double new_rest_weight_except_first = rest_weight
+										- newW1;
+								long longVal1 = Math.round(newW1);
+								firstChild.setContainerData(Long
+										.toString(longVal1));
+								// debugstr += longVal1;
+
+								// if the weight of remainder (except first) is
+								// not zero, then we distribute the new space
+								// appropriate weights
+								if (rest_weight_except_first > 0.0) {
+									for (int i = 1; i < restChilds.size(); i++) {
+										MPartSashContainerElement child = restChilds
+												.get(i);
+										double w = parseContainerData(child
+												.getContainerData());
+										double newW = (w / rest_weight_except_first)
+												* new_rest_weight_except_first;
+										long longVal = Math.round(newW);
+
+										child.setContainerData(Long
+												.toString(longVal));
+										// debugstr += ", " + longVal;
+									}
+								} else // otherwise we assign all new space to
+										// the last component
+								{
+									MPartSashContainerElement rest1 = restChilds
+											.get(restChilds.size() - 1);
+									rest1.setContainerData(Long.toString(Math
+											.round(new_rest_weight_except_first)));
+								}
+
+								ignoreSashWeights = false;
+
+								// System.out.println(debugstr);
+
+								// ATTENTION! Really line below is not required
+								// if code above works correctly.
+								// But if there are any wrong behaviour appear
+								// then we have wrong synchronized state
+								// that may caused side effects, so we do back
+								// syncronization (and bug if it occur become
+								// obvious).
+								// This is also zeroed weight mismatch occuring
+								// when double rounded (and possible when vaadin
+								// process changes),
+								// so we avoid mismatch accumulating.
+								// Most likely in the future this will be
+								// deleted (when this code will be proved that
+								// all ok).
+								setWeights(sash);
+							} else {
+								logger.error("Changing SashContainer child weights is failed. User changes is not processed correctly");
+							}
+
+							// and last thing what we must do - tell the
+							// WorkbenchWindow to recalculate bounds of it
+							// content
+							// (because bounds of some content of workbench
+							// window changed after sash widget split position
+							// changed)
+							MWindow window = modelService
+									.getTopLevelWindowFor(sash);
+							TrimmedWindowContent windowContent = (TrimmedWindowContent) ((Panel) window
+									.getWidget()).getContent();
+							windowContent.invalidateBounds();
+						}
+					});
+				} else {
+					logger.error("Error in  widget hierarchy detected - if sash container has more than one element its child widget must has SashWidget as a parent");
+				}
+			}
+		}
+	}
+
+	private double parseContainerData(String containerData) {
+		if (containerData == null)
+			return 0.0d;
+
+		containerData = containerData.trim();
+
+		try {
+			return Double.parseDouble(containerData);
+		} catch (NumberFormatException e) {
+			return 0.0d;
+		}
+	}
+
+	@Override
+	public void addChildGui(MUIElement child,
+			MElementContainer<MUIElement> element) {
+		if (!(child instanceof MPartSashContainerElement)
+				|| !((MElementContainer<?>) element instanceof MPartSashContainer))
+			return;
+
+		refreshSashContainer((MPartSashContainer) (MElementContainer<?>) element);
+
+		if (designerService != null && designerService.isDesignMode()) {
+			updateDesigner(designerService.isDesignMode(),
+					(MPartSashContainerElement) child);
+		}
+	}
+
+	@Override
+	public void removeChildGui(MUIElement child,
+			MElementContainer<MUIElement> element) {
+		if (!(child instanceof MPartSashContainerElement)
+				|| !((MElementContainer<?>) element instanceof MPartSashContainer))
+			return;
+
+		refreshSashContainer((MPartSashContainer) (MElementContainer<?>) element);
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/StackRenderer.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/StackRenderer.java
new file mode 100644
index 0000000..c265792
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/StackRenderer.java
@@ -0,0 +1,611 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.presentation.renderers;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.inject.Inject;
+
+import org.eclipse.e4.core.contexts.ContextInjectionFactory;
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.core.di.annotations.Optional;
+import org.eclipse.e4.ui.model.application.MApplication;
+import org.eclipse.e4.ui.model.application.ui.MDirtyable;
+import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.model.application.ui.MUILabel;
+import org.eclipse.e4.ui.model.application.ui.advanced.MPlaceholder;
+import org.eclipse.e4.ui.model.application.ui.basic.MPart;
+import org.eclipse.e4.ui.model.application.ui.basic.MPartStack;
+import org.eclipse.e4.ui.model.application.ui.basic.MStackElement;
+import org.eclipse.e4.ui.model.application.ui.basic.MWindow;
+import org.eclipse.e4.ui.services.internal.events.EventBroker;
+import org.eclipse.e4.ui.workbench.IPresentationEngine;
+import org.eclipse.e4.ui.workbench.UIEvents;
+import org.eclipse.e4.ui.workbench.UIEvents.EventTags;
+import org.eclipse.e4.ui.workbench.modeling.EModelService;
+import org.eclipse.e4.ui.workbench.modeling.EPartService;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.osbp.runtime.designer.api.IDesignerService;
+import org.eclipse.osbp.runtime.designer.api.IWidgetDesignConfigurator;
+import org.eclipse.osbp.vaaclipse.api.VaadinExecutorService;
+import org.eclipse.osbp.vaaclipse.presentation.dnd.VaadinDropHandler;
+import org.eclipse.osbp.vaaclipse.publicapi.change.SimpleCommand;
+import org.eclipse.osbp.vaaclipse.publicapi.resources.ResourceHelper;
+import org.eclipse.osbp.vaaclipse.widgets.StackWidget;
+import org.eclipse.osbp.vaaclipse.widgets.StackWidget.StateListener;
+import org.osgi.service.event.Event;
+import org.osgi.service.event.EventHandler;
+
+import com.vaadin.server.Resource;
+import com.vaadin.ui.Component;
+import com.vaadin.ui.TabSheet;
+import com.vaadin.ui.TabSheet.CloseHandler;
+import com.vaadin.ui.TabSheet.SelectedTabChangeEvent;
+import com.vaadin.ui.TabSheet.SelectedTabChangeListener;
+import com.vaadin.ui.TabSheet.Tab;
+
+import fi.jasoft.dragdroplayouts.client.ui.LayoutDragMode;
+
+@SuppressWarnings("restriction")
+public class StackRenderer extends VaadinRenderer implements
+		IDesignerService.IDesignListener {
+
+	@Inject
+	private EventBroker eventBroker;
+	@Inject
+	private EModelService modelService;
+	@Inject
+	private EditingDomain editingDomain;
+	@Inject
+	private EPartService partService;
+	private Map<Component, MStackElement> vaatab2Element = new HashMap<Component, MStackElement>();
+	private boolean ignoreTabSelChanges = false;
+
+	@Inject
+	VaadinExecutorService communicationManager;
+
+	@Inject
+	@Optional
+	private IDesignerService designerService;
+
+	private EventHandler tagListener = new EventHandler() {
+		@Override
+		public void handleEvent(Event event) {
+
+			Object changedObj = event.getProperty(EventTags.ELEMENT);
+			String eventType = (String) event
+					.getProperty(UIEvents.EventTags.TYPE);
+			String tag = (String) event
+					.getProperty(UIEvents.EventTags.NEW_VALUE);
+
+			int location = modelService
+					.getElementLocation((MUIElement) changedObj);
+			if (!(changedObj instanceof MPartStack)
+					|| location == EModelService.IN_SHARED_AREA) {
+				return;
+			}
+
+			final MPartStack stack = (MPartStack) changedObj;
+			StackWidget stackWidget = (StackWidget) stack.getWidget();
+
+			if (UIEvents.EventTypes.ADD.equals(eventType)) {
+				if (IPresentationEngine.MINIMIZED.equals(tag)) {
+					stackWidget.setState(-1);
+				} else if (IPresentationEngine.MAXIMIZED.equals(tag)) {
+					stackWidget.setState(1);
+				}
+			} else if (UIEvents.EventTypes.REMOVE.equals(eventType)) {
+				stackWidget.setState(0);
+			}
+		}
+	};
+
+	private EventHandler selectElementHandler = new EventHandler() {
+
+		public void handleEvent(Event event) {
+			Object element = event.getProperty(UIEvents.EventTags.ELEMENT);
+
+			if (!(element instanceof MPartStack))
+				return;
+
+			MPartStack stack = (MPartStack) element;
+			if (stack.getRenderer() != StackRenderer.this)
+				return;
+
+			if (stack.getSelectedElement() != null) {
+				if (stack.getSelectedElement().getWidget() == null) {
+					IPresentationEngine engine = (IPresentationEngine) context
+							.get(IPresentationEngine.class.getName());
+					engine.createGui(stack.getSelectedElement());
+
+					int i = 0;
+					for (MStackElement e : stack.getChildren()) {
+						if (e == stack.getSelectedElement())
+							break;
+
+						if (e.getWidget() != null)
+							i++;
+					}
+
+					addTab((TabSheet) stack.getWidget(),
+							stack.getSelectedElement(), i);
+				}
+
+				ignoreTabSelChanges = true;
+				((TabSheet) stack.getWidget()).setSelectedTab((Component) stack
+						.getSelectedElement().getWidget());
+				ignoreTabSelChanges = false;
+			}
+		}
+	};
+
+	EventHandler itemUpdater = new EventHandler() {
+		public void handleEvent(Event event) {
+			MUIElement element = (MUIElement) event
+					.getProperty(UIEvents.EventTags.ELEMENT);
+			if (!(element instanceof MPart))
+				return;
+
+			MPart part = (MPart) element;
+
+			String attName = (String) event
+					.getProperty(UIEvents.EventTags.ATTNAME);
+			Object newValue = event.getProperty(UIEvents.EventTags.NEW_VALUE);
+
+			MPartStack stack = null;
+			// is this a direct child of the stack?
+			MPlaceholder placeholder = null;
+			if (element.getParent() != null
+					&& element.getParent().getRenderer() == StackRenderer.this) {
+				stack = (MPartStack) (MElementContainer<?>) element.getParent();
+			} else {
+				// Do we have any stacks with place holders for the element
+				// that's changed?
+				MWindow win = modelService.getTopLevelWindowFor(part);
+				List<MPlaceholder> refs = modelService.findElements(win, null,
+						MPlaceholder.class, null);
+				if (refs != null) {
+					for (MPlaceholder ref : refs) {
+						if (ref.getRef() != part)
+							continue;
+
+						MElementContainer<?> refParent = ref.getParent();
+						// can be null, see bug 328296
+						if (refParent != null
+								&& refParent.getRenderer() instanceof StackRenderer) {
+							placeholder = ref;
+							stack = (MPartStack) refParent;
+						}
+					}
+				}
+			}
+
+			if (stack != null) {
+				Tab tab = ((StackWidget) stack.getWidget())
+						.getTab((Component) (placeholder == null ? part
+								.getWidget() : placeholder.getWidget()));
+				if (tab != null)
+					updateTab(tab, part, attName, newValue);
+			}
+		}
+	};
+
+	private void updateTab(Tab tab, MPart part, String attName, Object newValue) {
+		if (UIEvents.UILabel.LABEL.equals(attName)) {
+			String newName = (String) newValue;
+			tab.setCaption(getLabel(part, newName));
+		} else if (UIEvents.UILabel.ICONURI.equals(attName)) {
+			Resource icon = part.getIconURI() != null ? ResourceHelper
+					.createResource(part.getIconURI()) : null;
+			tab.setIcon(icon);
+		} else if (UIEvents.UILabel.TOOLTIP.equals(attName)) {
+			String newTTip = (String) newValue;
+			tab.setDescription(newTTip);
+		} else if (UIEvents.UILabel.LOCALIZED_LABEL.equals(attName)) {
+			String newName = (String) newValue;
+			tab.setCaption(getLabel(part, newName));
+		} else if (UIEvents.UILabel.LOCALIZED_TOOLTIP.equals(attName)) {
+			String newTTip = (String) newValue;
+			tab.setDescription(newTTip);
+		} else if (UIEvents.Dirtyable.DIRTY.equals(attName)) {
+			Boolean dirtyState = (Boolean) newValue;
+			String text = tab.getCaption();
+			boolean hasAsterisk = text.length() > 0 && text.charAt(0) == '*';
+			if (dirtyState.booleanValue()) {
+				if (!hasAsterisk) {
+					tab.setCaption('*' + text);
+				}
+			} else if (hasAsterisk) {
+				tab.setCaption(text.substring(1));
+			}
+		}
+	}
+
+	private String getLabel(MUILabel itemPart, String newName) {
+		if (newName == null) {
+			newName = ""; //$NON-NLS-1$
+		}
+		if (itemPart instanceof MDirtyable && ((MDirtyable) itemPart).isDirty()) {
+			newName = '*' + newName;
+		}
+		return newName;
+	}
+
+	@PostConstruct
+	public void postConstruct() {
+		eventBroker.subscribe(UIEvents.ApplicationElement.TOPIC_TAGS,
+				tagListener);
+		eventBroker.subscribe(UIEvents.ElementContainer.TOPIC_SELECTEDELEMENT,
+				selectElementHandler);
+		eventBroker.subscribe(UIEvents.UILabel.TOPIC_ALL, itemUpdater);
+		eventBroker.subscribe(UIEvents.Dirtyable.TOPIC_DIRTY, itemUpdater);
+		eventBroker.subscribe(UIEvents.ElementContainer.TOPIC_CHILDREN,
+				childrenMoveUpdater);
+	}
+
+	@Override
+	public void notify(IDesignerService.DesignEvent event) {
+		updateDesigner(event.getType() == IDesignerService.EventType.ENABLED);
+	}
+
+	private void updateDesigner(boolean enabled) {
+		IWidgetDesignConfigurator designConfigurator = context
+				.get(IWidgetDesignConfigurator.class);
+		if (designConfigurator != null) {
+			for (Entry<Component, MStackElement> entry : vaatab2Element
+					.entrySet()) {
+				designConfigurator.configure(entry.getKey(),
+						(EObject) entry.getValue(), enabled);
+			}
+		}
+	}
+
+	@PreDestroy
+	public void preDestroy() {
+
+		if (designerService != null) {
+			designerService.removeListener(this);
+		}
+
+		eventBroker.unsubscribe(tagListener);
+		eventBroker.unsubscribe(selectElementHandler);
+		eventBroker.unsubscribe(itemUpdater);
+		eventBroker.unsubscribe(childrenMoveUpdater);
+	}
+
+	// TODO for later use
+	private EventHandler childrenMoveUpdater = new EventHandler() {
+		public void handleEvent(Event event) {
+			// Ensure that this event is for a MMenuItem
+			if (!(event.getProperty(UIEvents.EventTags.ELEMENT) instanceof MPartStack))
+				return;
+
+			@SuppressWarnings("unchecked")
+			MElementContainer<MUIElement> stack = (MElementContainer<MUIElement>) event
+					.getProperty(UIEvents.EventTags.ELEMENT);
+			String type = (String) event.getProperty(UIEvents.EventTags.TYPE);
+
+			if (UIEvents.EventTypes.MOVE.equals(type)) {
+				StackWidget stackWidget = (StackWidget) stack.getWidget();
+				stackWidget.removeAllComponents();
+
+				processContents(stack);
+			}
+		}
+	};
+
+	@Override
+	public void createWidget(MUIElement element,
+			MElementContainer<MUIElement> parent) {
+		if (!(element instanceof MPartStack))
+			return;
+
+		MPartStack stack = (MPartStack) element;
+		StackWidget stackWidget = new StackWidget();
+		stackWidget.setDragMode(LayoutDragMode.CLONE);
+
+		stackWidget.setSizeFull();
+		element.setWidget(stackWidget);
+
+		IEclipseContext context = modelService.getContainingContext(stack)
+				.createChild();
+		context.set(MPartStack.class, stack);
+
+		VaadinDropHandler dropHandler = ContextInjectionFactory.make(
+				VaadinDropHandler.class, context);
+		stackWidget.setDropHandler(dropHandler);
+		
+		if (designerService != null) {
+			designerService.addListener(this);
+
+			if (designerService.isDesignMode()) {
+				updateDesigner(true);
+			}
+		}
+	}
+
+	@Override
+	public void processContents(final MElementContainer<MUIElement> container) {
+		MPartStack stack = (MPartStack) (MElementContainer<?>) container;
+		StackWidget stackWidget = (StackWidget) stack.getWidget();
+		for (MStackElement element : stack.getChildren()) {
+			if (element.isToBeRendered())
+				addTab(stackWidget, (MStackElement) element,
+						stackWidget.getComponentCount());
+		}
+
+		// if there are childs in stack and the selected element is not
+		// specified for stack, set the first child as selected
+		if (stack.getChildren().size() > 0
+				&& stack.getSelectedElement() == null) {
+			if (stack.getChildren().get(0).isVisible()
+					&& stack.getChildren().get(0).isToBeRendered()) {
+				stack.setSelectedElement(stack.getChildren().get(0));
+			}
+		}
+
+		if (stack.getSelectedElement() != null) {
+			Component stackSelectedComponent = (Component) stack
+					.getSelectedElement().getWidget();
+			stackWidget.setSelectedTab(stackSelectedComponent);
+		}
+	}
+
+	private void addTab(TabSheet parentPane, MStackElement element, int pos) {
+		MUILabel mLabel;
+		if (element instanceof MPlaceholder)
+			mLabel = (MUILabel) ((MPlaceholder) element).getRef();
+		else
+			mLabel = (MUILabel) element;
+
+		boolean closable = false;
+		if (mLabel instanceof MPart)
+			closable = ((MPart) mLabel).isCloseable();
+
+		// Tab tab = parentPane.addTab((com.vaadin.ui.Component)
+		// element.getWidget(), mLabel.getLocalizedLabel(), icon, pos);
+		Tab tab = parentPane.addTab(
+				(com.vaadin.ui.Component) element.getWidget(), pos);
+		tab.setCaption(mLabel.getLocalizedLabel());
+		Resource icon = (mLabel.getIconURI() != null && !mLabel.getIconURI()
+				.trim().equals("")) ? ResourceHelper.createResource(mLabel
+				.getIconURI()) : null;
+		if (icon != null) {
+			tab.setIcon(icon);
+		}
+		tab.setClosable(closable);
+		tab.setDescription(mLabel.getLocalizedTooltip());
+
+		vaatab2Element.put((Component) element.getWidget(), element);
+		
+		if(designerService != null && designerService.isDesignMode()) {
+			updateDesigner(designerService.isDesignMode());
+		}
+	}
+
+	@SuppressWarnings("serial")
+	@Override
+	public void hookControllerLogic(final MUIElement element) {
+		final StackWidget sw = (StackWidget) element.getWidget();
+
+		int location = modelService.getElementLocation(element);
+		if (location != EModelService.IN_SHARED_AREA) // if the stack not in
+														// shared area
+		{
+			sw.addStateListener(new StateListener() {
+
+				@Override
+				public void stateChanged(int newState, int oldState) {
+					if (oldState == 0 && newState == 1)
+						setState(element, IPresentationEngine.MAXIMIZED);
+					else if (oldState == 1 && newState == 0)
+						setState(element, null);
+					else if (oldState == 1 && newState == -1) {
+						element.getTags().remove(IPresentationEngine.MINIMIZED);
+						element.getTags().remove(IPresentationEngine.MAXIMIZED);
+						element.getTags().add(IPresentationEngine.MINIMIZED);
+					} else if (oldState == -1 && newState == 0) {
+						element.getTags().remove(
+								IPresentationEngine.MINIMIZED_BY_ZOOM);
+						element.getTags().remove(IPresentationEngine.MINIMIZED);
+					} else if (oldState == 0 && newState == -1)
+						setState(element, IPresentationEngine.MINIMIZED);
+				}
+
+				private void setState(MUIElement element, String state) {
+					element.getTags().remove(
+							IPresentationEngine.MINIMIZED_BY_ZOOM);
+					if (IPresentationEngine.MINIMIZED.equals(state)) {
+						element.getTags().remove(IPresentationEngine.MAXIMIZED);
+						element.getTags().add(IPresentationEngine.MINIMIZED);
+					} else if (IPresentationEngine.MAXIMIZED.equals(state)) {
+						element.getTags().remove(IPresentationEngine.MINIMIZED);
+						element.getTags().add(IPresentationEngine.MAXIMIZED);
+					} else {
+						element.getTags().remove(IPresentationEngine.MINIMIZED);
+						element.getTags().remove(IPresentationEngine.MAXIMIZED);
+					}
+				}
+			});
+		}
+
+		sw.addSelectedTabChangeListener(new SelectedTabChangeListener() {
+			public void selectedTabChange(SelectedTabChangeEvent event) {
+				final MStackElement stackElement = vaatab2Element.get(sw
+						.getSelectedTab());
+				if (stackElement != null) {
+					if (ignoreTabSelChanges)
+						return;
+
+					final MPartStack stack = (MPartStack) (MElementContainer<?>) stackElement
+							.getParent();
+					if (stack != null
+							&& stack.getSelectedElement() != stackElement) {
+
+						SimpleCommand command = new SimpleCommand(
+								"Switch stack element") {
+							final MStackElement oldStackElement = stack
+									.getSelectedElement();
+
+							@Override
+							protected void doUndo() {
+								stack.setSelectedElement(oldStackElement);
+								activateStack(stack);
+							}
+
+							@Override
+							protected void doExecute() {
+								stack.setSelectedElement(stackElement);
+								activateStack(stack);
+							}
+						};
+						editingDomain.getCommandStack().execute(command);
+					}
+				}
+			}
+		});
+
+		sw.setCloseHandler(new CloseHandler() {
+
+			public void onTabClose(TabSheet tabsheet, Component tabContent) {
+				MStackElement stackElement = vaatab2Element.get(tabContent);
+				closePart(stackElement);
+			}
+		});
+	}
+
+	private void activateStack(MPartStack stack) {
+		communicationManager.invokeLater(new ActivationRunnable(stack));
+	}
+
+	private class ActivationRunnable implements Runnable {
+
+		private MPartStack stack;
+
+		public ActivationRunnable(MPartStack stack) {
+			this.stack = stack;
+		}
+
+		@Override
+		public void run() {
+			MStackElement stackElement = stack.getSelectedElement();
+			// Ensure we're activating a stack in the current perspective,
+			// when using a dialog to open a perspective
+			// we end up in the situation where this stack is in the
+			// previously active perspective
+			int location = modelService.getElementLocation(stack);
+			if ((location & EModelService.IN_ACTIVE_PERSPECTIVE) == 0
+					&& (location & EModelService.OUTSIDE_PERSPECTIVE) == 0
+					&& (location & EModelService.IN_SHARED_AREA) == 0)
+				return;
+
+			if (!isValid(stackElement))
+				return;
+
+			if (stackElement instanceof MPlaceholder)
+				stackElement = (MStackElement) ((MPlaceholder) stackElement)
+						.getRef();
+
+			IEclipseContext curContext = getContext(stackElement);
+			if (curContext != null) {
+				EPartService ps = (EPartService) curContext
+						.get(EPartService.class.getName());
+				if (ps != null)
+					ps.activate((MPart) stackElement, true);
+			}
+		}
+	}
+
+	private boolean isValid(MUIElement element) {
+		if (element == null || !element.isToBeRendered()) {
+			return false;
+		}
+
+		if (element instanceof MApplication) {
+			return true;
+		}
+
+		MUIElement parent = element.getParent();
+		if (parent == null && element instanceof MWindow) {
+			// might be a detached window
+			parent = (MUIElement) ((EObject) element).eContainer();
+		}
+
+		if (parent == null) {
+			// might be a shared part, try to find the placeholder
+			MWindow window = modelService.getTopLevelWindowFor(element);
+			return window == null ? false : isValid(modelService
+					.findPlaceholderFor(window, element));
+		}
+
+		return isValid(parent);
+	}
+
+	private boolean isClosable(MPart part) {
+		// if it's a shared part check its current ref
+		if (part.getCurSharedRef() != null) {
+			return !(part.getCurSharedRef().getTags()
+					.contains(IPresentationEngine.NO_CLOSE));
+		}
+
+		return part.isCloseable();
+	}
+
+	private boolean closePart(MStackElement stackElement) {
+
+		MPart part = (MPart) ((stackElement instanceof MPart) ? stackElement
+				: ((MPlaceholder) stackElement).getRef());
+		if (!isClosable(part)) {
+			return false;
+		}
+
+		IEclipseContext partContext = part.getContext();
+		IEclipseContext parentContext = getContextForParent(part);
+		// a part may not have a context if it hasn't been rendered
+		IEclipseContext context = partContext == null ? parentContext
+				: partContext;
+		// Allow closes to be 'canceled'
+		EPartService partService = (EPartService) context
+				.get(EPartService.class.getName());
+		if (partService.savePart(part, true)) {
+			partService.hidePart(part);
+			return true;
+		}
+		// the user has canceled out of the save operation, so don't close the
+		// part
+		return false;
+	}
+
+	@Override
+	public void setVisible(MUIElement changedElement, boolean visible) {
+		TabSheet tabPane = (TabSheet) changedElement.getWidget();
+		tabPane.setVisible(visible);
+	}
+
+	@Override
+	public void addChildGui(MUIElement child,
+			MElementContainer<MUIElement> element) {
+		if (!(child instanceof MStackElement))
+			return;
+
+		StackWidget sw = (StackWidget) element.getWidget();
+		int index = indexOf(child, element);
+		addTab(sw, (MStackElement) child, index);
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/ToolBarContributionRecord.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/ToolBarContributionRecord.java
new file mode 100644
index 0000000..5d9e89d
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/ToolBarContributionRecord.java
@@ -0,0 +1,173 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 2012 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *     Rushan R. Gilmullin - adoption to vaadin
+ ******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.presentation.renderers;
+
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+
+import org.eclipse.e4.core.commands.ExpressionContext;
+import org.eclipse.e4.core.contexts.EclipseContextFactory;
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.ui.internal.workbench.ContributionsAnalyzer;
+import org.eclipse.e4.ui.model.application.ui.MCoreExpression;
+import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+import org.eclipse.e4.ui.model.application.ui.menu.MToolBar;
+import org.eclipse.e4.ui.model.application.ui.menu.MToolBarContribution;
+import org.eclipse.e4.ui.model.application.ui.menu.MToolBarElement;
+import org.eclipse.e4.ui.model.application.ui.menu.MToolBarSeparator;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+
+public class ToolBarContributionRecord {
+	public static final String FACTORY = "ToolBarContributionFactory"; //$NON-NLS-1$
+	static final String STATIC_CONTEXT = "ToolBarContributionFactoryContext"; //$NON-NLS-1$
+
+	MToolBar toolbarModel;
+	MToolBarContribution toolbarContribution;
+	ArrayList<MToolBarElement> generatedElements = new ArrayList<MToolBarElement>();
+	ToolBarRenderer renderer;
+	boolean isVisible = true;
+	private IEclipseContext infoContext;
+
+	public ToolBarContributionRecord(MToolBar model,
+			MToolBarContribution contribution, ToolBarRenderer renderer) {
+		this.toolbarModel = model;
+		this.toolbarContribution = contribution;
+		this.renderer = renderer;
+	}
+
+	/**
+	 * @param context
+	 */
+	public void updateVisibility(IEclipseContext context) {
+		ExpressionContext exprContext = new ExpressionContext(context);
+		updateIsVisible(exprContext);
+		HashSet<ToolBarContributionRecord> recentlyUpdated = new HashSet<ToolBarContributionRecord>();
+		recentlyUpdated.add(this);
+		for (MToolBarElement item : generatedElements) {
+			boolean currentVisibility = computeVisibility(recentlyUpdated,
+					item, exprContext);
+			if (item.isVisible() != currentVisibility) {
+				item.setVisible(currentVisibility);
+			}
+		}
+	}
+
+	public void updateIsVisible(ExpressionContext exprContext) {
+		isVisible = ContributionsAnalyzer.isVisible(toolbarContribution,
+				exprContext);
+	}
+
+	public boolean computeVisibility(
+			HashSet<ToolBarContributionRecord> recentlyUpdated,
+			MToolBarElement item, ExpressionContext exprContext) {
+		boolean currentVisibility = isVisible;
+
+		if (currentVisibility
+				&& item.getVisibleWhen() instanceof MCoreExpression) {
+			boolean val = ContributionsAnalyzer.isVisible(
+					(MCoreExpression) item.getVisibleWhen(), exprContext);
+			currentVisibility = val;
+		}
+		return currentVisibility;
+	}
+
+	public boolean anyVisibleWhen() {
+		if (toolbarContribution.getVisibleWhen() != null) {
+			return true;
+		}
+		for (MToolBarElement child : toolbarContribution.getChildren()) {
+			if (child.getVisibleWhen() != null) {
+				return true;
+			}
+		}
+		return false;
+	}
+
+	public boolean mergeIntoModel() {
+		int idx = getIndex(toolbarModel,
+				toolbarContribution.getPositionInParent());
+		if (idx == -1) {
+			return false;
+		}
+
+		final List<MToolBarElement> copyElements = new ArrayList<MToolBarElement>();
+		for (MToolBarElement item : toolbarContribution.getChildren()) {
+			MToolBarElement copy = (MToolBarElement) EcoreUtil
+					.copy((EObject) item);
+			copyElements.add(copy);
+		}
+
+		for (MToolBarElement copy : copyElements) {
+			// if a visibleWhen clause is defined, the item should not be
+			// visible until the clause has been evaluated and returned 'true'
+			copy.setVisible(!anyVisibleWhen());
+			generatedElements.add(copy);
+			toolbarModel.getChildren().add(idx++, copy);
+		}
+		return true;
+	}
+
+	private IEclipseContext getStaticContext() {
+		if (infoContext == null) {
+			IEclipseContext parentContext = renderer.getContext(toolbarModel);
+			if (parentContext != null) {
+				infoContext = parentContext.createChild(STATIC_CONTEXT);
+			} else {
+				infoContext = EclipseContextFactory.create(STATIC_CONTEXT);
+			}
+			ContributionsAnalyzer.populateModelInterfaces(toolbarModel,
+					infoContext, toolbarModel.getClass().getInterfaces());
+			infoContext.set(ToolBarRenderer.class, renderer);
+		}
+		return infoContext;
+	}
+
+	private static int getIndex(MElementContainer<?> model,
+			String positionInParent) {
+		String id = null;
+		String modifier = null;
+		if (positionInParent != null && positionInParent.length() > 0) {
+			String[] array = positionInParent.split("="); //$NON-NLS-1$
+			modifier = array[0];
+			id = array[1];
+		}
+		if (id == null) {
+			return model.getChildren().size();
+		}
+
+		int idx = 0;
+		int size = model.getChildren().size();
+		while (idx < size) {
+			if (id.equals(model.getChildren().get(idx).getElementId())) {
+				if ("after".equals(modifier)) { //$NON-NLS-1$
+					idx++;
+				} else if ("endof".equals(modifier)) { //$NON-NLS-1$
+					// Skip current menu item
+					idx++;
+
+					// Skip all menu items until next MenuSeparator is found
+					while (idx < size
+							&& !(model.getChildren().get(idx) instanceof MToolBarSeparator && model
+									.getChildren().get(idx).getElementId() != null)) {
+						idx++;
+					}
+				}
+				return idx;
+			}
+			idx++;
+		}
+		return id.equals("additions") ? model.getChildren().size() : -1; //$NON-NLS-1$
+	}
+}
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/ToolBarRenderer.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/ToolBarRenderer.java
new file mode 100644
index 0000000..64401ac
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/ToolBarRenderer.java
@@ -0,0 +1,331 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.presentation.renderers;
+
+import java.util.ArrayList;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.inject.Inject;
+
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.core.contexts.RunAndTrack;
+import org.eclipse.e4.core.services.events.IEventBroker;
+import org.eclipse.e4.ui.internal.workbench.ContributionsAnalyzer;
+import org.eclipse.e4.ui.model.application.MApplication;
+import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.model.application.ui.SideValue;
+import org.eclipse.e4.ui.model.application.ui.basic.MTrimBar;
+import org.eclipse.e4.ui.model.application.ui.menu.MDirectToolItem;
+import org.eclipse.e4.ui.model.application.ui.menu.MHandledToolItem;
+import org.eclipse.e4.ui.model.application.ui.menu.MToolBar;
+import org.eclipse.e4.ui.model.application.ui.menu.MToolBarContribution;
+import org.eclipse.e4.ui.model.application.ui.menu.MToolBarElement;
+import org.eclipse.e4.ui.model.application.ui.menu.MToolBarSeparator;
+import org.eclipse.e4.ui.workbench.UIEvents;
+import org.eclipse.e4.ui.workbench.modeling.EModelService;
+import org.eclipse.osbp.vaaclipse.presentation.utils.GuiUtils;
+import org.eclipse.osbp.vaaclipse.publicapi.resources.ResourceHelper;
+import org.osgi.service.event.Event;
+import org.osgi.service.event.EventHandler;
+
+import com.vaadin.server.Resource;
+import com.vaadin.ui.AbstractLayout;
+import com.vaadin.ui.AbstractOrderedLayout;
+import com.vaadin.ui.Component;
+import com.vaadin.ui.HorizontalLayout;
+import com.vaadin.ui.VerticalLayout;
+
+@SuppressWarnings("restriction")
+public class ToolBarRenderer extends BasicMenuToolbarTrimbarRenderer {
+	@Inject
+	private MApplication application;
+	@Inject
+	private EModelService modelService;
+	@Inject
+	IEventBroker eventBroker;
+
+	@PostConstruct
+	public void init() {
+		context.set(ToolBarRenderer.class, this);
+	}
+
+	@PreDestroy
+	public void contextDisposed() {
+
+	}
+
+	@Override
+	public void createWidget(MUIElement element,
+			MElementContainer<MUIElement> parent) {
+		if (!(element instanceof MToolBar)) {
+			return;
+		}
+
+		MToolBar toolbarModel = (MToolBar) element;
+		processContribution(toolbarModel);
+
+		AbstractLayout toolBarWidget;
+
+		if ((MElementContainer<?>) toolbarModel.getParent() instanceof MTrimBar) {
+			MTrimBar parentTrimBar = (MTrimBar) (MElementContainer<?>) toolbarModel
+					.getParent();
+			int orientation = parentTrimBar.getSide().getValue();
+
+			if (orientation == SideValue.TOP_VALUE
+					|| orientation == SideValue.BOTTOM_VALUE) {
+				toolBarWidget = new HorizontalLayout() {
+					@Override
+					public void addComponent(Component c) {
+						if (!c.getStyleName().contains("horizontalseparator"))
+							c.addStyleName("horizontaltoolbarlement");
+						super.addComponent(c);
+					}
+
+					@Override
+					public void addComponent(Component c, int index) {
+						if (!c.getStyleName().contains("horizontalseparator"))
+							c.addStyleName("horizontaltoolbarlement");
+						super.addComponent(c, index);
+					}
+				};
+				toolBarWidget.addStyleName("horizontaltoolbar");
+			} else {
+				toolBarWidget = new VerticalLayout() {
+					@Override
+					public void addComponent(Component c) {
+						if (!c.getStyleName().contains("verticalseparator"))
+							c.addStyleName("verticaltoolbarlement");
+						super.addComponent(c);
+					}
+
+					@Override
+					public void addComponent(Component c, int index) {
+						if (!c.getStyleName().contains("verticalseparator"))
+							c.addStyleName("verticaltoolbarlement");
+						super.addComponent(c, index);
+					}
+				};
+				toolBarWidget.addStyleName("verticaltoolbar");
+			}
+
+			Component separator = GuiUtils.createSeparator(toolbarModel);
+			if (separator != null)
+				toolBarWidget.addComponent(separator);
+		} else {
+			toolBarWidget = new HorizontalLayout();
+			Component separator = GuiUtils.createSeparator(toolbarModel);
+			if (separator != null)
+				toolBarWidget.addComponent(separator);
+		}
+		toolBarWidget.setSizeUndefined();
+		toolBarWidget.addStyleName("toolbar");
+
+		for (String css : toolbarModel.getTags()) {
+			toolBarWidget.addStyleName(css);
+		}
+
+		element.setWidget(toolBarWidget);
+	}
+
+	/**
+	 * @param element
+	 */
+	private void processContribution(MToolBar toolbarModel) {
+		final ArrayList<MToolBarContribution> toContribute = new ArrayList<MToolBarContribution>();
+		ContributionsAnalyzer.XXXgatherToolBarContributions(toolbarModel,
+				application.getToolBarContributions(),
+				toolbarModel.getElementId(), toContribute);
+		generateContributions(toolbarModel, toContribute);
+	}
+
+	/**
+	 * @param toolbarModel
+	 * @param toContribute
+	 */
+	private void generateContributions(MToolBar toolbarModel,
+			ArrayList<MToolBarContribution> toContribute) {
+
+		AbstractLayout manager = (AbstractLayout) toolbarModel.getWidget();
+		boolean done = toContribute.size() == 0;
+		while (!done) {
+			ArrayList<MToolBarContribution> curList = new ArrayList<MToolBarContribution>(
+					toContribute);
+			int retryCount = toContribute.size();
+			toContribute.clear();
+
+			for (final MToolBarContribution contribution : curList) {
+				if (!processAddition(toolbarModel, manager, contribution)) {
+					toContribute.add(contribution);
+				}
+			}
+			// We're done if the retryList is now empty (everything done) or
+			// if the list hasn't changed at all (no hope)
+			done = (toContribute.size() == 0)
+					|| (toContribute.size() == retryCount);
+		}
+	}
+
+	/**
+	 * @param toolbarModel
+	 * @param manager
+	 * @param contribution
+	 * @param existingSeparatorNames
+	 * @return <code>true</code> if the contribution was successfuly processed
+	 */
+	private boolean processAddition(final MToolBar toolbarModel,
+			final AbstractLayout manager, MToolBarContribution contribution) {
+		final ToolBarContributionRecord record = new ToolBarContributionRecord(
+				toolbarModel, contribution, this);
+		if (!record.mergeIntoModel()) {
+			return false;
+		}
+		if (record.anyVisibleWhen()) {
+			final IEclipseContext parentContext = modelService
+					.getContainingContext(toolbarModel);
+			parentContext.runAndTrack(new RunAndTrack() {
+				@Override
+				public boolean changed(IEclipseContext context) {
+					if (toolbarModel.getWidget() == null) {
+						return false;
+					}
+
+					record.updateVisibility(parentContext.getActiveLeaf());
+
+					return true;
+				}
+			});
+		}
+
+		return true;
+	}
+
+	@Override
+	public void processContents(final MElementContainer<MUIElement> container) {
+		MToolBar toolBar = (MToolBar) (MElementContainer<?>) container;
+		AbstractLayout toolBarWidget = (AbstractLayout) container.getWidget();
+		if (toolBarWidget != null) {
+			for (MUIElement element : container.getChildren()) {
+				if (element instanceof MHandledToolItem
+						|| element instanceof MDirectToolItem) {
+					toolBarWidget.addComponent((Component) element.getWidget());
+				} else if (element instanceof MToolBarSeparator) {
+					toolBarWidget.addComponent(GuiUtils
+							.createSeparator(toolBar));
+				}
+			}
+		}
+	}
+
+	@Override
+	public void addChildGui(MUIElement child,
+			MElementContainer<MUIElement> element) {
+		if (!(child instanceof MToolBarElement && (MElementContainer<?>) element instanceof MToolBar))
+			return;
+
+		MToolBar toolBar = (MToolBar) (MElementContainer<?>) element;
+
+		AbstractOrderedLayout toolbarWidget = (AbstractOrderedLayout) element
+				.getWidget();
+		Component childWidget = (Component) child.getWidget();
+		if (toolbarWidget == null || childWidget == null)
+			return;
+		int index = indexOf(child, element)/* + 1 */; // +1 becouse the first
+														// element is toolbar
+														// drag handler
+														// (separator)
+		if (element instanceof MToolBarSeparator) {
+			toolbarWidget
+					.addComponent(GuiUtils.createSeparator(toolBar), index);
+		} else {
+			toolbarWidget.addComponent(childWidget, index);
+		}
+
+		toolbarWidget.requestRepaint();
+	}
+
+	@Override
+	public void setVisible(MUIElement changedElement, boolean visible) {
+		((AbstractOrderedLayout) changedElement.getWidget())
+				.setVisible(visible);
+	}
+
+	@PostConstruct
+	public void postConstruct() {
+		eventBroker.subscribe(UIEvents.UILabel.TOPIC_ALL, itemUpdater);
+		eventBroker.subscribe(UIEvents.Menu.TOPIC_ENABLED, itemUpdater);
+		eventBroker.subscribe(UIEvents.ElementContainer.TOPIC_CHILDREN,
+				childrenMoveUpdater);
+	}
+
+	@PreDestroy
+	public void preDestroy() {
+		eventBroker.unsubscribe(itemUpdater);
+		eventBroker.unsubscribe(childrenMoveUpdater);
+	}
+
+	private EventHandler itemUpdater = new EventHandler() {
+		public void handleEvent(Event event) {
+			// Ensure that this event is for a MMenuItem
+			if (!(event.getProperty(UIEvents.EventTags.ELEMENT) instanceof MToolBar))
+				return;
+
+			MToolBar model = (MToolBar) event
+					.getProperty(UIEvents.EventTags.ELEMENT);
+			AbstractOrderedLayout ici = (AbstractOrderedLayout) model
+					.getWidget();
+			if (ici == null) {
+				return;
+			}
+
+			String attName = (String) event
+					.getProperty(UIEvents.EventTags.ATTNAME);
+			Object newValue = event.getProperty(UIEvents.EventTags.NEW_VALUE);
+			if (UIEvents.UILabel.ICONURI.equals(attName)) {
+				Resource icon = ResourceHelper
+						.createResource((String) newValue);
+				ici.setIcon(icon);
+			} else if (UIEvents.UILabel.TOOLTIP.equals(attName)) {
+				ici.setDescription((String) newValue);
+			} else if (UIEvents.Item.ENABLED.equals(attName)) {
+				ici.setEnabled((boolean) newValue);
+			}
+		}
+	};
+
+	private EventHandler childrenMoveUpdater = new EventHandler() {
+		@SuppressWarnings("unchecked")
+		public void handleEvent(Event event) {
+			// Ensure that this event is for a MMenuItem
+			if (!(event.getProperty(UIEvents.EventTags.ELEMENT) instanceof MToolBar))
+				return;
+
+			MElementContainer<MUIElement> toolbar = (MElementContainer<MUIElement>) event
+					.getProperty(UIEvents.EventTags.ELEMENT);
+
+			String type = (String) event.getProperty(UIEvents.EventTags.TYPE);
+
+			// on move, we unrender an render the UI again
+			//
+			if (UIEvents.EventTypes.MOVE.equals(type)) {
+				for (MUIElement item : toolbar.getChildren()) {
+					removeChildGui(item, toolbar);
+				}
+
+				for (MUIElement item : toolbar.getChildren()) {
+					addChildGui(item, toolbar);
+				}
+			}
+		}
+	};
+}
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/ToolControlRenderer.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/ToolControlRenderer.java
new file mode 100644
index 0000000..e08acf6
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/ToolControlRenderer.java
@@ -0,0 +1,86 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.presentation.renderers;
+
+import javax.inject.Inject;
+
+import org.eclipse.e4.core.contexts.EclipseContextFactory;
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.core.services.contributions.IContributionFactory;
+import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.model.application.ui.SideValue;
+import org.eclipse.e4.ui.model.application.ui.basic.MTrimBar;
+import org.eclipse.e4.ui.model.application.ui.menu.MToolControl;
+import org.eclipse.e4.ui.workbench.modeling.EModelService;
+import org.eclipse.osbp.vaaclipse.presentation.utils.GuiUtils;
+
+import com.vaadin.ui.Component;
+import com.vaadin.ui.ComponentContainer;
+import com.vaadin.ui.HorizontalLayout;
+import com.vaadin.ui.VerticalLayout;
+
+/**
+ * Create a contribute part.
+ */
+public class ToolControlRenderer extends VaadinRenderer {
+
+	@Inject
+	EModelService modelService;
+
+	public void createWidget(MUIElement element,
+			MElementContainer<MUIElement> parent) {
+		if (!(element instanceof MToolControl))
+			return;
+
+		MToolControl toolControl = (MToolControl) element;
+
+		ComponentContainer toolControlContainer;
+		if ((MElementContainer<?>) element.getParent() instanceof MTrimBar) {
+			MTrimBar trimBar = (MTrimBar) (MElementContainer<?>) element
+					.getParent();
+			if (trimBar.getSide() == SideValue.LEFT
+					|| trimBar.getSide() == SideValue.RIGHT)
+				toolControlContainer = new VerticalLayout();
+			else
+				toolControlContainer = new HorizontalLayout();
+			// add the drag handler (separator)
+			toolControlContainer.addComponent(GuiUtils
+					.createSeparator(toolControl));
+		} else
+			toolControlContainer = new VerticalLayout();
+
+		IEclipseContext parentContext = modelService
+				.getContainingContext(element);
+
+		// Create a context just to contain the parameters for injection
+		IContributionFactory contributionFactory = parentContext
+				.get(IContributionFactory.class);
+
+		IEclipseContext localContext = EclipseContextFactory.create();
+
+		localContext.set(Component.class, toolControlContainer);
+		localContext.set(ComponentContainer.class, toolControlContainer);
+		localContext.set(MToolControl.class, toolControl);
+
+		Object tcImpl = contributionFactory.create(
+				toolControl.getContributionURI(), parentContext, localContext);
+		toolControl.setObject(tcImpl);
+
+		for (String css : toolControl.getTags()) {
+			toolControlContainer.addStyleName(css);
+		}
+
+		toolControl.setWidget(toolControlContainer);
+	}
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/ToolItemRenderer.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/ToolItemRenderer.java
new file mode 100644
index 0000000..87658d5
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/ToolItemRenderer.java
@@ -0,0 +1,357 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.presentation.renderers;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.inject.Inject;
+
+import org.eclipse.e4.core.contexts.ContextInjectionFactory;
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.core.di.annotations.CanExecute;
+import org.eclipse.e4.core.services.contributions.IContributionFactory;
+import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.model.application.ui.advanced.MPerspective;
+import org.eclipse.e4.ui.model.application.ui.menu.ItemType;
+import org.eclipse.e4.ui.model.application.ui.menu.MDirectToolItem;
+import org.eclipse.e4.ui.model.application.ui.menu.MHandledItem;
+import org.eclipse.e4.ui.model.application.ui.menu.MHandledToolItem;
+import org.eclipse.e4.ui.model.application.ui.menu.MItem;
+import org.eclipse.e4.ui.model.application.ui.menu.MToolBarElement;
+import org.eclipse.e4.ui.model.application.ui.menu.MToolItem;
+import org.eclipse.e4.ui.services.internal.events.EventBroker;
+import org.eclipse.e4.ui.workbench.UIEvents;
+import org.eclipse.osbp.vaaclipse.presentation.utils.Commons;
+import org.eclipse.osbp.vaaclipse.publicapi.resources.ResourceHelper;
+import org.eclipse.osbp.vaaclipse.widgets.ToolbarButton;
+import org.eclipse.osbp.vaaclipse.widgets.ToolbarButton.Type;
+import org.eclipse.osbp.vaaclipse.widgets.ToolbarButtonBase;
+import org.eclipse.osbp.vaaclipse.widgets.TwoStateToolbarButton;
+import org.osgi.service.event.Event;
+import org.osgi.service.event.EventHandler;
+
+import com.vaadin.server.Resource;
+import com.vaadin.ui.Button;
+import com.vaadin.ui.Button.ClickEvent;
+import com.vaadin.ui.Button.ClickListener;
+
+@SuppressWarnings("restriction")
+public class ToolItemRenderer extends ItemRenderer {
+	@Inject
+	IContributionFactory contributionFactory;
+
+	@Inject
+	EventBroker eventBroker;
+
+	private static final String HCI_STATIC_CONTEXT = "HCI-staticContext";
+
+	private EventHandler itemUpdater = new EventHandler() {
+		public void handleEvent(Event event) {
+			// Ensure that this event is for a MMenuItem
+			if (!(event.getProperty(UIEvents.EventTags.ELEMENT) instanceof MToolBarElement))
+				return;
+
+			MToolBarElement itemModel = (MToolBarElement) event
+					.getProperty(UIEvents.EventTags.ELEMENT);
+
+			Button ici = (Button) itemModel.getWidget();
+			if (ici == null) {
+				return;
+			}
+
+			String attName = (String) event
+					.getProperty(UIEvents.EventTags.ATTNAME);
+			String newValue = (String) event
+					.getProperty(UIEvents.EventTags.NEW_VALUE);
+			if (UIEvents.UILabel.LABEL.equals(attName)) {
+				ici.setCaption(newValue);
+			} else if (UIEvents.UILabel.ICONURI.equals(attName)) {
+				Resource icon = ResourceHelper.createResource(newValue);
+				ici.setIcon(icon);
+			} else if (UIEvents.UILabel.TOOLTIP.equals(attName)) {
+				ici.setDescription(newValue);
+			}
+		}
+	};
+
+	private EventHandler toBeRenderedUpdater = new EventHandler() {
+		public void handleEvent(Event event) {
+			// Ensure that this event is for a MMenuItem
+			if (!(event.getProperty(UIEvents.EventTags.ELEMENT) instanceof MToolBarElement))
+				return;
+
+			MToolBarElement itemModel = (MToolBarElement) event
+					.getProperty(UIEvents.EventTags.ELEMENT);
+			String attName = (String) event
+					.getProperty(UIEvents.EventTags.ATTNAME);
+
+			if (UIEvents.UIElement.VISIBLE.equals(attName)) {
+				Button ici = (Button) itemModel.getWidget();
+
+				if (ici == null) {
+					return;
+				}
+				ici.setVisible(itemModel.isVisible());
+			}
+		}
+	};
+
+	private EventHandler selectionUpdater = new EventHandler() {
+		public void handleEvent(Event event) {
+			// Ensure that this event is for a MToolItem
+			if (!(event.getProperty(UIEvents.EventTags.ELEMENT) instanceof MToolBarElement))
+				return;
+
+			MToolBarElement itemModel = (MToolBarElement) event
+					.getProperty(UIEvents.EventTags.ELEMENT);
+			if (itemModel.getWidget() instanceof TwoStateToolbarButton) {
+				TwoStateToolbarButton button = (TwoStateToolbarButton) itemModel
+						.getWidget();
+				Boolean newValue = (Boolean) event
+						.getProperty(UIEvents.EventTags.NEW_VALUE);
+				button.setCheckedState(newValue);
+			}
+		}
+	};
+
+	private EventHandler enabledUpdater = new EventHandler() {
+		public void handleEvent(Event event) {
+			// Ensure that this event is for a MMenuItem
+			if (!(event.getProperty(UIEvents.EventTags.ELEMENT) instanceof MToolBarElement))
+				return;
+
+			MToolBarElement itemModel = (MToolBarElement) event
+					.getProperty(UIEvents.EventTags.ELEMENT);
+			Button ici = (Button) itemModel.getWidget();
+			Boolean newValue = (Boolean) event
+					.getProperty(UIEvents.EventTags.NEW_VALUE);
+			ici.setEnabled(newValue);
+		}
+	};
+
+	@PostConstruct
+	public void init() {
+		eventBroker.subscribe(UIEvents.UILabel.TOPIC_ALL, itemUpdater);
+		eventBroker.subscribe(UIEvents.Item.TOPIC_SELECTED, selectionUpdater);
+		eventBroker.subscribe(UIEvents.Item.TOPIC_ENABLED, enabledUpdater);
+		eventBroker
+				.subscribe(UIEvents.UIElement.TOPIC_ALL, toBeRenderedUpdater);
+		eventBroker.subscribe(UIEvents.UILabel.TOPIC_LOCALIZED_LABEL,
+				localizeLabel);
+		eventBroker.subscribe(UIEvents.UILabel.TOPIC_LOCALIZED_TOOLTIP,
+				localizeTooltip);
+		eventBroker.subscribe(UIEvents.UILabel.TOPIC_LABEL, localizeLabel);
+		eventBroker.subscribe(UIEvents.UILabel.TOPIC_TOOLTIP, localizeTooltip);
+	}
+
+	@PreDestroy
+	public void contextDisposed() {
+		eventBroker.unsubscribe(itemUpdater);
+		eventBroker.unsubscribe(selectionUpdater);
+		eventBroker.unsubscribe(enabledUpdater);
+		eventBroker.unsubscribe(toBeRenderedUpdater);
+		eventBroker.unsubscribe(localizeLabel);
+		eventBroker.unsubscribe(localizeTooltip);
+	}
+
+	@Override
+	public void createWidget(MUIElement element,
+			MElementContainer<MUIElement> parent) {
+		if (element instanceof MHandledToolItem
+				|| element instanceof MDirectToolItem) {
+			final MToolItem item = (MToolItem) element;
+
+			ToolbarButtonBase button;
+			if (item.getType() == ItemType.CHECK) {
+				button = new TwoStateToolbarButton();
+				((TwoStateToolbarButton) button).setCheckedState(item
+						.isSelected());
+			} else if (item.getType() == ItemType.RADIO) {
+				button = new TwoStateToolbarButton();
+				((TwoStateToolbarButton) button).setCheckedState(item
+						.isSelected());
+				((TwoStateToolbarButton) button)
+						.setSwitchStateByUserClickEnabled(false);
+			} else { // By default - ItemType.PUSH
+				ToolbarButton toolbarButton = new ToolbarButton();
+				button = toolbarButton;
+
+				if (item.getTags().contains("link")) {
+					toolbarButton.setType(Type.Link);
+				}
+			}
+
+			// label and icon
+			button.setLabelAndIcon(Commons.trim(item.getLabel()),
+					Commons.trim(item.getIconURI()));
+
+			// tooltip
+			if (item.getTooltip() != null)
+				button.setDescription(item.getLocalizedTooltip());
+
+			element.setWidget(button);
+
+			updateItemEnablement(item);
+			button.setEnabled(item.isEnabled());
+			registerEnablementUpdaters(item);
+		}
+	}
+
+	protected void updateItemEnablement(MItem item) {
+		if (!(item.getWidget() instanceof Button))
+			return;
+
+		Button widget = (Button) item.getWidget();
+		if (widget == null)
+			return;
+
+		item.setEnabled(canExecute(item));
+	}
+
+	public boolean canExecute(MItem item) {
+		if (item instanceof MHandledItem)
+			return canExecute((MHandledItem) item);
+		else if (item instanceof MDirectToolItem)
+			return canExecute((MDirectToolItem) item);
+		else
+			return false;
+	}
+
+	protected boolean canExecute(MDirectToolItem item) {
+		final IEclipseContext eclipseContext = getContext(item);
+		if (eclipseContext == null) // item is not in hierarchy
+			return false;
+
+		if (item.getObject() == null) {
+			item.setObject(contributionFactory.create(
+					item.getContributionURI(), getContext(item)));
+		}
+
+		eclipseContext.set(MItem.class, item);
+		setupContext(eclipseContext, item);
+
+		if (item.getObject() == null) {
+			return false;
+		} else {
+			return (Boolean) ContextInjectionFactory.invoke(item.getObject(),
+					CanExecute.class, eclipseContext, true);
+		}
+	}
+
+	@SuppressWarnings("serial")
+	@Override
+	public void hookControllerLogic(MUIElement me) {
+		if (me instanceof MDirectToolItem) {
+			final MDirectToolItem item = (MDirectToolItem) me;
+
+			final Button button = (Button) item.getWidget();
+			button.addClickListener(new ClickListener() {
+
+				@SuppressWarnings("unchecked")
+				@Override
+				public void buttonClick(ClickEvent event) {
+					if (item.getType() == ItemType.CHECK) {
+						item.setSelected(((TwoStateToolbarButton) button)
+								.getCheckedState());
+					} else if (item.getType() == ItemType.RADIO) {
+						MElementContainer<? extends MToolItem> parent = (MElementContainer<? extends MToolItem>) item
+								.getParent();
+						for (MToolItem toolItem : parent.getChildren()) {
+							if (toolItem.getType() == ItemType.RADIO) {
+								toolItem.setSelected(toolItem != item);
+							}
+						}
+					}
+
+					executeItem(item);
+				}
+			});
+		} else if (me instanceof MHandledToolItem) {
+			final MHandledItem item = (MHandledToolItem) me;
+
+			final Button button = (Button) item.getWidget();
+			button.addClickListener(new ClickListener() {
+
+				@SuppressWarnings("unchecked")
+				@Override
+				public void buttonClick(ClickEvent event) {
+					if (item.getType() == ItemType.CHECK) {
+						item.setSelected(((TwoStateToolbarButton) button)
+								.getCheckedState());
+					} else if (item.getType() == ItemType.RADIO) {
+						MElementContainer<? extends MToolItem> parent = (MElementContainer<? extends MToolItem>) item
+								.getParent();
+						for (MToolItem toolItem : parent.getChildren()) {
+							if (toolItem.getType() == ItemType.RADIO) {
+								toolItem.setSelected(toolItem != item);
+							}
+						}
+					}
+
+					executeItem(item);
+				}
+			});
+		}
+	}
+
+	@Override
+	protected void setupContext(IEclipseContext context, MItem item) {
+		super.setupContext(context, item);
+		context.set(MToolItem.class, (MToolItem) item);
+		if (item instanceof MDirectToolItem)
+			context.set(MDirectToolItem.class, (MDirectToolItem) item);
+		else if (item instanceof MHandledToolItem)
+			context.set(MHandledToolItem.class, (MHandledToolItem) item);
+	}
+
+	private EventHandler localizeLabel = new EventHandler() {
+		@Override
+		public void handleEvent(Event event) {
+			Object element = event.getProperty(UIEvents.EventTags.ELEMENT);
+
+			if (!(element instanceof MToolBarElement))
+				return;
+
+			MToolBarElement item = (MToolBarElement) element;
+			final ToolbarButton button = (ToolbarButton) item.getWidget();
+
+			String newValue = (String) event
+					.getProperty(UIEvents.EventTags.NEW_VALUE);
+
+			String label = Commons.trim(newValue);
+			if (button != null) {
+				button.setCaption(label);
+			}
+		}
+	};
+
+	private EventHandler localizeTooltip = new EventHandler() {
+		@Override
+		public void handleEvent(Event event) {
+			Object element = event.getProperty(UIEvents.EventTags.ELEMENT);
+
+			if (!(element instanceof MToolBarElement))
+				return;
+
+			MToolBarElement item = (MToolBarElement) element;
+			final ToolbarButton button = (ToolbarButton) item.getWidget();
+
+			String newValue = (String) event
+					.getProperty(UIEvents.EventTags.NEW_VALUE);
+
+			if (button != null) {
+				button.setDescription(newValue);
+			}
+		}
+	};
+}
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/TrimBarRenderer.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/TrimBarRenderer.java
new file mode 100644
index 0000000..8c39969
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/TrimBarRenderer.java
@@ -0,0 +1,320 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.presentation.renderers;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.inject.Inject;
+
+import org.eclipse.e4.core.commands.ExpressionContext;
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.core.contexts.RunAndTrack;
+import org.eclipse.e4.ui.internal.workbench.ContributionsAnalyzer;
+import org.eclipse.e4.ui.model.application.MApplication;
+import org.eclipse.e4.ui.model.application.ui.MCoreExpression;
+import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.model.application.ui.SideValue;
+import org.eclipse.e4.ui.model.application.ui.basic.MTrimBar;
+import org.eclipse.e4.ui.model.application.ui.basic.MTrimElement;
+import org.eclipse.e4.ui.model.application.ui.basic.MWindow;
+import org.eclipse.e4.ui.model.application.ui.menu.MToolBar;
+import org.eclipse.e4.ui.model.application.ui.menu.MTrimContribution;
+import org.eclipse.e4.ui.services.internal.events.EventBroker;
+import org.eclipse.e4.ui.workbench.modeling.EModelService;
+import org.eclipse.osbp.vaaclipse.api.VaadinExecutorService;
+import org.eclipse.osbp.vaaclipse.presentation.widgets.TrimmedWindowContent;
+
+import com.vaadin.server.Sizeable.Unit;
+import com.vaadin.ui.AbstractLayout;
+import com.vaadin.ui.AbstractOrderedLayout;
+import com.vaadin.ui.Component;
+import com.vaadin.ui.ComponentContainer;
+import com.vaadin.ui.CssLayout;
+import com.vaadin.ui.Panel;
+import com.vaadin.ui.VerticalLayout;
+
+@SuppressWarnings("restriction")
+public class TrimBarRenderer extends VaadinRenderer {
+
+	@Inject
+	MApplication app;
+
+	@Inject
+	EventBroker eventBroker;
+
+	@Inject
+	EModelService modelService;
+
+	@Inject
+	VaadinExecutorService execService;
+
+	private HashMap<MTrimBar, ArrayList<ArrayList<MTrimElement>>> pendingCleanup = new HashMap<MTrimBar, ArrayList<ArrayList<MTrimElement>>>();
+
+	@PostConstruct
+	public void subsrcribe() {
+
+	}
+
+	@PreDestroy
+	public void unsubscribe() {
+
+	}
+
+	@Override
+	public void createWidget(MUIElement element,
+			MElementContainer<MUIElement> parent) {
+		if (!(element instanceof MTrimBar)) {
+			return;
+		}
+
+		MTrimBar mTrimBar = (MTrimBar) element;
+		int orientation = mTrimBar.getSide().getValue();
+
+		AbstractLayout trimBar = null;
+
+		if (orientation == SideValue.BOTTOM_VALUE) {
+			trimBar = new CssLayout();
+			trimBar.addStyleName("horizontaltrimbar");
+		} else if (orientation == SideValue.TOP_VALUE) {
+			trimBar = new CssLayout();
+			trimBar.addStyleName("toptrimbar");
+		} else if (orientation == SideValue.LEFT_VALUE
+				|| orientation == SideValue.RIGHT_VALUE) {
+			trimBar = new VerticalLayout();
+			trimBar.addStyleName("verticaltrimbar");
+		}
+
+		trimBar.setSizeUndefined();
+
+		if (orientation == SideValue.BOTTOM_VALUE
+				|| orientation == SideValue.TOP_VALUE) {
+			trimBar.setWidth("100%");
+		}
+
+		element.setWidget(trimBar);
+	}
+
+	@Override
+	public void processContents(MElementContainer<MUIElement> container) {
+		final MTrimBar trimBar = (MTrimBar) ((MElementContainer<?>) container);
+		int orientation = trimBar.getSide().getValue();
+		AbstractLayout trimBarWidget = (AbstractLayout) container.getWidget();
+		if (orientation == SideValue.TOP_VALUE
+				|| orientation == SideValue.BOTTOM_VALUE)
+			trimBarWidget.setHeight(-1, Unit.PIXELS);
+		else
+			trimBarWidget.setWidth(-1, Unit.PIXELS);
+
+		boolean isFirst = true;
+		trimBarWidget.removeAllComponents();
+		for (MUIElement element : container.getChildren()) {
+			if (element.isToBeRendered()) {
+				ComponentContainer subToolbar = (ComponentContainer) element
+						.getWidget();
+				subToolbar.setVisible(element.isVisible());
+				if (subToolbar != null) {
+					if (orientation == SideValue.TOP_VALUE
+							|| orientation == SideValue.BOTTOM_VALUE)
+						subToolbar.addStyleName("horizontaltrimelement");
+					else
+						subToolbar.addStyleName("verticaltrimelement");
+
+					subToolbar.setSizeUndefined();
+
+					trimBarWidget.addComponent(subToolbar);
+					isFirst = false;
+				}
+			}
+		}
+
+		// ---
+		IEclipseContext ctx = getContext(container);
+		final ExpressionContext eContext = new ExpressionContext(ctx);
+
+		// visible when support for original trimbar elements (without
+		// contributed)
+		for (final MTrimElement child : trimBar.getChildren()) {
+			if (child.getVisibleWhen() != null) {
+				ctx.runAndTrack(new RunAndTrack() {
+					@Override
+					public boolean changed(IEclipseContext context) {
+
+						if (!trimBar.isToBeRendered() || !trimBar.isVisible()
+								|| trimBar.getWidget() == null) {
+							return false;
+						}
+
+						final boolean rc = ContributionsAnalyzer.isVisible(
+								(MCoreExpression) child.getVisibleWhen(),
+								eContext);
+						execService.invokeLater(new Runnable() {
+
+							@Override
+							public void run() {
+								child.setToBeRendered(rc);
+							}
+						});
+
+						return true;
+					}
+				});
+			}
+		}
+
+		// contributions
+		ArrayList<MTrimContribution> toContribute = new ArrayList<MTrimContribution>();
+		ContributionsAnalyzer.gatherTrimContributions(trimBar,
+				app.getTrimContributions(), trimBar.getElementId(),
+				toContribute, eContext);
+		addTrimContributions(trimBar, toContribute, ctx, eContext);
+
+		refreshVisibility(trimBar);
+	}
+
+	private void refreshVisibility(MTrimBar trimBar) {
+
+		AbstractLayout trimBarWidget = (AbstractLayout) trimBar.getWidget();
+		int orientation = trimBar.getSide().getValue();
+
+		trimBarWidget.setVisible(trimBarWidget.getComponentCount() != 0);
+
+		if (orientation == SideValue.TOP_VALUE) {
+			MWindow window = modelService.getTopLevelWindowFor(trimBar);
+			TrimmedWindowContent windowContent = (TrimmedWindowContent) ((Panel) window
+					.getWidget()).getContent();
+
+			Component topbar = windowContent.getTopbar();
+			if (topbar != null)
+				topbar.setVisible(trimBarWidget.getComponentCount() != 0);
+		}
+	}
+
+	private void addTrimContributions(final MTrimBar trimModel,
+			ArrayList<MTrimContribution> toContribute, IEclipseContext ctx,
+			final ExpressionContext eContext) {
+		HashSet<String> existingToolbarIds = new HashSet<String>();
+		for (MTrimElement item : trimModel.getChildren()) {
+			String id = item.getElementId();
+			if (item instanceof MToolBar && id != null) {
+				existingToolbarIds.add(id);
+			}
+		}
+
+		boolean done = toContribute.size() == 0;
+		while (!done) {
+			ArrayList<MTrimContribution> curList = new ArrayList<MTrimContribution>(
+					toContribute);
+			int retryCount = toContribute.size();
+			toContribute.clear();
+
+			for (final MTrimContribution contribution : curList) {
+				final ArrayList<MTrimElement> toRemove = new ArrayList<MTrimElement>();
+				if (!ContributionsAnalyzer.processAddition(trimModel,
+						contribution, toRemove, existingToolbarIds)) {
+					toContribute.add(contribution);
+				} else {
+					if (contribution.getVisibleWhen() != null) {
+						ctx.runAndTrack(new RunAndTrack() {
+							@Override
+							public boolean changed(IEclipseContext context) {
+								if (!trimModel.isToBeRendered()
+										|| !trimModel.isVisible()
+										|| trimModel.getWidget() == null) {
+									return false;
+								}
+								final boolean rc = ContributionsAnalyzer
+										.isVisible(contribution, eContext);
+
+								execService.invokeLater(new Runnable() {
+
+									@Override
+									public void run() {
+										for (MTrimElement child : toRemove) {
+											child.setToBeRendered(rc);
+										}
+									}
+								});
+
+								return true;
+							}
+						});
+					}
+					ArrayList<ArrayList<MTrimElement>> lists = pendingCleanup
+							.get(trimModel);
+					if (lists == null) {
+						lists = new ArrayList<ArrayList<MTrimElement>>();
+						pendingCleanup.put(trimModel, lists);
+					}
+					lists.add(toRemove);
+				}
+			}
+			// We're done if the retryList is now empty (everything done) or
+			// if the list hasn't changed at all (no hope)
+			done = (toContribute.size() == 0)
+					|| (toContribute.size() == retryCount);
+		}
+	}
+
+	@Override
+	public void addChildGui(MUIElement child,
+			MElementContainer<MUIElement> element) {
+		if (!(child instanceof MTrimElement && (MElementContainer<?>) element instanceof MTrimBar))
+			return;
+
+		MTrimBar trimBar = (MTrimBar) (MElementContainer<?>) element;
+
+		final Component childWidget = (Component) child.getWidget();
+		childWidget.setVisible(child.isVisible());
+		childWidget.setSizeUndefined();
+		int orientation = trimBar.getSide().getValue();
+		if (orientation == SideValue.TOP_VALUE
+				|| orientation == SideValue.BOTTOM_VALUE)
+			childWidget.addStyleName("horizontaltrimelement");
+		else
+			childWidget.addStyleName("verticaltrimelement");
+
+		int index = indexOf(child, element);
+		if (element.getWidget() instanceof CssLayout) {
+			CssLayout trimWidget = (CssLayout) element.getWidget();
+			trimWidget.addComponent(childWidget, index);
+			trimWidget.markAsDirty();
+		} else if (element.getWidget() instanceof AbstractOrderedLayout) {
+			AbstractOrderedLayout trimWidget = (AbstractOrderedLayout) element
+					.getWidget();
+			trimWidget.addComponent(childWidget, index);
+			trimWidget.markAsDirty();
+		}
+
+		refreshVisibility(trimBar);
+	}
+
+	@Override
+	public void removeChildGui(MUIElement child,
+			MElementContainer<MUIElement> element) {
+		if (!(child instanceof MTrimElement && (MElementContainer<?>) element instanceof MTrimBar))
+			return;
+
+		super.removeChildGui(child, element);
+
+		Component trimWidget = (Component) element.getWidget();
+
+		MTrimBar trimBar = (MTrimBar) (MElementContainer<?>) element;
+		refreshVisibility(trimBar);
+
+		trimWidget.markAsDirty();
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/VaadinRenderer.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/VaadinRenderer.java
new file mode 100644
index 0000000..d3a3944
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/VaadinRenderer.java
@@ -0,0 +1,204 @@
+/*******************************************************************************
+ * Copyright (c) 2011 Kai Toedter, Rushan R. Gilmullin and others.
+ * 
+ * All rights reserved. This program and the accompanying materials 
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ * 
+ * Contributors:
+ *     Kai Toedter - initial API and implementation
+ *     Rushan R. Gilmullin - adoption to vaaclipse and other changes
+ ******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.presentation.renderers;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.annotation.PostConstruct;
+
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.ui.model.application.ui.MContext;
+import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.workbench.modeling.EModelService;
+import org.eclipse.osbp.commons.general.Condition;
+
+import com.vaadin.ui.AbstractComponent;
+import com.vaadin.ui.Component;
+import com.vaadin.ui.ComponentContainer;
+
+@SuppressWarnings("restriction")
+public class VaadinRenderer implements GenericRenderer {
+
+	// public static final String OWNING_ME = "modelElement";
+
+	protected IEclipseContext context;
+	protected EModelService modelService;
+
+	@Override
+	public boolean isLazy() {
+		return false;
+	}
+
+	@PostConstruct
+	public void postConstruct(IEclipseContext context) {
+		this.context = context;
+		this.modelService = (EModelService) context.get(EModelService.class
+				.getName());
+	}
+
+	public void createWidget(MUIElement element,
+			MElementContainer<MUIElement> parent) {
+
+	}
+
+	public void disposeWidget(MUIElement element) {
+
+	}
+
+	public void processContents(MElementContainer<MUIElement> element) {
+
+	}
+
+	public void addChildGui(MUIElement child,
+			MElementContainer<MUIElement> element) {
+		throw new RuntimeException("addChildGui not implemented for renderer "
+				+ this);
+	}
+
+	public void removeChildGui(MUIElement element,
+			MElementContainer<MUIElement> parent) {
+		if (parent.getWidget() instanceof ComponentContainer
+				&& element.getWidget() != null) {
+			((ComponentContainer) parent.getWidget())
+					.removeComponent((Component) element.getWidget());
+		}
+	}
+
+	protected List<? extends MUIElement> filterRenderableAndVisibleElements(
+			MElementContainer<?> sash) {
+		List<MUIElement> renderableAndVisible = new ArrayList<MUIElement>();
+		for (MUIElement e : sash.getChildren()) {
+			if (e.isToBeRendered() && e.isVisible() && e.getWidget() != null /*
+																			 * element
+																			 * can
+																			 * be
+																			 * renderable
+																			 * but
+																			 * has
+																			 * no
+																			 * widget
+																			 * when
+																			 * removeGui
+																			 * called
+																			 * for
+																			 * element
+																			 */)
+				renderableAndVisible.add(e);
+		}
+		return renderableAndVisible;
+	}
+
+	protected MUIElement findFirstRenderableAndVisibleElement(
+			MElementContainer<?> container) {
+		for (MUIElement p : container.getChildren()) {
+			if (p.isToBeRendered() && p.isVisible()) {
+				return p;
+			}
+		}
+		return null;
+	}
+
+	protected MUIElement findNextRendarableAndVisible(MUIElement element,
+			MElementContainer<MUIElement> parent) {
+		MUIElement nextRenderableAndVisible = null;
+		for (int i = parent.getChildren().indexOf(element) + 1; i < parent
+				.getChildren().size(); i++) {
+			MUIElement child = parent.getChildren().get(i);
+			if (child.isToBeRendered() && child.isVisible()
+					&& child.getWidget() != null) {
+				nextRenderableAndVisible = child;
+				break;
+			}
+		}
+		return nextRenderableAndVisible;
+	}
+
+	protected int indexOf(MUIElement element,
+			MElementContainer<MUIElement> parent) {
+		return indexOf(element, parent, null);
+	}
+
+	protected int indexOf(MUIElement element,
+			MElementContainer<MUIElement> parent,
+			Condition<MUIElement> condition) {
+		int i = 0;
+		for (MUIElement child : parent.getChildren()) {
+			boolean additionalConditionRes = condition != null ? condition
+					.check(child) : true;
+			if (child.isToBeRendered() && additionalConditionRes) {
+				if (child.equals(element))
+					return i;
+				i++;
+			}
+		}
+		return -1;
+	}
+
+	public void hookControllerLogic(MUIElement element) {
+
+	}
+
+	// public IEclipseContext getContext(MUIElement element) {
+	// if (element instanceof MContext) {
+	// return ((MContext) element).getContext();
+	// }
+	// IEclipseContext parentContext = getContextForParent(element);
+	// if (parentContext == null)
+	// return null; //element is not attached
+	// return parentContext.createChild();
+	// }
+
+	/**
+	 * Return a context for this part.
+	 * 
+	 * @param part
+	 *            the part to start searching from
+	 * @return the closest context, or global context if none in the hierarchy
+	 */
+	public IEclipseContext getContext(MUIElement part) {
+		if (part instanceof MContext) {
+			return ((MContext) part).getContext();
+		}
+		return getContextForParent(part);
+	}
+
+	protected IEclipseContext getContextForParent(MUIElement element) {
+		return modelService.getContainingContext(element);
+	}
+
+	public void setVisible(MUIElement changedElement, boolean visible) {
+		((Component) changedElement.getWidget()).setVisible(visible);
+	}
+
+	public void unbindWidget(MUIElement element) {
+		if (element.getWidget() != null
+				&& element.getWidget() instanceof AbstractComponent) {
+			AbstractComponent component = (AbstractComponent) element
+					.getWidget();
+			component.setData(null);
+		}
+	}
+
+	@Override
+	public void bindWidget(MUIElement element) {
+		if (element.getWidget() != null
+				&& element.getWidget() instanceof AbstractComponent) {
+			AbstractComponent component = (AbstractComponent) element
+					.getWidget();
+			component.setData(element);
+		}
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/VaadinRendererFactory.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/VaadinRendererFactory.java
new file mode 100644
index 0000000..e739d67
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/VaadinRendererFactory.java
@@ -0,0 +1,160 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.presentation.renderers;
+
+import javax.inject.Inject;
+
+import org.eclipse.e4.core.contexts.ContextInjectionFactory;
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.model.application.ui.advanced.MArea;
+import org.eclipse.e4.ui.model.application.ui.advanced.MPerspective;
+import org.eclipse.e4.ui.model.application.ui.advanced.MPerspectiveStack;
+import org.eclipse.e4.ui.model.application.ui.advanced.MPlaceholder;
+import org.eclipse.e4.ui.model.application.ui.basic.MPart;
+import org.eclipse.e4.ui.model.application.ui.basic.MPartSashContainer;
+import org.eclipse.e4.ui.model.application.ui.basic.MPartStack;
+import org.eclipse.e4.ui.model.application.ui.basic.MTrimBar;
+import org.eclipse.e4.ui.model.application.ui.basic.MWindow;
+import org.eclipse.e4.ui.model.application.ui.menu.MMenu;
+import org.eclipse.e4.ui.model.application.ui.menu.MMenuItem;
+import org.eclipse.e4.ui.model.application.ui.menu.MMenuSeparator;
+import org.eclipse.e4.ui.model.application.ui.menu.MToolBar;
+import org.eclipse.e4.ui.model.application.ui.menu.MToolControl;
+import org.eclipse.e4.ui.model.application.ui.menu.MToolItem;
+import org.eclipse.osbp.vaaclipse.presentation.engine.GenericRendererFactory;
+
+@SuppressWarnings("restriction")
+public class VaadinRendererFactory extends GenericRendererFactory {
+
+	private WorkbenchWindowRenderer workbenchWindowRenderer;
+	private TrimBarRenderer trimRenderer;
+	private ToolControlRenderer toolControlRenderer;
+	private SashRenderer sashRenderer;
+	private StackRenderer partStackRenderer;
+	private PartRenderer partRenderer;
+	private ToolBarRenderer toolBarRenderer;
+	private ToolItemRenderer toolItemRenderer;
+	private MenuRenderer menuBarRenderer;
+	private MenuItemRenderer menuItemRenderer;
+	private MenuSeparatorRenderer menuSeparatorRenderer;
+	private PerspectiveStackRenderer perspectiveStackRenderer;
+	private PerspectiveRenderer perspectiveRenderer;
+	private PlaceholderRenderer placeholderRenderer;
+	private AreaRenderer areaRenderer;
+
+	private final IEclipseContext context;
+
+	@Inject
+	public VaadinRendererFactory(IEclipseContext context) {
+		this.context = context;
+	}
+
+	@Override
+	public GenericRenderer getRenderer(MUIElement uiElement) {
+		if (uiElement instanceof MWindow) {
+			if (workbenchWindowRenderer == null) {
+				workbenchWindowRenderer = ContextInjectionFactory.make(
+						WorkbenchWindowRenderer.class, context);
+			}
+			return workbenchWindowRenderer;
+		} else if (uiElement instanceof MTrimBar) {
+			if (trimRenderer == null) {
+				trimRenderer = ContextInjectionFactory.make(
+						TrimBarRenderer.class, context);
+			}
+			return trimRenderer;
+		} else if (uiElement instanceof MToolControl) {
+			if (toolControlRenderer == null) {
+				toolControlRenderer = ContextInjectionFactory.make(
+						ToolControlRenderer.class, context);
+			}
+			return toolControlRenderer;
+		} else if (uiElement instanceof MPartStack) {
+			if (partStackRenderer == null) {
+				partStackRenderer = ContextInjectionFactory.make(
+						StackRenderer.class, context);
+			}
+			return partStackRenderer;
+		} else if (uiElement instanceof MPart) {
+			if (partRenderer == null) {
+				partRenderer = ContextInjectionFactory.make(PartRenderer.class,
+						context);
+			}
+			return partRenderer;
+		} else if (uiElement instanceof MToolBar) {
+			if (toolBarRenderer == null) {
+				toolBarRenderer = ContextInjectionFactory.make(
+						ToolBarRenderer.class, context);
+			}
+			return toolBarRenderer;
+		} else if (uiElement instanceof MToolItem) {
+			if (toolItemRenderer == null) {
+				toolItemRenderer = ContextInjectionFactory.make(
+						ToolItemRenderer.class, context);
+			}
+			return toolItemRenderer;
+		} else if (uiElement instanceof MMenu) {
+			if (menuBarRenderer == null) {
+				menuBarRenderer = ContextInjectionFactory.make(
+						MenuRenderer.class, context);
+			}
+			return menuBarRenderer;
+		} else if (uiElement instanceof MMenuItem) {
+			if (menuItemRenderer == null) {
+				menuItemRenderer = ContextInjectionFactory.make(
+						MenuItemRenderer.class, context);
+			}
+			return menuItemRenderer;
+		} else if (uiElement instanceof MMenuSeparator) {
+			if (menuSeparatorRenderer == null) {
+				menuSeparatorRenderer = ContextInjectionFactory.make(
+						MenuSeparatorRenderer.class, context);
+			}
+			return menuSeparatorRenderer;
+		} else if (uiElement instanceof MPerspectiveStack) {
+			if (perspectiveStackRenderer == null) {
+				perspectiveStackRenderer = ContextInjectionFactory.make(
+						PerspectiveStackRenderer.class, context);
+			}
+			return perspectiveStackRenderer;
+		} else if (uiElement instanceof MPerspective) {
+			if (perspectiveRenderer == null) {
+				perspectiveRenderer = ContextInjectionFactory.make(
+						PerspectiveRenderer.class, context);
+			}
+			return perspectiveRenderer;
+		} else if (uiElement instanceof MPlaceholder) {
+			if (placeholderRenderer == null) {
+				placeholderRenderer = ContextInjectionFactory.make(
+						PlaceholderRenderer.class, context);
+			}
+			return placeholderRenderer;
+		} else if (uiElement instanceof MArea) // must be before
+												// MPartSashContainer becouse
+												// more special type
+		{
+			if (areaRenderer == null) {
+				areaRenderer = ContextInjectionFactory.make(AreaRenderer.class,
+						context);
+			}
+			return areaRenderer;
+		} else if (uiElement instanceof MPartSashContainer) {
+			if (sashRenderer == null) {
+				sashRenderer = ContextInjectionFactory.make(SashRenderer.class,
+						context);
+			}
+			return sashRenderer;
+		}
+		return super.getRenderer(uiElement);
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/WorkbenchWindowRenderer.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/WorkbenchWindowRenderer.java
new file mode 100644
index 0000000..705ff60
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/WorkbenchWindowRenderer.java
@@ -0,0 +1,417 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.presentation.renderers;
+
+import java.util.Collection;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.inject.Inject;
+
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.ui.internal.workbench.PartServiceSaveHandler;
+import org.eclipse.e4.ui.model.application.MApplication;
+import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.model.application.ui.advanced.MPerspectiveStack;
+import org.eclipse.e4.ui.model.application.ui.basic.MInputPart;
+import org.eclipse.e4.ui.model.application.ui.basic.MPart;
+import org.eclipse.e4.ui.model.application.ui.basic.MTrimBar;
+import org.eclipse.e4.ui.model.application.ui.basic.MTrimmedWindow;
+import org.eclipse.e4.ui.model.application.ui.basic.MWindow;
+import org.eclipse.e4.ui.model.application.ui.basic.MWindowElement;
+import org.eclipse.e4.ui.services.internal.events.EventBroker;
+import org.eclipse.e4.ui.workbench.IPresentationEngine;
+import org.eclipse.e4.ui.workbench.UIEvents;
+import org.eclipse.e4.ui.workbench.modeling.EPartService;
+import org.eclipse.e4.ui.workbench.modeling.ISaveHandler;
+import org.eclipse.e4.ui.workbench.modeling.ISaveHandler.Save;
+import org.eclipse.osbp.commons.general.Condition;
+import org.eclipse.osbp.vaaclipse.presentation.engine.PresentationEngine;
+import org.eclipse.osbp.vaaclipse.presentation.widgets.TrimmedWindowContent;
+import org.eclipse.osbp.vaaclipse.publicapi.editor.SavePromptSetup;
+import org.eclipse.osbp.vaaclipse.publicapi.model.Tags;
+import org.eclipse.osbp.vaadin.optiondialog.OptionDialog;
+import org.osgi.service.event.Event;
+import org.osgi.service.event.EventHandler;
+
+import com.vaadin.server.Sizeable.Unit;
+import com.vaadin.ui.Component;
+import com.vaadin.ui.HorizontalLayout;
+import com.vaadin.ui.MenuBar;
+import com.vaadin.ui.Panel;
+import com.vaadin.ui.UI;
+import com.vaadin.ui.Window;
+import com.vaadin.ui.Window.ResizeEvent;
+
+@SuppressWarnings("restriction")
+public class WorkbenchWindowRenderer extends VaadinRenderer {
+
+	@Inject
+	private IEclipseContext eclipseContext;
+
+	@Inject
+	MApplication app;
+
+	@Inject
+	UI vaadinUI;
+
+	@Inject
+	EventBroker eventBroker;
+
+	@Inject
+	EPartService partService;
+
+	// Save support
+	private MPart saveCandidate;
+	private Save s;
+
+	EventHandler trimHandler = new EventHandler() {
+
+		@Override
+		public void handleEvent(Event event) {
+			if (!(event.getProperty(UIEvents.EventTags.ELEMENT) instanceof MTrimmedWindow))
+				return;
+
+			MTrimmedWindow window = (MTrimmedWindow) event
+					.getProperty(UIEvents.EventTags.ELEMENT);
+			Panel _vWindow = (Panel) window.getWidget();
+			TrimmedWindowContent vWindow = (TrimmedWindowContent) _vWindow
+					.getContent();
+			PresentationEngine engine = (PresentationEngine) context
+					.get(IPresentationEngine.class.getName());
+			Object attType = event.getProperty(UIEvents.EventTags.TYPE);
+
+			Component c;
+			MTrimBar trimBar;
+			if (attType.equals("ADD")) {
+				trimBar = (MTrimBar) event
+						.getProperty(UIEvents.EventTags.NEW_VALUE);
+				c = trimBar.getWidget() == null ? (Component) engine
+						.createGui(trimBar) : (Component) trimBar.getWidget();
+			} else {
+				trimBar = (MTrimBar) event
+						.getProperty(UIEvents.EventTags.OLD_VALUE);
+				c = null;
+			}
+
+			switch (trimBar.getSide()) {
+			case BOTTOM:
+				vWindow.setBottomBar(c);
+				break;
+			case LEFT:
+				vWindow.setLeftBar(c);
+				break;
+			case RIGHT:
+				vWindow.setRightBar(c);
+				break;
+			case TOP:
+				vWindow.setTopBar(c);
+				break;
+			}
+		}
+	};
+
+	@PostConstruct
+	public void init() {
+		eventBroker.subscribe(UIEvents.TrimmedWindow.TOPIC_TRIMBARS,
+				trimHandler);
+	}
+
+	@PreDestroy
+	public void deinit() {
+		eventBroker.unsubscribe(trimHandler);
+	}
+
+	@Override
+	public void createWidget(MUIElement element,
+			MElementContainer<MUIElement> parent) {
+		if (element instanceof MWindow) {
+			final MWindow mWindow = (MWindow) element;
+			Component currentMainWindow = vaadinUI.getContent();
+			if (element.getTags().contains(Tags.MAIN_WINDOW)) {
+				Panel window = new Panel();
+
+				TrimmedWindowContent content = new TrimmedWindowContent();
+				window.setContent(content);
+				vaadinUI.getPage().setTitle(mWindow.getLocalizedLabel());
+				element.setWidget(window);
+				((MWindow) element).getContext().set(Panel.class, window);
+				((MWindow) element).getContext().set(MWindow.class, mWindow);
+				window.setSizeFull();
+				
+				// register the content as a rootLayoutClickNotifier for later
+				// use.
+				// this content allows to register layoutClickedListeners to be
+				// added.
+				app.getContext().set("rootLayoutClickNotifier", content);
+
+				vaadinUI.setContent(window);
+
+				app.setSelectedElement(mWindow);
+				mWindow.getContext().activate();
+
+			} else {// case child windows
+				if (currentMainWindow != null) {
+					Window window = new Window();
+					window.setContent(new TrimmedWindowContent());
+					window.setImmediate(true);
+					window.setPositionX(mWindow.getX());
+					window.setPositionY(mWindow.getY());
+					window.setWidth(mWindow.getWidth(), Unit.PIXELS);
+					window.setHeight(mWindow.getHeight(), Unit.PIXELS);
+					window.setCaption(mWindow.getLocalizedLabel());
+					element.setWidget(window);
+					((MWindow) element).getContext().set(Panel.class, window);
+					vaadinUI.addWindow(window);
+				} else {
+					throw new IllegalStateException(
+							"Can not add child window because application has not main window");
+				}
+			}
+
+			IEclipseContext localContext = getContext(element);
+			localContext.set(ISaveHandler.class, new PartServiceSaveHandler() {
+				public Save promptToSave(MPart dirtyPart) {
+					if (saveCandidate == null) {
+						saveCandidate = dirtyPart;
+
+						PartRenderer partRenderer = (PartRenderer) saveCandidate
+								.getRenderer();
+						SavePromptSetup setup = partRenderer
+								.getSavePromptSetup(saveCandidate);
+						String caption = setup.getCaption() != null ? setup
+								.getCaption() : "Save";
+						String msg = setup.getMessage() != null ? setup
+								.getMessage()
+								: String.format(
+										"%s has been modified. Save changes?",
+										saveCandidate instanceof MInputPart
+												&& ((MInputPart) saveCandidate)
+														.getInputURI() != null ? ((MInputPart) saveCandidate)
+												.getInputURI() : "Data");
+
+						OptionDialog.show(vaadinUI, caption, msg, new String[] {
+								"Yes", "No", "Cancel" }, 400, 140, Unit.PIXELS,
+								new OptionDialog.OptionListener() {
+
+									@Override
+									public void optionSelected(
+											OptionDialog dlg, int optionId) {
+										switch (optionId) {
+										case 0:
+											s = Save.YES;
+											break;
+										case 1:
+											s = Save.NO;
+											break;
+										case 2:
+											s = Save.CANCEL;
+											break;
+
+										default:
+											s = null;
+										}
+
+										if (partService.savePart(saveCandidate,
+												true)) {
+											partService.hidePart(saveCandidate);
+										}
+										saveCandidate = null;
+										dlg.close();
+									}
+								});
+
+						return Save.CANCEL;
+					} else {
+						return s;
+					}
+
+				}
+
+				public Save[] promptToSave(Collection<MPart> dirtyParts) {
+					// List<MPart> parts = new ArrayList<MPart>(dirtyParts);
+					//
+					// Save[] response = new Save[dirtyParts.size()];
+					// Object[] elements = promptForSave(parts);
+					// if (elements == null) {
+					// Arrays.fill(response, Save.CANCEL);
+					// } else {
+					// Arrays.fill(response, Save.NO);
+					// for (int i = 0; i < elements.length; i++) {
+					// response[parts.indexOf(elements[i])] = Save.YES;
+					// }
+					// }
+					// return response;
+
+					throw new RuntimeException(
+							"Multiple saving is not implemented yet");
+				}
+			});
+		}
+	}
+
+	@SuppressWarnings("serial")
+	@Override
+	public void hookControllerLogic(final MUIElement element) {
+		if (element instanceof MWindow) {
+			final MWindow mWindow = (MWindow) element;
+
+			if (!element.getTags().contains(Tags.MAIN_WINDOW)) {// only for
+																// child windows
+																// (main window
+																// not need
+																// that)
+				final Window window = (Window) mWindow.getWidget();
+
+				window.addResizeListener(new Window.ResizeListener() {
+					@Override
+					public void windowResized(ResizeEvent e) {
+						mWindow.setWidth((int) window.getWidth());
+						mWindow.setHeight((int) window.getHeight());
+					}
+				});
+
+				// TODO: there are no window move listener in vaadin, implement
+				// it later
+			}
+		}
+	}
+
+	@Override
+	public void processContents(MElementContainer<MUIElement> element) {
+		if ((MUIElement) element instanceof MWindow) {
+			MWindow window = (MWindow) ((MUIElement) element);
+			Panel _vWindow = (Panel) element.getWidget();
+			TrimmedWindowContent vWindow = (TrimmedWindowContent) _vWindow
+					.getContent();
+			PresentationEngine engine = (PresentationEngine) context
+					.get(IPresentationEngine.class.getName());
+
+			for (MUIElement e : element.getChildren()) {
+				if (e.isToBeRendered() && e.getWidget() != null) {
+					if (e instanceof MPerspectiveStack) {
+						PerspectiveStackRenderer perspectiveStackRenderer = (PerspectiveStackRenderer) e
+								.getRenderer();
+						if (perspectiveStackRenderer
+								.getPerspectiveStackForSwitcher() == e) {
+							final HorizontalLayout perspectiveStackPanel = perspectiveStackRenderer
+									.getPerspectiveSwitcher();
+							vWindow.setPerspectiveStackPanel(perspectiveStackPanel);
+						}
+					}
+
+					vWindow.getClientArea().addComponent(
+							(com.vaadin.ui.Component) e.getWidget());
+				}
+			}
+
+			if (window.getMainMenu() != null) {
+				engine.createGui(window.getMainMenu());
+				MenuBar menu = (MenuBar) window.getMainMenu().getWidget();
+				vWindow.setMenuBar(menu);
+			}
+
+			// -------------------------------------------------------------------
+			if (window instanceof MTrimmedWindow) {
+				MTrimmedWindow tWindow = (MTrimmedWindow) window;
+				for (MTrimBar trim : tWindow.getTrimBars()) {
+					Component c = (com.vaadin.ui.Component) engine
+							.createGui(trim);
+					switch (trim.getSide()) {
+					case BOTTOM:
+						vWindow.setBottomBar(c);
+						break;
+					case LEFT:
+						vWindow.setLeftBar(c);
+						break;
+					case RIGHT:
+						vWindow.setRightBar(c);
+						break;
+					case TOP:
+						vWindow.setTopBar(c);
+						break;
+					}
+				}
+			}
+		}
+	}
+
+	@Override
+	public void addChildGui(MUIElement child,
+			MElementContainer<MUIElement> element) {
+		if (!(child instanceof MWindowElement))
+			return;
+
+		Panel _vWindow = (Panel) element.getWidget();
+		TrimmedWindowContent vWindow = (TrimmedWindowContent) _vWindow
+				.getContent();
+
+		if (child instanceof MPerspectiveStack) {
+			PerspectiveStackRenderer perspectiveStackRenderer = (PerspectiveStackRenderer) child
+					.getRenderer();
+			if (perspectiveStackRenderer.getPerspectiveStackForSwitcher() == child) {
+				final HorizontalLayout perspectiveStackPanel = perspectiveStackRenderer
+						.getPerspectiveSwitcher();
+				vWindow.setPerspectiveStackPanel(perspectiveStackPanel);
+			}
+		} else {
+			int index = indexOf(child, element, new Condition<MUIElement>() {
+
+				@Override
+				public boolean check(MUIElement child) {
+					return !(child instanceof MPerspectiveStack);
+				}
+			});
+
+			vWindow.getClientArea().addComponent(
+					(com.vaadin.ui.Component) child.getWidget(), index);
+		}
+	}
+
+	@Override
+	public void removeChildGui(MUIElement child,
+			MElementContainer<MUIElement> element) {
+		if (!(child instanceof MWindowElement))
+			return;
+
+		Panel _vWindow = (Panel) element.getWidget();
+		TrimmedWindowContent vWindow = (TrimmedWindowContent) _vWindow
+				.getContent();
+
+		if (child instanceof MPerspectiveStack) {
+			vWindow.setPerspectiveStackPanel(null);
+		} else {
+			vWindow.getClientArea().removeComponent(
+					(com.vaadin.ui.Component) child.getWidget());
+		}
+	}
+
+	@Override
+	public void setVisible(MUIElement changedElement, boolean visible) {
+		if (changedElement instanceof MWindow
+				&& !(changedElement.getTags().contains(Tags.MAIN_WINDOW))) {
+			super.setVisible(changedElement, visible);
+		}
+	}
+
+	private Object[] promptForSave(Collection<MPart> saveableParts) {
+		// SaveablePartPromptDialog dialog = new SaveablePartPromptDialog(
+		// parentShell, saveableParts);
+		// if (dialog.open() == Window.CANCEL) {
+		// return null;
+		// }
+		//
+		// return dialog.getCheckedElements();
+		return null;
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/callback/PartItemExecutionService.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/callback/PartItemExecutionService.java
new file mode 100644
index 0000000..50e761e
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/callback/PartItemExecutionService.java
@@ -0,0 +1,41 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.presentation.renderers.callback;
+
+import org.eclipse.e4.ui.model.application.ui.menu.MItem;
+import org.eclipse.osbp.vaaclipse.presentation.renderers.ItemRenderer;
+import org.eclipse.osbp.vaaclipse.publicapi.commands.IPartItemExecutionService;
+
+public class PartItemExecutionService implements IPartItemExecutionService {
+
+	public PartItemExecutionService() {
+	}
+
+	@Override
+	public boolean canExecuteItem(MItem mItem) {
+		Object renderer = mItem.getRenderer();
+		if (renderer instanceof ItemRenderer) {
+			ItemRenderer itemRenderer = (ItemRenderer) renderer;
+			return itemRenderer.canExecute(mItem);
+		}
+		return true;
+	}
+
+	@Override
+	public void executeItem(MItem mItem) {
+		Object renderer = mItem.getRenderer();
+		if (renderer instanceof ItemRenderer) {
+			ItemRenderer itemRenderer = (ItemRenderer) renderer;
+			itemRenderer.executeItem(mItem);
+		}
+	}
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/utils/Commons.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/utils/Commons.java
new file mode 100644
index 0000000..458ef21
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/utils/Commons.java
@@ -0,0 +1,26 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.presentation.utils;
+
+/**
+ * @author rushan
+ *
+ */
+public class Commons {
+	public static String trim(String value) {
+		if (value != null) {
+			value = value.trim();
+			if (value.isEmpty())
+				value = null;
+		}
+		return value;
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/utils/GuiUtils.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/utils/GuiUtils.java
new file mode 100644
index 0000000..f72cc39
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/utils/GuiUtils.java
@@ -0,0 +1,49 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.presentation.utils;
+
+import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+import org.eclipse.e4.ui.model.application.ui.SideValue;
+import org.eclipse.e4.ui.model.application.ui.basic.MTrimBar;
+import org.eclipse.e4.ui.model.application.ui.basic.MTrimElement;
+
+import com.vaadin.ui.Component;
+import com.vaadin.ui.Label;
+
+/**
+ * @author rushan
+ *
+ */
+public class GuiUtils {
+	public static Component createSeparator(MTrimElement trimElement) {
+		if ((MElementContainer<?>) trimElement.getParent() instanceof MTrimBar) {
+			Label separator = new Label();
+			separator.setSizeUndefined();
+
+			MTrimBar parentTrimBar = (MTrimBar) (MElementContainer<?>) trimElement
+					.getParent();
+			int orientation = parentTrimBar.getSide().getValue();
+
+			if (orientation == SideValue.TOP_VALUE
+					|| orientation == SideValue.BOTTOM_VALUE) {
+				separator.addStyleName("horizontalseparator");
+				separator.setHeight("100%");
+			} else {
+				separator.addStyleName("verticalseparator");
+				separator.setWidth("100%");
+			}
+			return separator;
+		} else
+			return null;
+
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/utils/HierarchyUtils.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/utils/HierarchyUtils.java
new file mode 100644
index 0000000..d67a9b4
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/utils/HierarchyUtils.java
@@ -0,0 +1,56 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.presentation.utils;
+
+import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.model.application.ui.basic.MPartSashContainer;
+import org.eclipse.e4.ui.model.application.ui.basic.MPartStack;
+
+/**
+ * @author rushan
+ *
+ */
+public class HierarchyUtils {
+	/**
+	 * Recursively search in container the top right stack (the stack locatied
+	 * in top right corner), i.e. the stack with top right corner is mathced
+	 * with top right corner of container (area).
+	 * 
+	 * @param container
+	 *            - input container (area)
+	 * @return the top right part stack
+	 */
+	public static MPartStack findTopLeftFolder(MUIElement container) {
+		if (container instanceof MPartStack)
+			return (MPartStack) container;
+		else if (container instanceof MPartSashContainer) {
+			MPartSashContainer sash = (MPartSashContainer) container;
+
+			if (sash.getChildren().isEmpty())
+				return null;
+			else if (sash.getChildren().size() == 1)
+				return findTopLeftFolder((MElementContainer) sash.getChildren()
+						.get(0));
+			else if (sash.isHorizontal()
+					&& sash.getChildren().get(1) instanceof MElementContainer<?>)
+				return findTopLeftFolder((MElementContainer) sash.getChildren()
+						.get(1));
+			else if (!sash.isHorizontal()
+					&& sash.getChildren().get(0) instanceof MElementContainer<?>)
+				return findTopLeftFolder((MElementContainer) sash.getChildren()
+						.get(0));
+		}
+
+		return null;
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/widgetinfo/WidgetInfoImpl.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/widgetinfo/WidgetInfoImpl.java
new file mode 100644
index 0000000..646c4fc
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/widgetinfo/WidgetInfoImpl.java
@@ -0,0 +1,39 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.presentation.widgetinfo;
+
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.osbp.vaaclipse.api.WidgetInfo;
+
+import com.vaadin.ui.Component;
+
+/**
+ * @author rushan
+ *
+ */
+public class WidgetInfoImpl implements WidgetInfo {
+	@Execute
+	public void activate(IEclipseContext context) {
+		context.set(WidgetInfo.class, this);
+		System.out.println("widgetinfo started");
+	}
+
+	@Override
+	public Object getParent(Object widget) {
+		if (widget instanceof Component)
+			return ((Component) widget).getParent();
+		else
+			return null;
+	}
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/widgets/TrimmedWindowContent.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/widgets/TrimmedWindowContent.java
new file mode 100644
index 0000000..52361ab
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/widgets/TrimmedWindowContent.java
@@ -0,0 +1,172 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.presentation.widgets;
+
+import com.vaadin.ui.Component;
+import com.vaadin.ui.GridLayout;
+import com.vaadin.ui.HorizontalLayout;
+import com.vaadin.ui.MenuBar;
+import com.vaadin.ui.VerticalLayout;
+
+/**
+ * @author rushan
+ * 
+ */
+public class TrimmedWindowContent extends VerticalLayout {
+	private VerticalLayout windowBody;
+	private VerticalLayout windowCenterArea;
+	private HorizontalLayout helperLayout;
+	private GridLayout topContainerPanel;
+
+	private VerticalLayout leftBarContainer = new VerticalLayout();
+	private VerticalLayout rightBarContainer = new VerticalLayout();
+	private VerticalLayout topBarContainer = new VerticalLayout();
+	private HorizontalLayout bottomBarContainer = new HorizontalLayout();
+
+	private boolean boundsValide = false;
+
+	public TrimmedWindowContent() {
+		leftBarContainer.setWidth(-1, Unit.PIXELS);
+		leftBarContainer.setHeight("100%");
+
+		rightBarContainer.setWidth(-1, Unit.PIXELS);
+		rightBarContainer.setHeight("100%");
+
+		topBarContainer.setHeight(-1, Unit.PIXELS);
+		topBarContainer.setWidth("100%");
+		topBarContainer.setMargin(false);
+
+		// bottomBarContainer.setSizeFull();
+		bottomBarContainer.setHeight(-1, Unit.PIXELS);
+		bottomBarContainer.setWidth("100%");
+		bottomBarContainer.setMargin(false);
+
+		this.setSizeFull();
+
+		windowBody = new VerticalLayout();
+		windowBody.setSizeFull();
+		this.addComponent(windowBody);
+		this.setExpandRatio(windowBody, 100);
+
+		windowCenterArea = new VerticalLayout();
+		windowCenterArea.setSizeFull();
+
+		helperLayout = new HorizontalLayout();
+		helperLayout.setSizeFull();
+
+		// Top panel - it contains the top trimbar and the perspective stack
+		// panel
+		topContainerPanel = new GridLayout(2, 1);
+		topContainerPanel.setColumnExpandRatio(0, 100);
+		topContainerPanel.setColumnExpandRatio(1, 0);
+		topContainerPanel.setSizeUndefined();
+		topContainerPanel.setWidth("100%");
+
+		windowBody.addComponent(topContainerPanel);
+		// ------------------------
+		helperLayout.addComponent(leftBarContainer);
+		helperLayout.addComponent(windowCenterArea);
+		helperLayout.addComponent(rightBarContainer);
+		helperLayout.setExpandRatio(windowCenterArea, 100);
+
+		windowBody.addComponent(topBarContainer);
+		windowBody.addComponent(helperLayout);
+		windowBody.setExpandRatio(helperLayout, 100);
+		windowBody.addComponent(bottomBarContainer);
+		// -------------------------------------------------------------------
+	}
+
+	public VerticalLayout getClientArea() {
+		return windowCenterArea;
+	}
+
+	public void setMenuBar(MenuBar menuBar) {
+		for (int i = 0; i < this.getComponentCount(); i++) {
+			Component c = this.getComponent(i);
+			if (c instanceof MenuBar)
+				this.removeComponent(c);
+		}
+
+		menuBar.setWidth("100%");
+		this.addComponent(menuBar, 0);
+	}
+
+	public HorizontalLayout getPerspectiveStackPanel() {
+		return (HorizontalLayout) topContainerPanel.getComponent(0, 1);
+	}
+
+	public void setPerspectiveStackPanel(HorizontalLayout perspectiveStackPanel) {
+		if (perspectiveStackPanel == null) {
+			this.topContainerPanel.removeComponent(1, 0);
+		} else {
+			perspectiveStackPanel.setSizeUndefined();
+			this.topContainerPanel.addComponent(perspectiveStackPanel, 1, 0);
+		}
+	}
+
+	public void setLeftBar(Component bar) {
+		if (bar == null) {
+			leftBarContainer.removeAllComponents();
+			return;
+		}
+
+		leftBarContainer.removeAllComponents();
+		leftBarContainer.addComponent(bar);
+	}
+
+	public void setRightBar(Component bar) {
+		if (bar == null) {
+			rightBarContainer.removeAllComponents();
+			return;
+		}
+
+		rightBarContainer.removeAllComponents();
+		rightBarContainer.addComponent(bar);
+	}
+
+	public void setBottomBar(Component bar) {
+		if (bar == null) {
+			bottomBarContainer.removeAllComponents();
+			return;
+		}
+
+		bottomBarContainer.removeAllComponents();
+		bottomBarContainer.addComponent(bar);
+	}
+
+	public void setTopBar(Component bar) {
+		if (bar == null) {
+			this.topContainerPanel.removeComponent(0, 0);
+			return;
+		}
+
+		if (this.topContainerPanel.getComponent(0, 0) != null) {
+			this.topContainerPanel.removeComponent(0, 0);
+		}
+
+		this.topContainerPanel.addComponent(bar, 0, 0);
+	}
+
+	public Component getTopbar() {
+		return this.topContainerPanel.getComponent(0, 0);
+	}
+
+	// -----------------------------------
+	// -----------------------------------
+	public boolean isBoundsValid() {
+		return this.boundsValide;
+	}
+
+	public void invalidateBounds() {
+		this.boundsValide = false;
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/widgets/SashWidget.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/widgets/SashWidget.java
new file mode 100644
index 0000000..9aec488
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/widgets/SashWidget.java
@@ -0,0 +1,32 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+ package org.eclipse.osbp.vaaclipse.widgets;
+
+import java.util.EventObject;
+
+import com.vaadin.shared.communication.ServerRpc;
+import com.vaadin.shared.ui.splitpanel.AbstractSplitPanelState;
+
+/**
+ * @author rushan
+ *
+ */
+public interface SashWidget {
+	void addListener(SplitPositionChangedListener listener);
+
+	void fireEvent(EventObject event);
+
+	AbstractSplitPanelState getState();
+
+	<T extends ServerRpc> void registerRpc(T implementation,
+			Class<T> rpcInterfaceType);
+}
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/widgets/SashWidgetExtension.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/widgets/SashWidgetExtension.java
new file mode 100644
index 0000000..4372cf8
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/widgets/SashWidgetExtension.java
@@ -0,0 +1,63 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.widgets;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import com.vaadin.shared.MouseEventDetails;
+import com.vaadin.shared.ui.splitpanel.AbstractSplitPanelRpc;
+import com.vaadin.ui.AbstractSplitPanel;
+import com.vaadin.ui.AbstractSplitPanel.SplitterClickEvent;
+
+/**
+ * @author rushan
+ *
+ */
+public class SashWidgetExtension {
+	AbstractSplitPanel splitPanel;
+	SashWidget sash;
+	List<SplitPositionChangedListener> listeners = new ArrayList<SplitPositionChangedListener>();
+
+	public SashWidgetExtension(AbstractSplitPanel splitPanel) {
+		this.splitPanel = splitPanel;
+		this.sash = (SashWidget) splitPanel;
+		installRpc();
+	}
+
+	public void addListener(SplitPositionChangedListener listener) {
+		this.listeners.add(listener);
+	}
+
+	public void fireEvent(float newPos) {
+		for (SplitPositionChangedListener l : this.listeners) {
+			l.processEvent(splitPanel, newPos);
+		}
+	}
+
+	private void installRpc() {
+		sash.registerRpc(new AbstractSplitPanelRpc() {
+
+			@Override
+			public void splitterClick(MouseEventDetails mouseDetails) {
+				sash.fireEvent(new SplitterClickEvent(splitPanel, mouseDetails));
+			}
+
+			@Override
+			public void setSplitterPosition(float position) {
+				sash.getState().splitterState.position = position;
+				System.out.println("split position changed!");
+				fireEvent(splitPanel.getSplitPosition());
+			}
+
+		}, AbstractSplitPanelRpc.class);
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/widgets/SashWidgetHorizontal.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/widgets/SashWidgetHorizontal.java
new file mode 100644
index 0000000..d55eaff
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/widgets/SashWidgetHorizontal.java
@@ -0,0 +1,60 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.widgets;
+
+import java.util.EventObject;
+
+import com.vaadin.shared.communication.ServerRpc;
+import com.vaadin.shared.ui.splitpanel.HorizontalSplitPanelState;
+import com.vaadin.ui.HorizontalSplitPanel;
+
+/**
+ * @author rushan
+ * 
+ */
+public class SashWidgetHorizontal extends HorizontalSplitPanel implements
+		SashWidget {
+	private SashWidgetExtension extension = new SashWidgetExtension(this);
+
+	public void addListener(SplitPositionChangedListener listener) {
+		this.extension.addListener(listener);
+	}
+
+	public SashWidgetHorizontal() {
+		this.setImmediate(true);
+	}
+
+	@Override
+	public void fireEvent(EventObject event) {
+		super.fireEvent(event);
+	}
+
+	@Override
+	public HorizontalSplitPanelState getState() {
+		return super.getState();
+	}
+
+	@Override
+	public <T extends ServerRpc> void registerRpc(T implementation,
+			Class<T> rpcInterfaceType) {
+		super.registerRpc(implementation, rpcInterfaceType);
+	}
+
+	// @Override
+	// public void changeVariables(Object source, Map<String, Object> variables)
+	// {
+	// super.changeVariables(source, variables);
+	//
+	// extension.fireEvent(this.getSplitPosition());
+	//
+	// }
+}
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/widgets/SashWidgetVertical.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/widgets/SashWidgetVertical.java
new file mode 100644
index 0000000..2848d87
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/widgets/SashWidgetVertical.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.widgets;
+
+import java.util.EventObject;
+
+import com.vaadin.shared.communication.ServerRpc;
+import com.vaadin.shared.ui.splitpanel.VerticalSplitPanelState;
+import com.vaadin.ui.VerticalSplitPanel;
+
+/**
+ * @author rushan
+ * 
+ */
+public class SashWidgetVertical extends VerticalSplitPanel implements
+		SashWidget {
+	private SashWidgetExtension extension = new SashWidgetExtension(this);
+
+	public void addListener(SplitPositionChangedListener listener) {
+		this.extension.addListener(listener);
+	}
+
+	public SashWidgetVertical() {
+		this.setImmediate(true);
+	}
+
+	@Override
+	public void fireEvent(EventObject event) {
+		super.fireEvent(event);
+	}
+
+	@Override
+	public VerticalSplitPanelState getState() {
+		return super.getState();
+	}
+
+	@Override
+	public <T extends ServerRpc> void registerRpc(T implementation,
+			Class<T> rpcInterfaceType) {
+		super.registerRpc(implementation, rpcInterfaceType);
+	}
+
+	// @Override
+	// public void changeVariables(Object source, Map<String, Object> variables)
+	// {
+	// super.changeVariables(source, variables);
+	//
+	// extension.fireEvent(this.getSplitPosition());
+	// }
+}
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/widgets/SplitPositionChangedListener.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/widgets/SplitPositionChangedListener.java
new file mode 100644
index 0000000..7e5ddec
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/widgets/SplitPositionChangedListener.java
@@ -0,0 +1,21 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.widgets;
+
+import com.vaadin.ui.AbstractSplitPanel;
+
+/**
+ * @author rushan
+ *
+ */
+public interface SplitPositionChangedListener {
+	void processEvent(AbstractSplitPanel splitPanel, float newSplitPos);
+}
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/widgets/ToolbarButton.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/widgets/ToolbarButton.java
new file mode 100644
index 0000000..7285ae5
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/widgets/ToolbarButton.java
@@ -0,0 +1,44 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.widgets;
+
+/**
+ * @author rushan
+ *
+ */
+public class ToolbarButton extends ToolbarButtonBase {
+	public static enum Type {
+		Button, Link
+	}
+
+	private Type type;
+
+	public ToolbarButton() {
+		this("Blank", null);
+	}
+
+	public ToolbarButton(String label, String iconURI) {
+
+		super(label, iconURI);
+		setType(Type.Button);
+	}
+
+	public void setType(Type type) {
+		if (type == Type.Link) {
+			this.addStyleName("link");
+			this.addStyleName("general");
+		} else if (type == Type.Button) {
+			this.addStyleName("vaaclipsebutton");
+		}
+		this.type = type;
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/widgets/ToolbarButtonBase.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/widgets/ToolbarButtonBase.java
new file mode 100644
index 0000000..6fc942f
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/widgets/ToolbarButtonBase.java
@@ -0,0 +1,90 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.widgets;
+
+import org.eclipse.osbp.vaaclipse.publicapi.resources.ResourceHelper;
+
+import com.vaadin.server.Resource;
+import com.vaadin.ui.Button;
+import com.vaadin.ui.Component;
+
+/**
+ * @author rushan
+ *
+ */
+public class ToolbarButtonBase extends Button {
+	public ToolbarButtonBase() {
+		this("Blank", null);
+	}
+
+	public ToolbarButtonBase(String label, String iconURI) {
+		this.setSizeUndefined();
+
+		setLabelAndIcon(label, iconURI);
+
+		// hack
+		super.addClickListener(new ClickListener() {
+
+			public void buttonClick(ClickEvent event) {
+				// change focus
+				Component parent = event.getButton().getParent();
+				while (parent != null) {
+					if (parent instanceof Component.Focusable) {
+						((Component.Focusable) parent).focus();
+						break;
+					} else {
+						parent = parent.getParent();
+					}
+				}
+			}
+		});
+	}
+
+	public void setLabelAndIcon(String label, String iconURI) {
+
+		// clear
+		this.setCaption(null);
+		this.setIcon(null);
+		this.removeStyleName("icononly");
+		this.removeStyleName("textonly");
+
+		// setup icon and text
+		if (iconURI == null && label == null)
+			label = "Blank";
+
+		if (iconURI != null) {
+			Resource icon = ResourceHelper.createResource(iconURI);
+			this.setIcon(icon);
+		}
+
+		if (label != null) {
+			this.setCaption(label);
+		}
+
+		if (iconURI == null && label != null)
+			this.addStyleName("textonly");
+		else if (iconURI != null && label == null)
+			this.addStyleName("icononly");
+	}
+
+	public void setIconURI(String iconURI) {
+
+		// clear
+		this.setIcon(null);
+
+		// setup icon and text
+		if (iconURI != null) {
+			Resource icon = ResourceHelper.createResource(iconURI);
+			this.setIcon(icon);
+		}
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/widgets/TwoStateToolbarButton.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/widgets/TwoStateToolbarButton.java
new file mode 100644
index 0000000..371b11c
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/widgets/TwoStateToolbarButton.java
@@ -0,0 +1,110 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.widgets;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author rushan
+ *
+ */
+public class TwoStateToolbarButton extends ToolbarButtonBase {
+	private String primaryStyle;
+	private String selectedStyle;
+
+	private boolean switchOn = false;
+	private boolean switchStateByUserClickEnabled = true;
+	private List<ClickListener> userListeners = new ArrayList<ClickListener>();
+
+	public TwoStateToolbarButton() {
+		this("Blank", null);
+	}
+
+	public TwoStateToolbarButton(String label, String iconURI) {
+
+		super(label, iconURI);
+
+		setPrimaryStyle("vaaclipsebutton");
+		setSelectedStyle("pushed");
+
+		setCheckedState(false);
+
+		super.addClickListener(new ClickListener() {
+
+			public void buttonClick(ClickEvent event) {
+				if (switchStateByUserClickEnabled) {
+					setCheckedState(!switchOn);
+
+					for (ClickListener l : userListeners) {
+						l.buttonClick(event);
+					}
+				}
+			}
+		});
+	}
+
+	public boolean getCheckedState() {
+		return switchOn;
+	}
+
+	public void setCheckedState(boolean switchOn) {
+		if (switchOn) {
+			addStyleName(selectedStyle);
+		} else {
+			removeStyleName(selectedStyle);
+		}
+
+		this.switchOn = switchOn;
+	}
+
+	@Override
+	public void addListener(ClickListener listener) {
+		this.userListeners.add(listener);
+	}
+
+	public boolean isSwitchStateByUserClickEnabled() {
+		return switchStateByUserClickEnabled;
+	}
+
+	public void setSwitchStateByUserClickEnabled(
+			boolean switchStateByUserClickEnabled) {
+		this.switchStateByUserClickEnabled = switchStateByUserClickEnabled;
+	}
+
+	public String getPrimaryStyle() {
+		return primaryStyle;
+	}
+
+	public void setPrimaryStyle(String primaryStyle) {
+		removePrimaryStyle();
+		this.primaryStyle = primaryStyle;
+		this.addStyleName(this.primaryStyle);
+	}
+
+	public void removePrimaryStyle() {
+		if (this.primaryStyle != null)
+			this.removeStyleName(this.primaryStyle);
+	}
+
+	public String getSelectedStyle() {
+		return selectedStyle;
+	}
+
+	public void setSelectedStyle(String selectedStyle) {
+		if (this.switchOn)
+			this.removeStyleName(this.selectedStyle);
+		this.selectedStyle = selectedStyle;
+		if (this.switchOn)
+			this.addStyleName(this.selectedStyle);
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.publicapi/.project b/org.eclipse.osbp.vaaclipse.publicapi/.project
new file mode 100644
index 0000000..6e08d37
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.publicapi/.project
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.vaaclipse.publicapi</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.babel.editor.rbeBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>com.vaadin.integration.eclipse.addonStylesBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.babel.editor.rbeNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.vaaclipse.publicapi/META-INF/MANIFEST.MF b/org.eclipse.osbp.vaaclipse.publicapi/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..145c2c0
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.publicapi/META-INF/MANIFEST.MF
@@ -0,0 +1,27 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.vaaclipse.publicapi
+Bundle-SymbolicName: org.eclipse.osbp.vaaclipse.publicapi
+Bundle-Version: 0.9.0.qualifier
+Bundle-Vendor: Eclipse OSBP
+Bundle-RequiredExecutionEnvironment: JavaSE-1.7
+Export-Package: org.eclipse.osbp.vaaclipse.publicapi.app;version="0.9.0",
+ org.eclipse.osbp.vaaclipse.publicapi.authentication;version="0.9.0",
+ org.eclipse.osbp.vaaclipse.publicapi.change;version="0.9.0",
+ org.eclipse.osbp.vaaclipse.publicapi.commands;version="0.9.0",
+ org.eclipse.osbp.vaaclipse.publicapi.debug,
+ org.eclipse.osbp.vaaclipse.publicapi.editor;version="0.9.0",
+ org.eclipse.osbp.vaaclipse.publicapi.events;version="0.9.0",
+ org.eclipse.osbp.vaaclipse.publicapi.model;version="0.9.0",
+ org.eclipse.osbp.vaaclipse.publicapi.perspective;version="0.9.0",
+ org.eclipse.osbp.vaaclipse.publicapi.preferences;version="0.9.0",
+ org.eclipse.osbp.vaaclipse.publicapi.resources;version="0.9.0",
+ org.eclipse.osbp.vaaclipse.publicapi.theme;version="0.9.0"
+Require-Bundle: org.eclipse.emf.common;bundle-version="2.8.0",
+ com.vaadin.server;bundle-version="[7.5.7,7.7.0)",
+ com.vaadin.shared;bundle-version="[7.5.7,7.7.0)",
+ org.eclipse.e4.core.contexts;bundle-version="1.1.0",
+ org.eclipse.e4.ui.model.workbench;bundle-version="1.1.0",
+ org.eclipse.emf.ecore
+Import-Package: org.eclipse.osbp.ui.api.metadata;version="0.9.0",
+ org.osgi.service.prefs
diff --git a/org.eclipse.osbp.vaaclipse.publicapi/about.html b/org.eclipse.osbp.vaaclipse.publicapi/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.publicapi/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 1, 2016</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.publicapi/about.ini b/org.eclipse.osbp.vaaclipse.publicapi/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.publicapi/about.ini
@@ -0,0 +1,17 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%featureText
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=
+
+# Property "appName" contains name of the application (translated)
+appName=%featureName
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+welcomePage=
diff --git a/org.eclipse.osbp.vaaclipse.publicapi/about.mappings b/org.eclipse.osbp.vaaclipse.publicapi/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.publicapi/about.mappings
@@ -0,0 +1,6 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+0=qualifier
diff --git a/org.eclipse.osbp.vaaclipse.publicapi/about.properties b/org.eclipse.osbp.vaaclipse.publicapi/about.properties
new file mode 100644
index 0000000..6a61dfd
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.publicapi/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2012, 2016 - Loetz GmbH&Co.KG (Heidelberg)
+# 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:
+#    Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.vaaclipse.publicapi
+
+################ blurb property ####################################
+featureText=\
+Copyright (c) 2012-2016 - Loetz GmbH&Co.KG \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+Contributors:\n\
+    Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.vaaclipse.publicapi/build.properties b/org.eclipse.osbp.vaaclipse.publicapi/build.properties
new file mode 100644
index 0000000..a138bbd
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.publicapi/build.properties
@@ -0,0 +1,8 @@
+source.. = src/
+output.. = target/classes/
+bin.includes = about.properties,  about.mappings,  about.ini,  about.html,  META-INF/,\
+               .,\
+               epl-v10.html,\
+               license.html
+src.includes = about.properties,  about.mappings,  about.ini,  about.html,  epl-v10.html,\
+               license.html
diff --git a/org.eclipse.osbp.vaaclipse.publicapi/epl-v10.html b/org.eclipse.osbp.vaaclipse.publicapi/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.publicapi/epl-v10.html
@@ -0,0 +1,259 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+  body {
+    size: 8.5in 11.0in;
+    margin: 0.25in 0.5in 0.25in 0.5in;
+    tab-interval: 0.5in;
+    }
+  p {  	
+    margin-left: auto;
+    margin-top:  0.5em;
+    margin-bottom: 0.5em;
+    }
+  p.list {
+  	margin-left: 0.5in;
+    margin-top:  0.05em;
+    margin-bottom: 0.05em;
+    }
+  </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">where such changes and/or additions to the Program
+originate from and are distributed by that particular Contributor. A
+Contribution 'originates' from a Contributor if it was added to the
+Program by such Contributor itself or anyone acting on such
+Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii)
+are not derivative works of the Program.</p>
+
+<p>"Contributor" means any person or entity that distributes
+the Program.</p>
+
+<p>"Licensed Patents" mean patent claims licensable by a
+Contributor which are necessarily infringed by the use or sale of its
+Contribution alone or when combined with the Program.</p>
+
+<p>"Program" means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>"Recipient" means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works
+of, publicly display, publicly perform, distribute and sublicense the
+Contribution of such Contributor, if any, and such derivative works, in
+source code and object code form.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell,
+offer to sell, import and otherwise transfer the Contribution of such
+Contributor, if any, in source code and object code form. This patent
+license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor,
+such addition of the Contribution causes such combination to be covered
+by the Licensed Patents. The patent license shall not apply to any other
+combinations which include the Contribution. No hardware per se is
+licensed hereunder.</p>
+
+<p class="list">c) Recipient understands that although each Contributor
+grants the licenses to its Contributions set forth herein, no assurances
+are provided by any Contributor that the Program does not infringe the
+patent or other intellectual property rights of any other entity. Each
+Contributor disclaims any liability to Recipient for claims brought by
+any other entity based on infringement of intellectual property rights
+or otherwise. As a condition to exercising the rights and licenses
+granted hereunder, each Recipient hereby assumes sole responsibility to
+secure any other intellectual property rights needed, if any. For
+example, if a third party patent license is required to allow Recipient
+to distribute the Program, it is Recipient's responsibility to acquire
+that license before distributing the Program.</p>
+
+<p class="list">d) Each Contributor represents that to its knowledge it
+has sufficient copyright rights in its Contribution, if any, to grant
+the copyright license set forth in this Agreement.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">i) effectively disclaims on behalf of all Contributors
+all warranties and conditions, express and implied, including warranties
+or conditions of title and non-infringement, and implied warranties or
+conditions of merchantability and fitness for a particular purpose;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">iv) states that source code for the Program is available
+from such Contributor, and informs licensees how to obtain it in a
+reasonable manner on or through a medium customarily used for software
+exchange.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>Commercial distributors of software may accept certain
+responsibilities with respect to end users, business partners and the
+like. While this license is intended to facilitate the commercial use of
+the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create
+potential liability for other Contributors. Therefore, if a Contributor
+includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and
+indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses")
+arising from claims, lawsuits and other legal actions brought by a third
+party against the Indemnified Contributor to the extent caused by the
+acts or omissions of such Commercial Contributor in connection with its
+distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In
+order to qualify, an Indemnified Contributor must: a) promptly notify
+the Commercial Contributor in writing of such claim, and b) allow the
+Commercial Contributor to control, and cooperate with the Commercial
+Contributor in, the defense and any related settlement negotiations. The
+Indemnified Contributor may participate in any such claim at its own
+expense.</p>
+
+<p>For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor's responsibility
+alone. Under this section, the Commercial Contributor would have to
+defend claims against the other Contributors related to those
+performance claims and warranties, and if a court requires any other
+Contributor to pay any damages as a result, the Commercial Contributor
+must pay those damages.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
+OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
+ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to
+the risks and costs of program errors, compliance with applicable laws,
+damage to or loss of data, programs or equipment, and unavailability or
+interruption of operations.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
+NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of
+the remainder of the terms of this Agreement, and without further action
+by the parties hereto, such provision shall be reformed to the minimum
+extent necessary to make such provision valid and enforceable.</p>
+
+<p>If Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that the
+Program itself (excluding combinations of the Program with other
+software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the
+date such litigation is filed.</p>
+
+<p>All Recipient's rights under this Agreement shall terminate if it
+fails to comply with any of the material terms or conditions of this
+Agreement and does not cure such failure in a reasonable period of time
+after becoming aware of such noncompliance. If all Recipient's rights
+under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive.</p>
+
+<p>Everyone is permitted to copy and distribute copies of this
+Agreement, but in order to avoid inconsistency the Agreement is
+copyrighted and may only be modified in the following manner. The
+Agreement Steward reserves the right to publish new versions (including
+revisions) of this Agreement from time to time. No one other than the
+Agreement Steward has the right to modify this Agreement. The Eclipse
+Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a
+suitable separate entity. Each new version of the Agreement will be
+given a distinguishing version number. The Program (including
+Contributions) may always be distributed subject to the version of the
+Agreement under which it was received. In addition, after a new version
+of the Agreement is published, Contributor may elect to distribute the
+Program (including its Contributions) under the new version. Except as
+expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
+rights or licenses to the intellectual property of any Contributor under
+this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this
+Agreement are reserved.</p>
+
+<p>This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No party
+to this Agreement will bring a legal action under this Agreement more
+than one year after the cause of action arose. Each party waives its
+rights to a jury trial in any resulting litigation.</p>
+
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.publicapi/license.html b/org.eclipse.osbp.vaaclipse.publicapi/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.publicapi/license.html
@@ -0,0 +1,164 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!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>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>February 1, 2011</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+   (COLLECTIVELY "CONTENT").  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse
+ Foundation is provided to you under the terms and conditions of the 
+Eclipse Public License Version 1.0
+   ("EPL").  A copy of the EPL is provided with this Content and is also
+ 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, "Program" will mean the Content.</p>
+
+<p>Content includes, but is not limited to, source code, object code, 
+documentation and other files maintained in the Eclipse Foundation 
+source code
+   repository ("Repository") in software modules ("Modules") and made 
+available as downloadable archives ("Downloads").</p>
+
+<ul>
+       <li>Content may be structured and packaged into modules to 
+facilitate delivering, extending, and upgrading the Content.  Typical 
+modules may include plug-ins ("Plug-ins"), plug-in fragments 
+("Fragments"), and features ("Features").</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&#8482; ARchive) in a directory named "plugins".</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or 
+Fragments and associated material.  Each Feature may be packaged as a 
+sub-directory in a directory named "features".  Within a Feature, files 
+named "feature.xml" may contain a list of the names and version numbers 
+of the Plug-ins
+      and/or Fragments associated with that Feature.</li>
+       <li>Features may also include other Features ("Included 
+Features"). Within a Feature, files named "feature.xml" may contain a 
+list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be 
+contained in files named "about.html" ("Abouts"). The terms and 
+conditions governing Features and
+Included Features should be contained in files named "license.html" 
+("Feature Licenses").  Abouts and Feature Licenses may be located in any
+ directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named "src" of certain Plug-ins</li>
+       <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is 
+installed using the Provisioning Technology (as defined below), you must
+ agree to a license ("Feature Update License") during the
+installation process.  If the Feature contains Included Features, the 
+Feature Update License should either provide you with the terms and 
+conditions governing the Included Features or
+inform you where you can locate them.  Feature Update Licenses may be 
+found in the "license" property of files named "feature.properties" 
+found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the 
+terms and conditions (or references to such terms and conditions) that 
+govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER 
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.
+  SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND 
+CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, 
+or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions 
+govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, 
+examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager ("Provisioning Technology") for the purpose of 
+allowing users to install software, documentation, information and/or
+   other materials (collectively "Installable Software"). This 
+capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about 
+packaging Installable Software is available at <a href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   ("Specification").</p>
+
+<p>You may use Provisioning Technology to allow other parties to install
+ Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to
+ be presented to, and accepted by, the users of the Provisioning 
+Technology
+   in accordance with the Specification. By using Provisioning 
+Technology in such a manner and making it available in accordance with 
+the
+   Specification, you further acknowledge your agreement to, and the 
+acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur ("Provisioning Process") in 
+which a user may execute the Provisioning Technology
+       on a machine ("Target Machine") with the intent of installing, 
+extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology 
+may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user 
+the terms and conditions that govern the use of the Installable
+       Software ("Installable Software Agreement") and such Installable 
+Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable 
+Software Agreement must inform the user of the terms and conditions that
+ govern
+       the Installable Software and must solicit acceptance by the end 
+user in the manner prescribed in such Installable Software Agreement. 
+Upon such
+       indication of agreement by the user, the provisioning Technology 
+will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are
+ currently may have restrictions on the import, possession, and use, 
+and/or re-export to
+   another country, of encryption software. BEFORE using any encryption 
+software, please check the country's laws, regulations and policies 
+concerning the import,
+   possession, or use, and re-export of encryption software, to see if 
+this is permitted.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.publicapi/pom.xml b/org.eclipse.osbp.vaaclipse.publicapi/pom.xml
new file mode 100644
index 0000000..c8dbe12
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.publicapi/pom.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <artifactId>org.eclipse.osbp.vaaclipse.publicapi</artifactId>
+    <packaging>eclipse-plugin</packaging>
+    <parent>
+        <groupId>org.eclipse.osbp.vaaclipse</groupId>
+        <artifactId>org.eclipse.osbp.vaaclipse</artifactId>
+        <version>0.9.0-SNAPSHOT</version>
+        <relativePath>..</relativePath>
+    </parent>
+</project>
diff --git a/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/app/ThreadLocals.java b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/app/ThreadLocals.java
new file mode 100644
index 0000000..e0b96a1
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/app/ThreadLocals.java
@@ -0,0 +1,30 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osbp.vaaclipse.publicapi.app;
+
+import org.eclipse.e4.core.contexts.IEclipseContext;
+
+/**
+ * @author rushan
+ *
+ */
+public class ThreadLocals {
+	private static final ThreadLocal<IEclipseContext> eclipseContext = new ThreadLocal<IEclipseContext>();
+
+	public static IEclipseContext getRootContext() {
+		return eclipseContext.get();
+	}
+
+	public static void setRootContext(IEclipseContext context) {
+		eclipseContext.set(context);
+	}
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/authentication/AuthenticationConstants.java b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/authentication/AuthenticationConstants.java
new file mode 100644
index 0000000..5440880
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/authentication/AuthenticationConstants.java
@@ -0,0 +1,45 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.publicapi.authentication;
+
+/**
+ * @author rushan
+ *
+ */
+public class AuthenticationConstants {
+
+	/**
+	 * For e4 context. User id as string.
+	 */
+	public static final String USER_ID = "userId";
+
+	/**
+	 * For e4 context. Needs to implement IUser.
+	 */
+	public static final String USER = "user";
+
+	public static class Events {
+
+		public static class Authentication {
+			public static final String name = "vaaclipseAuthentication";
+			public static final String registration = "vaaclipseRegistration";
+			public static final String userClass = "userClass";
+			/**
+			 * Is sent before the logout of the current session.
+			 */
+			public static final String PRE_LOGOUT = "session/prelogout";
+			/**
+			 * Logs out the current session.
+			 */
+			public static final String LOGOUT = "session/logout";
+		}
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/change/ChangeCommand.java b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/change/ChangeCommand.java
new file mode 100644
index 0000000..61eebd7
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/change/ChangeCommand.java
@@ -0,0 +1,64 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.publicapi.change;
+
+import org.eclipse.emf.common.command.AbstractCommand;
+import org.eclipse.emf.ecore.resource.Resource;
+
+/**
+ * Uses the {@link ChangeCommand} to record notifications.
+ */
+public abstract class ChangeCommand extends AbstractCommand {
+
+	private Resource resource;
+	private ChangedRecorder recorder;
+
+	public ChangeCommand(String name, Resource resource) {
+		super(name);
+		this.resource = resource;
+	}
+
+	@Override
+	public void execute() {
+		recorder.start();
+
+		doExecute();
+
+		recorder.stop();
+	}
+	
+	/**
+	 * Execute your operations.
+	 */
+	protected abstract void doExecute();
+
+	@Override
+	public void redo() {
+		recorder.redo();
+	}
+
+	@Override
+	protected boolean prepare() {
+		recorder = new ChangedRecorder(resource);
+		return true;
+	}
+
+	@Override
+	public void undo() {
+		recorder.undo();
+	}
+
+	@Override
+	public boolean canUndo() {
+		return super.canUndo();
+	}
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/change/ChangedRecorder.java b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/change/ChangedRecorder.java
new file mode 100644
index 0000000..b8849e1
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/change/ChangedRecorder.java
@@ -0,0 +1,173 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.publicapi.change;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.util.EContentAdapter;
+
+/**
+ * Implementation of {@link EContentAdapter} that records all notifications. And
+ * implements logic to {@link #undo()} and {@link #redo()} the changes.
+ */
+public class ChangedRecorder extends EContentAdapter {
+
+	private final Notifier notifier;
+
+	private List<Notification> notifications = new ArrayList<Notification>();
+
+	public ChangedRecorder(Notifier notifier) {
+		super();
+		this.notifier = notifier;
+	}
+
+	/**
+	 * Starts the recording.
+	 */
+	public void start() {
+		setTarget(notifier);
+	}
+
+	/**
+	 * Stops the recording.
+	 */
+	public void stop() {
+		unsetTarget(notifier);
+	}
+
+	/**
+	 * Returns all notifications recorded.
+	 * 
+	 * @return
+	 */
+	public List<Notification> getNotifications() {
+		return notifications;
+	}
+
+	@Override
+	public void notifyChanged(Notification notification) {
+		super.notifyChanged(notification);
+
+		if (notification.isTouch()) {
+			return;
+		}
+
+		if (notification.getEventType() == Notification.REMOVING_ADAPTER) {
+			return;
+		}
+
+		if (notification.getEventType() == Notification.RESOLVE) {
+			return;
+		}
+
+		notifications.add(notification);
+	}
+
+	/**
+	 * Undos all notifications.
+	 */
+	public void undo() {
+		for (int i = notifications.size() - 1; i >= 0; i--) {
+			Notification change = notifications.get(i);
+			undo(change);
+		}
+	}
+
+	/**
+	 * Redos all notifications.
+	 */
+	public void redo() {
+		for (int i = 0; i < notifications.size(); i++) {
+			Notification change = notifications.get(i);
+			redo(change);
+		}
+	}
+
+	@SuppressWarnings("unchecked")
+	protected void undo(Notification change) {
+		EObject notifier = (EObject) change.getNotifier();
+		switch (change.getEventType()) {
+		case Notification.ADD: {
+			List<Object> list = (List<Object>) notifier
+					.eGet((EStructuralFeature) change.getFeature());
+			list.remove(change.getNewValue());
+		}
+			break;
+		case Notification.ADD_MANY:
+			throw new IllegalStateException("Implement me");
+		case Notification.MOVE:
+			throw new IllegalStateException("Implement me");
+		case Notification.REMOVE: {
+			List<Object> list = (List<Object>) notifier
+					.eGet((EStructuralFeature) change.getFeature());
+			if (change.getPosition() > 0) {
+				list.add(change.getPosition(), change.getOldValue());
+			} else {
+				list.add(change.getOldValue());
+			}
+		}
+			break;
+		case Notification.REMOVE_MANY:
+			throw new IllegalStateException("Implement me");
+		case Notification.SET: {
+			Object value = change.getOldValue();
+			notifier.eSet((EStructuralFeature) change.getFeature(), value);
+		}
+			break;
+		case Notification.UNSET: {
+			Object value = change.getOldValue();
+			notifier.eSet((EStructuralFeature) change.getFeature(), value);
+		}
+			break;
+		}
+	}
+
+	@SuppressWarnings("unchecked")
+	protected void redo(Notification change) {
+		EObject notifier = (EObject) change.getNotifier();
+		switch (change.getEventType()) {
+		case Notification.ADD: {
+			List<Object> list = (List<Object>) notifier
+					.eGet((EStructuralFeature) change.getFeature());
+			if (change.getPosition() > 0) {
+				list.add(change.getPosition(), change.getNewValue());
+			} else {
+				list.add(change.getNewValue());
+			}
+		}
+			break;
+		case Notification.ADD_MANY:
+			throw new IllegalStateException("Implement me");
+		case Notification.MOVE:
+			throw new IllegalStateException("Implement me");
+		case Notification.REMOVE: {
+			List<Object> list = (List<Object>) notifier
+					.eGet((EStructuralFeature) change.getFeature());
+			list.remove(change.getOldValue());
+		}
+			break;
+		case Notification.REMOVE_MANY:
+			throw new IllegalStateException("Implement me");
+		case Notification.SET: {
+			Object value = change.getNewValue();
+			notifier.eSet((EStructuralFeature) change.getFeature(), value);
+		}
+		case Notification.UNSET: {
+			notifier.eUnset((EStructuralFeature) change.getFeature());
+		}
+		}
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/change/SimpleCommand.java b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/change/SimpleCommand.java
new file mode 100644
index 0000000..8720e5a
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/change/SimpleCommand.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/ package org.eclipse.osbp.vaaclipse.publicapi.change;
+
+import org.eclipse.emf.common.command.AbstractCommand;
+
+/**
+ * Uses the {@link SimpleCommand} to record notifications.
+ */
+public abstract class SimpleCommand extends AbstractCommand {
+
+	public SimpleCommand(String name) {
+		super(name);
+	}
+
+	@Override
+	public void execute() {
+		doExecute();
+	}
+
+	@Override
+	public void redo() {
+		doRedo();
+	}
+
+	@Override
+	protected boolean prepare() {
+		return true;
+	}
+
+	@Override
+	public void undo() {
+		doUndo();
+	}
+
+	@Override
+	public boolean canUndo() {
+		return true;
+	}
+
+	protected abstract void doExecute();
+
+	/**
+	 * Override if required.
+	 */
+	protected void doRedo() {
+		doExecute();
+	}
+
+	protected abstract void doUndo();
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/commands/IPartItemExecutionService.java b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/commands/IPartItemExecutionService.java
new file mode 100644
index 0000000..6881ba7
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/commands/IPartItemExecutionService.java
@@ -0,0 +1,37 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.publicapi.commands;
+
+import org.eclipse.e4.ui.model.application.ui.basic.MPart;
+import org.eclipse.e4.ui.model.application.ui.menu.MItem;
+
+/**
+ * {@link MPart parts} provide this service by their eclipse context. It can be
+ * used to execute {@link MItem} directly.
+ */
+public interface IPartItemExecutionService {
+
+	/**
+	 * Executes the given item in the context of the container part.
+	 * 
+	 * @param mItem
+	 * @return true if the item can be executed. False otherwise.
+	 */
+	boolean canExecuteItem(MItem mItem);
+	
+	/**
+	 * Executes the given item in the context of the container part.
+	 * 
+	 * @param mItem
+	 */
+	void executeItem(MItem mItem);
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/debug/IOwningWorkspaceAccess.java b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/debug/IOwningWorkspaceAccess.java
new file mode 100644
index 0000000..66b6021
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/debug/IOwningWorkspaceAccess.java
@@ -0,0 +1,22 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.publicapi.debug;
+
+public interface IOwningWorkspaceAccess {
+
+	/**
+	 * In debug mode, this value may be used to access the URI of the launching
+	 * workspace location
+	 */
+	public static final String DEBUG_OWNER_WORKSPACE_LOCATION = "debugOwnerWorkspaceLocation";
+	
+	
+}
diff --git a/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/editor/SavePromptSetup.java b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/editor/SavePromptSetup.java
new file mode 100644
index 0000000..c65bc3a
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/editor/SavePromptSetup.java
@@ -0,0 +1,45 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.publicapi.editor;
+
+/**
+ * @author rushan
+ *
+ */
+public class SavePromptSetup {
+	private String caption;
+	private String message;
+	private String iconUri;
+
+	public String getCaption() {
+		return caption;
+	}
+
+	public void setCaption(String caption) {
+		this.caption = caption;
+	}
+
+	public String getMessage() {
+		return message;
+	}
+
+	public void setMessage(String message) {
+		this.message = message;
+	}
+
+	public String getIconUri() {
+		return iconUri;
+	}
+
+	public void setIconUri(String iconUri) {
+		this.iconUri = iconUri;
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/events/IWidgetModelAssociations.java b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/events/IWidgetModelAssociations.java
new file mode 100644
index 0000000..5acd6fd
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/events/IWidgetModelAssociations.java
@@ -0,0 +1,58 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osbp.vaaclipse.publicapi.events;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * A session singleton service, which returns the EObject for a given component.
+ * <p>
+ * It also allows different EMF-based UIModel-To-Widget-Frameworks like ECView
+ * to participate by {@link #addThirdParty(IWidgetModelAssociations)}.
+ */
+public interface IWidgetModelAssociations {
+
+	/**
+	 * Returns the EObject for a given component. If no model element could be
+	 * found for the given component, the component hierarchies parent will be
+	 * used. This method is internally called with the parent as long as no
+	 * model element could be found, or until the UI instance is reached.
+	 * 
+	 * @param component
+	 * @return
+	 */
+	EObject getElement(Object component);
+
+	/**
+	 * Returns the UI Widget for the given model element.
+	 * 
+	 * @param element
+	 * @return
+	 */
+	Object getWidget(EObject element);
+
+	/**
+	 * Adds a thirdparty {@link IWidgetModelAssociations} to this service.
+	 * 
+	 * @param e
+	 * @return
+	 */
+	boolean addThirdParty(IWidgetModelAssociations e);
+
+	/**
+	 * Removes a thirdparty {@link IWidgetModelAssociations} from this service.
+	 * 
+	 * @param o
+	 * @return
+	 */
+	boolean removeThirdParty(IWidgetModelAssociations o);
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/events/PublicEvents.java b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/events/PublicEvents.java
new file mode 100644
index 0000000..2b15e48
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/events/PublicEvents.java
@@ -0,0 +1,19 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.publicapi.events;
+
+/**
+ * @author rushan
+ *
+ */
+public class PublicEvents {
+	public static final String EXIT_WORKBENCH = "EXIT_WORKBENCH";
+}
diff --git a/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/events/VaaclipseUiEvents.java b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/events/VaaclipseUiEvents.java
new file mode 100644
index 0000000..5aa8b3b
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/events/VaaclipseUiEvents.java
@@ -0,0 +1,19 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osbp.vaaclipse.publicapi.events;
+
+public class VaaclipseUiEvents {
+
+	public static interface Item {
+		public static final String TOPIC_EXECUTED = "org/eclipse/e4/ui/model/menu/Item/executed"; //$NON-NLS-1$
+	}
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/model/Tags.java b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/model/Tags.java
new file mode 100644
index 0000000..e5fbc5a
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/model/Tags.java
@@ -0,0 +1,36 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.publicapi.model;
+
+/**
+ * @author rushan
+ *
+ */
+public class Tags {
+	/**
+	 * Vaadin specific tag to inhibit resizing of sashes if needed
+	 */
+	public static final String NO_RESIZE = "NoResize";
+
+	public static final String MAIN_WINDOW = "mainWindow";
+
+	/**
+	 * Perspective's tag to show perspective switch button in perspective switch
+	 * panel
+	 */
+	public static final String HAS_SWITCH_BUTTON = "HasSwitchButton";
+
+	/**
+	 * Tag to show text of perspective switch buttons in perspective switcher
+	 * panel
+	 */
+	public static final String ICONS_ONLY = "IconsOnly";
+}
diff --git a/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/perspective/IPerspectiveHandler.java b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/perspective/IPerspectiveHandler.java
new file mode 100644
index 0000000..a71da50
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/perspective/IPerspectiveHandler.java
@@ -0,0 +1,151 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *     Florian Pirchner - moved to osbp namespace for Vaaclipse
+ *******************************************************************************/
+package org.eclipse.osbp.vaaclipse.publicapi.perspective;
+
+import org.eclipse.e4.ui.model.application.ui.advanced.MPerspective;
+
+/**
+ * The workbench's user based registry of perspectives.
+ * <p>
+ * 
+ * @noimplement This interface is not intended to be implemented by clients.
+ */
+public interface IPerspectiveHandler {
+
+	/**
+	 * The preference key to access the default perspective.
+	 */
+	public static final String PREF_DEFAULT_PERSPECTIVE = "org.eclipse.osbp.vaaclipse.addons.default.perspective";
+
+	/**
+	 * Is used to save the original perspective in the persistedState of a
+	 * perspective.
+	 */
+	public static final String PROP_ORIGINAL_PERSPECTIVE = "org.eclipse.osbp.vaaclipse.addons.original.perspective";
+
+	/**
+	 * Only perspectives tagged with this tag can be deleted by an user.
+	 */
+	public static final String TAG_CREATED_BY_USER = "org.eclipse.osbp.vaaclipse.addons.perspective.createdByUser";
+
+	/**
+	 * Clones an existing perspective.
+	 * 
+	 * @param label
+	 *            the label assigned to the cloned perspective
+	 * @param desc
+	 *            the perspective to clone
+	 * @return the cloned perspective descriptor
+	 * @throws IllegalArgumentException
+	 *             if there is already a perspective with the given id
+	 */
+	public MPerspective clonePerspective(String userId, String label,
+			MPerspective perspective) throws IllegalArgumentException;
+
+	/**
+	 * Returns true, if the user can delete the perspective.
+	 * 
+	 * @param userId
+	 *            the userId
+	 * @param persp
+	 *            the perspective to delete
+	 */
+	public boolean canDeletePerspective(String userId, MPerspective perspective);
+
+	/**
+	 * Deletes a perspective.
+	 * 
+	 * @param persp
+	 *            the perspective to delete
+	 * @return true if the perspective could be deleted
+	 */
+	public boolean deletePerspective(String userId, MPerspective perspective);
+
+	/**
+	 * Finds and returns the registered perspective with the given perspective
+	 * id.
+	 *
+	 * @param perspectiveId
+	 *            the perspective id
+	 * @return the perspective, or <code>null</code> if none
+	 * @see MPerspective#getId
+	 */
+	public MPerspective findPerspectiveWithId(String perspectiveId);
+
+	// /**
+	// * Finds and returns the registered perspective with the given label.
+	// *
+	// * @param label
+	// * the label
+	// * @return the perspective, or <code>null</code> if none
+	// * @see MPerspective#getLabel
+	// */
+	// public MPerspective findPerspectiveWithLabel(String label);
+
+	public String getDefaultPerspective();
+
+	public String getDefaultPerspective(String userId);
+
+	// /**
+	// * Returns a list of the perspectives known to the workbench.
+	// *
+	// * @return a list of perspectives
+	// */
+	// public MPerspective[] getPerspectives();
+
+	/**
+	 * Sets the default perspective for the system to the given perspective id.
+	 * If non-<code>null</code>, the id must correspond to a perspective
+	 * extension within the workbench's perspective registry.
+	 * <p>
+	 * A <code>null</code> id indicates no default perspective.
+	 * </p>
+	 *
+	 * @param id
+	 *            a perspective id, or <code>null</code>
+	 */
+	public void setSystemDefaultPerspective(String id);
+
+	/**
+	 * Sets the default perspective for the workbench for the current User to
+	 * the given perspective id. If non-<code>null</code>, the id must
+	 * correspond to a perspective extension within the workbench's perspective
+	 * registry.
+	 * <p>
+	 * A <code>null</code> id indicates no default perspective.
+	 * </p>
+	 *
+	 * @param id
+	 *            a perspective id, or <code>null</code>
+	 */
+	public void setUserDefaultPerspective(String userId, String id);
+
+	/**
+	 * Returns true, if the perspective can be reverted.
+	 * 
+	 * @param persp
+	 *            the perspective to delete
+	 */
+	public boolean canRevertPerspective(MPerspective perspective);
+
+	/**
+	 * Reverts a perspective back to its original definition as specified in the
+	 * plug-in manifest.
+	 * 
+	 * @param perspToRevert
+	 *            the perspective to revert
+	 * 
+	 * @since 3.0
+	 */
+	public void revertPerspective(MPerspective perspectiveToRevert);
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/preferences/IPreferenceProvider.java b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/preferences/IPreferenceProvider.java
new file mode 100644
index 0000000..af04b1a
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/preferences/IPreferenceProvider.java
@@ -0,0 +1,41 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.publicapi.preferences;
+
+import org.osgi.service.prefs.Preferences;
+
+/**
+ * A service that provides preferences.
+ */
+public interface IPreferenceProvider {
+	
+	/**
+	 * Returns the system preferences.
+	 * 
+	 * @return
+	 */
+	Preferences getSystemPreferences();
+
+	/**
+	 * Returns the preferences for the current user.
+	 * 
+	 * @return
+	 */
+	Preferences getUserPreferences();
+
+	/**
+	 * Returns the preferences for the given user.
+	 * 
+	 * @return
+	 */
+	Preferences getUserPreferences(String userId);
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/resources/BundleResource.java b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/resources/BundleResource.java
new file mode 100644
index 0000000..ebc318d
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/resources/BundleResource.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.publicapi.resources;
+
+import org.eclipse.emf.common.util.URI;
+
+import com.vaadin.server.ThemeResource;
+
+/**
+ * @author rushan
+ *
+ */
+public class BundleResource extends ThemeResource {
+	private String resourceBundlePath;
+
+	public static BundleResource valueOf(String resourceBundlePath) {
+		String themePath = convertPath(resourceBundlePath);
+		BundleResource bundleResource = new BundleResource(themePath);
+		bundleResource.resourceBundlePath = resourceBundlePath;
+		return bundleResource;
+	}
+
+	private BundleResource(String resourceUri) {
+		super(resourceUri);
+	}
+
+	private static String convertPath(String uriString) {
+		if (!uriString.startsWith("platform:/plugin/"))
+			throw new IllegalArgumentException(
+					"Wrong bundle resource uri: "
+							+ uriString
+							+ ". Bundle resource uri should start with platform:/plugin/");
+
+		URI uri = URI.createURI(uriString);
+
+		if (uri.segmentCount() < 2)
+			throw new IllegalArgumentException();
+
+		StringBuilder bundlePath = new StringBuilder("plugin/");
+
+		for (int i = 1; i < uri.segmentCount(); i++) {
+			bundlePath.append(uri.segment(i));
+			bundlePath.append("/");
+		}
+
+		if (bundlePath.charAt(bundlePath.length() - 1) == '/')
+			return bundlePath.substring(0, bundlePath.length() - 1);
+		else
+			return bundlePath.toString();
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/resources/ResourceHelper.java b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/resources/ResourceHelper.java
new file mode 100644
index 0000000..c9b34ac
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/resources/ResourceHelper.java
@@ -0,0 +1,28 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osbp.vaaclipse.publicapi.resources;
+
+import com.vaadin.server.ThemeResource;
+
+/**
+ * @author rushan
+ */
+public class ResourceHelper {
+	public static ThemeResource createResource(String path) {
+		if (path == null || path.trim().equals("")) {
+			return null;
+		}
+		if (path.startsWith("platform:/plugin/"))
+			return BundleResource.valueOf(path);
+		else
+			return new ThemeResource(path);
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/theme/Theme.java b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/theme/Theme.java
new file mode 100644
index 0000000..a64e1e6
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/theme/Theme.java
@@ -0,0 +1,67 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.publicapi.theme;
+
+import java.io.InputStream;
+import java.util.List;
+
+public interface Theme extends ThemeEntry {
+	/**
+	 * Theme label displayed to user
+	 */
+	String getLabel();
+
+	/**
+	 * Theme description displayed to user
+	 */
+	String getDescription();
+
+	/**
+	 * List of inherited themes
+	 */
+	List<Theme> getInheritedThemes();
+
+	/**
+	 * List of contributions to this theme
+	 */
+	List<ThemeContribution> getContributions();
+
+	/**
+	 * Get list of resource location URI including resource URI of this theme,
+	 * contribution URIs and inherited theme's URI
+	 */
+	List<String> getAllResourceLocationURIs();
+
+	/**
+	 * Get CSS list including CSS of this theme, contribution CSS and inherited
+	 * theme's CSS
+	 */
+	List<String> getAllCssURIs();
+
+	/**
+	 * Get CSS of this theme as stream
+	 */
+	InputStream getCssAsStream();
+
+	/**
+	 * Returns all image URIs contained in any of the registered resource
+	 * locations.
+	 */
+	List<String> getImageURIs();
+	
+	/**
+	 * Get theme resource as stream
+	 * 
+	 * @param themeResourceUri
+	 *            resource uri relative to this theme
+	 */
+	InputStream getThemeResourceAsStream(String themeResourceUri);
+}
diff --git a/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/theme/ThemeConstants.java b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/theme/ThemeConstants.java
new file mode 100644
index 0000000..002be80
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/theme/ThemeConstants.java
@@ -0,0 +1,25 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.publicapi.theme;
+
+/**
+ * @author rushan
+ *
+ */
+public class ThemeConstants {
+	public static class Events {
+		public static final String setThemeEvent = "SetThemeEvent";
+	}
+
+	public static class Attrubutes {
+		public static final String themeid = "org.eclipse.osbp.vaaclipse.themeid";
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/theme/ThemeContribution.java b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/theme/ThemeContribution.java
new file mode 100644
index 0000000..b3552bf
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/theme/ThemeContribution.java
@@ -0,0 +1,22 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.publicapi.theme;
+
+/**
+ * @author rushan
+ *
+ */
+public interface ThemeContribution extends ThemeEntry {
+	public static final String MAIN_CSS = "MAIN_CSS";
+	public static final String INHERITED_IMPORTS = "INHERITED_IMPORTS";
+
+	String getInsertPosition();
+}
diff --git a/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/theme/ThemeEngine.java b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/theme/ThemeEngine.java
new file mode 100644
index 0000000..ba37aa7
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/theme/ThemeEngine.java
@@ -0,0 +1,23 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.publicapi.theme;
+
+/**
+ * @author rushan
+ *
+ */
+public interface ThemeEngine {
+	Theme getTheme(String themeId);
+
+	Theme getThemeByWebId(String themeWebId);
+
+	ThemeContribution getThemeContributionByWebId(String contributionWebId);
+}
diff --git a/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/theme/ThemeEntry.java b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/theme/ThemeEntry.java
new file mode 100644
index 0000000..f07f548
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/theme/ThemeEntry.java
@@ -0,0 +1,33 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.publicapi.theme;
+
+import java.util.List;
+
+/**
+ * @author rushan
+ *
+ */
+public interface ThemeEntry {
+	/**
+	 * Theme id
+	 */
+	String getId();
+
+	/**
+	 * Web id - this id is in uri (replace all dot's, etc)
+	 */
+	String getWebId();
+
+	String getCssUri();
+
+	List<String> getResourceLocationURIs();
+}
diff --git a/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/theme/ThemeManager.java b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/theme/ThemeManager.java
new file mode 100644
index 0000000..6269fa1
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/theme/ThemeManager.java
@@ -0,0 +1,25 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.publicapi.theme;
+
+/**
+ * @author rushan
+ *
+ */
+public interface ThemeManager {
+	String getThemeId();
+
+	Theme getTheme();
+
+	void setTheme(String themeId);
+
+	ThemeEngine getThemeEngine();
+}
diff --git a/org.eclipse.osbp.vaaclipse.resources/.project b/org.eclipse.osbp.vaaclipse.resources/.project
new file mode 100644
index 0000000..446ee16
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/.project
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.vaaclipse.resources</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.babel.editor.rbeBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.babel.editor.rbeNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.vaaclipse.resources/META-INF/MANIFEST.MF b/org.eclipse.osbp.vaaclipse.resources/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..f5b73b1
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/META-INF/MANIFEST.MF
@@ -0,0 +1,8 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.vaaclipse.resources
+Bundle-SymbolicName: org.eclipse.osbp.vaaclipse.resources
+Bundle-Version: 0.9.0.qualifier
+Bundle-Vendor: Eclipse OSBP
+Fragment-Host: com.vaadin.themes;bundle-version="[7.5.7,7.7.0)"
+Bundle-RequiredExecutionEnvironment: JavaSE-1.7
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/codelabel.scss b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/codelabel.scss
new file mode 100644
index 0000000..61f6871
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/codelabel.scss
@@ -0,0 +1,12 @@
+/* Import the reindeer theme.*/
+/* This only allows us to use the mixins defined in it and does not add any styles by itself. */
+@import "../reindeer/reindeer.scss";
+
+/* This contains all of your theme.*/
+/* If somebody wants to extend the theme she will include this mixin. */
+@mixin codelabel {
+  /* Include all the styles from the reindeer theme */
+  @include reindeer;
+
+  /* Insert your theme rules here */
+}
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-apollo.js b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-apollo.js
new file mode 100644
index 0000000..99e4a97
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-apollo.js
@@ -0,0 +1,2 @@
+PR.registerLangHandler(PR.createSimpleLexer([["com",/^#[^\n\r]*/,null,"#"],["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r \u00a0"],["str",/^"(?:[^"\\]|\\[\S\s])*(?:"|$)/,null,'"']],[["kwd",/^(?:ADS|AD|AUG|BZF|BZMF|CAE|CAF|CA|CCS|COM|CS|DAS|DCA|DCOM|DCS|DDOUBL|DIM|DOUBLE|DTCB|DTCF|DV|DXCH|EDRUPT|EXTEND|INCR|INDEX|NDX|INHINT|LXCH|MASK|MSK|MP|MSU|NOOP|OVSK|QXCH|RAND|READ|RELINT|RESUME|RETURN|ROR|RXOR|SQUARE|SU|TCR|TCAA|OVSK|TCF|TC|TS|WAND|WOR|WRITE|XCH|XLQ|XXALQ|ZL|ZQ|ADD|ADZ|SUB|SUZ|MPY|MPR|MPZ|DVP|COM|ABS|CLA|CLZ|LDQ|STO|STQ|ALS|LLS|LRS|TRA|TSQ|TMI|TOV|AXT|TIX|DLY|INP|OUT)\s/,
+null],["typ",/^(?:-?GENADR|=MINUS|2BCADR|VN|BOF|MM|-?2CADR|-?[1-6]DNADR|ADRES|BBCON|[ES]?BANK=?|BLOCK|BNKSUM|E?CADR|COUNT\*?|2?DEC\*?|-?DNCHAN|-?DNPTR|EQUALS|ERASE|MEMORY|2?OCT|REMADR|SETLOC|SUBRO|ORG|BSS|BES|SYN|EQU|DEFINE|END)\s/,null],["lit",/^'(?:-*(?:\w|\\[!-~])(?:[\w-]*|\\[!-~])[!=?]?)?/],["pln",/^-*(?:[!-z]|\\[!-~])(?:[\w-]*|\\[!-~])[!=?]?/],["pun",/^[^\w\t\n\r "'-);\\\xa0]+/]]),["apollo","agc","aea"]);
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-basic.js b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-basic.js
new file mode 100644
index 0000000..6b784d4
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-basic.js
@@ -0,0 +1,3 @@
+var a=null;
+PR.registerLangHandler(PR.createSimpleLexer([["str",/^"(?:[^\n\r"\\]|\\.)*(?:"|$)/,a,'"'],["pln",/^\s+/,a," \r\n\t\u00a0"]],[["com",/^REM[^\n\r]*/,a],["kwd",/^\b(?:AND|CLOSE|CLR|CMD|CONT|DATA|DEF ?FN|DIM|END|FOR|GET|GOSUB|GOTO|IF|INPUT|LET|LIST|LOAD|NEW|NEXT|NOT|ON|OPEN|OR|POKE|PRINT|READ|RESTORE|RETURN|RUN|SAVE|STEP|STOP|SYS|THEN|TO|VERIFY|WAIT)\b/,a],["pln",/^[a-z][^\W_]?(?:\$|%)?/i,a],["lit",/^(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?/i,a,"0123456789"],["pun",
+/^.[^\s\w"$%.]*/,a]]),["basic","cbm"]);
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-clj.js b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-clj.js
new file mode 100644
index 0000000..1bb539c
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-clj.js
@@ -0,0 +1,18 @@
+/*
+ Copyright (C) 2011 Google Inc.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+var a=null;
+PR.registerLangHandler(PR.createSimpleLexer([["opn",/^[([{]+/,a,"([{"],["clo",/^[)\]}]+/,a,")]}"],["com",/^;[^\n\r]*/,a,";"],["pln",/^[\t\n\r \xa0]+/,a,"\t\n\r \u00a0"],["str",/^"(?:[^"\\]|\\[\S\s])*(?:"|$)/,a,'"']],[["kwd",/^(?:def|if|do|let|quote|var|fn|loop|recur|throw|try|monitor-enter|monitor-exit|defmacro|defn|defn-|macroexpand|macroexpand-1|for|doseq|dosync|dotimes|and|or|when|not|assert|doto|proxy|defstruct|first|rest|cons|defprotocol|deftype|defrecord|reify|defmulti|defmethod|meta|with-meta|ns|in-ns|create-ns|import|intern|refer|alias|namespace|resolve|ref|deref|refset|new|set!|memfn|to-array|into-array|aset|gen-class|reduce|map|filter|find|nil?|empty?|hash-map|hash-set|vec|vector|seq|flatten|reverse|assoc|dissoc|list|list?|disj|get|union|difference|intersection|extend|extend-type|extend-protocol|prn)\b/,a],
+["typ",/^:[\dA-Za-z-]+/]]),["clj"]);
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-css.js b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-css.js
new file mode 100644
index 0000000..d7a4640
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-css.js
@@ -0,0 +1,2 @@
+PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\f\r ]+/,null," \t\r\n\u000c"]],[["str",/^"(?:[^\n\f\r"\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*"/,null],["str",/^'(?:[^\n\f\r'\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*'/,null],["lang-css-str",/^url\(([^"')]+)\)/i],["kwd",/^(?:url|rgb|!important|@import|@page|@media|@charset|inherit)(?=[^\w-]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*)\s*:/i],["com",/^\/\*[^*]*\*+(?:[^*/][^*]*\*+)*\//],
+["com",/^(?:<\!--|--\>)/],["lit",/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],["lit",/^#[\da-f]{3,6}\b/i],["pln",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i],["pun",/^[^\s\w"']+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[["kwd",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[["str",/^[^"')]+/]]),["css-str"]);
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-dart.js b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-dart.js
new file mode 100644
index 0000000..eefccc9
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-dart.js
@@ -0,0 +1,3 @@
+PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r \u00a0"]],[["com",/^#!.*/],["kwd",/^\b(?:import|library|part of|part|as|show|hide)\b/i],["com",/^\/\/.*/],["com",/^\/\*[^*]*\*+(?:[^*/][^*]*\*+)*\//],["kwd",/^\b(?:class|interface)\b/i],["kwd",/^\b(?:assert|break|case|catch|continue|default|do|else|finally|for|if|in|is|new|return|super|switch|this|throw|try|while)\b/i],["kwd",/^\b(?:abstract|const|extends|factory|final|get|implements|native|operator|set|static|typedef|var)\b/i],
+["typ",/^\b(?:bool|double|dynamic|int|num|object|string|void)\b/i],["kwd",/^\b(?:false|null|true)\b/i],["str",/^r?'''[\S\s]*?[^\\]'''/],["str",/^r?"""[\S\s]*?[^\\]"""/],["str",/^r?'('|[^\n\f\r]*?[^\\]')/],["str",/^r?"("|[^\n\f\r]*?[^\\]")/],["pln",/^[$_a-z]\w*/i],["pun",/^[!%&*+/:<-?^|~-]/],["lit",/^\b0x[\da-f]+/i],["lit",/^\b\d+(?:\.\d*)?(?:e[+-]?\d+)?/i],["lit",/^\b\.\d+(?:e[+-]?\d+)?/i],["pun",/^[(),.;[\]{}]/]]),
+["dart"]);
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-erlang.js b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-erlang.js
new file mode 100644
index 0000000..27214a5
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-erlang.js
@@ -0,0 +1,2 @@
+PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t-\r ]+/,null,"\t\n\u000b\u000c\r "],["str",/^"(?:[^\n\f\r"\\]|\\[\S\s])*(?:"|$)/,null,'"'],["lit",/^[a-z]\w*/],["lit",/^'(?:[^\n\f\r'\\]|\\[^&])+'?/,null,"'"],["lit",/^\?[^\t\n ({]+/,null,"?"],["lit",/^(?:0o[0-7]+|0x[\da-f]+|\d+(?:\.\d+)?(?:e[+-]?\d+)?)/i,null,"0123456789"]],[["com",/^%[^\n]*/],["kwd",/^(?:module|attributes|do|let|in|letrec|apply|call|primop|case|of|end|when|fun|try|catch|receive|after|char|integer|float,atom,string,var)\b/],
+["kwd",/^-[_a-z]+/],["typ",/^[A-Z_]\w*/],["pun",/^[,.;]/]]),["erlang","erl"]);
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-go.js b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-go.js
new file mode 100644
index 0000000..1caca23
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-go.js
@@ -0,0 +1 @@
+PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r \u00a0"],["pln",/^(?:"(?:[^"\\]|\\[\S\s])*(?:"|$)|'(?:[^'\\]|\\[\S\s])+(?:'|$)|`[^`]*(?:`|$))/,null,"\"'"]],[["com",/^(?:\/\/[^\n\r]*|\/\*[\S\s]*?\*\/)/],["pln",/^(?:[^"'/`]|\/(?![*/]))+/]]),["go"]);
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-hs.js b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-hs.js
new file mode 100644
index 0000000..ff3729b
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-hs.js
@@ -0,0 +1,2 @@
+PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t-\r ]+/,null,"\t\n\u000b\u000c\r "],["str",/^"(?:[^\n\f\r"\\]|\\[\S\s])*(?:"|$)/,null,'"'],["str",/^'(?:[^\n\f\r'\\]|\\[^&])'?/,null,"'"],["lit",/^(?:0o[0-7]+|0x[\da-f]+|\d+(?:\.\d+)?(?:e[+-]?\d+)?)/i,null,"0123456789"]],[["com",/^(?:--+[^\n\f\r]*|{-(?:[^-]|-+[^}-])*-})/],["kwd",/^(?:case|class|data|default|deriving|do|else|if|import|in|infix|infixl|infixr|instance|let|module|newtype|of|then|type|where|_)(?=[^\d'A-Za-z]|$)/,
+null],["pln",/^(?:[A-Z][\w']*\.)*[A-Za-z][\w']*/],["pun",/^[^\d\t-\r "'A-Za-z]+/]]),["hs"]);
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-lisp.js b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-lisp.js
new file mode 100644
index 0000000..9c8cfa5
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-lisp.js
@@ -0,0 +1,3 @@
+var a=null;
+PR.registerLangHandler(PR.createSimpleLexer([["opn",/^\(+/,a,"("],["clo",/^\)+/,a,")"],["com",/^;[^\n\r]*/,a,";"],["pln",/^[\t\n\r \xa0]+/,a,"\t\n\r \u00a0"],["str",/^"(?:[^"\\]|\\[\S\s])*(?:"|$)/,a,'"']],[["kwd",/^(?:block|c[ad]+r|catch|con[ds]|def(?:ine|un)|do|eq|eql|equal|equalp|eval-when|flet|format|go|if|labels|lambda|let|load-time-value|locally|macrolet|multiple-value-call|nil|progn|progv|quote|require|return-from|setq|symbol-macrolet|t|tagbody|the|throw|unwind)\b/,a],
+["lit",/^[+-]?(?:[#0]x[\da-f]+|\d+\/\d+|(?:\.\d+|\d+(?:\.\d*)?)(?:[de][+-]?\d+)?)/i],["lit",/^'(?:-*(?:\w|\\[!-~])(?:[\w-]*|\\[!-~])[!=?]?)?/],["pln",/^-*(?:[_a-z]|\\[!-~])(?:[\w-]*|\\[!-~])[!=?]?/i],["pun",/^[^\w\t\n\r "'-);\\\xa0]+/]]),["cl","el","lisp","lsp","scm","ss","rkt"]);
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-llvm.js b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-llvm.js
new file mode 100644
index 0000000..16fade2
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-llvm.js
@@ -0,0 +1 @@
+PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r \u00a0"],["str",/^!?"(?:[^"\\]|\\[\S\s])*(?:"|$)/,null,'"'],["com",/^;[^\n\r]*/,null,";"]],[["pln",/^[!%@](?:[$\-.A-Z_a-z][\w$\-.]*|\d+)/],["kwd",/^[^\W\d]\w*/,null],["lit",/^\d+\.\d+/],["lit",/^(?:\d+|0[Xx][\dA-Fa-f]+)/],["pun",/^[(-*,:<->[\]{}]|\.\.\.$/]]),["llvm","ll"]);
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-lua.js b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-lua.js
new file mode 100644
index 0000000..7e44cca
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-lua.js
@@ -0,0 +1,2 @@
+PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r \u00a0"],["str",/^(?:"(?:[^"\\]|\\[\S\s])*(?:"|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$))/,null,"\"'"]],[["com",/^--(?:\[(=*)\[[\S\s]*?(?:]\1]|$)|[^\n\r]*)/],["str",/^\[(=*)\[[\S\s]*?(?:]\1]|$)/],["kwd",/^(?:and|break|do|else|elseif|end|false|for|function|if|in|local|nil|not|or|repeat|return|then|true|until|while)\b/,null],["lit",/^[+-]?(?:0x[\da-f]+|(?:\.\d+|\d+(?:\.\d*)?)(?:e[+-]?\d+)?)/i],
+["pln",/^[_a-z]\w*/i],["pun",/^[^\w\t\n\r \xa0][^\w\t\n\r "'+=\xa0-]*/]]),["lua"]);
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-matlab.js b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-matlab.js
new file mode 100644
index 0000000..d0d3516
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-matlab.js
@@ -0,0 +1,6 @@
+var a=null,b=window.PR,c=[[b.PR_PLAIN,/^[\t-\r \xa0]+/,a," \t\r\n\u000b\u000c\u00a0"],[b.PR_COMMENT,/^%{[^%]*%+(?:[^%}][^%]*%+)*}/,a],[b.PR_COMMENT,/^%[^\n\r]*/,a,"%"],["syscmd",/^![^\n\r]*/,a,"!"]],d=[["linecont",/^\.\.\.\s*[\n\r]/,a],["err",/^\?\?\? [^\n\r]*/,a],["wrn",/^Warning: [^\n\r]*/,a],["codeoutput",/^>>\s+/,a],["codeoutput",/^octave:\d+>\s+/,a],["lang-matlab-operators",/^((?:[A-Za-z]\w*(?:\.[A-Za-z]\w*)*|[).\]}])')/,a],["lang-matlab-identifiers",/^([A-Za-z]\w*(?:\.[A-Za-z]\w*)*)(?!')/,a],
+[b.PR_STRING,/^'(?:[^']|'')*'/,a],[b.PR_LITERAL,/^[+-]?\.?\d+(?:\.\d*)?(?:[Ee][+-]?\d+)?[ij]?/,a],[b.PR_TAG,/^[()[\]{}]/,a],[b.PR_PUNCTUATION,/^[!&*-/:->@\\^|~]/,a]],e=[["lang-matlab-identifiers",/^([A-Za-z]\w*(?:\.[A-Za-z]\w*)*)/,a],[b.PR_TAG,/^[()[\]{}]/,a],[b.PR_PUNCTUATION,/^[!&*-/:->@\\^|~]/,a],["transpose",/^'/,a]];
+b.registerLangHandler(b.createSimpleLexer([],[[b.PR_KEYWORD,/^\b(?:break|case|catch|classdef|continue|else|elseif|end|for|function|global|if|otherwise|parfor|persistent|return|spmd|switch|try|while)\b/,a],["const",/^\b(?:true|false|inf|Inf|nan|NaN|eps|pi|ans|nargin|nargout|varargin|varargout)\b/,a],[b.PR_TYPE,/^\b(?:cell|struct|char|double|single|logical|u?int(?:8|16|32|64)|sparse)\b/,a],["fun",/^\b(?:abs|accumarray|acos(?:d|h)?|acot(?:d|h)?|acsc(?:d|h)?|actxcontrol(?:list|select)?|actxGetRunningServer|actxserver|addlistener|addpath|addpref|addtodate|airy|align|alim|all|allchild|alpha|alphamap|amd|ancestor|and|angle|annotation|any|area|arrayfun|asec(?:d|h)?|asin(?:d|h)?|assert|assignin|atan[2dh]?|audiodevinfo|audioplayer|audiorecorder|aufinfo|auread|autumn|auwrite|avifile|aviinfo|aviread|axes|axis|balance|bar(?:3|3h|h)?|base2dec|beep|BeginInvoke|bench|bessel[h-ky]|beta|betainc|betaincinv|betaln|bicg|bicgstab|bicgstabl|bin2dec|bitand|bitcmp|bitget|bitmax|bitnot|bitor|bitset|bitshift|bitxor|blanks|blkdiag|bone|box|brighten|brush|bsxfun|builddocsearchdb|builtin|bvp4c|bvp5c|bvpget|bvpinit|bvpset|bvpxtend|calendar|calllib|callSoapService|camdolly|cameratoolbar|camlight|camlookat|camorbit|campan|campos|camproj|camroll|camtarget|camup|camva|camzoom|cart2pol|cart2sph|cast|cat|caxis|cd|cdf2rdf|cdfepoch|cdfinfo|cdflib(?:.(?:close|closeVar|computeEpoch|computeEpoch16|create|createAttr|createVar|delete|deleteAttr|deleteAttrEntry|deleteAttrgEntry|deleteVar|deleteVarRecords|epoch16Breakdown|epochBreakdown|getAttrEntry|getAttrgEntry|getAttrMaxEntry|getAttrMaxgEntry|getAttrName|getAttrNum|getAttrScope|getCacheSize|getChecksum|getCompression|getCompressionCacheSize|getConstantNames|getConstantValue|getCopyright|getFileBackward|getFormat|getLibraryCopyright|getLibraryVersion|getMajority|getName|getNumAttrEntries|getNumAttrgEntries|getNumAttributes|getNumgAttributes|getReadOnlyMode|getStageCacheSize|getValidate|getVarAllocRecords|getVarBlockingFactor|getVarCacheSize|getVarCompression|getVarData|getVarMaxAllocRecNum|getVarMaxWrittenRecNum|getVarName|getVarNum|getVarNumRecsWritten|getVarPadValue|getVarRecordData|getVarReservePercent|getVarsMaxWrittenRecNum|getVarSparseRecords|getVersion|hyperGetVarData|hyperPutVarData|inquire|inquireAttr|inquireAttrEntry|inquireAttrgEntry|inquireVar|open|putAttrEntry|putAttrgEntry|putVarData|putVarRecordData|renameAttr|renameVar|setCacheSize|setChecksum|setCompression|setCompressionCacheSize|setFileBackward|setFormat|setMajority|setReadOnlyMode|setStageCacheSize|setValidate|setVarAllocBlockRecords|setVarBlockingFactor|setVarCacheSize|setVarCompression|setVarInitialRecs|setVarPadValue|SetVarReservePercent|setVarsCacheSize|setVarSparseRecords))?|cdfread|cdfwrite|ceil|cell2mat|cell2struct|celldisp|cellfun|cellplot|cellstr|cgs|checkcode|checkin|checkout|chol|cholinc|cholupdate|circshift|cla|clabel|class|clc|clear|clearvars|clf|clipboard|clock|close|closereq|cmopts|cmpermute|cmunique|colamd|colon|colorbar|colordef|colormap|colormapeditor|colperm|Combine|comet|comet3|commandhistory|commandwindow|compan|compass|complex|computer|cond|condeig|condest|coneplot|conj|containers.Map|contour(?:[3cf]|slice)?|contrast|conv|conv2|convhull|convhulln|convn|cool|copper|copyfile|copyobj|corrcoef|cos(?:d|h)?|cot(?:d|h)?|cov|cplxpair|cputime|createClassFromWsdl|createSoapMessage|cross|csc(?:d|h)?|csvread|csvwrite|ctranspose|cumprod|cumsum|cumtrapz|curl|customverctrl|cylinder|daqread|daspect|datacursormode|datatipinfo|date|datenum|datestr|datetick|datevec|dbclear|dbcont|dbdown|dblquad|dbmex|dbquit|dbstack|dbstatus|dbstep|dbstop|dbtype|dbup|dde23|ddeget|ddesd|ddeset|deal|deblank|dec2base|dec2bin|dec2hex|decic|deconv|del2|delaunay|delaunay3|delaunayn|DelaunayTri|delete|demo|depdir|depfun|det|detrend|deval|diag|dialog|diary|diff|diffuse|dir|disp|display|dither|divergence|dlmread|dlmwrite|dmperm|doc|docsearch|dos|dot|dragrect|drawnow|dsearch|dsearchn|dynamicprops|echo|echodemo|edit|eig|eigs|ellipj|ellipke|ellipsoid|empty|enableNETfromNetworkDrive|enableservice|EndInvoke|enumeration|eomday|eq|erf|erfc|erfcinv|erfcx|erfinv|error|errorbar|errordlg|etime|etree|etreeplot|eval|evalc|evalin|event.(?:EventData|listener|PropertyEvent|proplistener)|exifread|exist|exit|exp|expint|expm|expm1|export2wsdlg|eye|ezcontour|ezcontourf|ezmesh|ezmeshc|ezplot|ezplot3|ezpolar|ezsurf|ezsurfc|factor|factorial|fclose|feather|feature|feof|ferror|feval|fft|fft2|fftn|fftshift|fftw|fgetl|fgets|fieldnames|figure|figurepalette|fileattrib|filebrowser|filemarker|fileparts|fileread|filesep|fill|fill3|filter|filter2|find|findall|findfigs|findobj|findstr|finish|fitsdisp|fitsinfo|fitsread|fitswrite|fix|flag|flipdim|fliplr|flipud|floor|flow|fminbnd|fminsearch|fopen|format|fplot|fprintf|frame2im|fread|freqspace|frewind|fscanf|fseek|ftell|FTP|full|fullfile|func2str|functions|funm|fwrite|fzero|gallery|gamma|gammainc|gammaincinv|gammaln|gca|gcbf|gcbo|gcd|gcf|gco|ge|genpath|genvarname|get|getappdata|getenv|getfield|getframe|getpixelposition|getpref|ginput|gmres|gplot|grabcode|gradient|gray|graymon|grid|griddata(?:3|n)?|griddedInterpolant|gsvd|gt|gtext|guidata|guide|guihandles|gunzip|gzip|h5create|h5disp|h5info|h5read|h5readatt|h5write|h5writeatt|hadamard|handle|hankel|hdf|hdf5|hdf5info|hdf5read|hdf5write|hdfinfo|hdfread|hdftool|help|helpbrowser|helpdesk|helpdlg|helpwin|hess|hex2dec|hex2num|hgexport|hggroup|hgload|hgsave|hgsetget|hgtransform|hidden|hilb|hist|histc|hold|home|horzcat|hostid|hot|hsv|hsv2rgb|hypot|ichol|idivide|ifft|ifft2|ifftn|ifftshift|ilu|im2frame|im2java|imag|image|imagesc|imapprox|imfinfo|imformats|import|importdata|imread|imwrite|ind2rgb|ind2sub|inferiorto|info|inline|inmem|inpolygon|input|inputdlg|inputname|inputParser|inspect|instrcallback|instrfind|instrfindall|int2str|integral(?:2|3)?|interp(?:1|1q|2|3|ft|n)|interpstreamspeed|intersect|intmax|intmin|inv|invhilb|ipermute|isa|isappdata|iscell|iscellstr|ischar|iscolumn|isdir|isempty|isequal|isequaln|isequalwithequalnans|isfield|isfinite|isfloat|isglobal|ishandle|ishghandle|ishold|isinf|isinteger|isjava|iskeyword|isletter|islogical|ismac|ismatrix|ismember|ismethod|isnan|isnumeric|isobject|isocaps|isocolors|isonormals|isosurface|ispc|ispref|isprime|isprop|isreal|isrow|isscalar|issorted|isspace|issparse|isstr|isstrprop|isstruct|isstudent|isunix|isvarname|isvector|javaaddpath|javaArray|javachk|javaclasspath|javacomponent|javaMethod|javaMethodEDT|javaObject|javaObjectEDT|javarmpath|jet|keyboard|kron|lasterr|lasterror|lastwarn|lcm|ldivide|ldl|le|legend|legendre|length|libfunctions|libfunctionsview|libisloaded|libpointer|libstruct|license|light|lightangle|lighting|lin2mu|line|lines|linkaxes|linkdata|linkprop|linsolve|linspace|listdlg|listfonts|load|loadlibrary|loadobj|log|log10|log1p|log2|loglog|logm|logspace|lookfor|lower|ls|lscov|lsqnonneg|lsqr|lt|lu|luinc|magic|makehgtform|mat2cell|mat2str|material|matfile|matlab.io.MatFile|matlab.mixin.(?:Copyable|Heterogeneous(?:.getDefaultScalarElement)?)|matlabrc|matlabroot|max|maxNumCompThreads|mean|median|membrane|memmapfile|memory|menu|mesh|meshc|meshgrid|meshz|meta.(?:class(?:.fromName)?|DynamicProperty|EnumeratedValue|event|MetaData|method|package(?:.(?:fromName|getAllPackages))?|property)|metaclass|methods|methodsview|mex(?:.getCompilerConfigurations)?|MException|mexext|mfilename|min|minres|minus|mislocked|mkdir|mkpp|mldivide|mlint|mlintrpt|mlock|mmfileinfo|mmreader|mod|mode|more|move|movefile|movegui|movie|movie2avi|mpower|mrdivide|msgbox|mtimes|mu2lin|multibandread|multibandwrite|munlock|namelengthmax|nargchk|narginchk|nargoutchk|native2unicode|nccreate|ncdisp|nchoosek|ncinfo|ncread|ncreadatt|ncwrite|ncwriteatt|ncwriteschema|ndgrid|ndims|ne|NET(?:.(?:addAssembly|Assembly|convertArray|createArray|createGeneric|disableAutoRelease|enableAutoRelease|GenericClass|invokeGenericMethod|NetException|setStaticProperty))?|netcdf.(?:abort|close|copyAtt|create|defDim|defGrp|defVar|defVarChunking|defVarDeflate|defVarFill|defVarFletcher32|delAtt|endDef|getAtt|getChunkCache|getConstant|getConstantNames|getVar|inq|inqAtt|inqAttID|inqAttName|inqDim|inqDimID|inqDimIDs|inqFormat|inqGrpName|inqGrpNameFull|inqGrpParent|inqGrps|inqLibVers|inqNcid|inqUnlimDims|inqVar|inqVarChunking|inqVarDeflate|inqVarFill|inqVarFletcher32|inqVarID|inqVarIDs|open|putAtt|putVar|reDef|renameAtt|renameDim|renameVar|setChunkCache|setDefaultFormat|setFill|sync)|newplot|nextpow2|nnz|noanimate|nonzeros|norm|normest|not|notebook|now|nthroot|null|num2cell|num2hex|num2str|numel|nzmax|ode(?:113|15i|15s|23|23s|23t|23tb|45)|odeget|odeset|odextend|onCleanup|ones|open|openfig|opengl|openvar|optimget|optimset|or|ordeig|orderfields|ordqz|ordschur|orient|orth|pack|padecoef|pagesetupdlg|pan|pareto|parseSoapResponse|pascal|patch|path|path2rc|pathsep|pathtool|pause|pbaspect|pcg|pchip|pcode|pcolor|pdepe|pdeval|peaks|perl|perms|permute|pie|pink|pinv|planerot|playshow|plot|plot3|plotbrowser|plotedit|plotmatrix|plottools|plotyy|plus|pol2cart|polar|poly|polyarea|polyder|polyeig|polyfit|polyint|polyval|polyvalm|pow2|power|ppval|prefdir|preferences|primes|print|printdlg|printopt|printpreview|prod|profile|profsave|propedit|propertyeditor|psi|publish|PutCharArray|PutFullMatrix|PutWorkspaceData|pwd|qhull|qmr|qr|qrdelete|qrinsert|qrupdate|quad|quad2d|quadgk|quadl|quadv|questdlg|quit|quiver|quiver3|qz|rand|randi|randn|randperm|RandStream(?:.(?:create|getDefaultStream|getGlobalStream|list|setDefaultStream|setGlobalStream))?|rank|rat|rats|rbbox|rcond|rdivide|readasync|real|reallog|realmax|realmin|realpow|realsqrt|record|rectangle|rectint|recycle|reducepatch|reducevolume|refresh|refreshdata|regexp|regexpi|regexprep|regexptranslate|rehash|rem|Remove|RemoveAll|repmat|reset|reshape|residue|restoredefaultpath|rethrow|rgb2hsv|rgb2ind|rgbplot|ribbon|rmappdata|rmdir|rmfield|rmpath|rmpref|rng|roots|rose|rosser|rot90|rotate|rotate3d|round|rref|rsf2csf|run|save|saveas|saveobj|savepath|scatter|scatter3|schur|sec|secd|sech|selectmoveresize|semilogx|semilogy|sendmail|serial|set|setappdata|setdiff|setenv|setfield|setpixelposition|setpref|setstr|setxor|shading|shg|shiftdim|showplottool|shrinkfaces|sign|sin(?:d|h)?|size|slice|smooth3|snapnow|sort|sortrows|sound|soundsc|spalloc|spaugment|spconvert|spdiags|specular|speye|spfun|sph2cart|sphere|spinmap|spline|spones|spparms|sprand|sprandn|sprandsym|sprank|spring|sprintf|spy|sqrt|sqrtm|squeeze|ss2tf|sscanf|stairs|startup|std|stem|stem3|stopasync|str2double|str2func|str2mat|str2num|strcat|strcmp|strcmpi|stream2|stream3|streamline|streamparticles|streamribbon|streamslice|streamtube|strfind|strjust|strmatch|strncmp|strncmpi|strread|strrep|strtok|strtrim|struct2cell|structfun|strvcat|sub2ind|subplot|subsasgn|subsindex|subspace|subsref|substruct|subvolume|sum|summer|superclasses|superiorto|support|surf|surf2patch|surface|surfc|surfl|surfnorm|svd|svds|swapbytes|symamd|symbfact|symmlq|symrcm|symvar|system|tan(?:d|h)?|tar|tempdir|tempname|tetramesh|texlabel|text|textread|textscan|textwrap|tfqmr|throw|tic|Tiff(?:.(?:getTagNames|getVersion))?|timer|timerfind|timerfindall|times|timeseries|title|toc|todatenum|toeplitz|toolboxdir|trace|transpose|trapz|treelayout|treeplot|tril|trimesh|triplequad|triplot|TriRep|TriScatteredInterp|trisurf|triu|tscollection|tsearch|tsearchn|tstool|type|typecast|uibuttongroup|uicontextmenu|uicontrol|uigetdir|uigetfile|uigetpref|uiimport|uimenu|uiopen|uipanel|uipushtool|uiputfile|uiresume|uisave|uisetcolor|uisetfont|uisetpref|uistack|uitable|uitoggletool|uitoolbar|uiwait|uminus|undocheckout|unicode2native|union|unique|unix|unloadlibrary|unmesh|unmkpp|untar|unwrap|unzip|uplus|upper|urlread|urlwrite|usejava|userpath|validateattributes|validatestring|vander|var|vectorize|ver|verctrl|verLessThan|version|vertcat|VideoReader(?:.isPlatformSupported)?|VideoWriter(?:.getProfiles)?|view|viewmtx|visdiff|volumebounds|voronoi|voronoin|wait|waitbar|waitfor|waitforbuttonpress|warndlg|warning|waterfall|wavfinfo|wavplay|wavread|wavrecord|wavwrite|web|weekday|what|whatsnew|which|whitebg|who|whos|wilkinson|winopen|winqueryreg|winter|wk1finfo|wk1read|wk1write|workspace|xlabel|xlim|xlsfinfo|xlsread|xlswrite|xmlread|xmlwrite|xor|xslt|ylabel|ylim|zeros|zip|zlabel|zlim|zoom)\b/,
+a],["fun_tbx",/^\b(?:addedvarplot|andrewsplot|anova[12n]|ansaribradley|aoctool|barttest|bbdesign|beta(?:cdf|fit|inv|like|pdf|rnd|stat)|bino(?:cdf|fit|inv|pdf|rnd|stat)|biplot|bootci|bootstrp|boxplot|candexch|candgen|canoncorr|capability|capaplot|caseread|casewrite|categorical|ccdesign|cdfplot|chi2(?:cdf|gof|inv|pdf|rnd|stat)|cholcov|Classification(?:BaggedEnsemble|Discriminant(?:.(?:fit|make|template))?|Ensemble|KNN(?:.(?:fit|template))?|PartitionedEnsemble|PartitionedModel|Tree(?:.(?:fit|template))?)|classify|classregtree|cluster|clusterdata|cmdscale|combnk|Compact(?:Classification(?:Discriminant|Ensemble|Tree)|Regression(?:Ensemble|Tree)|TreeBagger)|confusionmat|controlchart|controlrules|cophenet|copula(?:cdf|fit|param|pdf|rnd|stat)|cordexch|corr|corrcov|coxphfit|createns|crosstab|crossval|cvpartition|datasample|dataset|daugment|dcovary|dendrogram|dfittool|disttool|dummyvar|dwtest|ecdf|ecdfhist|ev(?:cdf|fit|inv|like|pdf|rnd|stat)|ExhaustiveSearcher|exp(?:cdf|fit|inv|like|pdf|rnd|stat)|factoran|fcdf|ff2n|finv|fitdist|fitensemble|fpdf|fracfact|fracfactgen|friedman|frnd|fstat|fsurfht|fullfact|gagerr|gam(?:cdf|fit|inv|like|pdf|rnd|stat)|GeneralizedLinearModel(?:.fit)?|geo(?:cdf|inv|mean|pdf|rnd|stat)|gev(?:cdf|fit|inv|like|pdf|rnd|stat)|gline|glmfit|glmval|glyphplot|gmdistribution(?:.fit)?|gname|gp(?:cdf|fit|inv|like|pdf|rnd|stat)|gplotmatrix|grp2idx|grpstats|gscatter|haltonset|harmmean|hist3|histfit|hmm(?:decode|estimate|generate|train|viterbi)|hougen|hyge(?:cdf|inv|pdf|rnd|stat)|icdf|inconsistent|interactionplot|invpred|iqr|iwishrnd|jackknife|jbtest|johnsrnd|KDTreeSearcher|kmeans|knnsearch|kruskalwallis|ksdensity|kstest|kstest2|kurtosis|lasso|lassoglm|lassoPlot|leverage|lhsdesign|lhsnorm|lillietest|LinearModel(?:.fit)?|linhyptest|linkage|logn(?:cdf|fit|inv|like|pdf|rnd|stat)|lsline|mad|mahal|maineffectsplot|manova1|manovacluster|mdscale|mhsample|mle|mlecov|mnpdf|mnrfit|mnrnd|mnrval|moment|multcompare|multivarichart|mvn(?:cdf|pdf|rnd)|mvregress|mvregresslike|mvt(?:cdf|pdf|rnd)|NaiveBayes(?:.fit)?|nan(?:cov|max|mean|median|min|std|sum|var)|nbin(?:cdf|fit|inv|pdf|rnd|stat)|ncf(?:cdf|inv|pdf|rnd|stat)|nct(?:cdf|inv|pdf|rnd|stat)|ncx2(?:cdf|inv|pdf|rnd|stat)|NeighborSearcher|nlinfit|nlintool|nlmefit|nlmefitsa|nlparci|nlpredci|nnmf|nominal|NonLinearModel(?:.fit)?|norm(?:cdf|fit|inv|like|pdf|rnd|stat)|normplot|normspec|ordinal|outlierMeasure|parallelcoords|paretotails|partialcorr|pcacov|pcares|pdf|pdist|pdist2|pearsrnd|perfcurve|perms|piecewisedistribution|plsregress|poiss(?:cdf|fit|inv|pdf|rnd|tat)|polyconf|polytool|prctile|princomp|ProbDist(?:Kernel|Parametric|UnivKernel|UnivParam)?|probplot|procrustes|qqplot|qrandset|qrandstream|quantile|randg|random|randsample|randtool|range|rangesearch|ranksum|rayl(?:cdf|fit|inv|pdf|rnd|stat)|rcoplot|refcurve|refline|regress|Regression(?:BaggedEnsemble|Ensemble|PartitionedEnsemble|PartitionedModel|Tree(?:.(?:fit|template))?)|regstats|relieff|ridge|robustdemo|robustfit|rotatefactors|rowexch|rsmdemo|rstool|runstest|sampsizepwr|scatterhist|sequentialfs|signrank|signtest|silhouette|skewness|slicesample|sobolset|squareform|statget|statset|stepwise|stepwisefit|surfht|tabulate|tblread|tblwrite|tcdf|tdfread|tiedrank|tinv|tpdf|TreeBagger|treedisp|treefit|treeprune|treetest|treeval|trimmean|trnd|tstat|ttest|ttest2|unid(?:cdf|inv|pdf|rnd|stat)|unif(?:cdf|inv|it|pdf|rnd|stat)|vartest(?:2|n)?|wbl(?:cdf|fit|inv|like|pdf|rnd|stat)|wblplot|wishrnd|x2fx|xptread|zscore|ztest)\b/,
+a],["fun_tbx",/^\b(?:adapthisteq|analyze75info|analyze75read|applycform|applylut|axes2pix|bestblk|blockproc|bwarea|bwareaopen|bwboundaries|bwconncomp|bwconvhull|bwdist|bwdistgeodesic|bweuler|bwhitmiss|bwlabel|bwlabeln|bwmorph|bwpack|bwperim|bwselect|bwtraceboundary|bwulterode|bwunpack|checkerboard|col2im|colfilt|conndef|convmtx2|corner|cornermetric|corr2|cp2tform|cpcorr|cpselect|cpstruct2pairs|dct2|dctmtx|deconvblind|deconvlucy|deconvreg|deconvwnr|decorrstretch|demosaic|dicom(?:anon|dict|info|lookup|read|uid|write)|edge|edgetaper|entropy|entropyfilt|fan2para|fanbeam|findbounds|fliptform|freqz2|fsamp2|fspecial|ftrans2|fwind1|fwind2|getheight|getimage|getimagemodel|getline|getneighbors|getnhood|getpts|getrangefromclass|getrect|getsequence|gray2ind|graycomatrix|graycoprops|graydist|grayslice|graythresh|hdrread|hdrwrite|histeq|hough|houghlines|houghpeaks|iccfind|iccread|iccroot|iccwrite|idct2|ifanbeam|im2bw|im2col|im2double|im2int16|im2java2d|im2single|im2uint16|im2uint8|imabsdiff|imadd|imadjust|ImageAdapter|imageinfo|imagemodel|imapplymatrix|imattributes|imbothat|imclearborder|imclose|imcolormaptool|imcomplement|imcontour|imcontrast|imcrop|imdilate|imdisplayrange|imdistline|imdivide|imellipse|imerode|imextendedmax|imextendedmin|imfill|imfilter|imfindcircles|imfreehand|imfuse|imgca|imgcf|imgetfile|imhandles|imhist|imhmax|imhmin|imimposemin|imlincomb|imline|immagbox|immovie|immultiply|imnoise|imopen|imoverview|imoverviewpanel|impixel|impixelinfo|impixelinfoval|impixelregion|impixelregionpanel|implay|impoint|impoly|impositionrect|improfile|imputfile|impyramid|imreconstruct|imrect|imregconfig|imregionalmax|imregionalmin|imregister|imresize|imroi|imrotate|imsave|imscrollpanel|imshow|imshowpair|imsubtract|imtool|imtophat|imtransform|imview|ind2gray|ind2rgb|interfileinfo|interfileread|intlut|ippl|iptaddcallback|iptcheckconn|iptcheckhandle|iptcheckinput|iptcheckmap|iptchecknargin|iptcheckstrs|iptdemos|iptgetapi|iptGetPointerBehavior|iptgetpref|ipticondir|iptnum2ordinal|iptPointerManager|iptprefs|iptremovecallback|iptSetPointerBehavior|iptsetpref|iptwindowalign|iradon|isbw|isflat|isgray|isicc|isind|isnitf|isrgb|isrset|lab2double|lab2uint16|lab2uint8|label2rgb|labelmatrix|makecform|makeConstrainToRectFcn|makehdr|makelut|makeresampler|maketform|mat2gray|mean2|medfilt2|montage|nitfinfo|nitfread|nlfilter|normxcorr2|ntsc2rgb|openrset|ordfilt2|otf2psf|padarray|para2fan|phantom|poly2mask|psf2otf|qtdecomp|qtgetblk|qtsetblk|radon|rangefilt|reflect|regionprops|registration.metric.(?:MattesMutualInformation|MeanSquares)|registration.optimizer.(?:OnePlusOneEvolutionary|RegularStepGradientDescent)|rgb2gray|rgb2ntsc|rgb2ycbcr|roicolor|roifill|roifilt2|roipoly|rsetwrite|std2|stdfilt|strel|stretchlim|subimage|tformarray|tformfwd|tforminv|tonemap|translate|truesize|uintlut|viscircles|warp|watershed|whitepoint|wiener2|xyz2double|xyz2uint16|ycbcr2rgb)\b/,
+a],["fun_tbx",/^\b(?:bintprog|color|fgoalattain|fminbnd|fmincon|fminimax|fminsearch|fminunc|fseminf|fsolve|fzero|fzmult|gangstr|ktrlink|linprog|lsqcurvefit|lsqlin|lsqnonlin|lsqnonneg|optimget|optimset|optimtool|quadprog)\b/,a],["ident",/^[A-Za-z]\w*(?:\.[A-Za-z]\w*)*/,a]]),["matlab-identifiers"]);b.registerLangHandler(b.createSimpleLexer([],e),["matlab-operators"]);b.registerLangHandler(b.createSimpleLexer(c,d),["matlab"]);
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-ml.js b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-ml.js
new file mode 100644
index 0000000..8ed2b0c
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-ml.js
@@ -0,0 +1,2 @@
+PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r \u00a0"],["com",/^#(?:if[\t\n\r \xa0]+(?:[$_a-z][\w']*|``[^\t\n\r`]*(?:``|$))|else|endif|light)/i,null,"#"],["str",/^(?:"(?:[^"\\]|\\[\S\s])*(?:"|$)|'(?:[^'\\]|\\[\S\s])(?:'|$))/,null,"\"'"]],[["com",/^(?:\/\/[^\n\r]*|\(\*[\S\s]*?\*\))/],["kwd",/^(?:abstract|and|as|assert|begin|class|default|delegate|do|done|downcast|downto|elif|else|end|exception|extern|false|finally|for|fun|function|if|in|inherit|inline|interface|internal|lazy|let|match|member|module|mutable|namespace|new|null|of|open|or|override|private|public|rec|return|static|struct|then|to|true|try|type|upcast|use|val|void|when|while|with|yield|asr|land|lor|lsl|lsr|lxor|mod|sig|atomic|break|checked|component|const|constraint|constructor|continue|eager|event|external|fixed|functor|global|include|method|mixin|object|parallel|process|protected|pure|sealed|trait|virtual|volatile)\b/],
+["lit",/^[+-]?(?:0x[\da-f]+|(?:\.\d+|\d+(?:\.\d*)?)(?:e[+-]?\d+)?)/i],["pln",/^(?:[_a-z][\w']*[!#?]?|``[^\t\n\r`]*(?:``|$))/i],["pun",/^[^\w\t\n\r "'\xa0]+/]]),["fs","ml"]);
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-mumps.js b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-mumps.js
new file mode 100644
index 0000000..8a6b3fd
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-mumps.js
@@ -0,0 +1,2 @@
+PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r \u00a0"],["str",/^"(?:[^"]|\\.)*"/,null,'"']],[["com",/^;[^\n\r]*/,null,";"],["dec",/^\$(?:d|device|ec|ecode|es|estack|et|etrap|h|horolog|i|io|j|job|k|key|p|principal|q|quit|st|stack|s|storage|sy|system|t|test|tl|tlevel|tr|trestart|x|y|z[a-z]*|a|ascii|c|char|d|data|e|extract|f|find|fn|fnumber|g|get|j|justify|l|length|na|name|o|order|p|piece|ql|qlength|qs|qsubscript|q|query|r|random|re|reverse|s|select|st|stack|t|text|tr|translate|nan)\b/i,
+null],["kwd",/^(?:[^$]b|break|c|close|d|do|e|else|f|for|g|goto|h|halt|h|hang|i|if|j|job|k|kill|l|lock|m|merge|n|new|o|open|q|quit|r|read|s|set|tc|tcommit|tre|trestart|tro|trollback|ts|tstart|u|use|v|view|w|write|x|xecute)\b/i,null],["lit",/^[+-]?(?:\.\d+|\d+(?:\.\d*)?)(?:e[+-]?\d+)?/i],["pln",/^[a-z][^\W_]*/i],["pun",/^[^\w\t\n\r"$%;^\xa0]|_/]]),["mumps"]);
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-n.js b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-n.js
new file mode 100644
index 0000000..27812a5
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-n.js
@@ -0,0 +1,4 @@
+var a=null;
+PR.registerLangHandler(PR.createSimpleLexer([["str",/^(?:'(?:[^\n\r'\\]|\\.)*'|"(?:[^\n\r"\\]|\\.)*(?:"|$))/,a,'"'],["com",/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\n\r]*)/,a,"#"],["pln",/^\s+/,a," \r\n\t\u00a0"]],[["str",/^@"(?:[^"]|"")*(?:"|$)/,a],["str",/^<#[^#>]*(?:#>|$)/,a],["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,a],["com",/^\/\/[^\n\r]*/,a],["com",/^\/\*[\S\s]*?(?:\*\/|$)/,
+a],["kwd",/^(?:abstract|and|as|base|catch|class|def|delegate|enum|event|extern|false|finally|fun|implements|interface|internal|is|macro|match|matches|module|mutable|namespace|new|null|out|override|params|partial|private|protected|public|ref|sealed|static|struct|syntax|this|throw|true|try|type|typeof|using|variant|virtual|volatile|when|where|with|assert|assert2|async|break|checked|continue|do|else|ensures|for|foreach|if|late|lock|new|nolate|otherwise|regexp|repeat|requires|return|surroundwith|unchecked|unless|using|while|yield)\b/,
+a],["typ",/^(?:array|bool|byte|char|decimal|double|float|int|list|long|object|sbyte|short|string|ulong|uint|ufloat|ulong|ushort|void)\b/,a],["lit",/^@[$_a-z][\w$@]*/i,a],["typ",/^@[A-Z]+[a-z][\w$@]*/,a],["pln",/^'?[$_a-z][\w$@]*/i,a],["lit",/^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i,a,"0123456789"],["pun",/^.[^\s\w"-$'./@`]*/,a]]),["n","nemerle"]);
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-pascal.js b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-pascal.js
new file mode 100644
index 0000000..8435fad
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-pascal.js
@@ -0,0 +1,3 @@
+var a=null;
+PR.registerLangHandler(PR.createSimpleLexer([["str",/^'(?:[^\n\r'\\]|\\.)*(?:'|$)/,a,"'"],["pln",/^\s+/,a," \r\n\t\u00a0"]],[["com",/^\(\*[\S\s]*?(?:\*\)|$)|^{[\S\s]*?(?:}|$)/,a],["kwd",/^(?:absolute|and|array|asm|assembler|begin|case|const|constructor|destructor|div|do|downto|else|end|external|for|forward|function|goto|if|implementation|in|inline|interface|interrupt|label|mod|not|object|of|or|packed|procedure|program|record|repeat|set|shl|shr|then|to|type|unit|until|uses|var|virtual|while|with|xor)\b/i,a],
+["lit",/^(?:true|false|self|nil)/i,a],["pln",/^[a-z][^\W_]*/i,a],["lit",/^(?:\$[\da-f]+|(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?)/i,a,"0123456789"],["pun",/^.[^\s\w$'./@]*/,a]]),["pascal"]);
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-proto.js b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-proto.js
new file mode 100644
index 0000000..f006ad8
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-proto.js
@@ -0,0 +1 @@
+PR.registerLangHandler(PR.sourceDecorator({keywords:"bytes,default,double,enum,extend,extensions,false,group,import,max,message,option,optional,package,repeated,required,returns,rpc,service,syntax,to,true",types:/^(bool|(double|s?fixed|[su]?int)(32|64)|float|string)\b/,cStyleComments:!0}),["proto"]);
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-r.js b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-r.js
new file mode 100644
index 0000000..99af8f8
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-r.js
@@ -0,0 +1,2 @@
+PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r \u00a0"],["str",/^"(?:[^"\\]|\\[\S\s])*(?:"|$)/,null,'"'],["str",/^'(?:[^'\\]|\\[\S\s])*(?:'|$)/,null,"'"]],[["com",/^#.*/],["kwd",/^(?:if|else|for|while|repeat|in|next|break|return|switch|function)(?![\w.])/],["lit",/^0[Xx][\dA-Fa-f]+([Pp]\d+)?[Li]?/],["lit",/^[+-]?(\d+(\.\d+)?|\.\d+)([Ee][+-]?\d+)?[Li]?/],["lit",/^(?:NULL|NA(?:_(?:integer|real|complex|character)_)?|Inf|TRUE|FALSE|NaN|\.\.(?:\.|\d+))(?![\w.])/],
+["pun",/^(?:<<?-|->>?|-|==|<=|>=|<|>|&&?|!=|\|\|?|[!*+/^]|%.*?%|[$=@~]|:{1,3}|[(),;?[\]{}])/],["pln",/^(?:[A-Za-z]+[\w.]*|\.[^\W\d][\w.]*)(?![\w.])/],["str",/^`.+`/]]),["r","s","R","S","Splus"]);
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-rd.js b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-rd.js
new file mode 100644
index 0000000..7a7e43f
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-rd.js
@@ -0,0 +1 @@
+PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r \u00a0"],["com",/^%[^\n\r]*/,null,"%"]],[["lit",/^\\(?:cr|l?dots|R|tab)\b/],["kwd",/^\\[@-Za-z]+/],["kwd",/^#(?:ifn?def|endif)/],["pln",/^\\[{}]/],["pun",/^[()[\]{}]+/]]),["Rd","rd"]);
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-scala.js b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-scala.js
new file mode 100644
index 0000000..3f97dba
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-scala.js
@@ -0,0 +1,2 @@
+PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r \u00a0"],["str",/^"(?:""(?:""?(?!")|[^"\\]|\\.)*"{0,3}|(?:[^\n\r"\\]|\\.)*"?)/,null,'"'],["lit",/^`(?:[^\n\r\\`]|\\.)*`?/,null,"`"],["pun",/^[!#%&(--:-@[-^{-~]+/,null,"!#%&()*+,-:;<=>?@[\\]^{|}~"]],[["str",/^'(?:[^\n\r'\\]|\\(?:'|[^\n\r']+))'/],["lit",/^'[$A-Z_a-z][\w$]*(?![\w$'])/],["kwd",/^(?:abstract|case|catch|class|def|do|else|extends|final|finally|for|forSome|if|implicit|import|lazy|match|new|object|override|package|private|protected|requires|return|sealed|super|throw|trait|try|type|val|var|while|with|yield)\b/],
+["lit",/^(?:true|false|null|this)\b/],["lit",/^(?:0(?:[0-7]+|x[\da-f]+)l?|(?:0|[1-9]\d*)(?:(?:\.\d+)?(?:e[+-]?\d+)?f?|l?)|\\.\d+(?:e[+-]?\d+)?f?)/i],["typ",/^[$_]*[A-Z][\d$A-Z_]*[a-z][\w$]*/],["pln",/^[$A-Z_a-z][\w$]*/],["com",/^\/(?:\/.*|\*(?:\/|\**[^*/])*(?:\*+\/?)?)/],["pun",/^(?:\.+|\/)/]]),["scala"]);
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-sql.js b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-sql.js
new file mode 100644
index 0000000..8ec4280
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-sql.js
@@ -0,0 +1,2 @@
+PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r \u00a0"],["str",/^(?:"(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*')/,null,"\"'"]],[["com",/^(?:--[^\n\r]*|\/\*[\S\s]*?(?:\*\/|$))/],["kwd",/^(?:add|all|alter|and|any|apply|as|asc|authorization|backup|begin|between|break|browse|bulk|by|cascade|case|check|checkpoint|close|clustered|coalesce|collate|column|commit|compute|connect|constraint|contains|containstable|continue|convert|create|cross|current|current_date|current_time|current_timestamp|current_user|cursor|database|dbcc|deallocate|declare|default|delete|deny|desc|disk|distinct|distributed|double|drop|dummy|dump|else|end|errlvl|escape|except|exec|execute|exists|exit|fetch|file|fillfactor|following|for|foreign|freetext|freetexttable|from|full|function|goto|grant|group|having|holdlock|identity|identitycol|identity_insert|if|in|index|inner|insert|intersect|into|is|join|key|kill|left|like|lineno|load|match|matched|merge|natural|national|nocheck|nonclustered|nocycle|not|null|nullif|of|off|offsets|on|open|opendatasource|openquery|openrowset|openxml|option|or|order|outer|over|partition|percent|pivot|plan|preceding|precision|primary|print|proc|procedure|public|raiserror|read|readtext|reconfigure|references|replication|restore|restrict|return|revoke|right|rollback|rowcount|rowguidcol|rows?|rule|save|schema|select|session_user|set|setuser|shutdown|some|start|statistics|system_user|table|textsize|then|to|top|tran|transaction|trigger|truncate|tsequal|unbounded|union|unique|unpivot|update|updatetext|use|user|using|values|varying|view|waitfor|when|where|while|with|within|writetext|xml)(?=[^\w-]|$)/i,
+null],["lit",/^[+-]?(?:0x[\da-f]+|(?:\.\d+|\d+(?:\.\d*)?)(?:e[+-]?\d+)?)/i],["pln",/^[_a-z][\w-]*/i],["pun",/^[^\w\t\n\r "'\xa0][^\w\t\n\r "'+\xa0-]*/]]),["sql"]);
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-tcl.js b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-tcl.js
new file mode 100644
index 0000000..490f562
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-tcl.js
@@ -0,0 +1,3 @@
+var a=null;
+PR.registerLangHandler(PR.createSimpleLexer([["opn",/^{+/,a,"{"],["clo",/^}+/,a,"}"],["com",/^#[^\n\r]*/,a,"#"],["pln",/^[\t\n\r \xa0]+/,a,"\t\n\r \u00a0"],["str",/^"(?:[^"\\]|\\[\S\s])*(?:"|$)/,a,'"']],[["kwd",/^(?:after|append|apply|array|break|case|catch|continue|error|eval|exec|exit|expr|for|foreach|if|incr|info|proc|return|set|switch|trace|uplevel|upvar|while)\b/,a],["lit",/^[+-]?(?:[#0]x[\da-f]+|\d+\/\d+|(?:\.\d+|\d+(?:\.\d*)?)(?:[de][+-]?\d+)?)/i],["lit",
+/^'(?:-*(?:\w|\\[!-~])(?:[\w-]*|\\[!-~])[!=?]?)?/],["pln",/^-*(?:[_a-z]|\\[!-~])(?:[\w-]*|\\[!-~])[!=?]?/i],["pun",/^[^\w\t\n\r "'-);\\\xa0]+/]]),["tcl"]);
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-tex.js b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-tex.js
new file mode 100644
index 0000000..dcfdadd
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-tex.js
@@ -0,0 +1 @@
+PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r \u00a0"],["com",/^%[^\n\r]*/,null,"%"]],[["kwd",/^\\[@-Za-z]+/],["kwd",/^\\./],["typ",/^[$&]/],["lit",/[+-]?(?:\.\d+|\d+(?:\.\d*)?)(cm|em|ex|in|pc|pt|bp|mm)/i],["pun",/^[()=[\]{}]+/]]),["latex","tex"]);
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-vb.js b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-vb.js
new file mode 100644
index 0000000..ddde464
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-vb.js
@@ -0,0 +1,2 @@
+PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0\u2028\u2029]+/,null,"\t\n\r \u00a0\u2028\u2029"],["str",/^(?:["\u201c\u201d](?:[^"\u201c\u201d]|["\u201c\u201d]{2})(?:["\u201c\u201d]c|$)|["\u201c\u201d](?:[^"\u201c\u201d]|["\u201c\u201d]{2})*(?:["\u201c\u201d]|$))/i,null,'"\u201c\u201d'],["com",/^['\u2018\u2019](?:_(?:\r\n?|[^\r]?)|[^\n\r_\u2028\u2029])*/,null,"'\u2018\u2019"]],[["kwd",/^(?:addhandler|addressof|alias|and|andalso|ansi|as|assembly|auto|boolean|byref|byte|byval|call|case|catch|cbool|cbyte|cchar|cdate|cdbl|cdec|char|cint|class|clng|cobj|const|cshort|csng|cstr|ctype|date|decimal|declare|default|delegate|dim|directcast|do|double|each|else|elseif|end|endif|enum|erase|error|event|exit|finally|for|friend|function|get|gettype|gosub|goto|handles|if|implements|imports|in|inherits|integer|interface|is|let|lib|like|long|loop|me|mod|module|mustinherit|mustoverride|mybase|myclass|namespace|new|next|not|notinheritable|notoverridable|object|on|option|optional|or|orelse|overloads|overridable|overrides|paramarray|preserve|private|property|protected|public|raiseevent|readonly|redim|removehandler|resume|return|select|set|shadows|shared|short|single|static|step|stop|string|structure|sub|synclock|then|throw|to|try|typeof|unicode|until|variant|wend|when|while|with|withevents|writeonly|xor|endif|gosub|let|variant|wend)\b/i,
+null],["com",/^rem\b.*/i],["lit",/^(?:true\b|false\b|nothing\b|\d+(?:e[+-]?\d+[dfr]?|[dfilrs])?|(?:&h[\da-f]+|&o[0-7]+)[ils]?|\d*\.\d+(?:e[+-]?\d+)?[dfr]?|#\s+(?:\d+[/-]\d+[/-]\d+(?:\s+\d+:\d+(?::\d+)?(\s*(?:am|pm))?)?|\d+:\d+(?::\d+)?(\s*(?:am|pm))?)\s+#)/i],["pln",/^(?:(?:[a-z]|_\w)\w*(?:\[[!#%&@]+])?|\[(?:[a-z]|_\w)\w*])/i],["pun",/^[^\w\t\n\r "'[\]\xa0\u2018\u2019\u201c\u201d\u2028\u2029]+/],["pun",/^(?:\[|])/]]),["vb","vbs"]);
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-vhdl.js b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-vhdl.js
new file mode 100644
index 0000000..51f3017
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-vhdl.js
@@ -0,0 +1,3 @@
+PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r \u00a0"]],[["str",/^(?:[box]?"(?:[^"]|"")*"|'.')/i],["com",/^--[^\n\r]*/],["kwd",/^(?:abs|access|after|alias|all|and|architecture|array|assert|attribute|begin|block|body|buffer|bus|case|component|configuration|constant|disconnect|downto|else|elsif|end|entity|exit|file|for|function|generate|generic|group|guarded|if|impure|in|inertial|inout|is|label|library|linkage|literal|loop|map|mod|nand|new|next|nor|not|null|of|on|open|or|others|out|package|port|postponed|procedure|process|pure|range|record|register|reject|rem|report|return|rol|ror|select|severity|shared|signal|sla|sll|sra|srl|subtype|then|to|transport|type|unaffected|units|until|use|variable|wait|when|while|with|xnor|xor)(?=[^\w-]|$)/i,
+null],["typ",/^(?:bit|bit_vector|character|boolean|integer|real|time|string|severity_level|positive|natural|signed|unsigned|line|text|std_u?logic(?:_vector)?)(?=[^\w-]|$)/i,null],["typ",/^'(?:active|ascending|base|delayed|driving|driving_value|event|high|image|instance_name|last_active|last_event|last_value|left|leftof|length|low|path_name|pos|pred|quiet|range|reverse_range|right|rightof|simple_name|stable|succ|transaction|val|value)(?=[^\w-]|$)/i,null],["lit",/^\d+(?:_\d+)*(?:#[\w.\\]+#(?:[+-]?\d+(?:_\d+)*)?|(?:\.\d+(?:_\d+)*)?(?:e[+-]?\d+(?:_\d+)*)?)/i],
+["pln",/^(?:[a-z]\w*|\\[^\\]*\\)/i],["pun",/^[^\w\t\n\r "'\xa0][^\w\t\n\r "'\xa0-]*/]]),["vhdl","vhd"]);
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-wiki.js b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-wiki.js
new file mode 100644
index 0000000..96c1e34
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-wiki.js
@@ -0,0 +1,2 @@
+PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\d\t a-gi-z\xa0]+/,null,"\t \u00a0abcdefgijklmnopqrstuvwxyz0123456789"],["pun",/^[*=[\]^~]+/,null,"=*~^[]"]],[["lang-wiki.meta",/(?:^^|\r\n?|\n)(#[a-z]+)\b/],["lit",/^[A-Z][a-z][\da-z]+[A-Z][a-z][^\W_]+\b/],["lang-",/^{{{([\S\s]+?)}}}/],["lang-",/^`([^\n\r`]+)`/],["str",/^https?:\/\/[^\s#/?]*(?:\/[^\s#?]*)?(?:\?[^\s#]*)?(?:#\S*)?/i],["pln",/^(?:\r\n|[\S\s])[^\n\r#*=A-[^`h{~]*/]]),["wiki"]);
+PR.registerLangHandler(PR.createSimpleLexer([["kwd",/^#[a-z]+/i,null,"#"]],[]),["wiki.meta"]);
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-xq.js b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-xq.js
new file mode 100644
index 0000000..e323ae3
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-xq.js
@@ -0,0 +1,3 @@
+PR.registerLangHandler(PR.createSimpleLexer([["var pln",/^\$[\w-]+/,null,"$"]],[["pln",/^[\s=][<>][\s=]/],["lit",/^@[\w-]+/],["tag",/^<\/?[a-z](?:[\w-.:]*\w)?|\/?>$/i],["com",/^\(:[\S\s]*?:\)/],["pln",/^[(),/;[\]{}]$/],["str",/^(?:"(?:[^"\\{]|\\[\S\s])*(?:"|$)|'(?:[^'\\{]|\\[\S\s])*(?:'|$))/,null,"\"'"],["kwd",/^(?:xquery|where|version|variable|union|typeswitch|treat|to|then|text|stable|sortby|some|self|schema|satisfies|returns|return|ref|processing-instruction|preceding-sibling|preceding|precedes|parent|only|of|node|namespace|module|let|item|intersect|instance|in|import|if|function|for|follows|following-sibling|following|external|except|every|else|element|descending|descendant-or-self|descendant|define|default|declare|comment|child|cast|case|before|attribute|assert|ascending|as|ancestor-or-self|ancestor|after|eq|order|by|or|and|schema-element|document-node|node|at)\b/],
+["typ",/^(?:xs:yearMonthDuration|xs:unsignedLong|xs:time|xs:string|xs:short|xs:QName|xs:Name|xs:long|xs:integer|xs:int|xs:gYearMonth|xs:gYear|xs:gMonthDay|xs:gDay|xs:float|xs:duration|xs:double|xs:decimal|xs:dayTimeDuration|xs:dateTime|xs:date|xs:byte|xs:boolean|xs:anyURI|xf:yearMonthDuration)\b/,null],["fun pln",/^(?:xp:dereference|xinc:node-expand|xinc:link-references|xinc:link-expand|xhtml:restructure|xhtml:clean|xhtml:add-lists|xdmp:zip-manifest|xdmp:zip-get|xdmp:zip-create|xdmp:xquery-version|xdmp:word-convert|xdmp:with-namespaces|xdmp:version|xdmp:value|xdmp:user-roles|xdmp:user-last-login|xdmp:user|xdmp:url-encode|xdmp:url-decode|xdmp:uri-is-file|xdmp:uri-format|xdmp:uri-content-type|xdmp:unquote|xdmp:unpath|xdmp:triggers-database|xdmp:trace|xdmp:to-json|xdmp:tidy|xdmp:subbinary|xdmp:strftime|xdmp:spawn-in|xdmp:spawn|xdmp:sleep|xdmp:shutdown|xdmp:set-session-field|xdmp:set-response-encoding|xdmp:set-response-content-type|xdmp:set-response-code|xdmp:set-request-time-limit|xdmp:set|xdmp:servers|xdmp:server-status|xdmp:server-name|xdmp:server|xdmp:security-database|xdmp:security-assert|xdmp:schema-database|xdmp:save|xdmp:role-roles|xdmp:role|xdmp:rethrow|xdmp:restart|xdmp:request-timestamp|xdmp:request-status|xdmp:request-cancel|xdmp:request|xdmp:redirect-response|xdmp:random|xdmp:quote|xdmp:query-trace|xdmp:query-meters|xdmp:product-edition|xdmp:privilege-roles|xdmp:privilege|xdmp:pretty-print|xdmp:powerpoint-convert|xdmp:platform|xdmp:permission|xdmp:pdf-convert|xdmp:path|xdmp:octal-to-integer|xdmp:node-uri|xdmp:node-replace|xdmp:node-kind|xdmp:node-insert-child|xdmp:node-insert-before|xdmp:node-insert-after|xdmp:node-delete|xdmp:node-database|xdmp:mul64|xdmp:modules-root|xdmp:modules-database|xdmp:merging|xdmp:merge-cancel|xdmp:merge|xdmp:md5|xdmp:logout|xdmp:login|xdmp:log-level|xdmp:log|xdmp:lock-release|xdmp:lock-acquire|xdmp:load|xdmp:invoke-in|xdmp:invoke|xdmp:integer-to-octal|xdmp:integer-to-hex|xdmp:http-put|xdmp:http-post|xdmp:http-options|xdmp:http-head|xdmp:http-get|xdmp:http-delete|xdmp:hosts|xdmp:host-status|xdmp:host-name|xdmp:host|xdmp:hex-to-integer|xdmp:hash64|xdmp:hash32|xdmp:has-privilege|xdmp:groups|xdmp:group-serves|xdmp:group-servers|xdmp:group-name|xdmp:group-hosts|xdmp:group|xdmp:get-session-field-names|xdmp:get-session-field|xdmp:get-response-encoding|xdmp:get-response-code|xdmp:get-request-username|xdmp:get-request-user|xdmp:get-request-url|xdmp:get-request-protocol|xdmp:get-request-path|xdmp:get-request-method|xdmp:get-request-header-names|xdmp:get-request-header|xdmp:get-request-field-names|xdmp:get-request-field-filename|xdmp:get-request-field-content-type|xdmp:get-request-field|xdmp:get-request-client-certificate|xdmp:get-request-client-address|xdmp:get-request-body|xdmp:get-current-user|xdmp:get-current-roles|xdmp:get|xdmp:function-name|xdmp:function-module|xdmp:function|xdmp:from-json|xdmp:forests|xdmp:forest-status|xdmp:forest-restore|xdmp:forest-restart|xdmp:forest-name|xdmp:forest-delete|xdmp:forest-databases|xdmp:forest-counts|xdmp:forest-clear|xdmp:forest-backup|xdmp:forest|xdmp:filesystem-file|xdmp:filesystem-directory|xdmp:exists|xdmp:excel-convert|xdmp:eval-in|xdmp:eval|xdmp:estimate|xdmp:email|xdmp:element-content-type|xdmp:elapsed-time|xdmp:document-set-quality|xdmp:document-set-property|xdmp:document-set-properties|xdmp:document-set-permissions|xdmp:document-set-collections|xdmp:document-remove-properties|xdmp:document-remove-permissions|xdmp:document-remove-collections|xdmp:document-properties|xdmp:document-locks|xdmp:document-load|xdmp:document-insert|xdmp:document-get-quality|xdmp:document-get-properties|xdmp:document-get-permissions|xdmp:document-get-collections|xdmp:document-get|xdmp:document-forest|xdmp:document-delete|xdmp:document-add-properties|xdmp:document-add-permissions|xdmp:document-add-collections|xdmp:directory-properties|xdmp:directory-locks|xdmp:directory-delete|xdmp:directory-create|xdmp:directory|xdmp:diacritic-less|xdmp:describe|xdmp:default-permissions|xdmp:default-collections|xdmp:databases|xdmp:database-restore-validate|xdmp:database-restore-status|xdmp:database-restore-cancel|xdmp:database-restore|xdmp:database-name|xdmp:database-forests|xdmp:database-backup-validate|xdmp:database-backup-status|xdmp:database-backup-purge|xdmp:database-backup-cancel|xdmp:database-backup|xdmp:database|xdmp:collection-properties|xdmp:collection-locks|xdmp:collection-delete|xdmp:collation-canonical-uri|xdmp:castable-as|xdmp:can-grant-roles|xdmp:base64-encode|xdmp:base64-decode|xdmp:architecture|xdmp:apply|xdmp:amp-roles|xdmp:amp|xdmp:add64|xdmp:add-response-header|xdmp:access|trgr:trigger-set-recursive|trgr:trigger-set-permissions|trgr:trigger-set-name|trgr:trigger-set-module|trgr:trigger-set-event|trgr:trigger-set-description|trgr:trigger-remove-permissions|trgr:trigger-module|trgr:trigger-get-permissions|trgr:trigger-enable|trgr:trigger-disable|trgr:trigger-database-online-event|trgr:trigger-data-event|trgr:trigger-add-permissions|trgr:remove-trigger|trgr:property-content|trgr:pre-commit|trgr:post-commit|trgr:get-trigger-by-id|trgr:get-trigger|trgr:document-scope|trgr:document-content|trgr:directory-scope|trgr:create-trigger|trgr:collection-scope|trgr:any-property-content|thsr:set-entry|thsr:remove-term|thsr:remove-synonym|thsr:remove-entry|thsr:query-lookup|thsr:lookup|thsr:load|thsr:insert|thsr:expand|thsr:add-synonym|spell:suggest-detailed|spell:suggest|spell:remove-word|spell:make-dictionary|spell:load|spell:levenshtein-distance|spell:is-correct|spell:insert|spell:double-metaphone|spell:add-word|sec:users-collection|sec:user-set-roles|sec:user-set-password|sec:user-set-name|sec:user-set-description|sec:user-set-default-permissions|sec:user-set-default-collections|sec:user-remove-roles|sec:user-privileges|sec:user-get-roles|sec:user-get-description|sec:user-get-default-permissions|sec:user-get-default-collections|sec:user-doc-permissions|sec:user-doc-collections|sec:user-add-roles|sec:unprotect-collection|sec:uid-for-name|sec:set-realm|sec:security-version|sec:security-namespace|sec:security-installed|sec:security-collection|sec:roles-collection|sec:role-set-roles|sec:role-set-name|sec:role-set-description|sec:role-set-default-permissions|sec:role-set-default-collections|sec:role-remove-roles|sec:role-privileges|sec:role-get-roles|sec:role-get-description|sec:role-get-default-permissions|sec:role-get-default-collections|sec:role-doc-permissions|sec:role-doc-collections|sec:role-add-roles|sec:remove-user|sec:remove-role-from-users|sec:remove-role-from-role|sec:remove-role-from-privileges|sec:remove-role-from-amps|sec:remove-role|sec:remove-privilege|sec:remove-amp|sec:protect-collection|sec:privileges-collection|sec:privilege-set-roles|sec:privilege-set-name|sec:privilege-remove-roles|sec:privilege-get-roles|sec:privilege-add-roles|sec:priv-doc-permissions|sec:priv-doc-collections|sec:get-user-names|sec:get-unique-elem-id|sec:get-role-names|sec:get-role-ids|sec:get-privilege|sec:get-distinct-permissions|sec:get-collection|sec:get-amp|sec:create-user-with-role|sec:create-user|sec:create-role|sec:create-privilege|sec:create-amp|sec:collections-collection|sec:collection-set-permissions|sec:collection-remove-permissions|sec:collection-get-permissions|sec:collection-add-permissions|sec:check-admin|sec:amps-collection|sec:amp-set-roles|sec:amp-remove-roles|sec:amp-get-roles|sec:amp-doc-permissions|sec:amp-doc-collections|sec:amp-add-roles|search:unparse|search:suggest|search:snippet|search:search|search:resolve-nodes|search:resolve|search:remove-constraint|search:parse|search:get-default-options|search:estimate|search:check-options|prof:value|prof:reset|prof:report|prof:invoke|prof:eval|prof:enable|prof:disable|prof:allowed|ppt:clean|pki:template-set-request|pki:template-set-name|pki:template-set-key-type|pki:template-set-key-options|pki:template-set-description|pki:template-in-use|pki:template-get-version|pki:template-get-request|pki:template-get-name|pki:template-get-key-type|pki:template-get-key-options|pki:template-get-id|pki:template-get-description|pki:need-certificate|pki:is-temporary|pki:insert-trusted-certificates|pki:insert-template|pki:insert-signed-certificates|pki:insert-certificate-revocation-list|pki:get-trusted-certificate-ids|pki:get-template-ids|pki:get-template-certificate-authority|pki:get-template-by-name|pki:get-template|pki:get-pending-certificate-requests-xml|pki:get-pending-certificate-requests-pem|pki:get-pending-certificate-request|pki:get-certificates-for-template-xml|pki:get-certificates-for-template|pki:get-certificates|pki:get-certificate-xml|pki:get-certificate-pem|pki:get-certificate|pki:generate-temporary-certificate-if-necessary|pki:generate-temporary-certificate|pki:generate-template-certificate-authority|pki:generate-certificate-request|pki:delete-template|pki:delete-certificate|pki:create-template|pdf:make-toc|pdf:insert-toc-headers|pdf:get-toc|pdf:clean|p:status-transition|p:state-transition|p:remove|p:pipelines|p:insert|p:get-by-id|p:get|p:execute|p:create|p:condition|p:collection|p:action|ooxml:runs-merge|ooxml:package-uris|ooxml:package-parts-insert|ooxml:package-parts|msword:clean|mcgm:polygon|mcgm:point|mcgm:geospatial-query-from-elements|mcgm:geospatial-query|mcgm:circle|math:tanh|math:tan|math:sqrt|math:sinh|math:sin|math:pow|math:modf|math:log10|math:log|math:ldexp|math:frexp|math:fmod|math:floor|math:fabs|math:exp|math:cosh|math:cos|math:ceil|math:atan2|math:atan|math:asin|math:acos|map:put|map:map|map:keys|map:get|map:delete|map:count|map:clear|lnk:to|lnk:remove|lnk:insert|lnk:get|lnk:from|lnk:create|kml:polygon|kml:point|kml:interior-polygon|kml:geospatial-query-from-elements|kml:geospatial-query|kml:circle|kml:box|gml:polygon|gml:point|gml:interior-polygon|gml:geospatial-query-from-elements|gml:geospatial-query|gml:circle|gml:box|georss:point|georss:geospatial-query|georss:circle|geo:polygon|geo:point|geo:interior-polygon|geo:geospatial-query-from-elements|geo:geospatial-query|geo:circle|geo:box|fn:zero-or-one|fn:years-from-duration|fn:year-from-dateTime|fn:year-from-date|fn:upper-case|fn:unordered|fn:true|fn:translate|fn:trace|fn:tokenize|fn:timezone-from-time|fn:timezone-from-dateTime|fn:timezone-from-date|fn:sum|fn:subtract-dateTimes-yielding-yearMonthDuration|fn:subtract-dateTimes-yielding-dayTimeDuration|fn:substring-before|fn:substring-after|fn:substring|fn:subsequence|fn:string-to-codepoints|fn:string-pad|fn:string-length|fn:string-join|fn:string|fn:static-base-uri|fn:starts-with|fn:seconds-from-time|fn:seconds-from-duration|fn:seconds-from-dateTime|fn:round-half-to-even|fn:round|fn:root|fn:reverse|fn:resolve-uri|fn:resolve-QName|fn:replace|fn:remove|fn:QName|fn:prefix-from-QName|fn:position|fn:one-or-more|fn:number|fn:not|fn:normalize-unicode|fn:normalize-space|fn:node-name|fn:node-kind|fn:nilled|fn:namespace-uri-from-QName|fn:namespace-uri-for-prefix|fn:namespace-uri|fn:name|fn:months-from-duration|fn:month-from-dateTime|fn:month-from-date|fn:minutes-from-time|fn:minutes-from-duration|fn:minutes-from-dateTime|fn:min|fn:max|fn:matches|fn:lower-case|fn:local-name-from-QName|fn:local-name|fn:last|fn:lang|fn:iri-to-uri|fn:insert-before|fn:index-of|fn:in-scope-prefixes|fn:implicit-timezone|fn:idref|fn:id|fn:hours-from-time|fn:hours-from-duration|fn:hours-from-dateTime|fn:floor|fn:false|fn:expanded-QName|fn:exists|fn:exactly-one|fn:escape-uri|fn:escape-html-uri|fn:error|fn:ends-with|fn:encode-for-uri|fn:empty|fn:document-uri|fn:doc-available|fn:doc|fn:distinct-values|fn:distinct-nodes|fn:default-collation|fn:deep-equal|fn:days-from-duration|fn:day-from-dateTime|fn:day-from-date|fn:data|fn:current-time|fn:current-dateTime|fn:current-date|fn:count|fn:contains|fn:concat|fn:compare|fn:collection|fn:codepoints-to-string|fn:codepoint-equal|fn:ceiling|fn:boolean|fn:base-uri|fn:avg|fn:adjust-time-to-timezone|fn:adjust-dateTime-to-timezone|fn:adjust-date-to-timezone|fn:abs|feed:unsubscribe|feed:subscription|feed:subscribe|feed:request|feed:item|feed:description|excel:clean|entity:enrich|dom:set-pipelines|dom:set-permissions|dom:set-name|dom:set-evaluation-context|dom:set-domain-scope|dom:set-description|dom:remove-pipeline|dom:remove-permissions|dom:remove|dom:get|dom:evaluation-context|dom:domains|dom:domain-scope|dom:create|dom:configuration-set-restart-user|dom:configuration-set-permissions|dom:configuration-set-evaluation-context|dom:configuration-set-default-domain|dom:configuration-get|dom:configuration-create|dom:collection|dom:add-pipeline|dom:add-permissions|dls:retention-rules|dls:retention-rule-remove|dls:retention-rule-insert|dls:retention-rule|dls:purge|dls:node-expand|dls:link-references|dls:link-expand|dls:documents-query|dls:document-versions-query|dls:document-version-uri|dls:document-version-query|dls:document-version-delete|dls:document-version-as-of|dls:document-version|dls:document-update|dls:document-unmanage|dls:document-set-quality|dls:document-set-property|dls:document-set-properties|dls:document-set-permissions|dls:document-set-collections|dls:document-retention-rules|dls:document-remove-properties|dls:document-remove-permissions|dls:document-remove-collections|dls:document-purge|dls:document-manage|dls:document-is-managed|dls:document-insert-and-manage|dls:document-include-query|dls:document-history|dls:document-get-permissions|dls:document-extract-part|dls:document-delete|dls:document-checkout-status|dls:document-checkout|dls:document-checkin|dls:document-add-properties|dls:document-add-permissions|dls:document-add-collections|dls:break-checkout|dls:author-query|dls:as-of-query|dbk:convert|dbg:wait|dbg:value|dbg:stopped|dbg:stop|dbg:step|dbg:status|dbg:stack|dbg:out|dbg:next|dbg:line|dbg:invoke|dbg:function|dbg:finish|dbg:expr|dbg:eval|dbg:disconnect|dbg:detach|dbg:continue|dbg:connect|dbg:clear|dbg:breakpoints|dbg:break|dbg:attached|dbg:attach|cvt:save-converted-documents|cvt:part-uri|cvt:destination-uri|cvt:basepath|cvt:basename|cts:words|cts:word-query-weight|cts:word-query-text|cts:word-query-options|cts:word-query|cts:word-match|cts:walk|cts:uris|cts:uri-match|cts:train|cts:tokenize|cts:thresholds|cts:stem|cts:similar-query-weight|cts:similar-query-nodes|cts:similar-query|cts:shortest-distance|cts:search|cts:score|cts:reverse-query-weight|cts:reverse-query-nodes|cts:reverse-query|cts:remainder|cts:registered-query-weight|cts:registered-query-options|cts:registered-query-ids|cts:registered-query|cts:register|cts:query|cts:quality|cts:properties-query-query|cts:properties-query|cts:polygon-vertices|cts:polygon|cts:point-longitude|cts:point-latitude|cts:point|cts:or-query-queries|cts:or-query|cts:not-query-weight|cts:not-query-query|cts:not-query|cts:near-query-weight|cts:near-query-queries|cts:near-query-options|cts:near-query-distance|cts:near-query|cts:highlight|cts:geospatial-co-occurrences|cts:frequency|cts:fitness|cts:field-words|cts:field-word-query-weight|cts:field-word-query-text|cts:field-word-query-options|cts:field-word-query-field-name|cts:field-word-query|cts:field-word-match|cts:entity-highlight|cts:element-words|cts:element-word-query-weight|cts:element-word-query-text|cts:element-word-query-options|cts:element-word-query-element-name|cts:element-word-query|cts:element-word-match|cts:element-values|cts:element-value-ranges|cts:element-value-query-weight|cts:element-value-query-text|cts:element-value-query-options|cts:element-value-query-element-name|cts:element-value-query|cts:element-value-match|cts:element-value-geospatial-co-occurrences|cts:element-value-co-occurrences|cts:element-range-query-weight|cts:element-range-query-value|cts:element-range-query-options|cts:element-range-query-operator|cts:element-range-query-element-name|cts:element-range-query|cts:element-query-query|cts:element-query-element-name|cts:element-query|cts:element-pair-geospatial-values|cts:element-pair-geospatial-value-match|cts:element-pair-geospatial-query-weight|cts:element-pair-geospatial-query-region|cts:element-pair-geospatial-query-options|cts:element-pair-geospatial-query-longitude-name|cts:element-pair-geospatial-query-latitude-name|cts:element-pair-geospatial-query-element-name|cts:element-pair-geospatial-query|cts:element-pair-geospatial-boxes|cts:element-geospatial-values|cts:element-geospatial-value-match|cts:element-geospatial-query-weight|cts:element-geospatial-query-region|cts:element-geospatial-query-options|cts:element-geospatial-query-element-name|cts:element-geospatial-query|cts:element-geospatial-boxes|cts:element-child-geospatial-values|cts:element-child-geospatial-value-match|cts:element-child-geospatial-query-weight|cts:element-child-geospatial-query-region|cts:element-child-geospatial-query-options|cts:element-child-geospatial-query-element-name|cts:element-child-geospatial-query-child-name|cts:element-child-geospatial-query|cts:element-child-geospatial-boxes|cts:element-attribute-words|cts:element-attribute-word-query-weight|cts:element-attribute-word-query-text|cts:element-attribute-word-query-options|cts:element-attribute-word-query-element-name|cts:element-attribute-word-query-attribute-name|cts:element-attribute-word-query|cts:element-attribute-word-match|cts:element-attribute-values|cts:element-attribute-value-ranges|cts:element-attribute-value-query-weight|cts:element-attribute-value-query-text|cts:element-attribute-value-query-options|cts:element-attribute-value-query-element-name|cts:element-attribute-value-query-attribute-name|cts:element-attribute-value-query|cts:element-attribute-value-match|cts:element-attribute-value-geospatial-co-occurrences|cts:element-attribute-value-co-occurrences|cts:element-attribute-range-query-weight|cts:element-attribute-range-query-value|cts:element-attribute-range-query-options|cts:element-attribute-range-query-operator|cts:element-attribute-range-query-element-name|cts:element-attribute-range-query-attribute-name|cts:element-attribute-range-query|cts:element-attribute-pair-geospatial-values|cts:element-attribute-pair-geospatial-value-match|cts:element-attribute-pair-geospatial-query-weight|cts:element-attribute-pair-geospatial-query-region|cts:element-attribute-pair-geospatial-query-options|cts:element-attribute-pair-geospatial-query-longitude-name|cts:element-attribute-pair-geospatial-query-latitude-name|cts:element-attribute-pair-geospatial-query-element-name|cts:element-attribute-pair-geospatial-query|cts:element-attribute-pair-geospatial-boxes|cts:document-query-uris|cts:document-query|cts:distance|cts:directory-query-uris|cts:directory-query-depth|cts:directory-query|cts:destination|cts:deregister|cts:contains|cts:confidence|cts:collections|cts:collection-query-uris|cts:collection-query|cts:collection-match|cts:classify|cts:circle-radius|cts:circle-center|cts:circle|cts:box-west|cts:box-south|cts:box-north|cts:box-east|cts:box|cts:bearing|cts:arc-intersection|cts:and-query-queries|cts:and-query-options|cts:and-query|cts:and-not-query-positive-query|cts:and-not-query-negative-query|cts:and-not-query|css:get|css:convert|cpf:success|cpf:failure|cpf:document-set-state|cpf:document-set-processing-status|cpf:document-set-last-updated|cpf:document-set-error|cpf:document-get-state|cpf:document-get-processing-status|cpf:document-get-last-updated|cpf:document-get-error|cpf:check-transition|alert:spawn-matching-actions|alert:rule-user-id-query|alert:rule-set-user-id|alert:rule-set-query|alert:rule-set-options|alert:rule-set-name|alert:rule-set-description|alert:rule-set-action|alert:rule-remove|alert:rule-name-query|alert:rule-insert|alert:rule-id-query|alert:rule-get-user-id|alert:rule-get-query|alert:rule-get-options|alert:rule-get-name|alert:rule-get-id|alert:rule-get-description|alert:rule-get-action|alert:rule-action-query|alert:remove-triggers|alert:make-rule|alert:make-log-action|alert:make-config|alert:make-action|alert:invoke-matching-actions|alert:get-my-rules|alert:get-all-rules|alert:get-actions|alert:find-matching-rules|alert:create-triggers|alert:config-set-uri|alert:config-set-trigger-ids|alert:config-set-options|alert:config-set-name|alert:config-set-description|alert:config-set-cpf-domain-names|alert:config-set-cpf-domain-ids|alert:config-insert|alert:config-get-uri|alert:config-get-trigger-ids|alert:config-get-options|alert:config-get-name|alert:config-get-id|alert:config-get-description|alert:config-get-cpf-domain-names|alert:config-get-cpf-domain-ids|alert:config-get|alert:config-delete|alert:action-set-options|alert:action-set-name|alert:action-set-module-root|alert:action-set-module-db|alert:action-set-module|alert:action-set-description|alert:action-remove|alert:action-insert|alert:action-get-options|alert:action-get-name|alert:action-get-module-root|alert:action-get-module-db|alert:action-get-module|alert:action-get-description|zero-or-one|years-from-duration|year-from-dateTime|year-from-date|upper-case|unordered|true|translate|trace|tokenize|timezone-from-time|timezone-from-dateTime|timezone-from-date|sum|subtract-dateTimes-yielding-yearMonthDuration|subtract-dateTimes-yielding-dayTimeDuration|substring-before|substring-after|substring|subsequence|string-to-codepoints|string-pad|string-length|string-join|string|static-base-uri|starts-with|seconds-from-time|seconds-from-duration|seconds-from-dateTime|round-half-to-even|round|root|reverse|resolve-uri|resolve-QName|replace|remove|QName|prefix-from-QName|position|one-or-more|number|not|normalize-unicode|normalize-space|node-name|node-kind|nilled|namespace-uri-from-QName|namespace-uri-for-prefix|namespace-uri|name|months-from-duration|month-from-dateTime|month-from-date|minutes-from-time|minutes-from-duration|minutes-from-dateTime|min|max|matches|lower-case|local-name-from-QName|local-name|last|lang|iri-to-uri|insert-before|index-of|in-scope-prefixes|implicit-timezone|idref|id|hours-from-time|hours-from-duration|hours-from-dateTime|floor|false|expanded-QName|exists|exactly-one|escape-uri|escape-html-uri|error|ends-with|encode-for-uri|empty|document-uri|doc-available|doc|distinct-values|distinct-nodes|default-collation|deep-equal|days-from-duration|day-from-dateTime|day-from-date|data|current-time|current-dateTime|current-date|count|contains|concat|compare|collection|codepoints-to-string|codepoint-equal|ceiling|boolean|base-uri|avg|adjust-time-to-timezone|adjust-dateTime-to-timezone|adjust-date-to-timezone|abs)\b/],
+["pln",/^[\w:-]+/],["pln",/^[\t\n\r \xa0]+/]]),["xq","xquery"]);
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-yaml.js b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-yaml.js
new file mode 100644
index 0000000..c38729b
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-yaml.js
@@ -0,0 +1,2 @@
+var a=null;
+PR.registerLangHandler(PR.createSimpleLexer([["pun",/^[:>?|]+/,a,":|>?"],["dec",/^%(?:YAML|TAG)[^\n\r#]+/,a,"%"],["typ",/^&\S+/,a,"&"],["typ",/^!\S*/,a,"!"],["str",/^"(?:[^"\\]|\\.)*(?:"|$)/,a,'"'],["str",/^'(?:[^']|'')*(?:'|$)/,a,"'"],["com",/^#[^\n\r]*/,a,"#"],["pln",/^\s+/,a," \t\r\n"]],[["dec",/^(?:---|\.\.\.)(?:[\n\r]|$)/],["pun",/^-/],["kwd",/^\w+:[\n\r ]/],["pln",/^\w+/]]),["yaml","yml"]);
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/prettify.css b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/prettify.css
new file mode 100644
index 0000000..d44b3a2
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/prettify.css
@@ -0,0 +1 @@
+.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee}
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/prettify.js b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/prettify.js
new file mode 100644
index 0000000..7b99049
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/prettify.js
@@ -0,0 +1,30 @@
+!function(){var q=null;window.PR_SHOULD_USE_CONTINUATION=!0;
+(function(){function S(a){function d(e){var b=e.charCodeAt(0);if(b!==92)return b;var a=e.charAt(1);return(b=r[a])?b:"0"<=a&&a<="7"?parseInt(e.substring(1),8):a==="u"||a==="x"?parseInt(e.substring(2),16):e.charCodeAt(1)}function g(e){if(e<32)return(e<16?"\\x0":"\\x")+e.toString(16);e=String.fromCharCode(e);return e==="\\"||e==="-"||e==="]"||e==="^"?"\\"+e:e}function b(e){var b=e.substring(1,e.length-1).match(/\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\[0-3][0-7]{0,2}|\\[0-7]{1,2}|\\[\S\s]|[^\\]/g),e=[],a=
+b[0]==="^",c=["["];a&&c.push("^");for(var a=a?1:0,f=b.length;a<f;++a){var h=b[a];if(/\\[bdsw]/i.test(h))c.push(h);else{var h=d(h),l;a+2<f&&"-"===b[a+1]?(l=d(b[a+2]),a+=2):l=h;e.push([h,l]);l<65||h>122||(l<65||h>90||e.push([Math.max(65,h)|32,Math.min(l,90)|32]),l<97||h>122||e.push([Math.max(97,h)&-33,Math.min(l,122)&-33]))}}e.sort(function(e,a){return e[0]-a[0]||a[1]-e[1]});b=[];f=[];for(a=0;a<e.length;++a)h=e[a],h[0]<=f[1]+1?f[1]=Math.max(f[1],h[1]):b.push(f=h);for(a=0;a<b.length;++a)h=b[a],c.push(g(h[0])),
+h[1]>h[0]&&(h[1]+1>h[0]&&c.push("-"),c.push(g(h[1])));c.push("]");return c.join("")}function s(e){for(var a=e.source.match(/\[(?:[^\\\]]|\\[\S\s])*]|\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\\d+|\\[^\dux]|\(\?[!:=]|[()^]|[^()[\\^]+/g),c=a.length,d=[],f=0,h=0;f<c;++f){var l=a[f];l==="("?++h:"\\"===l.charAt(0)&&(l=+l.substring(1))&&(l<=h?d[l]=-1:a[f]=g(l))}for(f=1;f<d.length;++f)-1===d[f]&&(d[f]=++x);for(h=f=0;f<c;++f)l=a[f],l==="("?(++h,d[h]||(a[f]="(?:")):"\\"===l.charAt(0)&&(l=+l.substring(1))&&l<=h&&
+(a[f]="\\"+d[l]);for(f=0;f<c;++f)"^"===a[f]&&"^"!==a[f+1]&&(a[f]="");if(e.ignoreCase&&m)for(f=0;f<c;++f)l=a[f],e=l.charAt(0),l.length>=2&&e==="["?a[f]=b(l):e!=="\\"&&(a[f]=l.replace(/[A-Za-z]/g,function(a){a=a.charCodeAt(0);return"["+String.fromCharCode(a&-33,a|32)+"]"}));return a.join("")}for(var x=0,m=!1,j=!1,k=0,c=a.length;k<c;++k){var i=a[k];if(i.ignoreCase)j=!0;else if(/[a-z]/i.test(i.source.replace(/\\u[\da-f]{4}|\\x[\da-f]{2}|\\[^UXux]/gi,""))){m=!0;j=!1;break}}for(var r={b:8,t:9,n:10,v:11,
+f:12,r:13},n=[],k=0,c=a.length;k<c;++k){i=a[k];if(i.global||i.multiline)throw Error(""+i);n.push("(?:"+s(i)+")")}return RegExp(n.join("|"),j?"gi":"g")}function T(a,d){function g(a){var c=a.nodeType;if(c==1){if(!b.test(a.className)){for(c=a.firstChild;c;c=c.nextSibling)g(c);c=a.nodeName.toLowerCase();if("br"===c||"li"===c)s[j]="\n",m[j<<1]=x++,m[j++<<1|1]=a}}else if(c==3||c==4)c=a.nodeValue,c.length&&(c=d?c.replace(/\r\n?/g,"\n"):c.replace(/[\t\n\r ]+/g," "),s[j]=c,m[j<<1]=x,x+=c.length,m[j++<<1|1]=
+a)}var b=/(?:^|\s)nocode(?:\s|$)/,s=[],x=0,m=[],j=0;g(a);return{a:s.join("").replace(/\n$/,""),d:m}}function H(a,d,g,b){d&&(a={a:d,e:a},g(a),b.push.apply(b,a.g))}function U(a){for(var d=void 0,g=a.firstChild;g;g=g.nextSibling)var b=g.nodeType,d=b===1?d?a:g:b===3?V.test(g.nodeValue)?a:d:d;return d===a?void 0:d}function C(a,d){function g(a){for(var j=a.e,k=[j,"pln"],c=0,i=a.a.match(s)||[],r={},n=0,e=i.length;n<e;++n){var z=i[n],w=r[z],t=void 0,f;if(typeof w==="string")f=!1;else{var h=b[z.charAt(0)];
+if(h)t=z.match(h[1]),w=h[0];else{for(f=0;f<x;++f)if(h=d[f],t=z.match(h[1])){w=h[0];break}t||(w="pln")}if((f=w.length>=5&&"lang-"===w.substring(0,5))&&!(t&&typeof t[1]==="string"))f=!1,w="src";f||(r[z]=w)}h=c;c+=z.length;if(f){f=t[1];var l=z.indexOf(f),B=l+f.length;t[2]&&(B=z.length-t[2].length,l=B-f.length);w=w.substring(5);H(j+h,z.substring(0,l),g,k);H(j+h+l,f,I(w,f),k);H(j+h+B,z.substring(B),g,k)}else k.push(j+h,w)}a.g=k}var b={},s;(function(){for(var g=a.concat(d),j=[],k={},c=0,i=g.length;c<i;++c){var r=
+g[c],n=r[3];if(n)for(var e=n.length;--e>=0;)b[n.charAt(e)]=r;r=r[1];n=""+r;k.hasOwnProperty(n)||(j.push(r),k[n]=q)}j.push(/[\S\s]/);s=S(j)})();var x=d.length;return g}function v(a){var d=[],g=[];a.tripleQuotedStrings?d.push(["str",/^(?:'''(?:[^'\\]|\\[\S\s]|''?(?=[^']))*(?:'''|$)|"""(?:[^"\\]|\\[\S\s]|""?(?=[^"]))*(?:"""|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$))/,q,"'\""]):a.multiLineStrings?d.push(["str",/^(?:'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$)|`(?:[^\\`]|\\[\S\s])*(?:`|$))/,
+q,"'\"`"]):d.push(["str",/^(?:'(?:[^\n\r'\\]|\\.)*(?:'|$)|"(?:[^\n\r"\\]|\\.)*(?:"|$))/,q,"\"'"]);a.verbatimStrings&&g.push(["str",/^@"(?:[^"]|"")*(?:"|$)/,q]);var b=a.hashComments;b&&(a.cStyleComments?(b>1?d.push(["com",/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,q,"#"]):d.push(["com",/^#(?:(?:define|e(?:l|nd)if|else|error|ifn?def|include|line|pragma|undef|warning)\b|[^\n\r]*)/,q,"#"]),g.push(["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h(?:h|pp|\+\+)?|[a-z]\w*)>/,q])):d.push(["com",
+/^#[^\n\r]*/,q,"#"]));a.cStyleComments&&(g.push(["com",/^\/\/[^\n\r]*/,q]),g.push(["com",/^\/\*[\S\s]*?(?:\*\/|$)/,q]));if(b=a.regexLiterals){var s=(b=b>1?"":"\n\r")?".":"[\\S\\s]";g.push(["lang-regex",RegExp("^(?:^^\\.?|[+-]|[!=]=?=?|\\#|%=?|&&?=?|\\(|\\*=?|[+\\-]=|->|\\/=?|::?|<<?=?|>>?>?=?|,|;|\\?|@|\\[|~|{|\\^\\^?=?|\\|\\|?=?|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*("+("/(?=[^/*"+b+"])(?:[^/\\x5B\\x5C"+b+"]|\\x5C"+s+"|\\x5B(?:[^\\x5C\\x5D"+b+"]|\\x5C"+
+s+")*(?:\\x5D|$))+/")+")")])}(b=a.types)&&g.push(["typ",b]);b=(""+a.keywords).replace(/^ | $/g,"");b.length&&g.push(["kwd",RegExp("^(?:"+b.replace(/[\s,]+/g,"|")+")\\b"),q]);d.push(["pln",/^\s+/,q," \r\n\t\u00a0"]);b="^.[^\\s\\w.$@'\"`/\\\\]*";a.regexLiterals&&(b+="(?!s*/)");g.push(["lit",/^@[$_a-z][\w$@]*/i,q],["typ",/^(?:[@_]?[A-Z]+[a-z][\w$@]*|\w+_t\b)/,q],["pln",/^[$_a-z][\w$@]*/i,q],["lit",/^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i,q,"0123456789"],["pln",/^\\[\S\s]?/,
+q],["pun",RegExp(b),q]);return C(d,g)}function J(a,d,g){function b(a){var c=a.nodeType;if(c==1&&!x.test(a.className))if("br"===a.nodeName)s(a),a.parentNode&&a.parentNode.removeChild(a);else for(a=a.firstChild;a;a=a.nextSibling)b(a);else if((c==3||c==4)&&g){var d=a.nodeValue,i=d.match(m);if(i)c=d.substring(0,i.index),a.nodeValue=c,(d=d.substring(i.index+i[0].length))&&a.parentNode.insertBefore(j.createTextNode(d),a.nextSibling),s(a),c||a.parentNode.removeChild(a)}}function s(a){function b(a,c){var d=
+c?a.cloneNode(!1):a,e=a.parentNode;if(e){var e=b(e,1),g=a.nextSibling;e.appendChild(d);for(var i=g;i;i=g)g=i.nextSibling,e.appendChild(i)}return d}for(;!a.nextSibling;)if(a=a.parentNode,!a)return;for(var a=b(a.nextSibling,0),d;(d=a.parentNode)&&d.nodeType===1;)a=d;c.push(a)}for(var x=/(?:^|\s)nocode(?:\s|$)/,m=/\r\n?|\n/,j=a.ownerDocument,k=j.createElement("li");a.firstChild;)k.appendChild(a.firstChild);for(var c=[k],i=0;i<c.length;++i)b(c[i]);d===(d|0)&&c[0].setAttribute("value",d);var r=j.createElement("ol");
+r.className="linenums";for(var d=Math.max(0,d-1|0)||0,i=0,n=c.length;i<n;++i)k=c[i],k.className="L"+(i+d)%10,k.firstChild||k.appendChild(j.createTextNode("\u00a0")),r.appendChild(k);a.appendChild(r)}function p(a,d){for(var g=d.length;--g>=0;){var b=d[g];F.hasOwnProperty(b)?D.console&&console.warn("cannot override language handler %s",b):F[b]=a}}function I(a,d){if(!a||!F.hasOwnProperty(a))a=/^\s*</.test(d)?"default-markup":"default-code";return F[a]}function K(a){var d=a.h;try{var g=T(a.c,a.i),b=g.a;
+a.a=b;a.d=g.d;a.e=0;I(d,b)(a);var s=/\bMSIE\s(\d+)/.exec(navigator.userAgent),s=s&&+s[1]<=8,d=/\n/g,x=a.a,m=x.length,g=0,j=a.d,k=j.length,b=0,c=a.g,i=c.length,r=0;c[i]=m;var n,e;for(e=n=0;e<i;)c[e]!==c[e+2]?(c[n++]=c[e++],c[n++]=c[e++]):e+=2;i=n;for(e=n=0;e<i;){for(var p=c[e],w=c[e+1],t=e+2;t+2<=i&&c[t+1]===w;)t+=2;c[n++]=p;c[n++]=w;e=t}c.length=n;var f=a.c,h;if(f)h=f.style.display,f.style.display="none";try{for(;b<k;){var l=j[b+2]||m,B=c[r+2]||m,t=Math.min(l,B),A=j[b+1],G;if(A.nodeType!==1&&(G=x.substring(g,
+t))){s&&(G=G.replace(d,"\r"));A.nodeValue=G;var L=A.ownerDocument,o=L.createElement("span");o.className=c[r+1];var v=A.parentNode;v.replaceChild(o,A);o.appendChild(A);g<l&&(j[b+1]=A=L.createTextNode(x.substring(t,l)),v.insertBefore(A,o.nextSibling))}g=t;g>=l&&(b+=2);g>=B&&(r+=2)}}finally{if(f)f.style.display=h}}catch(u){D.console&&console.log(u&&u.stack||u)}}var D=window,y=["break,continue,do,else,for,if,return,while"],E=[[y,"auto,case,char,const,default,double,enum,extern,float,goto,inline,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"],
+"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"],M=[E,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,delegate,dynamic_cast,explicit,export,friend,generic,late_check,mutable,namespace,nullptr,property,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"],N=[E,"abstract,assert,boolean,byte,extends,final,finally,implements,import,instanceof,interface,null,native,package,strictfp,super,synchronized,throws,transient"],
+O=[N,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,internal,into,is,let,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var,virtual,where"],E=[E,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"],P=[y,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"],
+Q=[y,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"],W=[y,"as,assert,const,copy,drop,enum,extern,fail,false,fn,impl,let,log,loop,match,mod,move,mut,priv,pub,pure,ref,self,static,struct,true,trait,type,unsafe,use"],y=[y,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"],R=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)\b/,
+V=/\S/,X=v({keywords:[M,O,E,"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",P,Q,y],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),F={};p(X,["default-code"]);p(C([],[["pln",/^[^<?]+/],["dec",/^<!\w[^>]*(?:>|$)/],["com",/^<\!--[\S\s]*?(?:--\>|$)/],["lang-",/^<\?([\S\s]+?)(?:\?>|$)/],["lang-",/^<%([\S\s]+?)(?:%>|$)/],["pun",/^(?:<[%?]|[%?]>)/],["lang-",
+/^<xmp\b[^>]*>([\S\s]+?)<\/xmp\b[^>]*>/i],["lang-js",/^<script\b[^>]*>([\S\s]*?)(<\/script\b[^>]*>)/i],["lang-css",/^<style\b[^>]*>([\S\s]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),["default-markup","htm","html","mxml","xhtml","xml","xsl"]);p(C([["pln",/^\s+/,q," \t\r\n"],["atv",/^(?:"[^"]*"?|'[^']*'?)/,q,"\"'"]],[["tag",/^^<\/?[a-z](?:[\w-.:]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^\s"'>]*(?:[^\s"'/>]|\/(?=\s)))/],["pun",/^[/<->]+/],
+["lang-js",/^on\w+\s*=\s*"([^"]+)"/i],["lang-js",/^on\w+\s*=\s*'([^']+)'/i],["lang-js",/^on\w+\s*=\s*([^\s"'>]+)/i],["lang-css",/^style\s*=\s*"([^"]+)"/i],["lang-css",/^style\s*=\s*'([^']+)'/i],["lang-css",/^style\s*=\s*([^\s"'>]+)/i]]),["in.tag"]);p(C([],[["atv",/^[\S\s]+/]]),["uq.val"]);p(v({keywords:M,hashComments:!0,cStyleComments:!0,types:R}),["c","cc","cpp","cxx","cyc","m"]);p(v({keywords:"null,true,false"}),["json"]);p(v({keywords:O,hashComments:!0,cStyleComments:!0,verbatimStrings:!0,types:R}),
+["cs"]);p(v({keywords:N,cStyleComments:!0}),["java"]);p(v({keywords:y,hashComments:!0,multiLineStrings:!0}),["bash","bsh","csh","sh"]);p(v({keywords:P,hashComments:!0,multiLineStrings:!0,tripleQuotedStrings:!0}),["cv","py","python"]);p(v({keywords:"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",hashComments:!0,multiLineStrings:!0,regexLiterals:2}),["perl","pl","pm"]);p(v({keywords:Q,
+hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["rb","ruby"]);p(v({keywords:E,cStyleComments:!0,regexLiterals:!0}),["javascript","js"]);p(v({keywords:"all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,throw,true,try,unless,until,when,while,yes",hashComments:3,cStyleComments:!0,multilineStrings:!0,tripleQuotedStrings:!0,regexLiterals:!0}),["coffee"]);p(v({keywords:W,cStyleComments:!0,multilineStrings:!0}),["rc","rs","rust"]);
+p(C([],[["str",/^[\S\s]+/]]),["regex"]);var Y=D.PR={createSimpleLexer:C,registerLangHandler:p,sourceDecorator:v,PR_ATTRIB_NAME:"atn",PR_ATTRIB_VALUE:"atv",PR_COMMENT:"com",PR_DECLARATION:"dec",PR_KEYWORD:"kwd",PR_LITERAL:"lit",PR_NOCODE:"nocode",PR_PLAIN:"pln",PR_PUNCTUATION:"pun",PR_SOURCE:"src",PR_STRING:"str",PR_TAG:"tag",PR_TYPE:"typ",prettyPrintOne:D.prettyPrintOne=function(a,d,g){var b=document.createElement("div");b.innerHTML="<pre>"+a+"</pre>";b=b.firstChild;g&&J(b,g,!0);K({h:d,j:g,c:b,i:1});
+return b.innerHTML},prettyPrint:D.prettyPrint=function(a,d){function g(){for(var b=D.PR_SHOULD_USE_CONTINUATION?c.now()+250:Infinity;i<p.length&&c.now()<b;i++){for(var d=p[i],j=h,k=d;k=k.previousSibling;){var m=k.nodeType,o=(m===7||m===8)&&k.nodeValue;if(o?!/^\??prettify\b/.test(o):m!==3||/\S/.test(k.nodeValue))break;if(o){j={};o.replace(/\b(\w+)=([\w%+\-.:]+)/g,function(a,b,c){j[b]=c});break}}k=d.className;if((j!==h||e.test(k))&&!v.test(k)){m=!1;for(o=d.parentNode;o;o=o.parentNode)if(f.test(o.tagName)&&
+o.className&&e.test(o.className)){m=!0;break}if(!m){d.className+=" prettyprinted";m=j.lang;if(!m){var m=k.match(n),y;if(!m&&(y=U(d))&&t.test(y.tagName))m=y.className.match(n);m&&(m=m[1])}if(w.test(d.tagName))o=1;else var o=d.currentStyle,u=s.defaultView,o=(o=o?o.whiteSpace:u&&u.getComputedStyle?u.getComputedStyle(d,q).getPropertyValue("white-space"):0)&&"pre"===o.substring(0,3);u=j.linenums;if(!(u=u==="true"||+u))u=(u=k.match(/\blinenums\b(?::(\d+))?/))?u[1]&&u[1].length?+u[1]:!0:!1;u&&J(d,u,o);r=
+{h:m,c:d,j:u,i:o};K(r)}}}i<p.length?setTimeout(g,250):"function"===typeof a&&a()}for(var b=d||document.body,s=b.ownerDocument||document,b=[b.getElementsByTagName("pre"),b.getElementsByTagName("code"),b.getElementsByTagName("xmp")],p=[],m=0;m<b.length;++m)for(var j=0,k=b[m].length;j<k;++j)p.push(b[m][j]);var b=q,c=Date;c.now||(c={now:function(){return+new Date}});var i=0,r,n=/\blang(?:uage)?-([\w.]+)(?!\S)/,e=/\bprettyprint\b/,v=/\bprettyprinted\b/,w=/pre|xmp/i,t=/^code$/i,f=/^(?:pre|code|xmp)$/i,
+h={};g()}};typeof define==="function"&&define.amd&&define("google-code-prettify",[],function(){return Y})})();}()
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/run_prettify.js b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/run_prettify.js
new file mode 100644
index 0000000..9eb3e16
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/run_prettify.js
@@ -0,0 +1,34 @@
+!function(){var r=null;
+(function(){function X(e){function j(){try{J.doScroll("left")}catch(e){P(j,50);return}w("poll")}function w(j){if(!(j.type=="readystatechange"&&x.readyState!="complete")&&((j.type=="load"?n:x)[z](i+j.type,w,!1),!m&&(m=!0)))e.call(n,j.type||j)}var Y=x.addEventListener,m=!1,C=!0,t=Y?"addEventListener":"attachEvent",z=Y?"removeEventListener":"detachEvent",i=Y?"":"on";if(x.readyState=="complete")e.call(n,"lazy");else{if(x.createEventObject&&J.doScroll){try{C=!n.frameElement}catch(A){}C&&j()}x[t](i+"DOMContentLoaded",
+w,!1);x[t](i+"readystatechange",w,!1);n[t](i+"load",w,!1)}}function Q(){S&&X(function(){var e=K.length;$(e?function(){for(var j=0;j<e;++j)(function(e){P(function(){n.exports[K[e]].apply(n,arguments)},0)})(j)}:void 0)})}for(var n=window,P=n.setTimeout,x=document,J=x.documentElement,L=x.head||x.getElementsByTagName("head")[0]||J,z="",A=x.scripts,m=A.length;--m>=0;){var M=A[m],T=M.src.match(/^[^#?]*\/run_prettify\.js(\?[^#]*)?(?:#.*)?$/);if(T){z=T[1]||"";M.parentNode.removeChild(M);break}}var S=!0,D=
+[],N=[],K=[];z.replace(/[&?]([^&=]+)=([^&]+)/g,function(e,j,w){w=decodeURIComponent(w);j=decodeURIComponent(j);j=="autorun"?S=!/^[0fn]/i.test(w):j=="lang"?D.push(w):j=="skin"?N.push(w):j=="callback"&&K.push(w)});m=0;for(z=D.length;m<z;++m)(function(){var e=x.createElement("script");e.onload=e.onerror=e.onreadystatechange=function(){if(e&&(!e.readyState||/loaded|complete/.test(e.readyState)))e.onerror=e.onload=e.onreadystatechange=r,--R,R||P(Q,0),e.parentNode&&e.parentNode.removeChild(e),e=r};e.type=
+"text/javascript";e.src="https://google-code-prettify.googlecode.com/svn/loader/lang-"+encodeURIComponent(D[m])+".js";L.insertBefore(e,L.firstChild)})(D[m]);for(var R=D.length,A=[],m=0,z=N.length;m<z;++m)A.push("https://google-code-prettify.googlecode.com/svn/loader/skins/"+encodeURIComponent(N[m])+".css");A.push("https://google-code-prettify.googlecode.com/svn/loader/prettify.css");(function(e){function j(m){if(m!==w){var n=x.createElement("link");n.rel="stylesheet";n.type="text/css";if(m+1<w)n.error=
+n.onerror=function(){j(m+1)};n.href=e[m];L.appendChild(n)}}var w=e.length;j(0)})(A);var $=function(){window.PR_SHOULD_USE_CONTINUATION=!0;var e;(function(){function j(a){function d(f){var b=f.charCodeAt(0);if(b!==92)return b;var a=f.charAt(1);return(b=i[a])?b:"0"<=a&&a<="7"?parseInt(f.substring(1),8):a==="u"||a==="x"?parseInt(f.substring(2),16):f.charCodeAt(1)}function h(f){if(f<32)return(f<16?"\\x0":"\\x")+f.toString(16);f=String.fromCharCode(f);return f==="\\"||f==="-"||f==="]"||f==="^"?"\\"+f:
+f}function b(f){var b=f.substring(1,f.length-1).match(/\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\[0-3][0-7]{0,2}|\\[0-7]{1,2}|\\[\S\s]|[^\\]/g),f=[],a=b[0]==="^",c=["["];a&&c.push("^");for(var a=a?1:0,g=b.length;a<g;++a){var k=b[a];if(/\\[bdsw]/i.test(k))c.push(k);else{var k=d(k),o;a+2<g&&"-"===b[a+1]?(o=d(b[a+2]),a+=2):o=k;f.push([k,o]);o<65||k>122||(o<65||k>90||f.push([Math.max(65,k)|32,Math.min(o,90)|32]),o<97||k>122||f.push([Math.max(97,k)&-33,Math.min(o,122)&-33]))}}f.sort(function(f,a){return f[0]-
+a[0]||a[1]-f[1]});b=[];g=[];for(a=0;a<f.length;++a)k=f[a],k[0]<=g[1]+1?g[1]=Math.max(g[1],k[1]):b.push(g=k);for(a=0;a<b.length;++a)k=b[a],c.push(h(k[0])),k[1]>k[0]&&(k[1]+1>k[0]&&c.push("-"),c.push(h(k[1])));c.push("]");return c.join("")}function e(f){for(var a=f.source.match(/\[(?:[^\\\]]|\\[\S\s])*]|\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\\d+|\\[^\dux]|\(\?[!:=]|[()^]|[^()[\\^]+/g),c=a.length,d=[],g=0,k=0;g<c;++g){var o=a[g];o==="("?++k:"\\"===o.charAt(0)&&(o=+o.substring(1))&&(o<=k?d[o]=-1:a[g]=h(o))}for(g=
+1;g<d.length;++g)-1===d[g]&&(d[g]=++j);for(k=g=0;g<c;++g)o=a[g],o==="("?(++k,d[k]||(a[g]="(?:")):"\\"===o.charAt(0)&&(o=+o.substring(1))&&o<=k&&(a[g]="\\"+d[o]);for(g=0;g<c;++g)"^"===a[g]&&"^"!==a[g+1]&&(a[g]="");if(f.ignoreCase&&F)for(g=0;g<c;++g)o=a[g],f=o.charAt(0),o.length>=2&&f==="["?a[g]=b(o):f!=="\\"&&(a[g]=o.replace(/[A-Za-z]/g,function(a){a=a.charCodeAt(0);return"["+String.fromCharCode(a&-33,a|32)+"]"}));return a.join("")}for(var j=0,F=!1,l=!1,I=0,c=a.length;I<c;++I){var p=a[I];if(p.ignoreCase)l=
+!0;else if(/[a-z]/i.test(p.source.replace(/\\u[\da-f]{4}|\\x[\da-f]{2}|\\[^UXux]/gi,""))){F=!0;l=!1;break}}for(var i={b:8,t:9,n:10,v:11,f:12,r:13},q=[],I=0,c=a.length;I<c;++I){p=a[I];if(p.global||p.multiline)throw Error(""+p);q.push("(?:"+e(p)+")")}return RegExp(q.join("|"),l?"gi":"g")}function m(a,d){function h(a){var c=a.nodeType;if(c==1){if(!b.test(a.className)){for(c=a.firstChild;c;c=c.nextSibling)h(c);c=a.nodeName.toLowerCase();if("br"===c||"li"===c)e[l]="\n",F[l<<1]=j++,F[l++<<1|1]=a}}else if(c==
+3||c==4)c=a.nodeValue,c.length&&(c=d?c.replace(/\r\n?/g,"\n"):c.replace(/[\t\n\r ]+/g," "),e[l]=c,F[l<<1]=j,j+=c.length,F[l++<<1|1]=a)}var b=/(?:^|\s)nocode(?:\s|$)/,e=[],j=0,F=[],l=0;h(a);return{a:e.join("").replace(/\n$/,""),d:F}}function n(a,d,h,b){d&&(a={a:d,e:a},h(a),b.push.apply(b,a.g))}function x(a){for(var d=void 0,h=a.firstChild;h;h=h.nextSibling)var b=h.nodeType,d=b===1?d?a:h:b===3?S.test(h.nodeValue)?a:d:d;return d===a?void 0:d}function C(a,d){function h(a){for(var l=a.e,j=[l,"pln"],c=
+0,p=a.a.match(e)||[],m={},q=0,f=p.length;q<f;++q){var B=p[q],y=m[B],u=void 0,g;if(typeof y==="string")g=!1;else{var k=b[B.charAt(0)];if(k)u=B.match(k[1]),y=k[0];else{for(g=0;g<i;++g)if(k=d[g],u=B.match(k[1])){y=k[0];break}u||(y="pln")}if((g=y.length>=5&&"lang-"===y.substring(0,5))&&!(u&&typeof u[1]==="string"))g=!1,y="src";g||(m[B]=y)}k=c;c+=B.length;if(g){g=u[1];var o=B.indexOf(g),H=o+g.length;u[2]&&(H=B.length-u[2].length,o=H-g.length);y=y.substring(5);n(l+k,B.substring(0,o),h,j);n(l+k+o,g,A(y,
+g),j);n(l+k+H,B.substring(H),h,j)}else j.push(l+k,y)}a.g=j}var b={},e;(function(){for(var h=a.concat(d),l=[],i={},c=0,p=h.length;c<p;++c){var m=h[c],q=m[3];if(q)for(var f=q.length;--f>=0;)b[q.charAt(f)]=m;m=m[1];q=""+m;i.hasOwnProperty(q)||(l.push(m),i[q]=r)}l.push(/[\S\s]/);e=j(l)})();var i=d.length;return h}function t(a){var d=[],h=[];a.tripleQuotedStrings?d.push(["str",/^(?:'''(?:[^'\\]|\\[\S\s]|''?(?=[^']))*(?:'''|$)|"""(?:[^"\\]|\\[\S\s]|""?(?=[^"]))*(?:"""|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$))/,
+r,"'\""]):a.multiLineStrings?d.push(["str",/^(?:'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$)|`(?:[^\\`]|\\[\S\s])*(?:`|$))/,r,"'\"`"]):d.push(["str",/^(?:'(?:[^\n\r'\\]|\\.)*(?:'|$)|"(?:[^\n\r"\\]|\\.)*(?:"|$))/,r,"\"'"]);a.verbatimStrings&&h.push(["str",/^@"(?:[^"]|"")*(?:"|$)/,r]);var b=a.hashComments;b&&(a.cStyleComments?(b>1?d.push(["com",/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,r,"#"]):d.push(["com",/^#(?:(?:define|e(?:l|nd)if|else|error|ifn?def|include|line|pragma|undef|warning)\b|[^\n\r]*)/,
+r,"#"]),h.push(["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h(?:h|pp|\+\+)?|[a-z]\w*)>/,r])):d.push(["com",/^#[^\n\r]*/,r,"#"]));a.cStyleComments&&(h.push(["com",/^\/\/[^\n\r]*/,r]),h.push(["com",/^\/\*[\S\s]*?(?:\*\/|$)/,r]));if(b=a.regexLiterals){var e=(b=b>1?"":"\n\r")?".":"[\\S\\s]";h.push(["lang-regex",RegExp("^(?:^^\\.?|[+-]|[!=]=?=?|\\#|%=?|&&?=?|\\(|\\*=?|[+\\-]=|->|\\/=?|::?|<<?=?|>>?>?=?|,|;|\\?|@|\\[|~|{|\\^\\^?=?|\\|\\|?=?|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*("+
+("/(?=[^/*"+b+"])(?:[^/\\x5B\\x5C"+b+"]|\\x5C"+e+"|\\x5B(?:[^\\x5C\\x5D"+b+"]|\\x5C"+e+")*(?:\\x5D|$))+/")+")")])}(b=a.types)&&h.push(["typ",b]);b=(""+a.keywords).replace(/^ | $/g,"");b.length&&h.push(["kwd",RegExp("^(?:"+b.replace(/[\s,]+/g,"|")+")\\b"),r]);d.push(["pln",/^\s+/,r," \r\n\t\u00a0"]);b="^.[^\\s\\w.$@'\"`/\\\\]*";a.regexLiterals&&(b+="(?!s*/)");h.push(["lit",/^@[$_a-z][\w$@]*/i,r],["typ",/^(?:[@_]?[A-Z]+[a-z][\w$@]*|\w+_t\b)/,r],["pln",/^[$_a-z][\w$@]*/i,r],["lit",/^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i,
+r,"0123456789"],["pln",/^\\[\S\s]?/,r],["pun",RegExp(b),r]);return C(d,h)}function z(a,d,h){function b(a){var c=a.nodeType;if(c==1&&!j.test(a.className))if("br"===a.nodeName)e(a),a.parentNode&&a.parentNode.removeChild(a);else for(a=a.firstChild;a;a=a.nextSibling)b(a);else if((c==3||c==4)&&h){var d=a.nodeValue,i=d.match(m);if(i)c=d.substring(0,i.index),a.nodeValue=c,(d=d.substring(i.index+i[0].length))&&a.parentNode.insertBefore(l.createTextNode(d),a.nextSibling),e(a),c||a.parentNode.removeChild(a)}}
+function e(a){function b(a,c){var d=c?a.cloneNode(!1):a,f=a.parentNode;if(f){var f=b(f,1),h=a.nextSibling;f.appendChild(d);for(var e=h;e;e=h)h=e.nextSibling,f.appendChild(e)}return d}for(;!a.nextSibling;)if(a=a.parentNode,!a)return;for(var a=b(a.nextSibling,0),d;(d=a.parentNode)&&d.nodeType===1;)a=d;c.push(a)}for(var j=/(?:^|\s)nocode(?:\s|$)/,m=/\r\n?|\n/,l=a.ownerDocument,i=l.createElement("li");a.firstChild;)i.appendChild(a.firstChild);for(var c=[i],p=0;p<c.length;++p)b(c[p]);d===(d|0)&&c[0].setAttribute("value",
+d);var n=l.createElement("ol");n.className="linenums";for(var d=Math.max(0,d-1|0)||0,p=0,q=c.length;p<q;++p)i=c[p],i.className="L"+(p+d)%10,i.firstChild||i.appendChild(l.createTextNode("\u00a0")),n.appendChild(i);a.appendChild(n)}function i(a,d){for(var h=d.length;--h>=0;){var b=d[h];U.hasOwnProperty(b)?V.console&&console.warn("cannot override language handler %s",b):U[b]=a}}function A(a,d){if(!a||!U.hasOwnProperty(a))a=/^\s*</.test(d)?"default-markup":"default-code";return U[a]}function D(a){var d=
+a.h;try{var h=m(a.c,a.i),b=h.a;a.a=b;a.d=h.d;a.e=0;A(d,b)(a);var e=/\bMSIE\s(\d+)/.exec(navigator.userAgent),e=e&&+e[1]<=8,d=/\n/g,i=a.a,j=i.length,h=0,l=a.d,n=l.length,b=0,c=a.g,p=c.length,t=0;c[p]=j;var q,f;for(f=q=0;f<p;)c[f]!==c[f+2]?(c[q++]=c[f++],c[q++]=c[f++]):f+=2;p=q;for(f=q=0;f<p;){for(var x=c[f],y=c[f+1],u=f+2;u+2<=p&&c[u+1]===y;)u+=2;c[q++]=x;c[q++]=y;f=u}c.length=q;var g=a.c,k;if(g)k=g.style.display,g.style.display="none";try{for(;b<n;){var o=l[b+2]||j,H=c[t+2]||j,u=Math.min(o,H),E=l[b+
+1],W;if(E.nodeType!==1&&(W=i.substring(h,u))){e&&(W=W.replace(d,"\r"));E.nodeValue=W;var Z=E.ownerDocument,s=Z.createElement("span");s.className=c[t+1];var z=E.parentNode;z.replaceChild(s,E);s.appendChild(E);h<o&&(l[b+1]=E=Z.createTextNode(i.substring(u,o)),z.insertBefore(E,s.nextSibling))}h=u;h>=o&&(b+=2);h>=H&&(t+=2)}}finally{if(g)g.style.display=k}}catch(v){V.console&&console.log(v&&v.stack||v)}}var V=window,G=["break,continue,do,else,for,if,return,while"],O=[[G,"auto,case,char,const,default,double,enum,extern,float,goto,inline,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"],
+"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"],J=[O,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,delegate,dynamic_cast,explicit,export,friend,generic,late_check,mutable,namespace,nullptr,property,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"],K=[O,"abstract,assert,boolean,byte,extends,final,finally,implements,import,instanceof,interface,null,native,package,strictfp,super,synchronized,throws,transient"],
+L=[K,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,internal,into,is,let,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var,virtual,where"],O=[O,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"],M=[G,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"],
+N=[G,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"],R=[G,"as,assert,const,copy,drop,enum,extern,fail,false,fn,impl,let,log,loop,match,mod,move,mut,priv,pub,pure,ref,self,static,struct,true,trait,type,unsafe,use"],G=[G,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"],Q=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)\b/,
+S=/\S/,T=t({keywords:[J,L,O,"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",M,N,G],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),U={};i(T,["default-code"]);i(C([],[["pln",/^[^<?]+/],["dec",/^<!\w[^>]*(?:>|$)/],["com",/^<\!--[\S\s]*?(?:--\>|$)/],["lang-",/^<\?([\S\s]+?)(?:\?>|$)/],["lang-",/^<%([\S\s]+?)(?:%>|$)/],["pun",/^(?:<[%?]|[%?]>)/],["lang-",
+/^<xmp\b[^>]*>([\S\s]+?)<\/xmp\b[^>]*>/i],["lang-js",/^<script\b[^>]*>([\S\s]*?)(<\/script\b[^>]*>)/i],["lang-css",/^<style\b[^>]*>([\S\s]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),["default-markup","htm","html","mxml","xhtml","xml","xsl"]);i(C([["pln",/^\s+/,r," \t\r\n"],["atv",/^(?:"[^"]*"?|'[^']*'?)/,r,"\"'"]],[["tag",/^^<\/?[a-z](?:[\w-.:]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^\s"'>]*(?:[^\s"'/>]|\/(?=\s)))/],["pun",/^[/<->]+/],
+["lang-js",/^on\w+\s*=\s*"([^"]+)"/i],["lang-js",/^on\w+\s*=\s*'([^']+)'/i],["lang-js",/^on\w+\s*=\s*([^\s"'>]+)/i],["lang-css",/^style\s*=\s*"([^"]+)"/i],["lang-css",/^style\s*=\s*'([^']+)'/i],["lang-css",/^style\s*=\s*([^\s"'>]+)/i]]),["in.tag"]);i(C([],[["atv",/^[\S\s]+/]]),["uq.val"]);i(t({keywords:J,hashComments:!0,cStyleComments:!0,types:Q}),["c","cc","cpp","cxx","cyc","m"]);i(t({keywords:"null,true,false"}),["json"]);i(t({keywords:L,hashComments:!0,cStyleComments:!0,verbatimStrings:!0,types:Q}),
+["cs"]);i(t({keywords:K,cStyleComments:!0}),["java"]);i(t({keywords:G,hashComments:!0,multiLineStrings:!0}),["bash","bsh","csh","sh"]);i(t({keywords:M,hashComments:!0,multiLineStrings:!0,tripleQuotedStrings:!0}),["cv","py","python"]);i(t({keywords:"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",hashComments:!0,multiLineStrings:!0,regexLiterals:2}),["perl","pl","pm"]);i(t({keywords:N,
+hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["rb","ruby"]);i(t({keywords:O,cStyleComments:!0,regexLiterals:!0}),["javascript","js"]);i(t({keywords:"all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,throw,true,try,unless,until,when,while,yes",hashComments:3,cStyleComments:!0,multilineStrings:!0,tripleQuotedStrings:!0,regexLiterals:!0}),["coffee"]);i(t({keywords:R,cStyleComments:!0,multilineStrings:!0}),["rc","rs","rust"]);
+i(C([],[["str",/^[\S\s]+/]]),["regex"]);var X=V.PR={createSimpleLexer:C,registerLangHandler:i,sourceDecorator:t,PR_ATTRIB_NAME:"atn",PR_ATTRIB_VALUE:"atv",PR_COMMENT:"com",PR_DECLARATION:"dec",PR_KEYWORD:"kwd",PR_LITERAL:"lit",PR_NOCODE:"nocode",PR_PLAIN:"pln",PR_PUNCTUATION:"pun",PR_SOURCE:"src",PR_STRING:"str",PR_TAG:"tag",PR_TYPE:"typ",prettyPrintOne:function(a,d,e){var b=document.createElement("div");b.innerHTML="<pre>"+a+"</pre>";b=b.firstChild;e&&z(b,e,!0);D({h:d,j:e,c:b,i:1});return b.innerHTML},
+prettyPrint:e=e=function(a,d){function e(){for(var b=V.PR_SHOULD_USE_CONTINUATION?c.now()+250:Infinity;p<j.length&&c.now()<b;p++){for(var d=j[p],m=k,l=d;l=l.previousSibling;){var n=l.nodeType,s=(n===7||n===8)&&l.nodeValue;if(s?!/^\??prettify\b/.test(s):n!==3||/\S/.test(l.nodeValue))break;if(s){m={};s.replace(/\b(\w+)=([\w%+\-.:]+)/g,function(a,b,c){m[b]=c});break}}l=d.className;if((m!==k||f.test(l))&&!w.test(l)){n=!1;for(s=d.parentNode;s;s=s.parentNode)if(g.test(s.tagName)&&s.className&&f.test(s.className)){n=
+!0;break}if(!n){d.className+=" prettyprinted";n=m.lang;if(!n){var n=l.match(q),A;if(!n&&(A=x(d))&&u.test(A.tagName))n=A.className.match(q);n&&(n=n[1])}if(y.test(d.tagName))s=1;else var s=d.currentStyle,v=i.defaultView,s=(s=s?s.whiteSpace:v&&v.getComputedStyle?v.getComputedStyle(d,r).getPropertyValue("white-space"):0)&&"pre"===s.substring(0,3);v=m.linenums;if(!(v=v==="true"||+v))v=(v=l.match(/\blinenums\b(?::(\d+))?/))?v[1]&&v[1].length?+v[1]:!0:!1;v&&z(d,v,s);t={h:n,c:d,j:v,i:s};D(t)}}}p<j.length?
+P(e,250):"function"===typeof a&&a()}for(var b=d||document.body,i=b.ownerDocument||document,b=[b.getElementsByTagName("pre"),b.getElementsByTagName("code"),b.getElementsByTagName("xmp")],j=[],m=0;m<b.length;++m)for(var l=0,n=b[m].length;l<n;++l)j.push(b[m][l]);var b=r,c=Date;c.now||(c={now:function(){return+new Date}});var p=0,t,q=/\blang(?:uage)?-([\w.]+)(?!\S)/,f=/\bprettyprint\b/,w=/\bprettyprinted\b/,y=/pre|xmp/i,u=/^code$/i,g=/^(?:pre|code|xmp)$/i,k={};e()}};typeof define==="function"&&define.amd&&
+define("google-code-prettify",[],function(){return X})})();return e}();R||P(Q,0)})();}()
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/styles.scss b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/styles.scss
new file mode 100644
index 0000000..5346c0f
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/styles.scss
@@ -0,0 +1,7 @@
+@import "codelabel.scss";
+
+/* This file prefixes all rules with the theme name to avoid causing conflicts with other themes. */
+/* The actual styles should be defined in codelabel.scss */
+.codelabel {
+  @include codelabel;
+}
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/dragdrop/styles.css b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/dragdrop/styles.css
new file mode 100644
index 0000000..9e3d6b4
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/dragdrop/styles.css
@@ -0,0 +1,19 @@
+@import "../reindeer/styles.css"; 
+
+/*
+.v-horizontallayout{
+	border: 1px solid blue;	
+}
+
+.v-verticallayout{
+	border: 1px solid red;	
+}
+
+.v-absolutelayout{
+	border: 1px solid green;	
+}
+
+.v-gridlayout{
+	border: 1px solid yellow;	
+}
+*/
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/dragdrop/test.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/dragdrop/test.png
new file mode 100644
index 0000000..ba6ce2d
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/dragdrop/test.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/dragdrop/vaadock/img/button_panel_bgcolor.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/dragdrop/vaadock/img/button_panel_bgcolor.png
new file mode 100644
index 0000000..ba6ce2d
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/dragdrop/vaadock/img/button_panel_bgcolor.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/dragdrop/vaadock/img/dockzone.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/dragdrop/vaadock/img/dockzone.png
new file mode 100644
index 0000000..c3028fb
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/dragdrop/vaadock/img/dockzone.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/dragdrop/vaadock/img/save_workbench_btn.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/dragdrop/vaadock/img/save_workbench_btn.png
new file mode 100644
index 0000000..9b645ec
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/dragdrop/vaadock/img/save_workbench_btn.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/dragdrop/vaadock/img/vaadock_sprites.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/dragdrop/vaadock/img/vaadock_sprites.png
new file mode 100644
index 0000000..b2517e8
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/dragdrop/vaadock/img/vaadock_sprites.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/blank_part_label.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/blank_part_label.png
new file mode 100644
index 0000000..7dd9471
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/blank_part_label.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/blank_perspective.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/blank_perspective.png
new file mode 100644
index 0000000..7dd9471
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/blank_perspective.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/breakpoints.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/breakpoints.png
new file mode 100644
index 0000000..1deb9ea
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/breakpoints.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/check.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/check.png
new file mode 100644
index 0000000..a43a2b2
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/check.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/collapse_all.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/collapse_all.png
new file mode 100644
index 0000000..6ae6c01
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/collapse_all.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/console.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/console.png
new file mode 100644
index 0000000..f55744f
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/console.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/css.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/css.png
new file mode 100644
index 0000000..00b61e4
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/css.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/debug.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/debug.png
new file mode 100644
index 0000000..fcd5260
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/debug.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/display.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/display.png
new file mode 100644
index 0000000..a0b6f37
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/display.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/editor_area.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/editor_area.png
new file mode 100644
index 0000000..d697779
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/editor_area.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/fastview_restore.gif b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/fastview_restore.gif
new file mode 100644
index 0000000..e0010df
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/fastview_restore.gif
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/folder.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/folder.png
new file mode 100644
index 0000000..f633bb5
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/folder.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/grad-dark-bottom.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/grad-dark-bottom.png
new file mode 100644
index 0000000..3d86693
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/grad-dark-bottom.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/grad-dark-bottom2.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/grad-dark-bottom2.png
new file mode 100644
index 0000000..1bf7a55
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/grad-dark-bottom2.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/grad-dark-top2.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/grad-dark-top2.png
new file mode 100644
index 0000000..8509f46
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/grad-dark-top2.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/grad-light-left.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/grad-light-left.png
new file mode 100644
index 0000000..a6965e4
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/grad-light-left.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/grad-light-top.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/grad-light-top.png
new file mode 100644
index 0000000..d9479f1
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/grad-light-top.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/grad-light-top2.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/grad-light-top2.png
new file mode 100644
index 0000000..51ec5e6
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/grad-light-top2.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/help.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/help.png
new file mode 100644
index 0000000..8fcfb91
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/help.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/img.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/img.png
new file mode 100644
index 0000000..91a4a2b
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/img.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/java.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/java.png
new file mode 100644
index 0000000..3b59c6b
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/java.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/java_perspective_16x16.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/java_perspective_16x16.png
new file mode 100644
index 0000000..2611f2a
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/java_perspective_16x16.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/javadoc.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/javadoc.png
new file mode 100644
index 0000000..f2834c9
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/javadoc.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/junit.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/junit.png
new file mode 100644
index 0000000..7ea6c87
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/junit.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/link_to_editor.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/link_to_editor.png
new file mode 100644
index 0000000..ab61503
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/link_to_editor.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/open_perspective.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/open_perspective.png
new file mode 100644
index 0000000..20e199c
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/open_perspective.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/outline.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/outline.png
new file mode 100644
index 0000000..908eb4e
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/outline.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/package.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/package.png
new file mode 100644
index 0000000..906bdba
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/package.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/package_explorer.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/package_explorer.png
new file mode 100644
index 0000000..13ea956
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/package_explorer.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/popup_button_16x16.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/popup_button_16x16.png
new file mode 100644
index 0000000..af511de
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/popup_button_16x16.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/popup_button_17x20.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/popup_button_17x20.png
new file mode 100644
index 0000000..6288cf9
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/popup_button_17x20.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/popup_button_active_17x20.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/popup_button_active_17x20.png
new file mode 100644
index 0000000..b71d5cd
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/popup_button_active_17x20.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/popup_button_hover_17x20.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/popup_button_hover_17x20.png
new file mode 100644
index 0000000..dc7caba
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/popup_button_hover_17x20.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/project.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/project.png
new file mode 100644
index 0000000..0194704
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/project.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/restore1.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/restore1.png
new file mode 100644
index 0000000..ab77f5e
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/restore1.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/separator.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/separator.png
new file mode 100644
index 0000000..20d1cdc
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/separator.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/separator_v.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/separator_v.png
new file mode 100644
index 0000000..12df3f0
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/separator_v.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/test.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/test.png
new file mode 100644
index 0000000..ba6ce2d
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/test.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/text.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/text.png
new file mode 100644
index 0000000..4efeae9
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/text.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/toolbar_button_background_active_23x20.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/toolbar_button_background_active_23x20.png
new file mode 100644
index 0000000..18b8b0d
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/toolbar_button_background_active_23x20.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/toolbar_button_background_hover_23x20.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/toolbar_button_background_hover_23x20.png
new file mode 100644
index 0000000..931fe7d
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/toolbar_button_background_hover_23x20.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/toolbar_button_hover_gradient.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/toolbar_button_hover_gradient.png
new file mode 100644
index 0000000..23c9796
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/toolbar_button_hover_gradient.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/toolbar_button_pushed_gradient.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/toolbar_button_pushed_gradient.png
new file mode 100644
index 0000000..9316a8a
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/toolbar_button_pushed_gradient.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/toptrimbar.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/toptrimbar.png
new file mode 100644
index 0000000..a629b8f
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/toptrimbar.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/vaaclipse.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/vaaclipse.png
new file mode 100644
index 0000000..2779af1
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/vaaclipse.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/variables.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/variables.png
new file mode 100644
index 0000000..908495a
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/variables.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/xml.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/xml.png
new file mode 100644
index 0000000..2f0a698
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/xml.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/styles.css b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/styles.css
new file mode 100644
index 0000000..48f40e9
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/styles.css
@@ -0,0 +1,274 @@
+/*
+ * Perspective panel
+ */
+.v-app .perspectivepanel {
+	position: relative;
+	float: right;
+	padding-left: 10px;
+	padding-top: 6px;
+	padding-bottom: 6px;
+	margin-right: 4px;
+	border: none;
+	background-color: transparent;
+}
+
+.v-app .open_perspective_window .v-table-cell-content {
+	border: transparent;
+	padding-left: 0px;
+}
+
+/*
+* Toptrimbar
+*/
+.v-app .toptrimbar {
+	float: left;
+	padding-left: 8px;
+	
+	size: 100%;
+	
+	border-width:6px 6px 6px 6px;
+	border-image: url("img/toptrimbar.png") 6 6 6 6 stretch stretch;
+	-o-border-image: url("img/toptrimbar.png") 6 6 6 6 stretch stretch;
+	border-style:solid;
+	background-color: #d2d2d2;
+}
+
+/*
+*	trimbar
+*/
+.v-app .trimbar .content {
+	background-color: #d2d2d2;
+	size: 100%;
+}
+
+.v-app .horizontaltrimbar {
+	padding-left: 5px;
+	padding-top: 6px;
+	padding-bottom: 6px;
+}
+
+.v-app .verticaltrimbar {
+	padding-left: 4px;
+	padding-right: 4px;
+	padding-top: 5px;
+}
+
+.v-app .verticaltrimelement {
+	position: relative;
+	padding: 0px;
+	margin-top: 3px;
+	margin-bottom: 3px;
+	margin-left: 0px;
+	margin-right: 0px;
+}
+
+.v-app .horizontaltrimelement {
+	position: relative;
+	float: left;
+	padding: 0px;
+	margin-top: 0px;
+	margin-bottom: 0px;
+	margin-left: 3px;
+	margin-right: 3px;
+}
+
+.v-app .horizontalseparator {
+	position: relative;
+	float: left;
+	margin-top: 0px;
+	margin-bottom: 0px;
+	margin-left: 4px;
+	margin-right: 4px;
+	width: 2px;
+	background-image: url('img/separator.png');
+	background-position: 0px 0px;
+	background-repeat: repeat;
+}
+
+.v-app .verticalseparator {
+	position: relative;
+	float: top;
+	margin-top: 4px;
+	margin-bottom: 4px;
+	margin-left: 0px;
+	margin-right: 0px;
+	height: 2px;
+	background-image: url('img/separator_v.png');
+}
+
+/**
+ * toolbar
+ */
+.v-app .toolbar {
+	background-color: transparent;
+}
+
+.v-app .verticaltoolbarlement {
+	padding: 0px;
+	margin-top: 1px;
+	margin-bottom: 1px;
+	margin-left: 0px;
+	margin-right: 0px;
+}
+
+.v-app .horizontaltoolbarlement {
+	padding: 0px;
+	margin-top: 0px;
+	margin-bottom: 0px;
+	margin-left: 1px;
+	margin-right: 1px;
+}
+
+/*
+*toolbar button
+*/
+.v-app .v-button-vaaclipsebutton,.v-app .v-disabled.v-button-vaaclipsebutton {
+	display: block;
+	background: transparent;
+	background-image: none;
+	border: none;
+	padding: 0px;
+	border-radius: 4px;
+	height: auto;
+	width: auto;
+	margin: 2px;
+	-webkit-box-shadow: none;
+	-moz-box-shadow: none;
+}
+
+.v-app .v-button-vaaclipsebutton .v-button-wrap,.v-app .v-disabled.v-button-vaaclipsebutton .v-button-wrap {
+	background: transparent;
+	border: none;
+	padding: 0px;
+}
+
+.v-app .v-button-vaaclipsebutton .v-icon {
+	margin-left: 0px;
+	margin-top: 0px;
+	padding-top: 3px;
+	padding-bottom: 3px;
+	padding-left: 6px;
+	padding-right: 6px;
+}
+
+.v-app .v-button-pushed .v-icon, .v-app .v-button-vaaclipsebutton:focus .v-icon {
+	margin-left: 1px;
+	margin-top: 1px;
+	padding-right: 5px;
+	padding-bottom: 2px;
+}
+
+.v-app .v-disabled:focus .v-icon {
+	margin-left: 0px;
+	margin-top: 0px;
+}
+
+.v-app .toptrimbar .v-button-vaaclipsebutton .v-button-caption {
+	color: #222222;
+	font-size: 11px;
+	font-weight: bold;
+	line-height: 16px;
+	text-shadow: 0 1px 0 #FFFFFF;
+}
+
+.v-app .v-button-vaaclipsebutton:hover {
+  	box-shadow: 1px 1px 0px 0px rgba(0, 0, 0, .3) inset, 
+    -1px -1px 0px 0px rgba(0, 0, 0, .3) inset;
+    background: #d6d6d6;
+    background: -moz-linear-gradient(top, #f1f1f1 0%, #d6d6d6 50%, #c7c7c7 50%, #cfcfcf 75%, #d7d7d7 100%);
+    background: -webkit-linear-gradient(top, #f1f1f1 0%, #d6d6d6 50%, #c7c7c7 50%, #cfcfcf 75%, #d7d7d7 100%);
+    background: -webkit-gradient(top, #f1f1f1 0%, #d6d6d6 50%, #c7c7c7 50%, #cfcfcf 75%, #d7d7d7 100%);
+    background: linear-gradient(top, #f1f1f1 0%, #d6d6d6 50%, #c7c7c7 50%, #cfcfcf 75%, #d7d7d7 100%);
+    background: -o-linear-gradient(top, #f1f1f1 0%, #d6d6d6 50%, #c7c7c7 50%, #cfcfcf 75%, #d7d7d7 100%);
+    background: -ms-linear-gradient(top, #f1f1f1 0%, #d6d6d6 50%, #c7c7c7 50%, #cfcfcf 75%, #d7d7d7 100%);
+}
+
+.v-app .v-button-pushed, .v-app .v-button-vaaclipsebutton:active,.v-button-vaaclipsebutton:focus {
+  	box-shadow: 1px 1px 1px 1px rgba(0, 0, 0, .3) inset,
+    -1px -1px 0px 0px rgba(0, 0, 0, .2) inset !important;
+    background: #f0f0f0 !important;
+    background: -moz-linear-gradient(top, #b6b6b6 0%, #f0f0f0 50%, #d0d0d0 100%) !important;
+    background: -webkit-linear-gradient(top, #b6b6b6 0%, #f0f0f0 50%, #d0d0d0 100%) !important;
+    background: -webkit-gradient(top, #b6b6b6 0%, #f0f0f0 50%, #d0d0d0 100%) !important;
+    background: linear-gradient(top, #b6b6b6 0%, #f0f0f0 50%, #d0d0d0 100%) !important;
+    background: -o-linear-gradient(top, #b6b6b6 0%, #f0f0f0 50%, #d0d0d0 100%) !important;
+    background: -ms-linear-gradient(top, #b6b6b6 0%, #f0f0f0 50%, #d0d0d0 100%) !important;
+}
+
+.v-app .v-disabled:hover, .v-app .v-disabled:active,.v-disabled:focus {
+	background-image: none !important;
+	background-color: transparent !important;
+	display: block !important;
+  	box-shadow: none !important;
+}
+
+.v-app .v-button-vaaclipsebutton:active .v-button-wrap,.v-app .v-button-vaaclipsebutton:focus .v-button-wrap, .v-app .v-button-pushed .v-button-wrap {
+	background-image: none;
+}
+
+.v-app .v-button-icononly .v-button-caption {
+	display: none;
+}
+
+.v-app .v-button-icononly .v-icon {
+	margin-right: -2px;
+}
+
+.v-app .v-button-vaaclipsebutton .v-button-wrap .v-button-caption {
+	padding-right: 8px;
+}
+
+.v-app .v-button-textonly .v-button-wrap .v-button-caption {
+	padding-left: 6px;
+	padding-right: 6px;
+}
+
+.v-app .v-button-general {
+	margin: 2px;
+}
+
+.v-app .v-button-general .v-button-wrap .v-button-caption {
+	font-weight: bold;
+}
+
+/*
+ * sash widget
+ */
+.v-app .v-splitpanel-hsplitter-invisible-locked {
+	width: 0px;
+}
+
+.v-app .v-splitpanel-vsplitter-invisible-locked {
+	width: 0px;
+}
+
+.v-app .org.eclipse.osbp_vaaclipse_area {
+	background-color: transparent;
+}
+
+/*
+ * window no header
+ */
+.v-app .v-window-loading-window .v-window-outerheader {
+	height: 0;
+	margin-left: 0;
+	padding: 0;
+}
+
+.v-app .mparttoolbararea {
+	padding-right: 4px;
+	padding-top: 3px;
+	padding-bottom: 3px;
+}
+
+.v-app .mparttoolbar {
+	float: right;
+}
+
+/*
+bugfixing style for context menu addon
+*/
+.v-ie9 .close-perspective-item .ctxmenu-name {
+	margin-left: 25px;
+	margin-top: -25px;
+}
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaadock/img/restore1.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaadock/img/restore1.png
new file mode 100644
index 0000000..7419227
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaadock/img/restore1.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaadock/styles.css b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaadock/styles.css
new file mode 100644
index 0000000..9e3d6b4
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaadock/styles.css
@@ -0,0 +1,19 @@
+@import "../reindeer/styles.css"; 
+
+/*
+.v-horizontallayout{
+	border: 1px solid blue;	
+}
+
+.v-verticallayout{
+	border: 1px solid red;	
+}
+
+.v-absolutelayout{
+	border: 1px solid green;	
+}
+
+.v-gridlayout{
+	border: 1px solid yellow;	
+}
+*/
diff --git a/org.eclipse.osbp.vaaclipse.resources/about.html b/org.eclipse.osbp.vaaclipse.resources/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/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 1, 2016</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.resources/about.ini b/org.eclipse.osbp.vaaclipse.resources/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/about.ini
@@ -0,0 +1,17 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%featureText
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=
+
+# Property "appName" contains name of the application (translated)
+appName=%featureName
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+welcomePage=
diff --git a/org.eclipse.osbp.vaaclipse.resources/about.mappings b/org.eclipse.osbp.vaaclipse.resources/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/about.mappings
@@ -0,0 +1,6 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+0=qualifier
diff --git a/org.eclipse.osbp.vaaclipse.resources/about.properties b/org.eclipse.osbp.vaaclipse.resources/about.properties
new file mode 100644
index 0000000..3ed0b99
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2012, 2016 - Loetz GmbH&Co.KG (Heidelberg)
+# 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:
+#    Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.vaaclipse.resources
+
+################ blurb property ####################################
+featureText=\
+Copyright (c) 2012-2016 - Loetz GmbH&Co.KG \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+Contributors:\n\
+    Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.vaaclipse.resources/build.properties b/org.eclipse.osbp.vaaclipse.resources/build.properties
new file mode 100644
index 0000000..46c6987
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/build.properties
@@ -0,0 +1,9 @@
+source.. = src/
+output.. = target/classes/
+bin.includes = about.properties,  about.mappings,  about.ini,  about.html,  META-INF/,\
+               .,\
+               VAADIN/,\
+               epl-v10.html,\
+               license.html
+src.includes = about.properties,  about.mappings,  about.ini,  about.html,  epl-v10.html,\
+               license.html
diff --git a/org.eclipse.osbp.vaaclipse.resources/epl-v10.html b/org.eclipse.osbp.vaaclipse.resources/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/epl-v10.html
@@ -0,0 +1,259 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+  body {
+    size: 8.5in 11.0in;
+    margin: 0.25in 0.5in 0.25in 0.5in;
+    tab-interval: 0.5in;
+    }
+  p {  	
+    margin-left: auto;
+    margin-top:  0.5em;
+    margin-bottom: 0.5em;
+    }
+  p.list {
+  	margin-left: 0.5in;
+    margin-top:  0.05em;
+    margin-bottom: 0.05em;
+    }
+  </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">where such changes and/or additions to the Program
+originate from and are distributed by that particular Contributor. A
+Contribution 'originates' from a Contributor if it was added to the
+Program by such Contributor itself or anyone acting on such
+Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii)
+are not derivative works of the Program.</p>
+
+<p>"Contributor" means any person or entity that distributes
+the Program.</p>
+
+<p>"Licensed Patents" mean patent claims licensable by a
+Contributor which are necessarily infringed by the use or sale of its
+Contribution alone or when combined with the Program.</p>
+
+<p>"Program" means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>"Recipient" means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works
+of, publicly display, publicly perform, distribute and sublicense the
+Contribution of such Contributor, if any, and such derivative works, in
+source code and object code form.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell,
+offer to sell, import and otherwise transfer the Contribution of such
+Contributor, if any, in source code and object code form. This patent
+license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor,
+such addition of the Contribution causes such combination to be covered
+by the Licensed Patents. The patent license shall not apply to any other
+combinations which include the Contribution. No hardware per se is
+licensed hereunder.</p>
+
+<p class="list">c) Recipient understands that although each Contributor
+grants the licenses to its Contributions set forth herein, no assurances
+are provided by any Contributor that the Program does not infringe the
+patent or other intellectual property rights of any other entity. Each
+Contributor disclaims any liability to Recipient for claims brought by
+any other entity based on infringement of intellectual property rights
+or otherwise. As a condition to exercising the rights and licenses
+granted hereunder, each Recipient hereby assumes sole responsibility to
+secure any other intellectual property rights needed, if any. For
+example, if a third party patent license is required to allow Recipient
+to distribute the Program, it is Recipient's responsibility to acquire
+that license before distributing the Program.</p>
+
+<p class="list">d) Each Contributor represents that to its knowledge it
+has sufficient copyright rights in its Contribution, if any, to grant
+the copyright license set forth in this Agreement.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">i) effectively disclaims on behalf of all Contributors
+all warranties and conditions, express and implied, including warranties
+or conditions of title and non-infringement, and implied warranties or
+conditions of merchantability and fitness for a particular purpose;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">iv) states that source code for the Program is available
+from such Contributor, and informs licensees how to obtain it in a
+reasonable manner on or through a medium customarily used for software
+exchange.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>Commercial distributors of software may accept certain
+responsibilities with respect to end users, business partners and the
+like. While this license is intended to facilitate the commercial use of
+the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create
+potential liability for other Contributors. Therefore, if a Contributor
+includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and
+indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses")
+arising from claims, lawsuits and other legal actions brought by a third
+party against the Indemnified Contributor to the extent caused by the
+acts or omissions of such Commercial Contributor in connection with its
+distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In
+order to qualify, an Indemnified Contributor must: a) promptly notify
+the Commercial Contributor in writing of such claim, and b) allow the
+Commercial Contributor to control, and cooperate with the Commercial
+Contributor in, the defense and any related settlement negotiations. The
+Indemnified Contributor may participate in any such claim at its own
+expense.</p>
+
+<p>For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor's responsibility
+alone. Under this section, the Commercial Contributor would have to
+defend claims against the other Contributors related to those
+performance claims and warranties, and if a court requires any other
+Contributor to pay any damages as a result, the Commercial Contributor
+must pay those damages.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
+OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
+ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to
+the risks and costs of program errors, compliance with applicable laws,
+damage to or loss of data, programs or equipment, and unavailability or
+interruption of operations.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
+NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of
+the remainder of the terms of this Agreement, and without further action
+by the parties hereto, such provision shall be reformed to the minimum
+extent necessary to make such provision valid and enforceable.</p>
+
+<p>If Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that the
+Program itself (excluding combinations of the Program with other
+software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the
+date such litigation is filed.</p>
+
+<p>All Recipient's rights under this Agreement shall terminate if it
+fails to comply with any of the material terms or conditions of this
+Agreement and does not cure such failure in a reasonable period of time
+after becoming aware of such noncompliance. If all Recipient's rights
+under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive.</p>
+
+<p>Everyone is permitted to copy and distribute copies of this
+Agreement, but in order to avoid inconsistency the Agreement is
+copyrighted and may only be modified in the following manner. The
+Agreement Steward reserves the right to publish new versions (including
+revisions) of this Agreement from time to time. No one other than the
+Agreement Steward has the right to modify this Agreement. The Eclipse
+Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a
+suitable separate entity. Each new version of the Agreement will be
+given a distinguishing version number. The Program (including
+Contributions) may always be distributed subject to the version of the
+Agreement under which it was received. In addition, after a new version
+of the Agreement is published, Contributor may elect to distribute the
+Program (including its Contributions) under the new version. Except as
+expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
+rights or licenses to the intellectual property of any Contributor under
+this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this
+Agreement are reserved.</p>
+
+<p>This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No party
+to this Agreement will bring a legal action under this Agreement more
+than one year after the cause of action arose. Each party waives its
+rights to a jury trial in any resulting litigation.</p>
+
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.resources/license.html b/org.eclipse.osbp.vaaclipse.resources/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/license.html
@@ -0,0 +1,164 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!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>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>February 1, 2011</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+   (COLLECTIVELY "CONTENT").  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse
+ Foundation is provided to you under the terms and conditions of the 
+Eclipse Public License Version 1.0
+   ("EPL").  A copy of the EPL is provided with this Content and is also
+ 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, "Program" will mean the Content.</p>
+
+<p>Content includes, but is not limited to, source code, object code, 
+documentation and other files maintained in the Eclipse Foundation 
+source code
+   repository ("Repository") in software modules ("Modules") and made 
+available as downloadable archives ("Downloads").</p>
+
+<ul>
+       <li>Content may be structured and packaged into modules to 
+facilitate delivering, extending, and upgrading the Content.  Typical 
+modules may include plug-ins ("Plug-ins"), plug-in fragments 
+("Fragments"), and features ("Features").</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&#8482; ARchive) in a directory named "plugins".</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or 
+Fragments and associated material.  Each Feature may be packaged as a 
+sub-directory in a directory named "features".  Within a Feature, files 
+named "feature.xml" may contain a list of the names and version numbers 
+of the Plug-ins
+      and/or Fragments associated with that Feature.</li>
+       <li>Features may also include other Features ("Included 
+Features"). Within a Feature, files named "feature.xml" may contain a 
+list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be 
+contained in files named "about.html" ("Abouts"). The terms and 
+conditions governing Features and
+Included Features should be contained in files named "license.html" 
+("Feature Licenses").  Abouts and Feature Licenses may be located in any
+ directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named "src" of certain Plug-ins</li>
+       <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is 
+installed using the Provisioning Technology (as defined below), you must
+ agree to a license ("Feature Update License") during the
+installation process.  If the Feature contains Included Features, the 
+Feature Update License should either provide you with the terms and 
+conditions governing the Included Features or
+inform you where you can locate them.  Feature Update Licenses may be 
+found in the "license" property of files named "feature.properties" 
+found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the 
+terms and conditions (or references to such terms and conditions) that 
+govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER 
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.
+  SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND 
+CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, 
+or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions 
+govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, 
+examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager ("Provisioning Technology") for the purpose of 
+allowing users to install software, documentation, information and/or
+   other materials (collectively "Installable Software"). This 
+capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about 
+packaging Installable Software is available at <a href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   ("Specification").</p>
+
+<p>You may use Provisioning Technology to allow other parties to install
+ Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to
+ be presented to, and accepted by, the users of the Provisioning 
+Technology
+   in accordance with the Specification. By using Provisioning 
+Technology in such a manner and making it available in accordance with 
+the
+   Specification, you further acknowledge your agreement to, and the 
+acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur ("Provisioning Process") in 
+which a user may execute the Provisioning Technology
+       on a machine ("Target Machine") with the intent of installing, 
+extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology 
+may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user 
+the terms and conditions that govern the use of the Installable
+       Software ("Installable Software Agreement") and such Installable 
+Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable 
+Software Agreement must inform the user of the terms and conditions that
+ govern
+       the Installable Software and must solicit acceptance by the end 
+user in the manner prescribed in such Installable Software Agreement. 
+Upon such
+       indication of agreement by the user, the provisioning Technology 
+will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are
+ currently may have restrictions on the import, possession, and use, 
+and/or re-export to
+   another country, of encryption software. BEFORE using any encryption 
+software, please check the country's laws, regulations and policies 
+concerning the import,
+   possession, or use, and re-export of encryption software, to see if 
+this is permitted.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.resources/pom.xml b/org.eclipse.osbp.vaaclipse.resources/pom.xml
new file mode 100644
index 0000000..3534be3
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/pom.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <artifactId>org.eclipse.osbp.vaaclipse.resources</artifactId>
+    <packaging>eclipse-plugin</packaging>
+    <parent>
+        <groupId>org.eclipse.osbp.vaaclipse</groupId>
+        <artifactId>org.eclipse.osbp.vaaclipse</artifactId>
+        <version>0.9.0-SNAPSHOT</version>
+        <relativePath>..</relativePath>
+    </parent>
+</project>
diff --git a/org.eclipse.osbp.vaaclipse.resources/src/PLACEHOLDER b/org.eclipse.osbp.vaaclipse.resources/src/PLACEHOLDER
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/src/PLACEHOLDER
diff --git a/org.eclipse.osbp.vaaclipse.target.juno/org.eclipse.osbp.vaaclipse.target.juno.target b/org.eclipse.osbp.vaaclipse.target.juno/org.eclipse.osbp.vaaclipse.target.juno.target
new file mode 100644
index 0000000..de5dc8b
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.target.juno/org.eclipse.osbp.vaaclipse.target.juno.target
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?pde version="3.8"?><target name="org.eclipse.osbp.vaaclipse.target.juno" sequenceNumber="33">
+<locations>
+<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit">
+<unit id="org.eclipse.sdk.ide" version="4.2.2.M20130204-1200"/>
+<unit id="org.eclipse.platform.sdk" version="4.2.2.M20130204-1200"/>
+<unit id="org.eclipse.emf.sdk.feature.group" version="2.8.3.v20130125-0826"/>
+<repository location="http://download.eclipse.org/releases/juno"/>
+</location>
+<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit">
+<unit id="org.eclipse.osbp.dependencies.feature.vaadin.feature.group" version="7.1.0.201306102153"/>
+<repository location="http://lun.lunifera.org/downloads/p2/lunifera/kepler/latest/"/>
+</location>
+<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit">
+<unit id="ch.qos.logback.slf4j" version="1.0.0.v20120123-1500"/>
+<unit id="org.slf4j.api" version="1.6.4.v20120130-2120"/>
+<unit id="ch.qos.logback.slf4j.source" version="1.0.0.v20120123-1500"/>
+<unit id="org.slf4j.ext.source" version="1.6.4.v20120130-2120"/>
+<unit id="org.slf4j.api.source" version="1.6.4.v20120130-2120"/>
+<unit id="org.slf4j.ext" version="1.6.4.v20120130-2120"/>
+<repository location="http://download.eclipse.org/tools/orbit/downloads/drops/R20120526062928/repository"/>
+</location>
+</locations>
+</target>
diff --git a/org.eclipse.osbp.vaaclipse.target.juno/pom.xml b/org.eclipse.osbp.vaaclipse.target.juno/pom.xml
new file mode 100644
index 0000000..163a316
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.target.juno/pom.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.eclipse.osbp.vaaclipse</groupId>
+    <artifactId>org.eclipse.osbp.vaaclipse</artifactId>
+    <version>0.9.0-SNAPSHOT</version>
+  </parent>
+  <artifactId>org.eclipse.osbp.vaaclipse.target.juno</artifactId>
+  <version>0.9.0-SNAPSHOT</version>
+  <packaging>eclipse-target-definition</packaging>
+</project>
diff --git a/org.eclipse.osbp.vaaclipse.target.luna/.project b/org.eclipse.osbp.vaaclipse.target.luna/.project
new file mode 100644
index 0000000..6cd7652
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.target.luna/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.vaaclipse.target.luna</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.vaaclipse.target.luna/org.eclipse.osbp.vaaclipse.target.luna.target b/org.eclipse.osbp.vaaclipse.target.luna/org.eclipse.osbp.vaaclipse.target.luna.target
new file mode 100644
index 0000000..97cee7d
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.target.luna/org.eclipse.osbp.vaaclipse.target.luna.target
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?pde version="3.8"?><target name="org.eclipse.osbp.vaaclipse.target.luna" sequenceNumber="34">
+<locations>
+<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="slicer" includeSource="true" type="InstallableUnit">
+<unit id="org.apache.commons.io" version="2.0.1.v201105210651"/>
+<unit id="org.apache.commons.io.source" version="2.0.1.v201105210651"/>
+<repository location="http://download.eclipse.org/tools/orbit/downloads/drops/R20120526062928/repository"/>
+</location>
+<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="slicer" includeSource="true" type="InstallableUnit">
+<unit id="org.eclipse.emf.sdk.feature.group" version="2.10.0.v20140519-0339"/>
+<unit id="org.eclipse.e4.rcp.source.feature.group" version="1.3.100.v20140606-1445"/>
+<unit id="org.eclipse.e4.rcp.feature.group" version="1.3.100.v20140606-1445"/>
+<repository location="http://download.eclipse.org/releases/luna"/>
+</location>
+<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="slicer" includeSource="true" type="InstallableUnit">
+<unit id="org.eclipse.equinox.core.sdk.feature.group" version="3.10.0.v20140606-1445"/>
+<repository location="http://download.eclipse.org/releases/luna"/>
+</location>
+<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="slicer" includeSource="true" type="InstallableUnit">
+<unit id="org.eclipse.equinox.sdk.feature.group" version="3.10.0.v20140606-1602"/>
+<repository location="http://download.eclipse.org/releases/luna"/>
+</location>
+<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="slicer" includeSource="true" type="InstallableUnit">
+<unit id="ch.qos.logback.core" version="1.0.0.v20111214-2030"/>
+<unit id="ch.qos.logback.slf4j.source" version="1.0.0.v20120123-1500"/>
+<unit id="ch.qos.logback.classic.source" version="1.0.0.v20111214-2030"/>
+<unit id="org.slf4j.ext.source" version="1.6.4.v20120130-2120"/>
+<unit id="org.slf4j.ext" version="1.6.4.v20120130-2120"/>
+<unit id="ch.qos.logback.slf4j" version="1.0.0.v20120123-1500"/>
+<unit id="org.slf4j.api.source" version="1.6.4.v20120130-2120"/>
+<unit id="ch.qos.logback.core.source" version="1.0.0.v20111214-2030"/>
+<unit id="ch.qos.logback.classic" version="1.0.0.v20111214-2030"/>
+<unit id="org.slf4j.api" version="1.6.4.v20120130-2120"/>
+<repository location="http://download.eclipse.org/tools/orbit/downloads/drops/R20120526062928/repository/"/>
+</location>
+<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="slicer" includeSource="true" type="InstallableUnit">
+<unit id="org.eclipse.osbp.dependencies.feature.atmosphere.feature.group" version="2.1.2.vaadin6"/>
+<unit id="org.eclipse.osbp.dependencies.feature.vaadin.feature.group" version="7.3.8"/>
+<repository location="http://lun.lunifera.org/downloads/p2/lunifera/luna/latest/"/>
+</location>
+</locations>
+</target>
diff --git a/org.eclipse.osbp.vaaclipse.target.luna/pom.xml b/org.eclipse.osbp.vaaclipse.target.luna/pom.xml
new file mode 100644
index 0000000..cd42a9b
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.target.luna/pom.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.eclipse.osbp.vaaclipse</groupId>
+    <artifactId>org.eclipse.osbp.vaaclipse</artifactId>
+    <version>0.9.0-SNAPSHOT</version>
+  </parent>
+  <artifactId>org.eclipse.osbp.vaaclipse.target.luna</artifactId>
+  <packaging>eclipse-target-definition</packaging>
+</project>
diff --git a/org.eclipse.osbp.vaaclipse.theme/.project b/org.eclipse.osbp.vaaclipse.theme/.project
new file mode 100644
index 0000000..e057d18
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.theme/.project
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.vaaclipse.theme</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ds.core.builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.babel.editor.rbeBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.babel.editor.rbeNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.vaaclipse.theme/META-INF/MANIFEST.MF b/org.eclipse.osbp.vaaclipse.theme/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..e995e4a
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.theme/META-INF/MANIFEST.MF
@@ -0,0 +1,21 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.vaaclipse.theme
+Bundle-SymbolicName: org.eclipse.osbp.vaaclipse.theme;singleton:=true
+Bundle-Version: 0.9.0.qualifier
+Bundle-Vendor: Eclipse OSBP
+Bundle-RequiredExecutionEnvironment: JavaSE-1.7
+Require-Bundle: org.eclipse.osbp.vaaclipse.publicapi;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.equinox.common;bundle-version="3.6.100",
+ org.eclipse.equinox.registry;bundle-version="3.5.200",
+ org.eclipse.e4.core.services;bundle-version="1.0.0",
+ org.eclipse.e4.core.contexts;bundle-version="1.1.0",
+ org.eclipse.e4.core.di;bundle-version="1.1.0"
+Import-Package: javax.annotation;version="1.1.0",
+ javax.inject;version="1.0.0",
+ org.osgi.framework;version="1.8.0",
+ org.osgi.framework.wiring;version="1.2.0",
+ org.slf4j;version="1.7.2"
+Service-Component: OSGI-INF/themeManager.xml,
+ OSGI-INF/themeEngine.xml
+Bundle-ActivationPolicy: lazy
diff --git a/org.eclipse.osbp.vaaclipse.theme/OSGI-INF/themeEngine.xml b/org.eclipse.osbp.vaaclipse.theme/OSGI-INF/themeEngine.xml
new file mode 100644
index 0000000..1b2dda2
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.theme/OSGI-INF/themeEngine.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.eclipse.osbp.vaaclipse.theme.themeengine">
+   <implementation class="org.eclipse.osbp.vaaclipse.theme.ThemeEngineImpl"/>
+   <service>
+      <provide interface="org.eclipse.osbp.vaaclipse.publicapi.theme.ThemeEngine"/>
+   </service>
+</scr:component>
diff --git a/org.eclipse.osbp.vaaclipse.theme/OSGI-INF/themeManager.xml b/org.eclipse.osbp.vaaclipse.theme/OSGI-INF/themeManager.xml
new file mode 100644
index 0000000..e862d0c
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.theme/OSGI-INF/themeManager.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" immediate="false" name="org.eclipse.osbp.vaaclipse.theme.themeManager">
+   <implementation class="org.eclipse.osbp.vaaclipse.theme.ThemeManagerContextFunction"/>
+   <service>
+      <provide interface="org.eclipse.e4.core.contexts.IContextFunction"/>
+   </service>
+   <property name="service.context.key" type="String" value="org.eclipse.osbp.vaaclipse.publicapi.theme.ThemeManager"/>
+   <reference bind="bindThemeEngine" cardinality="1..1" interface="org.eclipse.osbp.vaaclipse.publicapi.theme.ThemeEngine" name="ThemeEngine" policy="static"/>
+</scr:component>
diff --git a/org.eclipse.osbp.vaaclipse.theme/about.html b/org.eclipse.osbp.vaaclipse.theme/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.theme/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 1, 2016</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.theme/about.ini b/org.eclipse.osbp.vaaclipse.theme/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.theme/about.ini
@@ -0,0 +1,17 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%featureText
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=
+
+# Property "appName" contains name of the application (translated)
+appName=%featureName
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+welcomePage=
diff --git a/org.eclipse.osbp.vaaclipse.theme/about.mappings b/org.eclipse.osbp.vaaclipse.theme/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.theme/about.mappings
@@ -0,0 +1,6 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+0=qualifier
diff --git a/org.eclipse.osbp.vaaclipse.theme/about.properties b/org.eclipse.osbp.vaaclipse.theme/about.properties
new file mode 100644
index 0000000..f12caf5
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.theme/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2012, 2016 - Loetz GmbH&Co.KG (Heidelberg)
+# 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:
+#    Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.vaaclipse.theme
+
+################ blurb property ####################################
+featureText=\
+Copyright (c) 2012-2016 - Loetz GmbH&Co.KG \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+Contributors:\n\
+    Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.vaaclipse.theme/build.properties b/org.eclipse.osbp.vaaclipse.theme/build.properties
new file mode 100644
index 0000000..87ee705
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.theme/build.properties
@@ -0,0 +1,13 @@
+output.. = target/classes/
+bin.includes = about.properties,  about.mappings,  about.ini,  about.html,  META-INF/,\
+               .,\
+               plugin.xml,\
+               OSGI-INF/themeManager.xml,\
+               OSGI-INF/themeEngine.xml,\
+               schema/,\
+               OSGI-INF/,\
+               license.html,\
+               epl-v10.html
+source.. = src/
+src.includes = about.properties,  about.mappings,  about.ini,  about.html,  license.html,\
+               epl-v10.html
diff --git a/org.eclipse.osbp.vaaclipse.theme/epl-v10.html b/org.eclipse.osbp.vaaclipse.theme/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.theme/epl-v10.html
@@ -0,0 +1,259 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+  body {
+    size: 8.5in 11.0in;
+    margin: 0.25in 0.5in 0.25in 0.5in;
+    tab-interval: 0.5in;
+    }
+  p {  	
+    margin-left: auto;
+    margin-top:  0.5em;
+    margin-bottom: 0.5em;
+    }
+  p.list {
+  	margin-left: 0.5in;
+    margin-top:  0.05em;
+    margin-bottom: 0.05em;
+    }
+  </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">where such changes and/or additions to the Program
+originate from and are distributed by that particular Contributor. A
+Contribution 'originates' from a Contributor if it was added to the
+Program by such Contributor itself or anyone acting on such
+Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii)
+are not derivative works of the Program.</p>
+
+<p>"Contributor" means any person or entity that distributes
+the Program.</p>
+
+<p>"Licensed Patents" mean patent claims licensable by a
+Contributor which are necessarily infringed by the use or sale of its
+Contribution alone or when combined with the Program.</p>
+
+<p>"Program" means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>"Recipient" means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works
+of, publicly display, publicly perform, distribute and sublicense the
+Contribution of such Contributor, if any, and such derivative works, in
+source code and object code form.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell,
+offer to sell, import and otherwise transfer the Contribution of such
+Contributor, if any, in source code and object code form. This patent
+license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor,
+such addition of the Contribution causes such combination to be covered
+by the Licensed Patents. The patent license shall not apply to any other
+combinations which include the Contribution. No hardware per se is
+licensed hereunder.</p>
+
+<p class="list">c) Recipient understands that although each Contributor
+grants the licenses to its Contributions set forth herein, no assurances
+are provided by any Contributor that the Program does not infringe the
+patent or other intellectual property rights of any other entity. Each
+Contributor disclaims any liability to Recipient for claims brought by
+any other entity based on infringement of intellectual property rights
+or otherwise. As a condition to exercising the rights and licenses
+granted hereunder, each Recipient hereby assumes sole responsibility to
+secure any other intellectual property rights needed, if any. For
+example, if a third party patent license is required to allow Recipient
+to distribute the Program, it is Recipient's responsibility to acquire
+that license before distributing the Program.</p>
+
+<p class="list">d) Each Contributor represents that to its knowledge it
+has sufficient copyright rights in its Contribution, if any, to grant
+the copyright license set forth in this Agreement.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">i) effectively disclaims on behalf of all Contributors
+all warranties and conditions, express and implied, including warranties
+or conditions of title and non-infringement, and implied warranties or
+conditions of merchantability and fitness for a particular purpose;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">iv) states that source code for the Program is available
+from such Contributor, and informs licensees how to obtain it in a
+reasonable manner on or through a medium customarily used for software
+exchange.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>Commercial distributors of software may accept certain
+responsibilities with respect to end users, business partners and the
+like. While this license is intended to facilitate the commercial use of
+the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create
+potential liability for other Contributors. Therefore, if a Contributor
+includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and
+indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses")
+arising from claims, lawsuits and other legal actions brought by a third
+party against the Indemnified Contributor to the extent caused by the
+acts or omissions of such Commercial Contributor in connection with its
+distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In
+order to qualify, an Indemnified Contributor must: a) promptly notify
+the Commercial Contributor in writing of such claim, and b) allow the
+Commercial Contributor to control, and cooperate with the Commercial
+Contributor in, the defense and any related settlement negotiations. The
+Indemnified Contributor may participate in any such claim at its own
+expense.</p>
+
+<p>For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor's responsibility
+alone. Under this section, the Commercial Contributor would have to
+defend claims against the other Contributors related to those
+performance claims and warranties, and if a court requires any other
+Contributor to pay any damages as a result, the Commercial Contributor
+must pay those damages.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
+OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
+ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to
+the risks and costs of program errors, compliance with applicable laws,
+damage to or loss of data, programs or equipment, and unavailability or
+interruption of operations.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
+NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of
+the remainder of the terms of this Agreement, and without further action
+by the parties hereto, such provision shall be reformed to the minimum
+extent necessary to make such provision valid and enforceable.</p>
+
+<p>If Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that the
+Program itself (excluding combinations of the Program with other
+software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the
+date such litigation is filed.</p>
+
+<p>All Recipient's rights under this Agreement shall terminate if it
+fails to comply with any of the material terms or conditions of this
+Agreement and does not cure such failure in a reasonable period of time
+after becoming aware of such noncompliance. If all Recipient's rights
+under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive.</p>
+
+<p>Everyone is permitted to copy and distribute copies of this
+Agreement, but in order to avoid inconsistency the Agreement is
+copyrighted and may only be modified in the following manner. The
+Agreement Steward reserves the right to publish new versions (including
+revisions) of this Agreement from time to time. No one other than the
+Agreement Steward has the right to modify this Agreement. The Eclipse
+Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a
+suitable separate entity. Each new version of the Agreement will be
+given a distinguishing version number. The Program (including
+Contributions) may always be distributed subject to the version of the
+Agreement under which it was received. In addition, after a new version
+of the Agreement is published, Contributor may elect to distribute the
+Program (including its Contributions) under the new version. Except as
+expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
+rights or licenses to the intellectual property of any Contributor under
+this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this
+Agreement are reserved.</p>
+
+<p>This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No party
+to this Agreement will bring a legal action under this Agreement more
+than one year after the cause of action arose. Each party waives its
+rights to a jury trial in any resulting litigation.</p>
+
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.theme/license.html b/org.eclipse.osbp.vaaclipse.theme/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.theme/license.html
@@ -0,0 +1,164 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!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>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>February 1, 2011</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+   (COLLECTIVELY "CONTENT").  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse
+ Foundation is provided to you under the terms and conditions of the 
+Eclipse Public License Version 1.0
+   ("EPL").  A copy of the EPL is provided with this Content and is also
+ 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, "Program" will mean the Content.</p>
+
+<p>Content includes, but is not limited to, source code, object code, 
+documentation and other files maintained in the Eclipse Foundation 
+source code
+   repository ("Repository") in software modules ("Modules") and made 
+available as downloadable archives ("Downloads").</p>
+
+<ul>
+       <li>Content may be structured and packaged into modules to 
+facilitate delivering, extending, and upgrading the Content.  Typical 
+modules may include plug-ins ("Plug-ins"), plug-in fragments 
+("Fragments"), and features ("Features").</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&#8482; ARchive) in a directory named "plugins".</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or 
+Fragments and associated material.  Each Feature may be packaged as a 
+sub-directory in a directory named "features".  Within a Feature, files 
+named "feature.xml" may contain a list of the names and version numbers 
+of the Plug-ins
+      and/or Fragments associated with that Feature.</li>
+       <li>Features may also include other Features ("Included 
+Features"). Within a Feature, files named "feature.xml" may contain a 
+list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be 
+contained in files named "about.html" ("Abouts"). The terms and 
+conditions governing Features and
+Included Features should be contained in files named "license.html" 
+("Feature Licenses").  Abouts and Feature Licenses may be located in any
+ directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named "src" of certain Plug-ins</li>
+       <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is 
+installed using the Provisioning Technology (as defined below), you must
+ agree to a license ("Feature Update License") during the
+installation process.  If the Feature contains Included Features, the 
+Feature Update License should either provide you with the terms and 
+conditions governing the Included Features or
+inform you where you can locate them.  Feature Update Licenses may be 
+found in the "license" property of files named "feature.properties" 
+found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the 
+terms and conditions (or references to such terms and conditions) that 
+govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER 
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.
+  SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND 
+CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, 
+or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions 
+govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, 
+examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager ("Provisioning Technology") for the purpose of 
+allowing users to install software, documentation, information and/or
+   other materials (collectively "Installable Software"). This 
+capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about 
+packaging Installable Software is available at <a href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   ("Specification").</p>
+
+<p>You may use Provisioning Technology to allow other parties to install
+ Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to
+ be presented to, and accepted by, the users of the Provisioning 
+Technology
+   in accordance with the Specification. By using Provisioning 
+Technology in such a manner and making it available in accordance with 
+the
+   Specification, you further acknowledge your agreement to, and the 
+acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur ("Provisioning Process") in 
+which a user may execute the Provisioning Technology
+       on a machine ("Target Machine") with the intent of installing, 
+extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology 
+may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user 
+the terms and conditions that govern the use of the Installable
+       Software ("Installable Software Agreement") and such Installable 
+Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable 
+Software Agreement must inform the user of the terms and conditions that
+ govern
+       the Installable Software and must solicit acceptance by the end 
+user in the manner prescribed in such Installable Software Agreement. 
+Upon such
+       indication of agreement by the user, the provisioning Technology 
+will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are
+ currently may have restrictions on the import, possession, and use, 
+and/or re-export to
+   another country, of encryption software. BEFORE using any encryption 
+software, please check the country's laws, regulations and policies 
+concerning the import,
+   possession, or use, and re-export of encryption software, to see if 
+this is permitted.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.theme/plugin.xml b/org.eclipse.osbp.vaaclipse.theme/plugin.xml
new file mode 100644
index 0000000..8bf9f51
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.theme/plugin.xml
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+   <extension-point id="org.eclipse.osbp.vaaclipse.theme" name="Vaaclipse Theme" schema="schema/org.eclipse.osbp.vaaclipse.theme.exsd"/>
+   <extension
+         point="org.eclipse.osbp.vaaclipse.theme">
+      <theme
+            cssUri="platform:/plugin/com.vaadin.themes/VAADIN/themes/reindeer/styles.css"
+            description="Vaadin Reindeer theme"
+            id="reindeer"
+            label="Reindeer">
+         <resourceLocationUri
+               uri="platform:/plugin/com.vaadin.themes/VAADIN/themes/reindeer/">
+         </resourceLocationUri>
+      </theme>
+      <theme
+            cssUri="platform:/plugin/com.vaadin.themes/VAADIN/themes/chameleon/styles.css"
+            description="Vaadin Chameleon theme"
+            id="chameleon"
+            label="Chameleon">
+         <resourceLocationUri
+               uri="platform:/plugin/com.vaadin.themes/VAADIN/themes/chameleon/">
+         </resourceLocationUri>
+      </theme>
+      <theme
+            cssUri="platform:/plugin/com.vaadin.themes/VAADIN/themes/chameleon/legacy-styles.css"
+            description="Vaadin Chameleon Legacy theme"
+            id="chameleon-legacy"
+            label="Chameleon Legacy">
+         <resourceLocationUri
+               uri="platform:/plugin/com.vaadin.themes/VAADIN/themes/chameleon/">
+         </resourceLocationUri>
+      </theme>
+      <theme
+            cssUri="platform:/plugin/com.vaadin.themes/VAADIN/themes/runo/styles.css"
+            description="Vaadin Runo theme"
+            id="runo"
+            label="Runo">
+         <resourceLocationUri
+               uri="platform:/plugin/com.vaadin.themes/VAADIN/themes/runo/">
+         </resourceLocationUri>
+      </theme>
+      <theme
+            cssUri="platform:/plugin/com.vaadin.themes/VAADIN/themes/liferay/styles.css"
+            description="Vaadin Liferay theme"
+            id="liferay"
+            label="Liferay">
+         <resourceLocationUri
+               uri="platform:/plugin/com.vaadin.themes/VAADIN/themes/liferay/">
+         </resourceLocationUri>
+      </theme>
+      <theme
+            cssUri="platform:/plugin/com.vaadin.themes/VAADIN/themes/base/styles.css"
+            description="Vaadin Base theme"
+            id="base"
+            label="Base">
+         <resourceLocationUri
+               uri="platform:/plugin/com.vaadin.themes/VAADIN/themes/base/">
+         </resourceLocationUri>
+      </theme>
+       <theme
+            cssUri="platform:/plugin/com.vaadin.themes/VAADIN/themes/valo/styles.css"
+            description="Vaadin Valo theme"
+            id="valo"
+            label="Valo">
+         <resourceLocationUri
+               uri="platform:/plugin/com.vaadin.themes/VAADIN/themes/valo/">
+         </resourceLocationUri>
+      </theme>
+   </extension>
+
+</plugin>
diff --git a/org.eclipse.osbp.vaaclipse.theme/pom.xml b/org.eclipse.osbp.vaaclipse.theme/pom.xml
new file mode 100644
index 0000000..80b3a5e
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.theme/pom.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <artifactId>org.eclipse.osbp.vaaclipse.theme</artifactId>
+    <packaging>eclipse-plugin</packaging>
+    <parent>
+        <groupId>org.eclipse.osbp.vaaclipse</groupId>
+        <artifactId>org.eclipse.osbp.vaaclipse</artifactId>
+        <version>0.9.0-SNAPSHOT</version>
+        <relativePath>..</relativePath>
+    </parent>
+</project>
diff --git a/org.eclipse.osbp.vaaclipse.theme/schema/org.eclipse.osbp.vaaclipse.theme.exsd b/org.eclipse.osbp.vaaclipse.theme/schema/org.eclipse.osbp.vaaclipse.theme.exsd
new file mode 100644
index 0000000..c9c794f
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.theme/schema/org.eclipse.osbp.vaaclipse.theme.exsd
@@ -0,0 +1,211 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.eclipse.osbp.vaaclipse.theme" xmlns="http://www.w3.org/2001/XMLSchema">
+<annotation>
+      <appinfo>
+         <meta.schema plugin="org.eclipse.osbp.vaaclipse.theme" id="org.eclipse.osbp.vaaclipse.theme" name="Vaaclipse Theme"/>
+      </appinfo>
+      <documentation>
+         This extension point provides the possibility to define themes and theme contributions
+      </documentation>
+   </annotation>
+
+   <element name="extension">
+      <annotation>
+         <appinfo>
+            <meta.element />
+         </appinfo>
+      </annotation>
+      <complexType>
+      	<sequence>
+            <element ref="themecontribution" minOccurs="0" maxOccurs="unbounded"/>
+            <element ref="theme" minOccurs="0" maxOccurs="unbounded"/>
+         </sequence>
+         <attribute name="point" type="string" use="required">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="id" type="string">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="name" type="string">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+               <appinfo>
+                  <meta.attribute translatable="true"/>
+               </appinfo>
+            </annotation>
+         </attribute>
+      </complexType>
+   </element>
+   
+   <element name="themecontribution">
+      <annotation>
+         <documentation>
+            Theme contribution - contribute stylesheets and resources to theme
+         </documentation>
+      </annotation>
+      <complexType>
+         <sequence>
+            <element ref="themeid" minOccurs="0" maxOccurs="unbounded"/>
+            <element ref="resourceLocationUri" minOccurs="0" maxOccurs="unbounded"/>
+         </sequence>
+         <attribute name="id" type="string" use="required">
+            <annotation>
+               <documentation>
+                  Id of the contribution
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="cssUri" type="string">
+            <annotation>
+               <documentation>
+                  uri to the stylesheet
+               </documentation>
+               <appinfo>
+                  <meta.attribute kind="resource"/>
+               </appinfo>
+            </annotation>
+         </attribute>
+         <attribute name="insertPosition" type="string" default="after=MAIN_CSS">
+            <annotation>
+               <documentation>
+                  Position where contributed css inserted in main theme's css: after=POSITION or before=POSITION,
+                  where POSITION can be another contribution id or one of MAIN_CSS, USER_IMPORTS, INHERITED_IMPORTS.
+                  Default value: after=MAIN_CSS
+               </documentation>
+            </annotation>
+         </attribute>
+      </complexType>
+   </element>
+
+   <element name="theme">
+      <complexType>
+      	<sequence>
+      		<element ref="inheritedTheme" minOccurs="0" maxOccurs="unbounded"/>
+            <element ref="resourceLocationUri" minOccurs="0" maxOccurs="unbounded"/>
+         </sequence>
+         <attribute name="id" type="string" use="required">
+            <annotation>
+               <documentation>
+                  Id for the theme
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="label" type="string" use="required">
+            <annotation>
+               <documentation>
+                  the label used when displayed to the user
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="description" type="string">
+            <annotation>
+               <documentation>
+                  the description
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="cssUri" type="string" use="required">
+            <annotation>
+               <documentation>
+                  the css uri starting with platform:/plugin
+               </documentation>
+               <appinfo>
+                  <meta.attribute kind="resource"/>
+               </appinfo>
+            </annotation>
+         </attribute>
+      </complexType>
+   </element>
+
+   <element name="themeid">
+      <complexType>
+         <attribute name="refid" type="string">
+            <annotation>
+               <documentation>
+                  reference to theme for applying contribution
+               </documentation>
+               <appinfo>
+                  <meta.attribute kind="identifier" basedOn="org.eclipse.osbp.vaaclipse.theme/theme/@id"/>
+               </appinfo>
+            </annotation>
+         </attribute>
+      </complexType>
+   </element>
+   
+   <element name="inheritedTheme">
+      <complexType>
+         <attribute name="refid" type="string">
+            <annotation>
+               <documentation>
+                  reference to inherited (parent) theme
+               </documentation>
+               <appinfo>
+                  <meta.attribute kind="identifier" basedOn="org.eclipse.osbp.vaaclipse.theme/theme/@id"/>
+               </appinfo>
+            </annotation>
+         </attribute>
+      </complexType>
+   </element>
+
+   <element name="resourceLocationUri">
+      <complexType>
+         <attribute name="uri" type="string" use="required">
+            <annotation>
+               <documentation>
+                  an url starting with platform:/plugin
+               </documentation>
+            </annotation>
+         </attribute>
+      </complexType>
+   </element>
+   
+
+   <annotation>
+      <appinfo>
+         <meta.section type="since"/>
+      </appinfo>
+      <documentation>
+         [Enter the first release in which this extension point appears.]
+      </documentation>
+   </annotation>
+
+   <annotation>
+      <appinfo>
+         <meta.section type="examples"/>
+      </appinfo>
+      <documentation>
+         [Enter extension point usage example here.]
+      </documentation>
+   </annotation>
+
+   <annotation>
+      <appinfo>
+         <meta.section type="apiinfo"/>
+      </appinfo>
+      <documentation>
+         [Enter API information here.]
+      </documentation>
+   </annotation>
+
+   <annotation>
+      <appinfo>
+         <meta.section type="implementation"/>
+      </appinfo>
+      <documentation>
+         [Enter information about supplied implementation of this extension point.]
+      </documentation>
+   </annotation>
+
+
+</schema>
diff --git a/org.eclipse.osbp.vaaclipse.theme/src/org/eclipse/osbp/vaaclipse/theme/ThemeContributionImpl.java b/org.eclipse.osbp.vaaclipse.theme/src/org/eclipse/osbp/vaaclipse/theme/ThemeContributionImpl.java
new file mode 100644
index 0000000..f55a577
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.theme/src/org/eclipse/osbp/vaaclipse/theme/ThemeContributionImpl.java
@@ -0,0 +1,35 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.theme;
+
+import org.eclipse.osbp.vaaclipse.publicapi.theme.ThemeContribution;
+
+/**
+ * @author rushan
+ *
+ */
+public class ThemeContributionImpl extends ThemeEntryImpl implements
+		ThemeContribution {
+	private String insertPosition = "after=MAIN_CSS";
+
+	public ThemeContributionImpl(String id) {
+		super(id);
+	}
+
+	@Override
+	public String getInsertPosition() {
+		return insertPosition;
+	}
+
+	public void setInsertPosition(String insertPosition) {
+		this.insertPosition = insertPosition;
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.theme/src/org/eclipse/osbp/vaaclipse/theme/ThemeEngineImpl.java b/org.eclipse.osbp.vaaclipse.theme/src/org/eclipse/osbp/vaaclipse/theme/ThemeEngineImpl.java
new file mode 100644
index 0000000..7d4131e
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.theme/src/org/eclipse/osbp/vaaclipse/theme/ThemeEngineImpl.java
@@ -0,0 +1,162 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.theme;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.IExtension;
+import org.eclipse.core.runtime.IExtensionPoint;
+import org.eclipse.core.runtime.IExtensionRegistry;
+import org.eclipse.core.runtime.RegistryFactory;
+import org.eclipse.osbp.vaaclipse.publicapi.theme.Theme;
+import org.eclipse.osbp.vaaclipse.publicapi.theme.ThemeContribution;
+import org.eclipse.osbp.vaaclipse.publicapi.theme.ThemeEngine;
+
+/**
+ * @author rushan
+ *
+ */
+public class ThemeEngineImpl implements ThemeEngine {
+	private Map<String, ThemeImpl> themes = new HashMap<String, ThemeImpl>();
+	private Map<String, ThemeImpl> themesByWebId = new HashMap<String, ThemeImpl>();
+	private Map<String, ThemeContributionImpl> contributionsByWebId = new HashMap<String, ThemeContributionImpl>();
+
+	public void activate() {
+		IExtensionRegistry registry = RegistryFactory.getRegistry();
+		IExtensionPoint extPoint = registry
+				.getExtensionPoint("org.eclipse.osbp.vaaclipse.theme");
+
+		Map<Theme, List<String>> inherited = new HashMap<Theme, List<String>>();
+		// add themes
+		for (IExtension e : extPoint.getExtensions()) {
+			for (IConfigurationElement ce : e.getConfigurationElements()) {
+				if (ce.getName().equals("theme")) {
+					String themeId = ce.getAttribute("id");
+					if (!themes.containsKey(themeId)) {
+						String label = ce.getAttribute("label");
+						String description = ce.getAttribute("description");
+
+						ThemeImpl theme = new ThemeImpl(themeId, label);
+						setupThemeEntry(theme, ce);
+
+						List<String> inheritedList = new ArrayList<String>();
+						for (IConfigurationElement inheritedThemeEl : ce
+								.getChildren("inheritedTheme")) {
+							String refid = inheritedThemeEl
+									.getAttribute("refid");
+							if (refid != null) {
+								inheritedList.add(refid);
+							}
+						}
+
+						inherited.put(theme, inheritedList);
+
+						theme.setDescription(description);
+						themes.put(themeId, theme);
+						themesByWebId.put(theme.getWebId(), theme);
+					}
+				}
+			}
+		}
+
+		// add inherited themes
+		for (ThemeImpl theme : themes.values()) {
+			List<String> inheritedThemes = inherited.get(theme);
+			for (String inheritedThemeId : inheritedThemes) {
+				ThemeImpl inheritedTheme = themes.get(inheritedThemeId);
+				if (inheritedTheme != null)
+					theme.addInheritedTheme(inheritedTheme);
+			}
+		}
+
+		// add user contributions
+		for (IExtension e : extPoint.getExtensions()) {
+			for (IConfigurationElement ce : e.getConfigurationElements()) {
+				if (ce.getName().equals("themecontribution")) {
+					IConfigurationElement[] cces = ce.getChildren("themeid");
+					if (cces.length > 0) {
+						String contributionId = ce.getAttribute("id");
+						ThemeContributionImpl contribution = new ThemeContributionImpl(
+								contributionId);
+						setupThemeEntry(contribution, ce);
+
+						String insertPosition = ce
+								.getAttribute("insertPosition");
+						if (insertPosition != null)
+							contribution.setInsertPosition(insertPosition);
+
+						for (int i = 0; i < cces.length; i++) {
+							String themeId = cces[i].getAttribute("refid");
+							if (themeId != null && themeId.length() > 0) {
+								ThemeImpl theme = themes.get(themeId);
+								if (theme != null) {
+									theme.addContribution(contribution);
+								}
+							}
+						}
+
+						contributionsByWebId.put(contribution.getWebId(),
+								contribution);
+					}
+				}
+			}
+		}
+
+		for (ThemeImpl theme : themes.values()) {
+			try {
+				theme.prepareTheme();
+			} catch (Exception e1) {
+				e1.printStackTrace();
+			}
+		}
+	}
+
+	private void setupThemeEntry(ThemeEntryImpl themeEntry,
+			IConfigurationElement ce) {
+		String cssUri = ce.getAttribute("cssUri");
+		if (cssUri != null) {
+			if (!cssUri.startsWith("platform:/plugin/")) {
+				cssUri = "platform:/plugin/" + ce.getContributor().getName()
+						+ "/" + cssUri;
+			}
+		}
+
+		themeEntry.setCssUri(cssUri);
+
+		for (IConfigurationElement resourceEl : ce
+				.getChildren("resourceLocationUri")) {
+			String resourceLocationUri = resourceEl.getAttribute("uri");
+			if (resourceLocationUri != null) {
+				themeEntry.addResourceUri(resourceLocationUri);
+			}
+		}
+	}
+
+	@Override
+	public Theme getTheme(String themeId) {
+		return themes.get(themeId);
+	}
+
+	@Override
+	public Theme getThemeByWebId(String themeWebId) {
+		return themesByWebId.get(themeWebId);
+	}
+
+	@Override
+	public ThemeContribution getThemeContributionByWebId(
+			String contributionWebId) {
+		return contributionsByWebId.get(contributionWebId);
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.theme/src/org/eclipse/osbp/vaaclipse/theme/ThemeEntryImpl.java b/org.eclipse.osbp.vaaclipse.theme/src/org/eclipse/osbp/vaaclipse/theme/ThemeEntryImpl.java
new file mode 100644
index 0000000..8f8f74e
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.theme/src/org/eclipse/osbp/vaaclipse/theme/ThemeEntryImpl.java
@@ -0,0 +1,70 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.theme;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * @author rushan
+ *
+ */
+public class ThemeEntryImpl {
+	protected String id;
+	protected String webId;
+	protected String cssUri;
+	protected List<String> resourceUri = new ArrayList<String>();
+
+	public ThemeEntryImpl(String id) {
+		this.id = id;
+		this.webId = this.id.replaceAll("\\.", "-");
+	}
+
+	public String getId() {
+		return id;
+	}
+
+	public String getWebId() {
+		return webId;
+	}
+
+	public String getCssUri() {
+		return cssUri;
+	}
+
+	public void setCssUri(String cssUri) {
+		this.cssUri = cssUri;
+	}
+
+	public List<String> getResourceLocationURIs() {
+		return Collections.unmodifiableList(this.resourceUri);
+	}
+
+	public void addResourceUri(String resourceUri) {
+		resourceUri = processUri(resourceUri);
+		this.resourceUri.add(resourceUri);
+	}
+
+	private String processUri(String uri) {
+		if (uri == null)
+			return null;
+
+		uri = uri.trim();
+		if (uri.length() > 0) {
+			char last = uri.charAt(uri.length() - 1);
+			if (last != '/') {
+				uri += "/";
+			}
+		}
+		return uri;
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.theme/src/org/eclipse/osbp/vaaclipse/theme/ThemeImpl.java b/org.eclipse.osbp.vaaclipse.theme/src/org/eclipse/osbp/vaaclipse/theme/ThemeImpl.java
new file mode 100644
index 0000000..431d421
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.theme/src/org/eclipse/osbp/vaaclipse/theme/ThemeImpl.java
@@ -0,0 +1,327 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osbp.vaaclipse.theme;
+
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.osbp.vaaclipse.publicapi.theme.Theme;
+import org.eclipse.osbp.vaaclipse.publicapi.theme.ThemeContribution;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.FrameworkUtil;
+import org.osgi.framework.wiring.BundleWiring;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class ThemeImpl extends ThemeEntryImpl implements Theme {
+
+	private static final String PLATFORM_PLUGIN = "platform:/plugin/";
+
+	private static final String PLATFORM_RESOURCE = "platform:/resource/";
+
+	private static final Logger LOGGER = LoggerFactory.getLogger(ThemeImpl.class);
+
+	private static List<String> imageExtensions = new ArrayList<String>();
+	static {
+		imageExtensions.add("png");
+		imageExtensions.add("gif");
+		imageExtensions.add("jpg");
+		imageExtensions.add("jpeg");
+	}
+
+	private String label;
+	private String description;
+	private List<ThemeContribution> contributions = new ArrayList<ThemeContribution>();
+	private List<Theme> inheritedThemes = new ArrayList<Theme>();
+
+	private List<String> cssCashList;
+	private List<String> resourcesCashList;
+
+	private byte[] cssBytes;
+
+	public ThemeImpl(String id, String label) {
+		super(id);
+		this.label = label;
+	}
+
+	public void setId(String id) {
+		this.id = id;
+	}
+
+	public String getLabel() {
+		return label;
+	}
+
+	@Override
+	public String getDescription() {
+		return this.description;
+	}
+
+	public void setDescription(String description) {
+		this.description = description;
+	}
+
+	@Override
+	public List<Theme> getInheritedThemes() {
+		return Collections.unmodifiableList(this.inheritedThemes);
+	}
+
+	@Override
+	public List<ThemeContribution> getContributions() {
+		return Collections.unmodifiableList(this.contributions);
+	}
+
+	public void addContribution(ThemeContribution contibution) {
+		this.resourcesCashList = null;
+		this.cssCashList = null;
+		this.contributions.add(contibution);
+	}
+
+	public void addInheritedTheme(Theme theme) {
+		this.resourcesCashList = null;
+		this.cssCashList = null;
+		this.inheritedThemes.add(theme);
+	}
+
+	@Override
+	public String toString() {
+		return "Theme [id=" + id + ", label='" + label;
+	}
+
+	@Override
+	public List<String> getAllCssURIs() {
+		if (cssCashList == null) {
+			cssCashList = new ArrayList<String>();
+			cssCashList.add(getCssUri());
+
+			for (Theme theme : this.getInheritedThemes()) {
+				cssCashList.addAll(theme.getAllCssURIs());
+			}
+
+			for (ThemeContribution c : this.getContributions()) {
+				if (c.getCssUri() != null)
+					cssCashList.add(c.getCssUri());
+			}
+		}
+		return cssCashList;
+	}
+
+	@Override
+	public List<String> getAllResourceLocationURIs() {
+		if (resourcesCashList == null) {
+			resourcesCashList = new ArrayList<String>();
+			resourcesCashList.addAll(getResourceLocationURIs());
+
+			for (Theme theme : this.getInheritedThemes()) {
+				resourcesCashList.addAll(theme.getAllResourceLocationURIs());
+			}
+
+			for (ThemeContribution c : this.getContributions()) {
+				resourcesCashList.addAll(c.getResourceLocationURIs());
+			}
+		}
+		return Collections.unmodifiableList(resourcesCashList);
+	}
+
+	@Override
+	public InputStream getCssAsStream() {
+		return new ByteArrayInputStream(cssBytes);
+	}
+
+	@Override
+	public InputStream getThemeResourceAsStream(String themeUri) {
+		InputStream in = null;
+		StringBuffer buffer = new StringBuffer(themeUri);
+		for (String resLocUri : getAllResourceLocationURIs()) {
+			String bundlePath = resLocUri + themeUri;
+			try {
+				URL u = new URL(bundlePath);
+				in = u.openStream();
+				break;
+			} catch (Exception ex) {
+				buffer.append(":\n").append(ex.getClass().getName()).append(" in ").append(resLocUri).append("\n");
+			}
+		}
+		if (in == null) {
+			LOGGER.debug("{}", buffer);
+		}
+		return in;
+	}
+
+	void prepareTheme() throws Exception {
+		StringBuffer inheritedBuffer = new StringBuffer();
+		for (Theme inherited : inheritedThemes) {
+			inheritedBuffer.append(String.format("@import \"../%s/styles.css\";", inherited.getWebId()));
+		}
+
+		List<ThemeContributionImpl> afterMainCss = new ArrayList<ThemeContributionImpl>();
+		List<ThemeContributionImpl> afterInheritedImports = new ArrayList<ThemeContributionImpl>();
+		List<ThemeContributionImpl> beforeInheritedImports = new ArrayList<ThemeContributionImpl>();
+		Map<String, List<ThemeContributionImpl>> bindedContributionsBefore = new HashMap<String, List<ThemeContributionImpl>>();
+		Map<String, List<ThemeContributionImpl>> bindedContributionsAfter = new HashMap<String, List<ThemeContributionImpl>>();
+
+		for (ThemeContribution c : this.contributions) {
+			if (c.getCssUri() == null)
+				continue;
+
+			ThemeContributionImpl contribution = (ThemeContributionImpl) c;
+			String pos = contribution.getInsertPosition();
+			String[] split = pos.split("=");
+			if (split.length == 2) {
+				String mod = split[0].trim();
+
+				if ("after".equals(mod) || "before".equals(mod)) {
+					String value = split[1].trim();
+
+					if (mod.equals("after") && ThemeContribution.MAIN_CSS.equals(value)) {
+						afterMainCss.add(contribution);
+					} else if (mod.equals("after") && ThemeContribution.INHERITED_IMPORTS.equals(value) || mod.equals("before") && ThemeContribution.MAIN_CSS.equals(value)) {
+						afterInheritedImports.add(contribution);
+					} else if (mod.equals("before") && ThemeContribution.INHERITED_IMPORTS.equals(value)) {
+						beforeInheritedImports.add(contribution);
+					} else {// value - is contribution id?
+						if (mod.equals("before")) {
+							if (!bindedContributionsBefore.containsKey(value))
+								bindedContributionsBefore.put(value, new ArrayList<ThemeContributionImpl>());
+							bindedContributionsBefore.get(value).add(contribution);
+						} else if (mod.equals("after")) {
+							if (!bindedContributionsAfter.containsKey(value))
+								bindedContributionsAfter.put(value, new ArrayList<ThemeContributionImpl>());
+							bindedContributionsAfter.get(value).add(contribution);
+						}
+					}
+				}
+			}
+		}
+
+		StringBuffer afterMainCssContributionsBuffer = buildStringBuffer(afterMainCss, bindedContributionsBefore, bindedContributionsAfter);
+		StringBuffer afterInheritedImportsContributionsBuffer = buildStringBuffer(afterInheritedImports, bindedContributionsBefore, bindedContributionsAfter);
+		StringBuffer beforeInheritedImportsContributionsBuffer = buildStringBuffer(beforeInheritedImports, bindedContributionsBefore, bindedContributionsAfter);
+
+		String ls = System.lineSeparator();
+		String total = beforeInheritedImportsContributionsBuffer.toString() + ls + inheritedBuffer.toString() + ls + afterInheritedImportsContributionsBuffer.toString() + ls
+				+ "@import \"original_styles.css\";" + ls + afterMainCssContributionsBuffer.toString() + ls;
+
+		cssBytes = total.getBytes("UTF-8");
+
+		for (Theme inherited : inheritedThemes) {
+			if (inherited instanceof ThemeImpl) {
+				((ThemeImpl) inherited).prepareTheme();
+			}
+		}
+	}
+
+	@Override
+	public List<String> getImageURIs() {
+		List<String> result = new ArrayList<String>();
+		for (String uri : getAllResourceLocationURIs()) {
+			PathPair pair = parsePathPair(uri);
+			if (pair == null) {
+				continue;
+			}
+
+			Bundle target = findBundle(pair.bundle);
+			BundleWiring wiring = target.adapt(BundleWiring.class);
+			Collection<String> resources = wiring.listResources(pair.folder, "*", BundleWiring.LISTRESOURCES_RECURSE);
+			for (String path : resources) {
+				if (path.contains(".")) {
+					String extension = path.substring(path.lastIndexOf(".") + 1);
+					if (imageExtensions.contains(extension)) {
+						result.add("platform:/plugin/" + pair.bundle + "/" + path);
+					}
+				}
+			}
+		}
+		return result;
+	}
+
+	private Bundle findBundle(String bundleName) {
+		for (Bundle b : FrameworkUtil.getBundle(getClass()).getBundleContext().getBundles()) {
+			if (b.getSymbolicName().equals(bundleName)) {
+				return b;
+			}
+		}
+		return null;
+	}
+
+	private PathPair parsePathPair(String uri) {
+		PathPair pair = null;
+		if (uri.startsWith(PLATFORM_RESOURCE)) {
+			pair = new PathPair();
+			// eg platform:/resource/org.my.foo.bundle/images/obj16
+			String result = uri.replace(PLATFORM_RESOURCE, "");
+			pair.bundle = result.substring(0, result.indexOf("/"));
+			String folder = result = result.substring(result.indexOf("/"), result.length());
+			pair.folder = folder;
+		} else if (uri.startsWith(PLATFORM_PLUGIN)) {
+			// eg platform:/plugin/org.my.foo.bundle/images/obj16
+			pair = new PathPair();
+			String result = uri.replace(PLATFORM_PLUGIN, "");
+			pair.bundle = result.substring(0, result.indexOf("/"));
+			String folder = result = result.substring(result.indexOf("/"), result.length());
+			pair.folder = folder;
+		}
+
+		LOGGER.error("Not a valid URI: " + uri);
+		return pair;
+	}
+
+	private StringBuffer buildStringBuffer(List<ThemeContributionImpl> list, Map<String, List<ThemeContributionImpl>> bindedContributionsBefore,
+			Map<String, List<ThemeContributionImpl>> bindedContributionsAfter) {
+		StringBuffer buffer = new StringBuffer();
+		List<ThemeContributionImpl> result = buildList(list, bindedContributionsBefore, bindedContributionsAfter);
+		for (ThemeContributionImpl c : result) {
+			buffer.append(String.format("@import \"%s.css\";", c.getWebId()));
+		}
+		return buffer;
+	}
+
+	private List<ThemeContributionImpl> buildList(List<ThemeContributionImpl> list, Map<String, List<ThemeContributionImpl>> bindedContributionsBefore,
+			Map<String, List<ThemeContributionImpl>> bindedContributionsAfter) {
+		bindedContributionsBefore = new HashMap<String, List<ThemeContributionImpl>>(bindedContributionsBefore);
+		bindedContributionsAfter = new HashMap<String, List<ThemeContributionImpl>>(bindedContributionsAfter);
+		List<ThemeContributionImpl> accumulator = new ArrayList<ThemeContributionImpl>();
+
+		int restBefore, restAfter;
+		do {
+			restBefore = bindedContributionsBefore.size() + bindedContributionsAfter.size();
+			for (ThemeContributionImpl c : list) {
+
+				List<ThemeContributionImpl> bindedList = bindedContributionsBefore.remove(c.getId());
+				if (bindedList != null)
+					accumulator.addAll(bindedList);
+
+				accumulator.add(c);
+
+				bindedList = bindedContributionsAfter.remove(c.getId());
+				if (bindedList != null)
+					accumulator.addAll(bindedList);
+			}
+			restAfter = bindedContributionsBefore.size() + bindedContributionsAfter.size();
+			list = accumulator;
+			accumulator = new ArrayList<ThemeContributionImpl>();
+		} while (restBefore != restAfter);
+
+		return list;
+	}
+
+	private static class PathPair {
+		private String bundle;
+		private String folder;
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.theme/src/org/eclipse/osbp/vaaclipse/theme/ThemeManagerContextFunction.java b/org.eclipse.osbp.vaaclipse.theme/src/org/eclipse/osbp/vaaclipse/theme/ThemeManagerContextFunction.java
new file mode 100644
index 0000000..f647dfc
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.theme/src/org/eclipse/osbp/vaaclipse/theme/ThemeManagerContextFunction.java
@@ -0,0 +1,46 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.theme;
+
+import org.eclipse.e4.core.contexts.ContextFunction;
+import org.eclipse.e4.core.contexts.ContextInjectionFactory;
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.osbp.vaaclipse.publicapi.theme.ThemeEngine;
+import org.eclipse.osbp.vaaclipse.publicapi.theme.ThemeManager;
+
+/**
+ * @author rushan
+ *
+ */
+public class ThemeManagerContextFunction extends ContextFunction {
+	private ThemeEngine themeEngine;
+
+	public void activate() {
+		System.out.println("Theme manager factory is started");
+	}
+
+	@Override
+	public Object compute(IEclipseContext context) {
+		ThemeManager manager = context.getLocal(ThemeManager.class);
+		if (manager == null) {
+			if (themeEngine != null)
+				context.set(ThemeEngine.class, themeEngine);
+			manager = ContextInjectionFactory.make(ThemeManagerImpl.class,
+					context);
+			context.set(ThemeManager.class, manager);
+		}
+		return manager;
+	}
+
+	public void bindThemeEngine(ThemeEngine themeEngine) {
+		this.themeEngine = themeEngine;
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.theme/src/org/eclipse/osbp/vaaclipse/theme/ThemeManagerImpl.java b/org.eclipse.osbp.vaaclipse.theme/src/org/eclipse/osbp/vaaclipse/theme/ThemeManagerImpl.java
new file mode 100644
index 0000000..69949c3
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.theme/src/org/eclipse/osbp/vaaclipse/theme/ThemeManagerImpl.java
@@ -0,0 +1,61 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.theme;
+
+import javax.inject.Inject;
+
+import org.eclipse.e4.core.services.events.IEventBroker;
+import org.eclipse.osbp.vaaclipse.publicapi.theme.Theme;
+import org.eclipse.osbp.vaaclipse.publicapi.theme.ThemeConstants;
+import org.eclipse.osbp.vaaclipse.publicapi.theme.ThemeEngine;
+import org.eclipse.osbp.vaaclipse.publicapi.theme.ThemeManager;
+
+/**
+ * @author rushan
+ *
+ */
+public class ThemeManagerImpl implements ThemeManager {
+	@Inject
+	IEventBroker eventBroker;
+
+	@Inject
+	private ThemeEngine themeEngine;
+
+	private String themeId;
+
+	@Override
+	public String getThemeId() {
+		return this.themeId;
+	}
+
+	@Override
+	public ThemeEngine getThemeEngine() {
+		return this.themeEngine;
+	}
+
+	@Override
+	public Theme getTheme() {
+		return themeEngine.getTheme(themeId);
+	}
+
+	@Override
+	public void setTheme(String themeId) {
+		if (this.themeId != null && this.themeId.equals(themeId))
+			return;
+
+		Theme theme = themeEngine.getTheme(themeId);
+		if (theme == null)
+			throw new IllegalArgumentException(String.format(
+					"Theme with id=%s is not exists", themeId));
+		this.themeId = themeId;
+		eventBroker.send(ThemeConstants.Events.setThemeEvent, theme);
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.addon/.project b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/.project
new file mode 100644
index 0000000..46fa1e2
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/.project
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.vaaclipse.ui.preferences.addon</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ds.core.builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.babel.editor.rbeBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>com.vaadin.integration.eclipse.addonStylesBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.babel.editor.rbeNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.addon/META-INF/MANIFEST.MF b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..1f30d77
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/META-INF/MANIFEST.MF
@@ -0,0 +1,49 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.vaaclipse.ui.preferences.addon
+Bundle-SymbolicName: org.eclipse.osbp.vaaclipse.ui.preferences.addon;singleton:=true
+Bundle-Vendor: Eclipse OSBP
+Bundle-Version: 0.9.0.qualifier
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Import-Package: e4modelextension,
+ javax.annotation;version="1.1.0",
+ javax.inject;version="1.0.0",
+ org.eclipse.core.internal.preferences,
+ org.eclipse.core.runtime.preferences;version="3.3.0",
+ org.eclipse.e4.core.contexts,
+ org.eclipse.e4.core.services.contributions,
+ org.eclipse.e4.core.services.events,
+ org.eclipse.e4.ui.model.application,
+ org.eclipse.emf.common.notify,
+ org.eclipse.emf.common.util,
+ org.eclipse.emf.ecore,
+ org.eclipse.emf.ecore.resource,
+ org.eclipse.emf.ecore.util,
+ org.eclipse.osbp.vaaclipse.ui.preferences.model;version="0.9.0",
+ org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata;version="0.9.0",
+ org.eclipse.osbp.vaaclipse.ui.preferences.model.util;version="0.9.0",
+ org.osgi.framework;version="1.7.0",
+ org.osgi.service.component.annotations;version="1.2.0",
+ org.osgi.service.prefs;version="1.1.1",
+ org.eclipse.osbp.vaaclipse.publicapi.resources;version="0.9.0",
+ org.eclipse.osbp.vaadin.optiondialog
+Bundle-ActivationPolicy: lazy
+Require-Bundle: org.eclipse.e4.core.di,
+ com.vaadin.client;bundle-version="[7.5.7,7.7.0)",
+ org.eclipse.e4.ui.model.workbench;bundle-version="1.0.1",
+ com.vaadin.server;bundle-version="[7.5.7,7.7.0)",
+ com.vaadin.shared;bundle-version="[7.5.7,7.7.0)",
+ org.eclipse.equinox.preferences;bundle-version="3.5.100",
+ org.eclipse.core.runtime;bundle-version="3.9.0",
+ org.eclipse.osbp.vaaclipse.publicapi;bundle-version="[0.9.0,0.10.0)",
+ javax.annotation;bundle-version="[1.1.0,1.2.0)",
+ org.jsoup;bundle-version="1.7.2",
+ org.slf4j.api;bundle-version="1.7.2"
+Export-Package: org.eclipse.osbp.vaaclipse.ui.preferences.addon;version="0.9.0"
+Service-Component: OSGI-INF/org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal.service.PreferenceProviderContextFunction.xml
+Service-Component: OSGI-INF/org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal.service.PreferenceProviderContextFunction.xml
+Service-Component: OSGI-INF/org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal.service.PreferenceProviderContextFunction.xml
+Service-Component: OSGI-INF/org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal.service.PreferenceProviderContextFunction.xml
+Service-Component: OSGI-INF/org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal.service.PreferenceProviderContextFunction.xml
+Service-Component: OSGI-INF/org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal.service.PreferenceProviderContextFunction.xml
+Service-Component: OSGI-INF/org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal.service.PreferenceProviderContextFunction.xml
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.addon/OSGI-INF/org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal.service.PreferenceProviderContextFunction.xml b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/OSGI-INF/org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal.service.PreferenceProviderContextFunction.xml
new file mode 100644
index 0000000..bd8b432
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/OSGI-INF/org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal.service.PreferenceProviderContextFunction.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal.service.PreferenceProviderContextFunction">
+   <implementation class="org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal.service.PreferenceProviderContextFunction"/>
+   <service>
+      <provide interface="org.eclipse.e4.core.contexts.IContextFunction"/>
+   </service>
+   <property name="service.context.key" value="org.eclipse.osbp.vaaclipse.publicapi.preferences.IPreferenceProvider"/>
+</scr:component>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.addon/about.html b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/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 1, 2016</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.addon/about.ini b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/about.ini
@@ -0,0 +1,17 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%featureText
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=
+
+# Property "appName" contains name of the application (translated)
+appName=%featureName
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+welcomePage=
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.addon/about.mappings b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/about.mappings
@@ -0,0 +1,6 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+0=qualifier
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.addon/about.properties b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/about.properties
new file mode 100644
index 0000000..837e074
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2012, 2016 - Loetz GmbH&Co.KG (Heidelberg)
+# 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:
+#    Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.vaaclipse.ui.preferences.addon
+
+################ blurb property ####################################
+featureText=\
+Copyright (c) 2012-2016 - Loetz GmbH&Co.KG \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+Contributors:\n\
+    Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.addon/build.properties b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/build.properties
new file mode 100644
index 0000000..7f492ff
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/build.properties
@@ -0,0 +1,16 @@
+output.. = target/classes/
+bin.includes = about.properties,  about.mappings,  about.ini,  about.html,  META-INF/,\
+               .,\
+               plugin.xml,\
+               css/,\
+               img/,\
+               OSGI-INF/org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal.service.PreferenceProviderContextFunction.xml,\
+               epl-v10.html,\
+               license.html
+               OSGI-INF/org.osbp.vaaclipse.ui.preferences.addon.internal.service.PreferenceProviderContextFunction.xml,\
+               OSGI-INF/
+src.includes = about.properties,  about.mappings,  about.ini,  about.html,  css/,\
+               img/,\
+               epl-v10.html,\
+               license.html
+source.. = src/
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.addon/css/style.css b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/css/style.css
new file mode 100644
index 0000000..c54753a
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/css/style.css
@@ -0,0 +1,101 @@
+.preferences-dialog .filter-category-button {
+	float:right;
+}
+
+.preferences-dialog .filter-category-button .v-button-caption {
+	display: none;
+}
+
+.preferences-dialog .clear-filter-button {
+	float:right;
+}
+
+.preferences-dialog .clear-filter-button .v-button-caption {
+	display: none;
+}
+
+.preferences-dialog .v-panel-deco {
+	display: none;
+}
+
+.preferences-dialog .field-editor {
+	margin-bottom: 15px;
+	float: left;
+	clear: left;
+}
+
+.preferences-dialog .add-button, .preferences-dialog .remove-button, .preferences-dialog .up-button, .preferences-dialog .down-button {
+	float: right;
+	clear: right;
+}
+
+.preferences-dialog .field-editor-caption-top {
+	margin-bottom: 5px;
+	float: left;
+	clear: left;
+}
+
+.preferences-dialog .restore-defaults {
+	float: right;
+}
+
+.preferences-dialog .apply {
+	float: right;
+	margin-left: 10px;
+}
+
+.preferences-dialog .ok-button {
+	float: right;
+}
+
+.preferences-dialog .cancel-button {
+	float: right;
+	margin-left: 10px;
+}
+
+.preferences-dialog .page-header-text {
+	font-weight: bold;
+}
+
+.preferences-dialog .page-header-error-text {
+	font-weight: bold;
+	color: red;
+}
+
+.preferences-dialog .page-header-panel {
+	padding: 10px;
+	border-bottom: solid 1px #DCDCDC;
+}
+
+.preferences-dialog .preferences-page {
+	padding: 10px;
+}
+
+.preferences-dialog .page-bottom-panel {
+	padding: 10px;
+}
+
+.preferences-dialog .dlg-button-panel {
+	padding: 10px;
+	border-top: solid 1px #DCDCDC;
+}
+
+.preferences-export-import-dialog .export, .preferences-export-import-dialog .import {
+	padding: 10px;
+}
+
+.preferences-export-import-dialog .export .v-panel, .preferences-export-import-dialog .import .v-panel {
+	margin-top: 10px;
+}
+
+.preferences-export-import-dialog .export .status-label {
+	margin-top: 25px;
+}
+
+.preferences-export-import-dialog .export .download-button {
+	margin-top: 10px;
+}
+
+.preferences-export-import-dialog .import .v-label {
+	margin-top: 20px;
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.addon/epl-v10.html b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/epl-v10.html
@@ -0,0 +1,259 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+  body {
+    size: 8.5in 11.0in;
+    margin: 0.25in 0.5in 0.25in 0.5in;
+    tab-interval: 0.5in;
+    }
+  p {  	
+    margin-left: auto;
+    margin-top:  0.5em;
+    margin-bottom: 0.5em;
+    }
+  p.list {
+  	margin-left: 0.5in;
+    margin-top:  0.05em;
+    margin-bottom: 0.05em;
+    }
+  </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">where such changes and/or additions to the Program
+originate from and are distributed by that particular Contributor. A
+Contribution 'originates' from a Contributor if it was added to the
+Program by such Contributor itself or anyone acting on such
+Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii)
+are not derivative works of the Program.</p>
+
+<p>"Contributor" means any person or entity that distributes
+the Program.</p>
+
+<p>"Licensed Patents" mean patent claims licensable by a
+Contributor which are necessarily infringed by the use or sale of its
+Contribution alone or when combined with the Program.</p>
+
+<p>"Program" means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>"Recipient" means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works
+of, publicly display, publicly perform, distribute and sublicense the
+Contribution of such Contributor, if any, and such derivative works, in
+source code and object code form.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell,
+offer to sell, import and otherwise transfer the Contribution of such
+Contributor, if any, in source code and object code form. This patent
+license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor,
+such addition of the Contribution causes such combination to be covered
+by the Licensed Patents. The patent license shall not apply to any other
+combinations which include the Contribution. No hardware per se is
+licensed hereunder.</p>
+
+<p class="list">c) Recipient understands that although each Contributor
+grants the licenses to its Contributions set forth herein, no assurances
+are provided by any Contributor that the Program does not infringe the
+patent or other intellectual property rights of any other entity. Each
+Contributor disclaims any liability to Recipient for claims brought by
+any other entity based on infringement of intellectual property rights
+or otherwise. As a condition to exercising the rights and licenses
+granted hereunder, each Recipient hereby assumes sole responsibility to
+secure any other intellectual property rights needed, if any. For
+example, if a third party patent license is required to allow Recipient
+to distribute the Program, it is Recipient's responsibility to acquire
+that license before distributing the Program.</p>
+
+<p class="list">d) Each Contributor represents that to its knowledge it
+has sufficient copyright rights in its Contribution, if any, to grant
+the copyright license set forth in this Agreement.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">i) effectively disclaims on behalf of all Contributors
+all warranties and conditions, express and implied, including warranties
+or conditions of title and non-infringement, and implied warranties or
+conditions of merchantability and fitness for a particular purpose;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">iv) states that source code for the Program is available
+from such Contributor, and informs licensees how to obtain it in a
+reasonable manner on or through a medium customarily used for software
+exchange.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>Commercial distributors of software may accept certain
+responsibilities with respect to end users, business partners and the
+like. While this license is intended to facilitate the commercial use of
+the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create
+potential liability for other Contributors. Therefore, if a Contributor
+includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and
+indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses")
+arising from claims, lawsuits and other legal actions brought by a third
+party against the Indemnified Contributor to the extent caused by the
+acts or omissions of such Commercial Contributor in connection with its
+distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In
+order to qualify, an Indemnified Contributor must: a) promptly notify
+the Commercial Contributor in writing of such claim, and b) allow the
+Commercial Contributor to control, and cooperate with the Commercial
+Contributor in, the defense and any related settlement negotiations. The
+Indemnified Contributor may participate in any such claim at its own
+expense.</p>
+
+<p>For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor's responsibility
+alone. Under this section, the Commercial Contributor would have to
+defend claims against the other Contributors related to those
+performance claims and warranties, and if a court requires any other
+Contributor to pay any damages as a result, the Commercial Contributor
+must pay those damages.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
+OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
+ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to
+the risks and costs of program errors, compliance with applicable laws,
+damage to or loss of data, programs or equipment, and unavailability or
+interruption of operations.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
+NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of
+the remainder of the terms of this Agreement, and without further action
+by the parties hereto, such provision shall be reformed to the minimum
+extent necessary to make such provision valid and enforceable.</p>
+
+<p>If Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that the
+Program itself (excluding combinations of the Program with other
+software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the
+date such litigation is filed.</p>
+
+<p>All Recipient's rights under this Agreement shall terminate if it
+fails to comply with any of the material terms or conditions of this
+Agreement and does not cure such failure in a reasonable period of time
+after becoming aware of such noncompliance. If all Recipient's rights
+under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive.</p>
+
+<p>Everyone is permitted to copy and distribute copies of this
+Agreement, but in order to avoid inconsistency the Agreement is
+copyrighted and may only be modified in the following manner. The
+Agreement Steward reserves the right to publish new versions (including
+revisions) of this Agreement from time to time. No one other than the
+Agreement Steward has the right to modify this Agreement. The Eclipse
+Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a
+suitable separate entity. Each new version of the Agreement will be
+given a distinguishing version number. The Program (including
+Contributions) may always be distributed subject to the version of the
+Agreement under which it was received. In addition, after a new version
+of the Agreement is published, Contributor may elect to distribute the
+Program (including its Contributions) under the new version. Except as
+expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
+rights or licenses to the intellectual property of any Contributor under
+this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this
+Agreement are reserved.</p>
+
+<p>This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No party
+to this Agreement will bring a legal action under this Agreement more
+than one year after the cause of action arose. Each party waives its
+rights to a jury trial in any resulting litigation.</p>
+
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.addon/img/clear.png b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/img/clear.png
new file mode 100644
index 0000000..ea11a3e
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/img/clear.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.addon/img/find.png b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/img/find.png
new file mode 100644
index 0000000..0773220
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/img/find.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.addon/license.html b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/license.html
@@ -0,0 +1,164 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!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>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>February 1, 2011</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+   (COLLECTIVELY "CONTENT").  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse
+ Foundation is provided to you under the terms and conditions of the 
+Eclipse Public License Version 1.0
+   ("EPL").  A copy of the EPL is provided with this Content and is also
+ 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, "Program" will mean the Content.</p>
+
+<p>Content includes, but is not limited to, source code, object code, 
+documentation and other files maintained in the Eclipse Foundation 
+source code
+   repository ("Repository") in software modules ("Modules") and made 
+available as downloadable archives ("Downloads").</p>
+
+<ul>
+       <li>Content may be structured and packaged into modules to 
+facilitate delivering, extending, and upgrading the Content.  Typical 
+modules may include plug-ins ("Plug-ins"), plug-in fragments 
+("Fragments"), and features ("Features").</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&#8482; ARchive) in a directory named "plugins".</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or 
+Fragments and associated material.  Each Feature may be packaged as a 
+sub-directory in a directory named "features".  Within a Feature, files 
+named "feature.xml" may contain a list of the names and version numbers 
+of the Plug-ins
+      and/or Fragments associated with that Feature.</li>
+       <li>Features may also include other Features ("Included 
+Features"). Within a Feature, files named "feature.xml" may contain a 
+list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be 
+contained in files named "about.html" ("Abouts"). The terms and 
+conditions governing Features and
+Included Features should be contained in files named "license.html" 
+("Feature Licenses").  Abouts and Feature Licenses may be located in any
+ directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named "src" of certain Plug-ins</li>
+       <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is 
+installed using the Provisioning Technology (as defined below), you must
+ agree to a license ("Feature Update License") during the
+installation process.  If the Feature contains Included Features, the 
+Feature Update License should either provide you with the terms and 
+conditions governing the Included Features or
+inform you where you can locate them.  Feature Update Licenses may be 
+found in the "license" property of files named "feature.properties" 
+found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the 
+terms and conditions (or references to such terms and conditions) that 
+govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER 
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.
+  SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND 
+CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, 
+or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions 
+govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, 
+examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager ("Provisioning Technology") for the purpose of 
+allowing users to install software, documentation, information and/or
+   other materials (collectively "Installable Software"). This 
+capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about 
+packaging Installable Software is available at <a href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   ("Specification").</p>
+
+<p>You may use Provisioning Technology to allow other parties to install
+ Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to
+ be presented to, and accepted by, the users of the Provisioning 
+Technology
+   in accordance with the Specification. By using Provisioning 
+Technology in such a manner and making it available in accordance with 
+the
+   Specification, you further acknowledge your agreement to, and the 
+acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur ("Provisioning Process") in 
+which a user may execute the Provisioning Technology
+       on a machine ("Target Machine") with the intent of installing, 
+extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology 
+may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user 
+the terms and conditions that govern the use of the Installable
+       Software ("Installable Software Agreement") and such Installable 
+Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable 
+Software Agreement must inform the user of the terms and conditions that
+ govern
+       the Installable Software and must solicit acceptance by the end 
+user in the manner prescribed in such Installable Software Agreement. 
+Upon such
+       indication of agreement by the user, the provisioning Technology 
+will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are
+ currently may have restrictions on the import, possession, and use, 
+and/or re-export to
+   another country, of encryption software. BEFORE using any encryption 
+software, please check the country's laws, regulations and policies 
+concerning the import,
+   possession, or use, and re-export of encryption software, to see if 
+this is permitted.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.addon/plugin.xml b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/plugin.xml
new file mode 100644
index 0000000..e93d6af
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/plugin.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+	<extension point="org.eclipse.osbp.vaaclipse.theme">
+      	<themecontribution
+            cssUri="css/style.css"
+            id="org.eclipse.osbp.vaaclipse.ui.preferences.styles"
+            insertPosition="after=MAIN_CSS">
+         <resourceLocationUri
+               uri="img/">
+         </resourceLocationUri>
+         <themeid
+               refid="reindeer">
+         </themeid>
+      </themecontribution>
+   </extension>
+</plugin>
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.addon/pom.xml b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/pom.xml
new file mode 100644
index 0000000..cf0ff90
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/pom.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <artifactId>org.eclipse.osbp.vaaclipse.ui.preferences.addon</artifactId>
+    <packaging>eclipse-plugin</packaging>
+    <parent>
+        <groupId>org.eclipse.osbp.vaaclipse</groupId>
+        <artifactId>org.eclipse.osbp.vaaclipse</artifactId>
+        <version>0.9.0-SNAPSHOT</version>
+        <relativePath>..</relativePath>
+    </parent>
+
+</project>
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/ExportPreferencesHandler.java b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/ExportPreferencesHandler.java
new file mode 100644
index 0000000..559c7a6
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/ExportPreferencesHandler.java
@@ -0,0 +1,44 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.addon;
+
+import org.eclipse.e4.core.contexts.ContextInjectionFactory;
+import org.eclipse.e4.core.contexts.IEclipseContext;
+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.osbp.vaaclipse.ui.preferences.addon.internal.impexp.ExportPreferences;
+
+/**
+ * @author rushan
+ *
+ */
+public class ExportPreferencesHandler {
+
+	@CanExecute
+	public boolean canExecute(@Optional PreferencesAuthorization prefAuthService) {
+		boolean isAllowed = true;
+		if (prefAuthService != null) {
+			isAllowed = prefAuthService.exportAllowed();
+		}
+		return isAllowed;
+	}
+
+	@Execute
+	public void execute(@Optional PreferencesAuthorization prefAuthService,
+			IEclipseContext context) {
+		if (!canExecute(prefAuthService))
+			return;
+
+		ContextInjectionFactory.make(ExportPreferences.class, context);
+	}
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/ImportPreferencesHandler.java b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/ImportPreferencesHandler.java
new file mode 100644
index 0000000..1a062c9
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/ImportPreferencesHandler.java
@@ -0,0 +1,43 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.addon;
+
+import org.eclipse.e4.core.contexts.ContextInjectionFactory;
+import org.eclipse.e4.core.contexts.IEclipseContext;
+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.osbp.vaaclipse.ui.preferences.addon.internal.impexp.ImportPreferences;
+
+/**
+ * @author rushan
+ *
+ */
+public class ImportPreferencesHandler {
+
+	@CanExecute
+	public boolean canExecute(@Optional PreferencesAuthorization prefAuthService) {
+		boolean isAllowed = true;
+		if (prefAuthService != null) {
+			isAllowed = prefAuthService.importAllowed();
+		}
+		return isAllowed;
+	}
+
+	@Execute
+	public void execute(@Optional PreferencesAuthorization prefAuthService,
+			IEclipseContext context) {
+		if (!canExecute(prefAuthService))
+			return;
+
+		ContextInjectionFactory.make(ImportPreferences.class, context);
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/OpenPreferencesDialogHandler.java b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/OpenPreferencesDialogHandler.java
new file mode 100644
index 0000000..def9806
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/OpenPreferencesDialogHandler.java
@@ -0,0 +1,39 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.addon;
+
+import org.eclipse.e4.core.contexts.ContextInjectionFactory;
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.ui.model.application.MApplication;
+import org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal.PreferencesDialog;
+
+import com.vaadin.ui.UI;
+
+import e4modelextension.VaaclipseApplication;
+
+/**
+ * @author rushan
+ *
+ */
+public class OpenPreferencesDialogHandler {
+
+	@Execute
+	public void execute(IEclipseContext context, MApplication app, UI ui) {
+
+		context.set(VaaclipseApplication.class, (VaaclipseApplication) app);
+		PreferencesDialog prefDlg = ContextInjectionFactory.make(
+				PreferencesDialog.class, context);
+		prefDlg.getWindow().center();
+		ui.addWindow(prefDlg.getWindow());
+	}
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/PreferencesAddon.java b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/PreferencesAddon.java
new file mode 100644
index 0000000..0d9ce26
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/PreferencesAddon.java
@@ -0,0 +1,200 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.addon;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.annotation.PostConstruct;
+import javax.inject.Inject;
+
+import org.eclipse.core.internal.preferences.PreferencesService;
+import org.eclipse.core.runtime.preferences.IEclipsePreferences;
+import org.eclipse.core.runtime.preferences.IPreferencesService;
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.core.services.contributions.IContributionFactory;
+import org.eclipse.e4.ui.model.application.MApplication;
+import org.eclipse.e4.ui.model.application.MContribution;
+import org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal.util.PrefHelper;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.BooleanFieldEditor;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.IntegerFieldEditor;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesPage;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.ScaleFieldEditor;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesFactory;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.util.PreferencesSwitch;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.FrameworkUtil;
+import org.osgi.framework.ServiceReference;
+import org.osgi.service.prefs.Preferences;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import e4modelextension.VaaclipseApplication;
+
+/**
+ * @author rushan
+ *
+ */
+public class PreferencesAddon {
+
+	@Inject
+	MApplication app;
+
+	@Inject
+	IEclipseContext context;
+
+	Map<String, Bundle> bundlesByName = new HashMap<>();
+	Logger logger = LoggerFactory.getLogger(PreferencesAddon.class);
+
+	@SuppressWarnings("restriction")
+	IPreferencesService equinoxPrefService = PreferencesService.getDefault();
+	IEclipsePreferences root = equinoxPrefService.getRootNode();
+
+	private PreferencesAuthorization authService;
+
+	private VaaclipseApplication vaaApp;
+
+	@PostConstruct
+	void init() {
+		vaaApp = (VaaclipseApplication) app;
+		context.set(VaaclipseApplication.class, vaaApp);
+
+		BundleContext bundleContext = FrameworkUtil.getBundle(
+				PreferencesAddon.class).getBundleContext();
+
+		obtainPreferencesAuthService(bundleContext);
+
+		for (Bundle b : bundleContext.getBundles()) {
+			bundlesByName.put(b.getSymbolicName(), b);
+		}
+
+		for (PreferencesCategory c : vaaApp.getPreferencesCategories()) {
+			setupPreferences(c, "");
+		}
+
+		for (PreferencesPage page : vaaApp.getPreferencesPages()) {
+			setTypedDefaultValues(page);
+			initContributions(page);
+		}
+
+		logger.info("Preferences adon activated");
+	}
+
+	private void setupPreferences(PreferencesCategory category,
+			String currentPath) {
+
+		String catPath = currentPath + "/" + category.getId();
+
+		if (category.getPage() != null) {
+			for (FieldEditor<?> editor : category.getPage().getChildren()) {
+
+				Bundle bundle = bundlesByName.get(editor.getBundle());
+				if (bundle != null) {
+					String absolutePreferencePath = PrefHelper
+							.toEquinoxPreferencePath(bundle, catPath);
+
+					Preferences pref = root.node(absolutePreferencePath);
+					editor.setPreferences(pref);
+					editor.setEquinoxPath(absolutePreferencePath);
+				} else {
+					logger.warn("Could not find bundle {} for editor {}",
+							editor.getBundle(), editor);
+				}
+			}
+
+		}
+
+		for (PreferencesCategory childCat : category.getChildCategories()) {
+			setupPreferences(childCat, catPath);
+		}
+	}
+
+	private void obtainPreferencesAuthService(BundleContext bundleContext) {
+
+		ServiceReference<PreferencesAuthorization> ref = bundleContext
+				.getServiceReference(PreferencesAuthorization.class);
+		if (ref != null) {
+			authService = bundleContext.getService(ref);
+			context.set(PreferencesAuthorization.class, authService);
+		}
+
+		ServiceReference<PreferencesFactory> prefFactoryRef = bundleContext
+				.getServiceReference(PreferencesFactory.class);
+		if (prefFactoryRef != null) {
+			PreferencesFactory service = bundleContext
+					.getService(prefFactoryRef);
+			context.set(PreferencesFactory.class, service);
+		}
+	}
+
+	private void setTypedDefaultValues(PreferencesPage page) {
+		for (FieldEditor<?> ed : page.getChildren()) {
+			FieldEditor<Object> editor = (FieldEditor<Object>) ed;
+
+			PreferencesSwitch<?> sw = new PreferencesSwitch() {
+				@Override
+				public Object caseBooleanFieldEditor(BooleanFieldEditor object) {
+					if (object.getDefaultValue() == null)
+						return false;
+					return Boolean.valueOf(object.getDefaultValue());
+				}
+
+				@Override
+				public Object caseScaleFieldEditor(ScaleFieldEditor object) {
+					if (object.getDefaultValue() == null)
+						return 0;
+					return Integer.valueOf(object.getDefaultValue());
+				}
+
+				@Override
+				public Object caseIntegerFieldEditor(IntegerFieldEditor object) {
+					if (object.getDefaultValue() == null)
+						return 0;
+					return Integer.valueOf(object.getDefaultValue());
+				}
+			};
+			Object converted = sw.doSwitch(editor);
+			if (converted == null) {
+				converted = editor.getDefaultValue();
+				if (converted == null)
+					converted = "";
+			}
+			editor.setDefaultValueTyped(converted);
+			editor.setDefaultValue(converted.toString());
+		}
+	}
+
+	@SuppressWarnings("restriction")
+	private void initContributions(PreferencesPage page) {
+		for (FieldEditor<?> ed : page.getChildren()) {
+			if (ed instanceof MContribution) {
+				MContribution editorWithContribution = (MContribution) ed;
+				String contributorURI = editorWithContribution
+						.getContributionURI();
+				if (contributorURI != null) {
+					IEclipseContext childContext = context.createChild();
+					PrefHelper.populateInterfaces(
+							(FieldEditor<?>) editorWithContribution,
+							childContext, editorWithContribution.getClass()
+									.getInterfaces());
+					IContributionFactory contributionFactory = (IContributionFactory) childContext
+							.get(IContributionFactory.class.getName());
+					Object editorContribution = contributionFactory.create(
+							contributorURI, childContext);
+					editorWithContribution.setObject(editorContribution);
+				}
+			}
+		}
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/PreferencesAuthorization.java b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/PreferencesAuthorization.java
new file mode 100644
index 0000000..f799c60
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/PreferencesAuthorization.java
@@ -0,0 +1,30 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ *         Florian Pirchner - Initial implementation
+ */
+
+package org.eclipse.osbp.vaaclipse.ui.preferences.addon;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory;
+
+public interface PreferencesAuthorization {
+
+	/**
+	 * Returns true if the preference page may be showed for the current user
+	 * 
+	 * @param pageId
+	 * @param user
+	 * @return
+	 **/
+	boolean isAllowed(PreferencesCategory category);
+
+	boolean exportAllowed();
+
+	boolean importAllowed();
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/PreferencesEvents.java b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/PreferencesEvents.java
new file mode 100644
index 0000000..e387bdf
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/PreferencesEvents.java
@@ -0,0 +1,22 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.addon;
+
+/**
+ * @author rushan
+ *
+ */
+public class PreferencesEvents {
+
+	public static final String PREFERENCES_APPLIED = "PREFERENCES_CHANGED";
+	public static final String PREFERENCES_TO_DEFAULTS = "PREFERENCES_TO_DEFAULTS";
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/BooleanFieldEditorRenderer.java b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/BooleanFieldEditorRenderer.java
new file mode 100644
index 0000000..d494606
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/BooleanFieldEditorRenderer.java
@@ -0,0 +1,74 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal;
+
+import javax.inject.Inject;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.BooleanFieldEditor;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.BooleanFieldStyle;
+
+import com.vaadin.ui.CheckBox;
+import com.vaadin.ui.HorizontalLayout;
+import com.vaadin.ui.Label;
+
+/**
+ * @author rushan
+ *
+ */
+public class BooleanFieldEditorRenderer extends FieldEditorRenderer<Boolean> {
+
+	@Inject
+	BooleanFieldEditor booleanFieldEditor;
+	private CheckBox cb;
+
+	@Override
+	public Boolean getValue() {
+		return getPreferences().getBoolean(
+				booleanFieldEditor.getPreferenceName(),
+				booleanFieldEditor.getDefaultValueTyped());
+	}
+
+	@Override
+	public void setValue(Boolean value) {
+		getPreferences().putBoolean(booleanFieldEditor.getPreferenceName(),
+				value);
+	}
+
+	@Override
+	public void render() {
+		renderInternal(booleanFieldEditor);
+
+		cb = new CheckBox();
+		cb.setValue(getValue());
+
+		if (booleanFieldEditor.getStyle() == BooleanFieldStyle.DEFAULT) {
+			cb.setCaption(booleanFieldEditor.getLabel());
+			component = cb;
+		} else if (booleanFieldEditor.getStyle() == BooleanFieldStyle.SEPARATE_LABEL) {
+
+			HorizontalLayout hl = new HorizontalLayout();
+
+			Label separateLabel = new Label(booleanFieldEditor.getLabel());
+			separateLabel.addStyleName("boolean-separate-label");
+			cb.addStyleName("boolean-separate-checkbox");
+			hl.addComponent(separateLabel);
+			hl.addComponent(cb);
+
+			component = hl;
+		}
+	}
+
+	@Override
+	public void save() {
+		setValue(cb.getValue());
+	}
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/ComboFieldEditorRenderer.java b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/ComboFieldEditorRenderer.java
new file mode 100644
index 0000000..8859f29
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/ComboFieldEditorRenderer.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal;
+
+import com.vaadin.ui.AbstractSelect;
+import com.vaadin.ui.ComboBox;
+
+/**
+ * @author rushan
+ *
+ */
+public class ComboFieldEditorRenderer extends ListFieldEditorRenderer {
+
+	@Override
+	public AbstractSelect createSelect() {
+		return new ComboBox();
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/FieldEditorRenderer.java b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/FieldEditorRenderer.java
new file mode 100644
index 0000000..b0c3742
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/FieldEditorRenderer.java
@@ -0,0 +1,73 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal;
+
+import javax.inject.Inject;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal.exception.ValidationFailedException;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesPage;
+import org.osgi.service.prefs.Preferences;
+
+import com.vaadin.ui.Component;
+import com.vaadin.ui.CssLayout;
+import com.vaadin.ui.Label;
+
+/**
+ * @author rushan
+ *
+ */
+public abstract class FieldEditorRenderer<T> {
+
+	@Inject
+	PreferencesPage page;
+
+	Component component;
+
+	@Inject
+	FieldEditor<?> basicInterfaceToEditor;
+
+	public abstract void render();
+
+	protected void renderInternal(FieldEditor<T> editor) {
+
+		// layout.setWidth("100%");
+
+		for (String style : editor.getTags()) {
+			component.addStyleName(style);
+		}
+	}
+
+	protected CssLayout createCssLayoutWithCaption() {
+		CssLayout layout = new CssLayout();
+		layout.addComponent(new Label(basicInterfaceToEditor.getLabel()));
+		this.component = layout;
+		return layout;
+	}
+
+	public Component getComponent() {
+		return component;
+	}
+
+	public Preferences getPreferences() {
+		return (Preferences) basicInterfaceToEditor.getPreferences();
+	}
+
+	public abstract T getValue();
+
+	public abstract void setValue(T value);
+
+	public abstract void save();
+
+	public void validate() throws ValidationFailedException {
+
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/IntegerFieldEditorRenderer.java b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/IntegerFieldEditorRenderer.java
new file mode 100644
index 0000000..a4e3c43
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/IntegerFieldEditorRenderer.java
@@ -0,0 +1,90 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal;
+
+import javax.inject.Inject;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal.exception.ValidationFailedException;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.IntegerFieldEditor;
+
+import com.vaadin.ui.CssLayout;
+import com.vaadin.ui.TextField;
+
+/**
+ * @author rushan
+ *
+ */
+public class IntegerFieldEditorRenderer extends FieldEditorRenderer<Integer> {
+
+	@Inject
+	IntegerFieldEditor editor;
+
+	TextField textField;
+
+	@Override
+	public void render() {
+		CssLayout layout = createCssLayoutWithCaption();
+		textField = new TextField();
+		if (getValue() != null)
+			textField.setValue(getValue().toString());
+		textField.setWidth("100%");
+		layout.addComponent(textField);
+	}
+
+	@Override
+	public Integer getValue() {
+		return getPreferences().getInt(editor.getPreferenceName(),
+				editor.getDefaultValueTyped());
+	}
+
+	@Override
+	public void setValue(Integer value) {
+		this.getPreferences().putInt(editor.getPreferenceName(), value);
+	}
+
+	@Override
+	public void validate() throws ValidationFailedException {
+
+		if (textField.getValue() != null) {
+			int value;
+			try {
+				value = Integer.parseInt(textField.getValue());
+			} catch (NumberFormatException e) {
+				throw new ValidationFailedException(editor.getLabel(),
+						"The value should be integer value");
+			}
+
+			if ((editor.getMinValidValue() != null && value < editor
+					.getMinValidValue())
+					|| (editor.getMaxValidValue() != null && value > editor
+							.getMaxValidValue()))
+				throw new ValidationFailedException(editor.getLabel(),
+						String.format("Value should be in range (%s, %s)",
+								editor.getMinValidValue() != null ? editor
+										.getMinValidValue().toString() : "?",
+								editor.getMaxValidValue() != null ? editor
+										.getMaxValidValue().toString() : "?"));
+		}
+	}
+
+	@Override
+	public void save() {
+		String value = textField.getValue();
+		if (value != null) {
+			try {
+				int intValue = Integer.parseInt(value);
+				setValue(intValue);
+			} catch (NumberFormatException e) {
+
+			}
+		}
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/ListEditorRenderer.java b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/ListEditorRenderer.java
new file mode 100644
index 0000000..a9f05aa
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/ListEditorRenderer.java
@@ -0,0 +1,229 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.inject.Inject;
+
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal.util.EmfHelper;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.ListCrud;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.ListEditor;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.ListFold;
+
+import com.vaadin.ui.Button;
+import com.vaadin.ui.Button.ClickEvent;
+import com.vaadin.ui.Button.ClickListener;
+import com.vaadin.ui.CssLayout;
+import com.vaadin.ui.HorizontalLayout;
+import com.vaadin.ui.Label;
+import com.vaadin.ui.ListSelect;
+
+/**
+ * @author rushan
+ *
+ */
+public class ListEditorRenderer extends FieldEditorRenderer<String> {
+
+	private CssLayout buttonPanel;
+	private Button addButton;
+	private Button removeButton;
+	private Button upButton;
+	private Button downButton;
+
+	@Inject
+	ListEditor editor;
+
+	ListSelect select;
+
+	@Inject
+	IEclipseContext context;
+
+	@Override
+	public void render() {
+		select = new ListSelect();
+		refreshSelect();
+
+		CssLayout layout = new CssLayout();
+		layout.setWidth("100%");
+
+		layout.addComponent(new Label(editor.getLabel()));
+
+		HorizontalLayout row = new HorizontalLayout();
+		row.setWidth("100%");
+		layout.addComponent(row);
+
+		row.addComponent(select);
+		select.setWidth("100%");
+
+		buttonPanel = new CssLayout();
+		buttonPanel.setSizeFull();
+		row.addComponent(buttonPanel);
+
+		row.setExpandRatio(select, 8);
+		row.setExpandRatio(buttonPanel, 2);
+
+		createButtons();
+		component = layout;
+	}
+
+	private void refreshSelect() {
+
+		String value = getValue();
+		if (value != null) {
+			String[] values = value.split(";");
+			select.removeAllItems();
+			for (String v : values) {
+				select.addItem(v);
+			}
+		}
+
+	}
+
+	@Override
+	public void save() {
+
+		String value = "";
+		for (Object v : select.getItemIds()) {
+			value += v.toString() + ";";
+		}
+
+		setValue(value);
+	}
+
+	public static class DefaultListFold extends EmfHelper.EInterface implements
+			ListFold {
+
+		@Override
+		public void apply(String value, StringBuffer prev) {
+			prev.append(";" + value);
+		}
+	}
+
+	public String buildValue() {
+
+		ListFold op = editor.getListFold();
+		if (op == null) {
+			op = new DefaultListFold();
+		}
+
+		StringBuffer str = new StringBuffer();
+		for (Object s : select.getItemIds()) {
+			op.apply(s.toString(), str);
+		}
+
+		return str.toString();
+	}
+
+	private void createButtons() {
+		addButton = addButton("Add", "add-button", new ClickListener() {
+
+			@Override
+			public void buttonClick(ClickEvent event) {
+				ListCrud crud = editor.getListCrud();
+				if (crud != null) {
+					String newValue = crud.addNewValue(buildValue());
+					select.addItem(newValue);
+				}
+			}
+		});
+
+		removeButton = addButton("Remove", "remove-button",
+				new ClickListener() {
+
+					@Override
+					public void buttonClick(ClickEvent event) {
+						if (select.getValue() != null) {
+							select.removeItem(select.getValue());
+						}
+					}
+				});
+		upButton = addButton("Up", "up-button", new ClickListener() {
+
+			@Override
+			public void buttonClick(ClickEvent event) {
+				swap(true);
+			}
+		});
+		downButton = addButton("Down", "down-button", new ClickListener() {
+
+			@Override
+			public void buttonClick(ClickEvent event) {
+				swap(false);
+			}
+		});
+
+		// buttonPanel.setExpandRatio(addButton, 0);
+		// buttonPanel.setExpandRatio(removeButton, 0);
+		// buttonPanel.setExpandRatio(upButton, 0);
+		// buttonPanel.setExpandRatio(downButton, 1);
+	}
+
+	private Button addButton(String name, String style, ClickListener listener) {
+		Button button = new Button(name);
+		button.addStyleName(style);
+		button.setWidth("80px");
+		buttonPanel.addComponent(button);
+		button.addClickListener(listener);
+		return button;
+	}
+
+	private void swap(boolean up) {
+		Object selectedValue = select.getValue();
+		if (selectedValue == null)
+			return;
+
+		int index = -1;
+		List<Object> list = new ArrayList<>(select.getItemIds());
+		for (int i = 0; i < list.size(); i++) {
+			if (selectedValue.equals(list.get(i))) {
+				index = i;
+				break;
+			}
+		}
+
+		if (index < 0)
+			return;
+
+		int target = up ? index - 1 : index + 1;
+
+		if (target < 0)
+			target = list.size() - 1;
+		else if (target >= list.size())
+			target = 0;
+
+		if (index >= 0) {
+			Object selected = list.remove(index);
+			list.add(target, selected);
+		}
+
+		select.removeAllItems();
+
+		for (Object o : list) {
+			select.addItem(o);
+		}
+
+		select.select(selectedValue);
+	}
+
+	@Override
+	public String getValue() {
+		return getPreferences().get(editor.getPreferenceName(),
+				editor.getDefaultValue());
+	}
+
+	@Override
+	public void setValue(String value) {
+		getPreferences().put(editor.getPreferenceName(), value);
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/ListFieldEditorRenderer.java b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/ListFieldEditorRenderer.java
new file mode 100644
index 0000000..233f5c8
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/ListFieldEditorRenderer.java
@@ -0,0 +1,75 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal;
+
+import javax.inject.Inject;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.Entry;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.ListFieldEditor;
+
+import com.vaadin.data.Item;
+import com.vaadin.ui.AbstractSelect;
+import com.vaadin.ui.CssLayout;
+import com.vaadin.ui.Label;
+
+/**
+ * @author rushan
+ *
+ */
+public abstract class ListFieldEditorRenderer extends
+		FieldEditorRenderer<String> {
+	@Inject
+	ListFieldEditor editor;
+
+	AbstractSelect select;
+
+	public abstract AbstractSelect createSelect();
+
+	@Override
+	public void render() {
+		select = createSelect();
+
+		CssLayout layout = new CssLayout();
+		layout.addComponent(new Label(editor.getLabel()));
+		layout.addComponent(select);
+
+		refreshSelect();
+		component = layout;
+	}
+
+	protected void refreshSelect() {
+		select.removeAllItems();
+		for (Entry entry : editor.getEntries()) {
+			Item item = select.addItem(entry.getValue());
+			select.setItemCaption(entry.getValue(), entry.getName());
+		}
+		String value = getValue();
+		if (value != null)
+			select.select(value);
+	}
+
+	@Override
+	public String getValue() {
+		return getPreferences().get(editor.getPreferenceName(),
+				editor.getDefaultValue());
+	}
+
+	@Override
+	public void setValue(String value) {
+		getPreferences().put(editor.getPreferenceName(), value);
+	}
+
+	@Override
+	public void save() {
+		if (select.getValue() != null)
+			setValue(select.getValue().toString());
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/PreferencesDialog.java b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/PreferencesDialog.java
new file mode 100644
index 0000000..f928790
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/PreferencesDialog.java
@@ -0,0 +1,596 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal;
+
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+
+import javax.annotation.PostConstruct;
+import javax.inject.Inject;
+
+import org.eclipse.e4.core.contexts.ContextInjectionFactory;
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.core.di.annotations.Optional;
+import org.eclipse.e4.core.services.events.IEventBroker;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.osbp.vaaclipse.ui.preferences.addon.PreferencesAuthorization;
+import org.eclipse.osbp.vaaclipse.ui.preferences.addon.PreferencesEvents;
+import org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal.exception.ValidationFailedException;
+import org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal.util.ModelHelper;
+import org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal.util.PrefHelper;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesPage;
+import org.osgi.framework.BundleContext;
+import org.osgi.service.prefs.BackingStoreException;
+import org.osgi.service.prefs.Preferences;
+import org.eclipse.osbp.vaaclipse.publicapi.resources.BundleResource;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.vaadin.data.Item;
+import com.vaadin.event.FieldEvents.TextChangeEvent;
+import com.vaadin.event.FieldEvents.TextChangeListener;
+import com.vaadin.event.ItemClickEvent;
+import com.vaadin.server.Sizeable;
+import com.vaadin.shared.MouseEventDetails.MouseButton;
+import com.vaadin.ui.Button;
+import com.vaadin.ui.Button.ClickEvent;
+import com.vaadin.ui.Button.ClickListener;
+import com.vaadin.ui.CssLayout;
+import com.vaadin.ui.HorizontalSplitPanel;
+import com.vaadin.ui.Label;
+import com.vaadin.ui.Notification;
+import com.vaadin.ui.Panel;
+import com.vaadin.ui.TextField;
+import com.vaadin.ui.Tree;
+import com.vaadin.ui.UI;
+import com.vaadin.ui.VerticalLayout;
+import com.vaadin.ui.Window;
+
+import e4modelextension.VaaclipseApplication;
+
+/**
+ * @author rushan
+ *
+ */
+public class PreferencesDialog {
+
+	static final String PAGE_HEADER_ERROR_TEXT = "page-header-error-text";
+
+	@Inject
+	IEventBroker eventBroker;
+
+	@Inject
+	VaaclipseApplication app;
+
+	@Inject
+	IEclipseContext context;
+
+	@Inject
+	@Optional
+	PreferencesCategory selectedCategory;
+
+	@Inject
+	@Optional
+	PreferencesAuthorization authService;
+
+	Logger logger = LoggerFactory.getLogger(PreferencesDialog.class);
+
+	@Inject
+	UI ui;
+
+	TextField filterField = new TextField();
+
+	private Tree tree;
+
+	private Window window;
+
+	HorizontalSplitPanel splitPanel = new HorizontalSplitPanel();
+
+	private Panel treePanel;
+
+	private VerticalLayout rightSide;
+
+	private CssLayout leftSide;
+
+	private Button filterButton = new Button();
+	private Button clearFilterButton = new Button();
+
+	private CssLayout pageHeader;
+
+	private CssLayout pageContent;
+
+	private CssLayout pageBottom;
+
+	private Button restoreDefaults;
+
+	private Button apply;
+
+	private VerticalLayout root;
+
+	private CssLayout dlgButtonPanel;
+
+	private Button cancelButton;
+
+	private Button okButton;
+
+	private Label pageHeaderText;
+
+	private BundleContext bundleContext;
+
+	private String errorMessage;
+
+	List<PreferencesPage> visitedPages = new ArrayList<>();
+
+	private HashSet<PreferencesCategory> visibleCategories;
+
+	private List<PreferencesCategory> categoryList = new ArrayList<>(100);
+
+	public Window getWindow() {
+		return window;
+	}
+
+	public PreferencesCategory getSelectedCategory() {
+		return selectedCategory;
+	}
+
+	public PreferencesPage getCurrentPage() {
+		return selectedCategory.getPage();
+	}
+
+	@PostConstruct
+	public void init() {
+		if (selectedCategory == null
+				&& !app.getPreferencesCategories().isEmpty()) {
+			selectedCategory = app.getPreferencesCategories().get(0);
+		}
+
+		createWindow();
+		createSearchField();
+		createTree();
+
+		addListeners();
+	}
+
+	public void createWindow() {
+		window = new Window();
+		window.setCaption("Preferences");
+		window.addStyleName("preferences-dialog");
+		window.setWidth("800px");
+		window.setHeight("600px");
+
+		splitPanel.setSizeFull();
+
+		dlgButtonPanel = new CssLayout();
+		dlgButtonPanel.setWidth("100%");
+		dlgButtonPanel.addStyleName("dlg-button-panel");
+
+		// dlgButtonPanel.addComponent(new Label("<hr/>", ContentMode.HTML));
+
+		cancelButton = new Button("Cancel");
+		cancelButton.addStyleName("cancel-button");
+		dlgButtonPanel.addComponent(cancelButton);
+		okButton = new Button("OK");
+		okButton.addStyleName("ok-button");
+		dlgButtonPanel.addComponent(okButton);
+
+		root = new VerticalLayout();
+		root.setSizeFull();
+		window.setContent(root);
+		root.addComponent(splitPanel);
+		root.addComponent(dlgButtonPanel);
+		root.setExpandRatio(splitPanel, 10);
+		root.setExpandRatio(dlgButtonPanel, 0);
+
+		treePanel = new Panel();
+		treePanel.addStyleName("categories-panel");
+		treePanel.addStyleName("borderless");
+		treePanel.setSizeFull();
+
+		leftSide = new CssLayout();
+		leftSide.addStyleName("categories");
+		leftSide.setSizeFull();
+		// filterField.setWidth("70%");
+		filterField.addStyleName("categories-filter");
+		leftSide.addComponent(filterField);
+
+		filterButton
+				.setIcon(BundleResource
+						.valueOf("platform:/plugin/org.eclipse.osbp.vaaclipse.ui.preferences.addon/img/find.png"));
+		filterButton.addStyleName("vaaclipsebutton");
+		filterButton.addStyleName("icon-only");
+		filterButton.addStyleName("filter-category-button");
+
+		clearFilterButton
+				.setIcon(BundleResource
+						.valueOf("platform:/plugin/org.eclipse.osbp.vaaclipse.ui.preferences.addon/img/clear.png"));
+		clearFilterButton.addStyleName("vaaclipsebutton");
+		clearFilterButton.addStyleName("icon-only");
+		clearFilterButton.addStyleName("clear-filter-button");
+
+		leftSide.addComponent(clearFilterButton);
+		leftSide.addComponent(filterButton);
+		leftSide.addComponent(treePanel);
+
+		rightSide = new VerticalLayout();
+		rightSide.setSizeFull();
+		// rightSide.setMargin(new MarginInfo(true, true, false, true));
+
+		pageHeader = new CssLayout();
+		pageHeader.addStyleName("page-header-panel");
+		pageHeader.setWidth("100%");
+		pageHeaderText = new Label("Page");
+		pageHeaderText.addStyleName("page-header-text");
+		pageHeader.addComponent(pageHeaderText);
+		rightSide.addComponent(pageHeader);
+
+		pageContent = new CssLayout();
+		// pageContent.setSizeFull();
+		Panel pageContentPanel = new Panel(pageContent);// wrap page content to
+														// panel - if content is
+														// too large, scrolling
+														// needed
+		pageContentPanel.setSizeFull();
+		rightSide.addComponent(pageContentPanel);
+
+		pageBottom = new CssLayout();
+		pageBottom.addStyleName("page-bottom-panel");
+		pageBottom.setWidth("100%");
+		rightSide.addComponent(pageBottom);
+
+		apply = new Button("Apply");
+		apply.addStyleName("apply");
+		pageBottom.addComponent(apply);
+
+		restoreDefaults = new Button("RestoreDefaults");
+		restoreDefaults.addStyleName("restore-defaults");
+		pageBottom.addComponent(restoreDefaults);
+
+		splitPanel.addComponent(leftSide);
+		splitPanel.addComponent(rightSide);
+		splitPanel.setSplitPosition(30, Sizeable.Unit.PERCENTAGE);
+
+		rightSide.setExpandRatio(pageHeader, 0);
+		rightSide.setExpandRatio(pageContentPanel, 1);
+		rightSide.setExpandRatio(pageBottom, 0);
+
+		clearFilterButton.addClickListener(new ClickListener() {
+			@Override
+			public void buttonClick(ClickEvent event) {
+				filterField.setValue("");
+				refreshTree();
+			}
+		});
+
+		filterButton.addClickListener(new ClickListener() {
+
+			@Override
+			public void buttonClick(ClickEvent event) {
+				refreshTree();
+			}
+		});
+	}
+
+	public void createSearchField() {
+		filterField.addTextChangeListener(new TextChangeListener() {
+
+			@Override
+			public void textChange(TextChangeEvent event) {
+				refreshTree();
+			}
+		});
+	}
+
+	private void createTree() {
+		tree = new Tree();
+		tree.setSizeFull();
+		tree.setImmediate(true);
+		treePanel.setContent(tree);
+
+		tree.addContainerProperty("name", String.class, "NoName");
+		tree.setItemCaptionPropertyId("name");
+
+		ModelHelper.buildChildCategoryListIncludeThisList(
+				app.getPreferencesCategories(), categoryList);
+
+		refreshTree();
+
+		tree.addItemClickListener(new ItemClickEvent.ItemClickListener() {
+
+			public void itemClick(final ItemClickEvent event) {
+				if (event.getButton() == MouseButton.LEFT) {
+					PreferencesCategory selectedCat = (PreferencesCategory) event
+							.getItemId();
+					if (selectedCat != null) {
+						openPreferencePageForCategory(selectedCat);
+					}
+				}
+			}
+		});
+
+		if (selectedCategory != null) {
+			tree.select(selectedCategory);
+			openPreferencePageForCategory(selectedCategory);
+		}
+	}
+
+	private void refreshTree() {
+		tree.removeAllItems();
+
+		EList<PreferencesCategory> catList = app.getPreferencesCategories();
+
+		markVisibility();
+
+		fillCategories(catList, null);
+
+		for (Object id : tree.rootItemIds()) {
+			tree.expandItemsRecursively(id);
+		}
+	}
+
+	private void markVisibility() {
+		visibleCategories = new HashSet<PreferencesCategory>();
+
+		String filterValue = filterField.getValue();
+		if (filterValue.isEmpty()) {
+			return;
+		}
+		for (PreferencesCategory category : categoryList) {
+			if (category != null && category.getName().contains(filterValue)) {
+				do {
+					visibleCategories.add(category);
+					category = category.getParentCategory();
+				} while (category != null);
+			}
+		}
+	}
+
+	@SuppressWarnings("unchecked")
+	private void fillCategories(List<PreferencesCategory> list,
+			PreferencesCategory parentCat) {
+		String search = filterField.getValue().trim();
+		for (PreferencesCategory c : list) {
+
+			if (authService != null && c.getParentCategory() != null
+					&& "user".equals(c.getParentCategory().getId())
+					&& !authService.isAllowed(c)) {
+				continue;
+			}
+
+			if (c.getName() == null)
+				c.setName("No Name");
+			if (filterField.getValue().isEmpty()
+					|| visibleCategories.contains(c)) {
+
+				Item catItem = tree.addItem(c);
+				catItem.getItemProperty("name").setValue(c.getName());
+				if (c.getChildCategories().isEmpty())
+					tree.setChildrenAllowed(c, false);
+
+				if (parentCat != null)
+					tree.setParent(c, parentCat);
+
+				fillCategories(c.getChildCategories(), c);
+			}
+		}
+	}
+
+	private void openPreferencePageForCategory(PreferencesCategory selectedCat) {
+		selectedCategory = selectedCat;
+		refreshHeaderMessage();
+
+		pageContent.removeAllComponents();
+
+		if (selectedCat.getPage() != null) {
+			IEclipseContext pageContext = context.createChild();
+			pageContext.set(CssLayout.class, pageContent);
+			pageContext.set(PreferencesPage.class, selectedCat.getPage());
+			PreferencesPageRenderer pageRenderer = ContextInjectionFactory
+					.make(PreferencesPageRenderer.class, pageContext);
+			pageRenderer.render();
+			visitedPages.add(selectedCat.getPage());
+		} else if (!selectedCat.getChildCategories().isEmpty()) {
+			pageContent
+					.addComponent(new Label(
+							"Expand the tree to edit a preferences for a specific feature"));
+		}
+	}
+
+	private void addListeners() {
+
+		restoreDefaults.addClickListener(new ClickListener() {
+
+			@Override
+			public void buttonClick(ClickEvent event) {
+				restoreDefaults();
+			}
+		});
+
+		apply.addClickListener(new ClickListener() {
+
+			@Override
+			public void buttonClick(ClickEvent event) {
+				applyPressed();
+			}
+		});
+
+		okButton.addClickListener(new ClickListener() {
+
+			@Override
+			public void buttonClick(ClickEvent event) {
+				okPressed();
+			}
+		});
+
+		cancelButton.addClickListener(new ClickListener() {
+
+			@Override
+			public void buttonClick(ClickEvent event) {
+				cancelPressed();
+			}
+		});
+	}
+
+	public void setErrorMessage(String errorMessage) {
+		this.errorMessage = errorMessage;
+		refreshHeaderMessage();
+	}
+
+	public void clearErrorMessage() {
+		this.errorMessage = null;
+		refreshHeaderMessage();
+	}
+
+	public void refreshHeaderMessage() {
+		if (errorMessage != null) {
+			pageHeaderText.addStyleName(PAGE_HEADER_ERROR_TEXT);
+			pageHeaderText.setValue(errorMessage);
+		} else {
+			pageHeaderText.removeStyleName(PAGE_HEADER_ERROR_TEXT);
+			pageHeaderText.setValue(selectedCategory.getName());
+		}
+	}
+
+	private void restoreDefaults() {
+		PreferencesPage currentPage = getCurrentPage();
+		if (currentPage != null) {
+			try {
+				restoreDefaultsOnPage(currentPage);
+			} catch (Exception e) {
+				Notification.show("Error restoring defaults",
+						"Restoring defaults on this page failed",
+						Notification.Type.ERROR_MESSAGE);
+				return;
+			}
+			fireEvent(PreferencesEvents.PREFERENCES_TO_DEFAULTS, currentPage);
+
+			// Refresh the current page (it should be rerendered)
+			openPreferencePageForCategory(getSelectedCategory());
+		}
+	}
+
+	private void okPressed() {
+
+		Exception exception = null;
+		for (PreferencesPage page : visitedPages) {
+			try {
+				applyChangesOnPage(page);
+			} catch (ValidationFailedException validationException) {
+				setErrorMessage(validationException.getLocalizedMessage());
+				Notification.show("Validation failed",
+						validationException.getLocalizedMessage(),
+						Notification.Type.WARNING_MESSAGE);
+				return;
+			} catch (Exception e) {
+				exception = e;
+			}
+		}
+		if (exception != null) {
+			String errorMessage = "Saving changes was failed on some pages";
+			setErrorMessage(errorMessage);
+			Notification.show("Error apply changes", errorMessage,
+					Notification.Type.ERROR_MESSAGE);
+			return;
+		} else {
+			fireEvent(PreferencesEvents.PREFERENCES_APPLIED,
+					(PreferencesPage[]) visitedPages
+							.toArray(new PreferencesPage[visitedPages.size()]));
+		}
+
+		clearErrorMessage();
+
+		ui.removeWindow(window);
+	}
+
+	private void cancelPressed() {
+		ui.removeWindow(window);
+	}
+
+	private void applyPressed() {
+		PreferencesPage currentPage = getCurrentPage();
+		if (currentPage != null) {
+			try {
+				applyChangesOnPage(currentPage);
+			} catch (ValidationFailedException validationException) {
+				setErrorMessage(validationException.getLocalizedMessage());
+				Notification.show("Validation failed",
+						"The preferences is not correct",
+						Notification.Type.WARNING_MESSAGE);
+				return;
+			} catch (Exception e) {
+				setErrorMessage("Applying changes on this page failed");
+				Notification.show("Error apply changes",
+						"Applying changes on this page failed",
+						Notification.Type.ERROR_MESSAGE);
+				return;
+			}
+			clearErrorMessage();
+			fireEvent(PreferencesEvents.PREFERENCES_APPLIED, currentPage);
+		}
+	}
+
+	private void applyChangesOnPage(PreferencesPage page)
+			throws BackingStoreException, ValidationFailedException {
+		PreferencesPageRenderer pageRenderer = (PreferencesPageRenderer) page
+				.getRenderer();
+
+		pageRenderer.validate();
+
+		try {
+			pageRenderer.save();
+		} catch (Exception e) {
+			logger.error(
+					"Error copy changes from UI to preferences for category {}",
+					selectedCategory.getName(), e);
+			throw e;
+		}
+
+		try {
+			PrefHelper.flush(page);
+		} catch (BackingStoreException e) {
+			logger.error("Error flushing changes for category {}", page
+					.getCategory().getName(), e);
+			throw e;
+		}
+	}
+
+	private void restoreDefaultsOnPage(PreferencesPage page)
+			throws BackingStoreException {
+
+		try {
+			for (FieldEditor<?> fieldEditor : page.getChildren()) {
+				String defaultValue = fieldEditor.getDefaultValue();
+				if (defaultValue != null)
+					((Preferences) fieldEditor.getPreferences()).put(
+							fieldEditor.getPreferenceName(), defaultValue);
+			}
+		} catch (Exception e) {
+			logger.error(
+					"Error copy default values from model to preferences for category {}",
+					page.getCategory().getName(), e);
+			throw e;
+		}
+
+		try {
+			PrefHelper.flush(page);
+		} catch (BackingStoreException e) {
+			logger.error("Error flushing changes for category {}", page
+					.getCategory().getName(), e);
+			throw e;
+		}
+	}
+
+	private void fireEvent(String topic, PreferencesPage... pages) {
+		eventBroker.send(topic, pages);
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/PreferencesPageRenderer.java b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/PreferencesPageRenderer.java
new file mode 100644
index 0000000..10f7cb0
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/PreferencesPageRenderer.java
@@ -0,0 +1,169 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal;
+
+import javax.annotation.PostConstruct;
+import javax.inject.Inject;
+
+import org.eclipse.e4.core.contexts.ContextInjectionFactory;
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.core.services.contributions.IContributionFactory;
+import org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal.exception.ValidationFailedException;
+import org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal.util.PrefHelper;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.BooleanFieldEditor;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.ComboFieldEditor;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.IntegerFieldEditor;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.ListEditor;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesPage;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.RadioGroupFieldEditor;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.ScaleFieldEditor;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.StringFieldEditor;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.util.PreferencesSwitch;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.vaadin.ui.Component;
+import com.vaadin.ui.CssLayout;
+import com.vaadin.ui.Label;
+
+import e4modelextension.VaaclipseApplication;
+
+/**
+ * @author rushan
+ *
+ */
+public class PreferencesPageRenderer {
+
+	@Inject
+	VaaclipseApplication app;
+
+	@Inject
+	CssLayout pageLayout;
+
+	@Inject
+	PreferencesPage page;
+
+	@Inject
+	IEclipseContext context;
+
+	Logger logger = LoggerFactory.getLogger(PreferencesPageRenderer.class);
+
+	@PostConstruct
+	public void init() {
+		page.setRenderer(this);
+	}
+
+	@SuppressWarnings("restriction")
+	public void render() {
+		pageLayout.addStyleName("preferences-page");
+
+		for (FieldEditor<?> editor : page.getChildren()) {
+			Class<? extends FieldEditorRenderer<?>> rendererClass = getRendererClass(editor);
+			if (rendererClass != null) {
+				IEclipseContext rendererContext = context.createChild();
+
+				Class<?>[] interfaces = editor.getClass().getInterfaces();
+				PrefHelper.populateInterfaces(editor, rendererContext,
+						interfaces);
+				FieldEditorRenderer<?> fieldRenderer = ContextInjectionFactory
+						.make(rendererClass, rendererContext);
+				fieldRenderer.render();
+				Component fieldComponent = fieldRenderer.getComponent();
+				editor.setWidget(fieldComponent);
+				editor.setRenderer(fieldRenderer);
+			} else {
+				logger.warn("{} editor has no renderer. It is not rendered.",
+						editor);
+			}
+		}
+
+		// If there are contribution let it to layout this page
+		if (page.getContributionURI() != null) {
+			IContributionFactory contributionFactory = (IContributionFactory) context
+					.get(IContributionFactory.class.getName());
+			Object pageContribution = contributionFactory.create(
+					page.getContributionURI(), context);
+			page.setObject(pageContribution);
+		} else {
+			// If there are no contribution class for this page, adding with
+			// default layout and style 'field-editor'
+			Label pageDesc = new Label(page.getDescription());
+			pageDesc.addStyleName("field-editor");
+			pageLayout.addComponent(pageDesc);
+			for (FieldEditor<?> editor : page.getChildren()) {
+				Component fieldComponent = (Component) editor.getWidget();
+				fieldComponent.addStyleName("field-editor");
+				pageLayout.addComponent(fieldComponent);
+			}
+		}
+	}
+
+	@SuppressWarnings({ "unchecked", "rawtypes" })
+	private Class<? extends FieldEditorRenderer<?>> getRendererClass(
+			FieldEditor<?> editor) {
+
+		PreferencesSwitch<?> switcher = new PreferencesSwitch() {
+			@Override
+			public Object caseBooleanFieldEditor(BooleanFieldEditor object) {
+				return BooleanFieldEditorRenderer.class;
+			}
+
+			@Override
+			public Object caseComboFieldEditor(ComboFieldEditor object) {
+				return ComboFieldEditorRenderer.class;
+			}
+
+			@Override
+			public Object caseListEditor(ListEditor object) {
+				return ListEditorRenderer.class;
+			}
+
+			@Override
+			public Object caseScaleFieldEditor(ScaleFieldEditor object) {
+				return ScaleFieldEditorRenderer.class;
+			}
+
+			@Override
+			public Object caseRadioGroupFieldEditor(RadioGroupFieldEditor object) {
+				return RadioGroupFieldEditorRenderer.class;
+			}
+
+			@Override
+			public Object caseStringFieldEditor(StringFieldEditor object) {
+				return StringFieldEditorRenderer.class;
+			}
+
+			@Override
+			public Object caseIntegerFieldEditor(IntegerFieldEditor object) {
+				return IntegerFieldEditorRenderer.class;
+			}
+		};
+		return (Class<? extends FieldEditorRenderer<?>>) switcher
+				.doSwitch(editor);
+	}
+
+	public void save() {
+		for (FieldEditor<?> editor : page.getChildren()) {
+			FieldEditorRenderer<?> renderer = (FieldEditorRenderer<?>) editor
+					.getRenderer();
+			renderer.save();
+		}
+	}
+
+	public void validate() throws ValidationFailedException {
+		for (FieldEditor<?> editor : page.getChildren()) {
+			FieldEditorRenderer<?> renderer = (FieldEditorRenderer<?>) editor
+					.getRenderer();
+			renderer.validate();
+		}
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/RadioGroupFieldEditorRenderer.java b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/RadioGroupFieldEditorRenderer.java
new file mode 100644
index 0000000..9a4c83f
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/RadioGroupFieldEditorRenderer.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal;
+
+import com.vaadin.ui.AbstractSelect;
+import com.vaadin.ui.OptionGroup;
+
+/**
+ * @author rushan
+ *
+ */
+public class RadioGroupFieldEditorRenderer extends ListFieldEditorRenderer {
+
+	@Override
+	public AbstractSelect createSelect() {
+		return new OptionGroup();
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/ScaleFieldEditorRenderer.java b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/ScaleFieldEditorRenderer.java
new file mode 100644
index 0000000..1758e9f
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/ScaleFieldEditorRenderer.java
@@ -0,0 +1,75 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal;
+
+import javax.inject.Inject;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.ScaleFieldEditor;
+
+import com.vaadin.shared.ui.slider.SliderOrientation;
+import com.vaadin.ui.CssLayout;
+import com.vaadin.ui.Label;
+import com.vaadin.ui.Slider;
+import com.vaadin.ui.Slider.ValueOutOfBoundsException;
+
+/**
+ * @author rushan
+ *
+ */
+public class ScaleFieldEditorRenderer extends FieldEditorRenderer<Integer> {
+
+	@Inject
+	ScaleFieldEditor editor;
+
+	Slider slider;
+
+	@Override
+	public void render() {
+		CssLayout layout = new CssLayout();
+		layout.setWidth("100%");
+		layout.addComponent(new Label(editor.getLabel()));
+		slider = new Slider();
+		slider.setWidth("100%");
+		if (editor.getMaxValue() != null)
+			slider.setMax(editor.getMaxValue().doubleValue());
+		if (editor.getMinValue() != null)
+			slider.setMin(editor.getMinValue().doubleValue());
+
+		try {
+			slider.setValue(getValue().doubleValue());
+		} catch (ValueOutOfBoundsException vo) {
+
+		}
+
+		slider.setOrientation(SliderOrientation.HORIZONTAL);
+		layout.addComponent(slider);
+		this.component = layout;
+	}
+
+	@Override
+	public Integer getValue() {
+		return getPreferences().getInt(editor.getPreferenceName(),
+				editor.getDefaultValueTyped());
+	}
+
+	@Override
+	public void setValue(Integer value) {
+		this.getPreferences().putInt(editor.getPreferenceName(), value);
+	}
+
+	@Override
+	public void save() {
+		if (slider.getValue() != null) {
+			setValue(slider.getValue().intValue());
+		}
+	}
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/StringFieldEditorRenderer.java b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/StringFieldEditorRenderer.java
new file mode 100644
index 0000000..6ba794f
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/StringFieldEditorRenderer.java
@@ -0,0 +1,74 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal;
+
+import javax.inject.Inject;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal.exception.ValidationFailedException;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.StringFieldEditor;
+
+import com.vaadin.ui.CssLayout;
+import com.vaadin.ui.Label;
+import com.vaadin.ui.TextField;
+
+/**
+ * @author rushan
+ *
+ */
+public class StringFieldEditorRenderer extends FieldEditorRenderer<String> {
+
+	@Inject
+	StringFieldEditor editor;
+	private TextField field;
+
+	@Override
+	public void render() {
+
+		field = new TextField();
+		field.setValue(getValue());
+		// field.setCaption(editor.getLabel());
+
+		CssLayout layout = new CssLayout();
+		Label label = new Label(editor.getLabel());
+		layout.addComponent(label);
+		layout.addComponent(field);
+
+		component = layout;
+	}
+
+	@Override
+	public String getValue() {
+		return getPreferences().get(editor.getPreferenceName(),
+				editor.getDefaultValueTyped());
+	}
+
+	@Override
+	public void setValue(String value) {
+		if (value != null)
+			getPreferences().put(editor.getPreferenceName(), value);
+	}
+
+	@Override
+	public void validate() throws ValidationFailedException {
+		if (field.getValue() != null && editor.getMaxLength() != null) {
+			if (field.getValue().length() > editor.getMaxLength()) {
+				throw new ValidationFailedException(editor.getLabel(),
+						"The length of text should not be greater than "
+								+ editor.getMaxLength());
+			}
+		}
+	}
+
+	@Override
+	public void save() {
+		setValue(field.getValue());
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/exception/ValidationFailedException.java b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/exception/ValidationFailedException.java
new file mode 100644
index 0000000..e67dfdd
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/exception/ValidationFailedException.java
@@ -0,0 +1,21 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal.exception;
+
+/**
+ * @author rushan
+ *
+ */
+public class ValidationFailedException extends Exception {
+	public ValidationFailedException(String label, String msg) {
+		super(String.format("Field '%s' is not valid. %s", label, msg));
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/impexp/BasicImpExp.java b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/impexp/BasicImpExp.java
new file mode 100644
index 0000000..67f0bf4
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/impexp/BasicImpExp.java
@@ -0,0 +1,225 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal.impexp;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import javax.annotation.PostConstruct;
+import javax.inject.Inject;
+
+import org.eclipse.core.runtime.preferences.IPreferenceFilter;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesPage;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.FrameworkUtil;
+import org.eclipse.osbp.vaadin.optiondialog.OptionDialog;
+import org.eclipse.osbp.vaadin.optiondialog.OptionDialog.ComponentProvider;
+
+import com.vaadin.data.util.BeanItemContainer;
+import com.vaadin.ui.CheckBox;
+import com.vaadin.ui.CssLayout;
+import com.vaadin.ui.Label;
+import com.vaadin.ui.Panel;
+import com.vaadin.ui.Table;
+import com.vaadin.ui.Table.ColumnGenerator;
+import com.vaadin.ui.UI;
+
+import e4modelextension.VaaclipseApplication;
+
+/**
+ * @author rushan
+ *
+ */
+public abstract class BasicImpExp implements ComponentProvider {
+
+	public static final int IMP_EXP = 0;
+	public static final int CANCEL = 1;
+	public static final int MAX_DESCRIPTION_LENGTH = 75;
+
+	@Inject
+	VaaclipseApplication app;
+
+	OptionDialog dlg;
+	Table table;
+
+	List<CheckBox> checkBoxes = new ArrayList<>();
+	HashMap<String, Bundle> bundlesByName;
+	private BeanItemContainer<PreferencesPage> container;
+
+	private Label statusLabel;
+
+	@PostConstruct
+	public void init(UI ui) {
+
+		BundleContext bundleContext = FrameworkUtil.getBundle(this.getClass())
+				.getBundleContext();
+		bundlesByName = new HashMap<>();
+		for (Bundle b : bundleContext.getBundles()) {
+			bundlesByName.put(b.getSymbolicName(), b);
+		}
+
+		dlg = new OptionDialog();
+		dlg.addStyleName("preferences-export-import-dialog");
+
+		dlg.addOption(IMP_EXP, getActionName());
+		dlg.addOption(CANCEL, "Close");
+
+		dlg.setCaption(getActionName() + " Preferences");
+		dlg.setWidth("600px");
+		dlg.setHeight("450px");
+		dlg.setComponentProvider(this);
+		ui.addWindow(dlg);
+	}
+
+	@Override
+	public void setMessage(String message) {
+	}
+
+	@Override
+	public void optionSelected(OptionDialog optionDialog, int optionId) {
+		if (optionId == IMP_EXP) {
+			doAction();
+		} else {
+			dlg.close();
+		}
+	}
+
+	protected abstract void doAction();
+
+	protected abstract String getActionName();
+
+	protected void createPreferencesTable(CssLayout layout) {
+		createPreferencesTable(layout, app.getPreferencesPages());
+	}
+
+	protected void createPreferencesTable(CssLayout layout,
+			List<PreferencesPage> pageList) {
+
+		container = new BeanItemContainer<>(PreferencesPage.class);
+		container.addNestedContainerProperty("category.name");
+
+		refreshPreferences(pageList);
+
+		table = new Table();
+		table.setSizeFull();
+		table.setContainerDataSource(container);
+
+		table.addGeneratedColumn("description", new ColumnGenerator() {
+
+			@Override
+			public Object generateCell(Table source, Object itemId,
+					Object columnId) {
+				PreferencesPage page = (PreferencesPage) itemId;
+				String d = page.getDescription();
+				if (d.length() > MAX_DESCRIPTION_LENGTH) {
+					d = d.substring(0, MAX_DESCRIPTION_LENGTH).trim() + "...";
+				}
+				return d;
+			}
+		});
+
+		table.addGeneratedColumn("include", new ColumnGenerator() {
+
+			@Override
+			public Object generateCell(Table source, Object itemId,
+					Object columnId) {
+				CheckBox cb = new CheckBox();
+				cb.setData(itemId);
+				checkBoxes.add(cb);
+				return cb;
+			}
+		});
+
+		table.setColumnHeader("include", " ");
+		table.setColumnHeader("category.name", "Name");
+		table.setColumnHeader("description", "Description");
+		table.setVisibleColumns("include", "category.name", "description");
+
+		Panel panel = new Panel(table);
+		panel.setWidth("100%");
+		panel.setHeight("200px");
+		layout.addComponent(panel);
+	}
+
+	protected void createStatusLabel(CssLayout layout, String string) {
+		statusLabel = new Label("Press Export to export preferences");
+		statusLabel.addStyleName("status-label");
+		layout.addComponent(statusLabel);
+	}
+
+	protected void setStatusText(String statusText) {
+		// layout.removeComponent(statusLabel);
+		// statusLabel = new Label(statusText);
+		// statusLabel.addStyleName("status-label");
+		// layout.addComponent(statusLabel);
+
+		statusLabel.setValue(statusText);
+	}
+
+	protected void refreshPreferences(List<PreferencesPage> pageList) {
+		container.removeAllItems();
+
+		for (PreferencesPage page : pageList) {
+			container.addBean(page);
+		}
+	}
+
+	protected List<PreferencesPage> getSelectedPages() {
+		List<PreferencesPage> list = new ArrayList<>();
+		for (CheckBox cb : checkBoxes) {
+			if (cb.getValue()) {
+				PreferencesPage page = (PreferencesPage) cb.getData();
+				list.add(page);
+			}
+		}
+		return list;
+	}
+
+	protected IPreferenceFilter createFilter(List<PreferencesPage> selectedPages) {
+		final Set<String> set = new HashSet<>();
+		for (PreferencesPage p : selectedPages) {
+			for (FieldEditor<?> e : p.getChildren()) {
+				set.add(e.getEquinoxPath());
+			}
+		}
+
+		return new IPreferenceFilter() {
+
+			@Override
+			public String[] getScopes() {
+				return (String[]) set.toArray(new String[set.size()]);
+			}
+
+			@Override
+			public Map<?, ?> getMapping(String scope) {
+				return null;
+			}
+		};
+	}
+
+	protected StringBuffer toTextWithCatName(List<PreferencesPage> selectedPages) {
+		StringBuffer prefNames = new StringBuffer();
+		for (PreferencesPage page : selectedPages) {
+			String name = page.getCategory().getName();
+			if (name == null)
+				name = "NoName";
+			prefNames.append(name + ", ");
+		}
+		prefNames.delete(prefNames.length() - 2, prefNames.length() - 1);
+		return prefNames;
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/impexp/ExportPreferences.java b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/impexp/ExportPreferences.java
new file mode 100644
index 0000000..bc5dd93
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/impexp/ExportPreferences.java
@@ -0,0 +1,122 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal.impexp;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.InputStream;
+import java.util.List;
+
+import org.eclipse.core.internal.preferences.PreferencesService;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.preferences.IEclipsePreferences;
+import org.eclipse.core.runtime.preferences.IPreferenceFilter;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesPage;
+import org.eclipse.osbp.vaadin.optiondialog.OptionDialog;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.vaadin.server.FileDownloader;
+import com.vaadin.server.StreamResource;
+import com.vaadin.server.StreamResource.StreamSource;
+import com.vaadin.ui.Button;
+import com.vaadin.ui.Component;
+import com.vaadin.ui.CssLayout;
+import com.vaadin.ui.Label;
+import com.vaadin.ui.themes.BaseTheme;
+
+/**
+ * @author rushan
+ *
+ */
+public class ExportPreferences extends BasicImpExp {
+
+	Logger logger = LoggerFactory.getLogger(ExportPreferences.class);
+	private CssLayout layout;
+	private Button downloadButton;
+	private byte[] preferencesBytes;
+
+	@Override
+	public Component getComponent(OptionDialog optionDialog) {
+
+		layout = new CssLayout();
+		layout.addStyleName("export");
+		layout.addComponent(new Label("Select preferences to export"));
+		createPreferencesTable(layout);
+
+		createStatusLabel(layout, "Press Export to export preferences");
+
+		return layout;
+	}
+
+	@SuppressWarnings("serial")
+	private StreamResource createResource() {
+		return new StreamResource(new StreamSource() {
+			@Override
+			public InputStream getStream() {
+				if (preferencesBytes != null) {
+					ByteArrayInputStream is = new ByteArrayInputStream(
+							preferencesBytes);
+					return is;
+				} else
+					return null;
+			}
+		}, "preferences.epf");
+	}
+
+	@SuppressWarnings("restriction")
+	@Override
+	protected void doAction() {
+		// dlg.close();
+
+		List<PreferencesPage> selectedPages = getSelectedPages();
+		if (selectedPages.isEmpty()) {
+			setStatusText("Preferences doesn't selected. Please select preferences above.");
+			return;
+		}
+
+		IEclipsePreferences root = PreferencesService.getDefault()
+				.getRootNode();
+
+		ByteArrayOutputStream baos = new ByteArrayOutputStream(200);
+
+		try {
+			PreferencesService.getDefault().exportPreferences(root,
+					new IPreferenceFilter[] { createFilter(selectedPages) },
+					baos);
+		} catch (CoreException e) {
+			logger.error("Exception when export preferences", e);
+			return;
+		}
+
+		preferencesBytes = baos.toByteArray();
+
+		StringBuffer exportedPrefNames = toTextWithCatName(selectedPages);
+
+		setStatusText("Preferences was exported: "
+				+ exportedPrefNames.toString());
+
+		if (downloadButton == null) {
+			downloadButton = new Button(BaseTheme.BUTTON_LINK);
+			downloadButton.addStyleName("download-button");
+			downloadButton.setCaption("Download preferences.epf");
+			layout.addComponent(downloadButton);
+
+			FileDownloader fileDownloader = new FileDownloader(createResource());
+			fileDownloader.extend(downloadButton);
+		}
+	}
+
+	@Override
+	protected String getActionName() {
+		return "Export";
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/impexp/ImportPreferences.java b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/impexp/ImportPreferences.java
new file mode 100644
index 0000000..345d248
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/impexp/ImportPreferences.java
@@ -0,0 +1,159 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal.impexp;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.OutputStream;
+import java.util.ArrayList;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Set;
+
+import javax.inject.Inject;
+
+import org.eclipse.core.internal.preferences.PreferencesService;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.preferences.IExportedPreferences;
+import org.eclipse.core.runtime.preferences.IPreferenceFilter;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesPage;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesFactory;
+import org.osgi.service.prefs.BackingStoreException;
+import org.eclipse.osbp.vaadin.optiondialog.OptionDialog;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.vaadin.ui.Component;
+import com.vaadin.ui.CssLayout;
+import com.vaadin.ui.Label;
+import com.vaadin.ui.Upload;
+import com.vaadin.ui.Upload.Receiver;
+import com.vaadin.ui.Upload.SucceededEvent;
+import com.vaadin.ui.Upload.SucceededListener;
+
+/**
+ * @author rushan
+ *
+ */
+@SuppressWarnings({ "serial", "restriction" })
+public class ImportPreferences extends BasicImpExp implements
+		SucceededListener, Receiver {
+
+	private ByteArrayOutputStream baos;
+	Logger logger = LoggerFactory.getLogger(ImportPreferences.class);
+	private byte[] byteArray;
+
+	@Inject
+	PreferencesFactory factory;
+	private IExportedPreferences toImport;
+
+	@Override
+	public Component getComponent(OptionDialog optionDialog) {
+
+		CssLayout layout = new CssLayout();
+		layout.addStyleName("import");
+
+		Upload upload = new Upload("Select file with preferences for upload",
+				this);
+		upload.setWidth("100%");
+		upload.setButtonCaption("Upload");
+		upload.addSucceededListener(this);
+		layout.addComponent(upload);
+
+		layout.addComponent(new Label("Select preferences to import"));
+		createPreferencesTable(layout, new ArrayList<PreferencesPage>());
+
+		createStatusLabel(layout, "Choose file with preferences");
+
+		return layout;
+	}
+
+	@Override
+	protected void doAction() {
+
+		if (toImport == null) {
+			setStatusText("No uploaded preferences for import. Upload preferences file.");
+			return;
+		}
+
+		List<PreferencesPage> selectedPages = getSelectedPages();
+		if (selectedPages.isEmpty()) {
+			setStatusText("Nothing selected to import");
+			return;
+		}
+
+		try {
+			PreferencesService.getDefault().applyPreferences(toImport,
+					new IPreferenceFilter[] { createFilter(selectedPages) });
+		} catch (CoreException e) {
+			logger.error("Error when import preferences", e);
+			setStatusText("Import preferences failed");
+			return;
+		}
+
+		setStatusText("Preferences imported: "
+				+ toTextWithCatName(selectedPages));
+	}
+
+	@Override
+	protected String getActionName() {
+		return "Import";
+	}
+
+	@Override
+	public void uploadSucceeded(SucceededEvent event) {
+		byteArray = baos.toByteArray();
+		try {
+			toImport = PreferencesService.getDefault().readPreferences(
+					new ByteArrayInputStream(byteArray));
+		} catch (CoreException e) {
+			logger.error("Error when importing preferences", e);
+			return;
+		}
+
+		// Search pages that preferences contains in this preferences for import
+		List<PreferencesPage> pages = findPagesInPreferencesForImport(toImport);
+		refreshPreferences(pages);
+		setStatusText("Preferences file loaded. Please select preferences to import and press Import");
+	}
+
+	List<PreferencesPage> findPagesInPreferencesForImport(
+			IExportedPreferences toImport) {
+		Set<PreferencesPage> pages = new LinkedHashSet<>();
+		for (PreferencesPage page : app.getPreferencesPages()) {
+			if (page.getCategory() != null) {
+				for (FieldEditor<?> editor : page.getChildren()) {
+					try {
+						boolean nodeExists = toImport.nodeExists(editor
+								.getEquinoxPath());
+						if (nodeExists) {
+							pages.add(page);
+						}
+					} catch (BackingStoreException e) {
+						logger.error("Error read from preferences for import",
+								e);
+					}
+				}
+			}
+		}
+		return new ArrayList<>(pages);
+	}
+
+	@Override
+	public OutputStream receiveUpload(String filename, String mimeType) {
+
+		baos = new ByteArrayOutputStream(200);
+		return baos;
+
+	}
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/service/PreferenceProvider.java b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/service/PreferenceProvider.java
new file mode 100644
index 0000000..8be19a0
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/service/PreferenceProvider.java
@@ -0,0 +1,56 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal.service;
+
+import java.util.UUID;
+
+import javax.annotation.PostConstruct;
+import javax.inject.Inject;
+import javax.inject.Named;
+
+import org.eclipse.e4.core.di.annotations.Optional;
+import org.osgi.service.prefs.Preferences;
+import org.osgi.service.prefs.PreferencesService;
+import org.eclipse.osbp.vaaclipse.publicapi.preferences.IPreferenceProvider;
+
+public class PreferenceProvider implements IPreferenceProvider {
+
+	@Inject
+	@Named("userId")
+	@Optional
+	String userId;
+
+	@Inject
+	private PreferencesService delegate;
+
+	@PostConstruct
+	public void init() {
+		if (userId == null) {
+			userId = UUID.randomUUID().toString();
+		}
+	}
+
+	@Override
+	public Preferences getSystemPreferences() {
+		return delegate.getSystemPreferences();
+	}
+
+	@Override
+	public Preferences getUserPreferences() {
+		return getUserPreferences(userId);
+	}
+
+	@Override
+	public Preferences getUserPreferences(String userId) {
+		return delegate.getUserPreferences(userId);
+	}
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/service/PreferenceProviderContextFunction.java b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/service/PreferenceProviderContextFunction.java
new file mode 100644
index 0000000..7e8df1d
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/service/PreferenceProviderContextFunction.java
@@ -0,0 +1,33 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal.service;
+
+import org.eclipse.e4.core.contexts.ContextFunction;
+import org.eclipse.e4.core.contexts.ContextInjectionFactory;
+import org.eclipse.e4.core.contexts.IContextFunction;
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.osgi.service.component.annotations.Component;
+import org.eclipse.osbp.vaaclipse.publicapi.preferences.IPreferenceProvider;
+
+/**
+ * Use this class to obtain an instance of {@link IPreferenceProvider}.
+ */
+@Component(service = IContextFunction.class, property = { "service.context.key=org.eclipse.osbp.vaaclipse.publicapi.preferences.IPreferenceProvider" })
+public class PreferenceProviderContextFunction extends ContextFunction {
+	@Override
+	public Object compute(IEclipseContext context, String contextKey) {
+		PreferenceProvider broker = ContextInjectionFactory.make(
+				PreferenceProvider.class, context);
+		context.set(IPreferenceProvider.class, broker);
+		context.set(PreferenceProvider.class, broker);
+		return broker;
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/util/EmfHelper.java b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/util/EmfHelper.java
new file mode 100644
index 0000000..194a6a1
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/util/EmfHelper.java
@@ -0,0 +1,130 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal.util;
+
+import java.lang.reflect.InvocationTargetException;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.TreeIterator;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EOperation;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.resource.Resource;
+
+/**
+ * @author rushan
+ *
+ */
+public class EmfHelper {
+
+	public static class EInterface implements EObject {
+
+		@Override
+		public EList<Adapter> eAdapters() {
+			return null;
+		}
+
+		@Override
+		public boolean eDeliver() {
+			return false;
+		}
+
+		@Override
+		public void eSetDeliver(boolean deliver) {
+		}
+
+		@Override
+		public void eNotify(Notification notification) {
+		}
+
+		@Override
+		public EClass eClass() {
+			return null;
+		}
+
+		@Override
+		public Resource eResource() {
+			return null;
+		}
+
+		@Override
+		public EObject eContainer() {
+			return null;
+		}
+
+		@Override
+		public EStructuralFeature eContainingFeature() {
+			return null;
+		}
+
+		@Override
+		public EReference eContainmentFeature() {
+			return null;
+		}
+
+		@Override
+		public EList<EObject> eContents() {
+			return null;
+		}
+
+		@Override
+		public TreeIterator<EObject> eAllContents() {
+			return null;
+		}
+
+		@Override
+		public boolean eIsProxy() {
+			return false;
+		}
+
+		@Override
+		public EList<EObject> eCrossReferences() {
+			return null;
+		}
+
+		@Override
+		public Object eGet(EStructuralFeature feature) {
+			return null;
+		}
+
+		@Override
+		public Object eGet(EStructuralFeature feature, boolean resolve) {
+			return null;
+		}
+
+		@Override
+		public void eSet(EStructuralFeature feature, Object newValue) {
+
+		}
+
+		@Override
+		public boolean eIsSet(EStructuralFeature feature) {
+			return false;
+		}
+
+		@Override
+		public void eUnset(EStructuralFeature feature) {
+
+		}
+
+		@Override
+		public Object eInvoke(EOperation operation, EList<?> arguments)
+				throws InvocationTargetException {
+			return null;
+		}
+
+	}
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/util/ModelHelper.java b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/util/ModelHelper.java
new file mode 100644
index 0000000..7f22af4
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/util/ModelHelper.java
@@ -0,0 +1,38 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal.util;
+
+import java.util.List;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory;
+
+/**
+ * @author rushan
+ *
+ */
+public class ModelHelper {
+
+	public static void buildChildCategoryListIncludeThis(
+			PreferencesCategory category, List<PreferencesCategory> childList) {
+		childList.add(category);
+		for (PreferencesCategory child : category.getChildCategories()) {
+			buildChildCategoryListIncludeThis(child, childList);
+		}
+	}
+
+	public static void buildChildCategoryListIncludeThisList(
+			List<PreferencesCategory> list, List<PreferencesCategory> childList) {
+		for (PreferencesCategory c : list) {
+			buildChildCategoryListIncludeThis(c, childList);
+		}
+	}
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/util/PrefHelper.java b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/util/PrefHelper.java
new file mode 100644
index 0000000..645c1d5
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/util/PrefHelper.java
@@ -0,0 +1,73 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal.util;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesPage;
+import org.osgi.framework.Bundle;
+import org.osgi.service.prefs.BackingStoreException;
+import org.osgi.service.prefs.Preferences;
+
+/**
+ * @author rushan
+ *
+ */
+public class PrefHelper {
+	@SuppressWarnings("unchecked")
+	public static void populateInterfaces(FieldEditor<?> editor,
+			IEclipseContext rendererContext, Class<?>[] interfaces) {
+		for (Class<?> i : interfaces) {
+			if (FieldEditor.class.isAssignableFrom(i)) {
+				Class<FieldEditor<?>> editorInterface = (Class<FieldEditor<?>>) i;
+				rendererContext.set(editorInterface, editor);
+				populateInterfaces(editor, rendererContext, i.getInterfaces());
+			}
+		}
+	}
+
+	public static String toEquinoxPath(Bundle bundle,
+			PreferencesCategory category) {
+		return toEquinoxPreferencePath(bundle, getAbsolutePath(category));
+	}
+
+	public static String toEquinoxPreferencePath(Bundle bundle, String catPath) {
+		return "/configuration/org.eclipse.core.runtime.preferences.OSGiPreferences."
+				+ bundle.getBundleId() + catPath;
+	}
+
+	public static String getAbsolutePath(PreferencesCategory cat) {
+		if (cat.getParentCategory() == null)
+			return "/" + cat.getId();
+		return getAbsolutePath(cat.getParentCategory()) + "/" + cat.getId();
+	}
+
+	public static void flush(PreferencesPage page) throws BackingStoreException {
+		Set<Preferences> list = getPreferencesSet(page);
+
+		for (Preferences p : list) {
+			p.flush();
+		}
+	}
+
+	public static Set<Preferences> getPreferencesSet(PreferencesPage page) {
+		Set<Preferences> list = new HashSet<>();
+		for (FieldEditor<?> editor : page.getChildren()) {
+			Preferences pref = (Preferences) editor.getPreferences();
+			list.add(pref);
+		}
+		return list;
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/.project b/org.eclipse.osbp.vaaclipse.ui.preferences.model/.project
new file mode 100644
index 0000000..8cf6277
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/.project
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.vaaclipse.ui.preferences.model</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.babel.editor.rbeBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.babel.editor.rbeNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/META-INF/MANIFEST.MF b/org.eclipse.osbp.vaaclipse.ui.preferences.model/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..8e70ba0
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/META-INF/MANIFEST.MF
@@ -0,0 +1,20 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.vaaclipse.ui.preferences.model
+Bundle-SymbolicName: org.eclipse.osbp.vaaclipse.ui.preferences.model;singleton:=true
+Bundle-Version: 0.9.0.qualifier
+Bundle-ClassPath: .
+Bundle-Vendor: Eclipse OSBP
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: JavaSE-1.7
+Export-Package: org.eclipse.osbp.vaaclipse.ui.preferences.model;version="0.9.0",
+ org.eclipse.osbp.vaaclipse.ui.preferences.model.impl;version="0.9.0",
+ org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata;version="0.9.0",
+ org.eclipse.osbp.vaaclipse.ui.preferences.model.util;version="0.9.0"
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.emf.ecore;visibility:=reexport,
+ org.eclipse.e4.ui.model.workbench;visibility:=reexport
+Bundle-ActivationPolicy: lazy
+Import-Package: org.osgi.service.component.annotations,
+ org.osgi.service.prefs
+Bundle-Activator: internal.Activator
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/about.html b/org.eclipse.osbp.vaaclipse.ui.preferences.model/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/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 1, 2016</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/about.ini b/org.eclipse.osbp.vaaclipse.ui.preferences.model/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/about.ini
@@ -0,0 +1,17 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%featureText
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=
+
+# Property "appName" contains name of the application (translated)
+appName=%featureName
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+welcomePage=
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/about.mappings b/org.eclipse.osbp.vaaclipse.ui.preferences.model/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/about.mappings
@@ -0,0 +1,6 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+0=qualifier
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/about.properties b/org.eclipse.osbp.vaaclipse.ui.preferences.model/about.properties
new file mode 100644
index 0000000..91d8bfb
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2012, 2016 - Loetz GmbH&Co.KG (Heidelberg)
+# 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:
+#    Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.vaaclipse.ui.preferences.model
+
+################ blurb property ####################################
+featureText=\
+Copyright (c) 2012-2016 - Loetz GmbH&Co.KG \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+Contributors:\n\
+    Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/build.properties b/org.eclipse.osbp.vaaclipse.ui.preferences.model/build.properties
new file mode 100644
index 0000000..da0146c
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/build.properties
@@ -0,0 +1,14 @@
+#
+
+bin.includes = about.properties,  about.mappings,  about.ini,  about.html,  .,\
+               model/,\
+               META-INF/,\
+               plugin.xml,\
+               plugin.properties,\
+               license.html,\
+               epl-v10.html
+jars.compile.order = .
+source.. = src/
+output.. = target/classes/
+src.includes = about.properties,  about.mappings,  about.ini,  about.html,  epl-v10.html,\
+               license.html
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/epl-v10.html b/org.eclipse.osbp.vaaclipse.ui.preferences.model/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/epl-v10.html
@@ -0,0 +1,259 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+  body {
+    size: 8.5in 11.0in;
+    margin: 0.25in 0.5in 0.25in 0.5in;
+    tab-interval: 0.5in;
+    }
+  p {  	
+    margin-left: auto;
+    margin-top:  0.5em;
+    margin-bottom: 0.5em;
+    }
+  p.list {
+  	margin-left: 0.5in;
+    margin-top:  0.05em;
+    margin-bottom: 0.05em;
+    }
+  </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">where such changes and/or additions to the Program
+originate from and are distributed by that particular Contributor. A
+Contribution 'originates' from a Contributor if it was added to the
+Program by such Contributor itself or anyone acting on such
+Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii)
+are not derivative works of the Program.</p>
+
+<p>"Contributor" means any person or entity that distributes
+the Program.</p>
+
+<p>"Licensed Patents" mean patent claims licensable by a
+Contributor which are necessarily infringed by the use or sale of its
+Contribution alone or when combined with the Program.</p>
+
+<p>"Program" means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>"Recipient" means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works
+of, publicly display, publicly perform, distribute and sublicense the
+Contribution of such Contributor, if any, and such derivative works, in
+source code and object code form.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell,
+offer to sell, import and otherwise transfer the Contribution of such
+Contributor, if any, in source code and object code form. This patent
+license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor,
+such addition of the Contribution causes such combination to be covered
+by the Licensed Patents. The patent license shall not apply to any other
+combinations which include the Contribution. No hardware per se is
+licensed hereunder.</p>
+
+<p class="list">c) Recipient understands that although each Contributor
+grants the licenses to its Contributions set forth herein, no assurances
+are provided by any Contributor that the Program does not infringe the
+patent or other intellectual property rights of any other entity. Each
+Contributor disclaims any liability to Recipient for claims brought by
+any other entity based on infringement of intellectual property rights
+or otherwise. As a condition to exercising the rights and licenses
+granted hereunder, each Recipient hereby assumes sole responsibility to
+secure any other intellectual property rights needed, if any. For
+example, if a third party patent license is required to allow Recipient
+to distribute the Program, it is Recipient's responsibility to acquire
+that license before distributing the Program.</p>
+
+<p class="list">d) Each Contributor represents that to its knowledge it
+has sufficient copyright rights in its Contribution, if any, to grant
+the copyright license set forth in this Agreement.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">i) effectively disclaims on behalf of all Contributors
+all warranties and conditions, express and implied, including warranties
+or conditions of title and non-infringement, and implied warranties or
+conditions of merchantability and fitness for a particular purpose;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">iv) states that source code for the Program is available
+from such Contributor, and informs licensees how to obtain it in a
+reasonable manner on or through a medium customarily used for software
+exchange.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>Commercial distributors of software may accept certain
+responsibilities with respect to end users, business partners and the
+like. While this license is intended to facilitate the commercial use of
+the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create
+potential liability for other Contributors. Therefore, if a Contributor
+includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and
+indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses")
+arising from claims, lawsuits and other legal actions brought by a third
+party against the Indemnified Contributor to the extent caused by the
+acts or omissions of such Commercial Contributor in connection with its
+distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In
+order to qualify, an Indemnified Contributor must: a) promptly notify
+the Commercial Contributor in writing of such claim, and b) allow the
+Commercial Contributor to control, and cooperate with the Commercial
+Contributor in, the defense and any related settlement negotiations. The
+Indemnified Contributor may participate in any such claim at its own
+expense.</p>
+
+<p>For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor's responsibility
+alone. Under this section, the Commercial Contributor would have to
+defend claims against the other Contributors related to those
+performance claims and warranties, and if a court requires any other
+Contributor to pay any damages as a result, the Commercial Contributor
+must pay those damages.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
+OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
+ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to
+the risks and costs of program errors, compliance with applicable laws,
+damage to or loss of data, programs or equipment, and unavailability or
+interruption of operations.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
+NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of
+the remainder of the terms of this Agreement, and without further action
+by the parties hereto, such provision shall be reformed to the minimum
+extent necessary to make such provision valid and enforceable.</p>
+
+<p>If Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that the
+Program itself (excluding combinations of the Program with other
+software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the
+date such litigation is filed.</p>
+
+<p>All Recipient's rights under this Agreement shall terminate if it
+fails to comply with any of the material terms or conditions of this
+Agreement and does not cure such failure in a reasonable period of time
+after becoming aware of such noncompliance. If all Recipient's rights
+under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive.</p>
+
+<p>Everyone is permitted to copy and distribute copies of this
+Agreement, but in order to avoid inconsistency the Agreement is
+copyrighted and may only be modified in the following manner. The
+Agreement Steward reserves the right to publish new versions (including
+revisions) of this Agreement from time to time. No one other than the
+Agreement Steward has the right to modify this Agreement. The Eclipse
+Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a
+suitable separate entity. Each new version of the Agreement will be
+given a distinguishing version number. The Program (including
+Contributions) may always be distributed subject to the version of the
+Agreement under which it was received. In addition, after a new version
+of the Agreement is published, Contributor may elect to distribute the
+Program (including its Contributions) under the new version. Except as
+expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
+rights or licenses to the intellectual property of any Contributor under
+this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this
+Agreement are reserved.</p>
+
+<p>This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No party
+to this Agreement will bring a legal action under this Agreement more
+than one year after the cause of action arose. Each party waives its
+rights to a jury trial in any resulting litigation.</p>
+
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/license.html b/org.eclipse.osbp.vaaclipse.ui.preferences.model/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/license.html
@@ -0,0 +1,164 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!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>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>February 1, 2011</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+   (COLLECTIVELY "CONTENT").  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse
+ Foundation is provided to you under the terms and conditions of the 
+Eclipse Public License Version 1.0
+   ("EPL").  A copy of the EPL is provided with this Content and is also
+ 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, "Program" will mean the Content.</p>
+
+<p>Content includes, but is not limited to, source code, object code, 
+documentation and other files maintained in the Eclipse Foundation 
+source code
+   repository ("Repository") in software modules ("Modules") and made 
+available as downloadable archives ("Downloads").</p>
+
+<ul>
+       <li>Content may be structured and packaged into modules to 
+facilitate delivering, extending, and upgrading the Content.  Typical 
+modules may include plug-ins ("Plug-ins"), plug-in fragments 
+("Fragments"), and features ("Features").</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&#8482; ARchive) in a directory named "plugins".</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or 
+Fragments and associated material.  Each Feature may be packaged as a 
+sub-directory in a directory named "features".  Within a Feature, files 
+named "feature.xml" may contain a list of the names and version numbers 
+of the Plug-ins
+      and/or Fragments associated with that Feature.</li>
+       <li>Features may also include other Features ("Included 
+Features"). Within a Feature, files named "feature.xml" may contain a 
+list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be 
+contained in files named "about.html" ("Abouts"). The terms and 
+conditions governing Features and
+Included Features should be contained in files named "license.html" 
+("Feature Licenses").  Abouts and Feature Licenses may be located in any
+ directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named "src" of certain Plug-ins</li>
+       <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is 
+installed using the Provisioning Technology (as defined below), you must
+ agree to a license ("Feature Update License") during the
+installation process.  If the Feature contains Included Features, the 
+Feature Update License should either provide you with the terms and 
+conditions governing the Included Features or
+inform you where you can locate them.  Feature Update Licenses may be 
+found in the "license" property of files named "feature.properties" 
+found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the 
+terms and conditions (or references to such terms and conditions) that 
+govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER 
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.
+  SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND 
+CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, 
+or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions 
+govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, 
+examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager ("Provisioning Technology") for the purpose of 
+allowing users to install software, documentation, information and/or
+   other materials (collectively "Installable Software"). This 
+capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about 
+packaging Installable Software is available at <a href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   ("Specification").</p>
+
+<p>You may use Provisioning Technology to allow other parties to install
+ Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to
+ be presented to, and accepted by, the users of the Provisioning 
+Technology
+   in accordance with the Specification. By using Provisioning 
+Technology in such a manner and making it available in accordance with 
+the
+   Specification, you further acknowledge your agreement to, and the 
+acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur ("Provisioning Process") in 
+which a user may execute the Provisioning Technology
+       on a machine ("Target Machine") with the intent of installing, 
+extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology 
+may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user 
+the terms and conditions that govern the use of the Installable
+       Software ("Installable Software Agreement") and such Installable 
+Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable 
+Software Agreement must inform the user of the terms and conditions that
+ govern
+       the Installable Software and must solicit acceptance by the end 
+user in the manner prescribed in such Installable Software Agreement. 
+Upon such
+       indication of agreement by the user, the provisioning Technology 
+will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are
+ currently may have restrictions on the import, possession, and use, 
+and/or re-export to
+   another country, of encryption software. BEFORE using any encryption 
+software, please check the country's laws, regulations and policies 
+concerning the import,
+   possession, or use, and re-export of encryption software, to see if 
+this is permitted.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/model/preferences.ecore b/org.eclipse.osbp.vaaclipse.ui.preferences.model/model/preferences.ecore
new file mode 100644
index 0000000..0a58066
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/model/preferences.ecore
@@ -0,0 +1,121 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="preferences" nsURI="http://www.osbp.org/vaaclipse/ui/preferences"
+    nsPrefix="preferences">
+  <eClassifiers xsi:type="ecore:EClass" name="PreferencesCategory" eSuperTypes="platform:/plugin/org.eclipse.e4.ui.model.workbench/model/UIElements.ecore#//ApplicationElement">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+        defaultValueLiteral="No Name"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="childCategories" upperBound="-1"
+        eType="#//PreferencesCategory" containment="true" eOpposite="#//PreferencesCategory/parentCategory"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="parentCategory" eType="#//PreferencesCategory"
+        eOpposite="#//PreferencesCategory/childCategories"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="page" eType="#//PreferencesPage"
+        containment="true" eOpposite="#//PreferencesPage/category"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="id" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="PreferencesPage">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="category" eType="#//PreferencesCategory"
+        eOpposite="#//PreferencesCategory/page"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="description" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eGenericSuperTypes eClassifier="ecore:EClass platform:/plugin/org.eclipse.e4.ui.model.workbench/model/UIElements.ecore#//ui/ElementContainer">
+      <eTypeArguments eClassifier="#//FieldEditor">
+        <eTypeArguments/>
+      </eTypeArguments>
+    </eGenericSuperTypes>
+    <eGenericSuperTypes eClassifier="ecore:EClass platform:/plugin/org.eclipse.e4.ui.model.workbench/model/UIElements.ecore#//Contribution"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="FieldEditor" eSuperTypes="platform:/plugin/org.eclipse.e4.ui.model.workbench/model/UIElements.ecore#//ui/UIElement">
+    <eTypeParameters name="T"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="label" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+        defaultValueLiteral=""/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="preferenceName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="defaultValue" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="defaultValueTyped">
+      <eGenericType eTypeParameter="#//FieldEditor/T"/>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="bundle" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="preferences" eType="#//Preferences"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="equinoxPath" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="BooleanFieldEditor">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="style" eType="#//BooleanFieldStyle"/>
+    <eGenericSuperTypes eClassifier="#//FieldEditor">
+      <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBooleanObject"/>
+    </eGenericSuperTypes>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EEnum" name="BooleanFieldStyle">
+    <eLiterals name="DEFAULT"/>
+    <eLiterals name="SEPARATE_LABEL" value="1"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="ListFieldEditor" abstract="true">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="entries" upperBound="-1"
+        eType="#//Entry"/>
+    <eGenericSuperTypes eClassifier="#//FieldEditor">
+      <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    </eGenericSuperTypes>
+    <eGenericSuperTypes eClassifier="ecore:EClass platform:/plugin/org.eclipse.e4.ui.model.workbench/model/UIElements.ecore#//Contribution"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Entry">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="ComboFieldEditor" eSuperTypes="#//ListFieldEditor"/>
+  <eClassifiers xsi:type="ecore:EClass" name="ListEditor">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="listCrud" eType="#//ListCrud"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="listFold" eType="#//ListFold"/>
+    <eGenericSuperTypes eClassifier="#//FieldEditor">
+      <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    </eGenericSuperTypes>
+    <eGenericSuperTypes eClassifier="ecore:EClass platform:/plugin/org.eclipse.e4.ui.model.workbench/model/UIElements.ecore#//Contribution"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="RadioGroupFieldEditor" eSuperTypes="#//ListFieldEditor"/>
+  <eClassifiers xsi:type="ecore:EClass" name="ScaleFieldEditor">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="minValue" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EIntegerObject"
+        defaultValueLiteral="0"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="maxValue" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EIntegerObject"
+        defaultValueLiteral="100"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="incrementValue" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EIntegerObject"
+        defaultValueLiteral="1"/>
+    <eGenericSuperTypes eClassifier="#//FieldEditor">
+      <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EIntegerObject"/>
+    </eGenericSuperTypes>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="StringFieldEditor">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="maxLength" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EIntegerObject"/>
+    <eGenericSuperTypes eClassifier="#//FieldEditor">
+      <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    </eGenericSuperTypes>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="IntegerFieldEditor">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="minValidValue" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EIntegerObject"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="maxValidValue" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EIntegerObject"/>
+    <eGenericSuperTypes eClassifier="#//FieldEditor">
+      <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EIntegerObject"/>
+    </eGenericSuperTypes>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="FileFieldEditor">
+    <eGenericSuperTypes eClassifier="#//FieldEditor">
+      <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    </eGenericSuperTypes>
+    <eGenericSuperTypes eClassifier="ecore:EClass platform:/plugin/org.eclipse.e4.ui.model.workbench/model/UIElements.ecore#//Contribution"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="DirectoryFieldEditor">
+    <eGenericSuperTypes eClassifier="#//FieldEditor">
+      <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    </eGenericSuperTypes>
+    <eGenericSuperTypes eClassifier="ecore:EClass platform:/plugin/org.eclipse.e4.ui.model.workbench/model/UIElements.ecore#//Contribution"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="ListCrud" abstract="true" interface="true">
+    <eOperations name="addNewValue" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
+      <eParameters name="values" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    </eOperations>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EDataType" name="StringBuffer" instanceClassName="java.lang.StringBuffer"/>
+  <eClassifiers xsi:type="ecore:EDataType" name="Preferences" instanceClassName="org.osgi.service.prefs.Preferences"/>
+  <eClassifiers xsi:type="ecore:EClass" name="ListFold">
+    <eOperations name="apply">
+      <eParameters name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+      <eParameters name="prev" eType="#//StringBuffer"/>
+    </eOperations>
+  </eClassifiers>
+</ecore:EPackage>
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/model/preferences.genmodel b/org.eclipse.osbp.vaaclipse.ui.preferences.model/model/preferences.genmodel
new file mode 100644
index 0000000..de89c84
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/model/preferences.genmodel
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
+    xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" modelDirectory="/org.eclipse.osbp.vaaclipse.ui.preferences.model/src"
+    modelPluginID="org.eclipse.osbp.vaaclipse.ui.preferences.model" modelName="Preferences"
+    rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container" importerID="org.eclipse.emf.importer.ecore"
+    complianceLevel="7.0" copyrightFields="false" usedGenPackages="../../org.eclipse.e4.ui.model.workbench/model/UIElements.genmodel#//application"
+    importOrganizing="true">
+  <foreignModel>preferences.ecore</foreignModel>
+  <genPackages prefix="Preferences" basePackage="org.eclipse.osbp.vaaclipse.ui" disposableProviderFactory="true"
+      interfacePackageSuffix="model" metaDataPackageSuffix="model.metadata" classPackageSuffix="model.impl"
+      utilityPackageSuffix="model.util" providerPackageSuffix="model.provider" presentationPackageSuffix="model.presentation"
+      testsPackageSuffix="model.tests" childCreationExtenders="true" ecorePackage="preferences.ecore#/">
+    <genEnums typeSafeEnumCompatible="false" ecoreEnum="preferences.ecore#//BooleanFieldStyle">
+      <genEnumLiterals ecoreEnumLiteral="preferences.ecore#//BooleanFieldStyle/DEFAULT"/>
+      <genEnumLiterals ecoreEnumLiteral="preferences.ecore#//BooleanFieldStyle/SEPARATE_LABEL"/>
+    </genEnums>
+    <genDataTypes ecoreDataType="preferences.ecore#//StringBuffer"/>
+    <genDataTypes ecoreDataType="preferences.ecore#//Preferences"/>
+    <genClasses image="false" ecoreClass="preferences.ecore#//PreferencesCategory">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute preferences.ecore#//PreferencesCategory/name"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference preferences.ecore#//PreferencesCategory/childCategories"/>
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference preferences.ecore#//PreferencesCategory/parentCategory"/>
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference preferences.ecore#//PreferencesCategory/page"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute preferences.ecore#//PreferencesCategory/id"/>
+    </genClasses>
+    <genClasses image="false" ecoreClass="preferences.ecore#//PreferencesPage">
+      <genFeatures notify="false" createChild="false" propertyCategory="" propertyDescription=""
+          propertySortChoices="true" ecoreFeature="ecore:EReference preferences.ecore#//PreferencesPage/category"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute preferences.ecore#//PreferencesPage/description"/>
+    </genClasses>
+    <genClasses image="false" ecoreClass="preferences.ecore#//FieldEditor">
+      <genTypeParameters ecoreTypeParameter="preferences.ecore#//FieldEditor/T"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute preferences.ecore#//FieldEditor/label"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute preferences.ecore#//FieldEditor/preferenceName"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute preferences.ecore#//FieldEditor/defaultValue"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute preferences.ecore#//FieldEditor/defaultValueTyped"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute preferences.ecore#//FieldEditor/bundle"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute preferences.ecore#//FieldEditor/preferences"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute preferences.ecore#//FieldEditor/equinoxPath"/>
+    </genClasses>
+    <genClasses image="false" ecoreClass="preferences.ecore#//BooleanFieldEditor">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute preferences.ecore#//BooleanFieldEditor/style"/>
+    </genClasses>
+    <genClasses image="false" ecoreClass="preferences.ecore#//ListFieldEditor">
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference preferences.ecore#//ListFieldEditor/entries"/>
+    </genClasses>
+    <genClasses ecoreClass="preferences.ecore#//Entry">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute preferences.ecore#//Entry/name"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute preferences.ecore#//Entry/value"/>
+    </genClasses>
+    <genClasses image="false" ecoreClass="preferences.ecore#//ComboFieldEditor"/>
+    <genClasses image="false" ecoreClass="preferences.ecore#//ListEditor">
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference preferences.ecore#//ListEditor/listCrud"/>
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference preferences.ecore#//ListEditor/listFold"/>
+    </genClasses>
+    <genClasses ecoreClass="preferences.ecore#//RadioGroupFieldEditor"/>
+    <genClasses ecoreClass="preferences.ecore#//ScaleFieldEditor">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute preferences.ecore#//ScaleFieldEditor/minValue"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute preferences.ecore#//ScaleFieldEditor/maxValue"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute preferences.ecore#//ScaleFieldEditor/incrementValue"/>
+    </genClasses>
+    <genClasses ecoreClass="preferences.ecore#//StringFieldEditor">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute preferences.ecore#//StringFieldEditor/maxLength"/>
+    </genClasses>
+    <genClasses ecoreClass="preferences.ecore#//IntegerFieldEditor">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute preferences.ecore#//IntegerFieldEditor/minValidValue"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute preferences.ecore#//IntegerFieldEditor/maxValidValue"/>
+    </genClasses>
+    <genClasses ecoreClass="preferences.ecore#//FileFieldEditor"/>
+    <genClasses ecoreClass="preferences.ecore#//DirectoryFieldEditor"/>
+    <genClasses image="false" ecoreClass="preferences.ecore#//ListCrud">
+      <genOperations ecoreOperation="preferences.ecore#//ListCrud/addNewValue">
+        <genParameters ecoreParameter="preferences.ecore#//ListCrud/addNewValue/values"/>
+      </genOperations>
+    </genClasses>
+    <genClasses ecoreClass="preferences.ecore#//ListFold">
+      <genOperations ecoreOperation="preferences.ecore#//ListFold/apply">
+        <genParameters ecoreParameter="preferences.ecore#//ListFold/apply/value"/>
+        <genParameters ecoreParameter="preferences.ecore#//ListFold/apply/prev"/>
+      </genOperations>
+    </genClasses>
+  </genPackages>
+</genmodel:GenModel>
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/plugin.properties b/org.eclipse.osbp.vaaclipse.ui.preferences.model/plugin.properties
new file mode 100644
index 0000000..a598247
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/plugin.properties
@@ -0,0 +1,4 @@
+#
+
+pluginName = Preferences Model
+providerName = www.example.org
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/plugin.xml b/org.eclipse.osbp.vaaclipse.ui.preferences.model/plugin.xml
new file mode 100644
index 0000000..2843b53
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/plugin.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+-->
+
+<plugin>
+
+   <extension point="org.eclipse.emf.ecore.generated_package">
+      <!-- @generated preferences -->
+      <package
+            uri="http://www.osbp.org/vaaclipse/ui/preferences"
+            class="org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage"
+            genModel="model/preferences.genmodel"/>
+   </extension>
+
+</plugin>
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/pom.xml b/org.eclipse.osbp.vaaclipse.ui.preferences.model/pom.xml
new file mode 100644
index 0000000..7d626ba
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/pom.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <artifactId>org.eclipse.osbp.vaaclipse.ui.preferences.model</artifactId>
+    <packaging>eclipse-plugin</packaging>
+    <parent>
+        <groupId>org.eclipse.osbp.vaaclipse</groupId>
+        <artifactId>org.eclipse.osbp.vaaclipse</artifactId>
+        <version>0.9.0-SNAPSHOT</version>
+        <relativePath>..</relativePath>
+    </parent>
+</project>
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/internal/Activator.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/internal/Activator.java
new file mode 100644
index 0000000..36a0cfa
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/internal/Activator.java
@@ -0,0 +1,38 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package internal;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesFactoryImpl;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesFactory;
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceRegistration;
+
+/**
+ * @author rushan
+ *
+ */
+public class Activator implements BundleActivator {
+
+	private ServiceRegistration<PreferencesFactory> factoryRegistraction;
+
+	@Override
+	public void start(BundleContext context) throws Exception {
+		PreferencesFactory factory = new PreferencesFactoryImpl();
+		factoryRegistraction = context.registerService(
+				PreferencesFactory.class, factory, null);
+	}
+
+	@Override
+	public void stop(BundleContext context) throws Exception {
+		factoryRegistraction.unregister();
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/BooleanFieldEditor.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/BooleanFieldEditor.java
new file mode 100644
index 0000000..58e2979
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/BooleanFieldEditor.java
@@ -0,0 +1,65 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '
+ * <em><b>Boolean Field Editor</b></em>'. <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.BooleanFieldEditor#getStyle
+ * <em>Style</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#getBooleanFieldEditor()
+ * @model superTypes=
+ *        "org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor<org.eclipse.emf.ecore.EBooleanObject>"
+ * @generated
+ */
+public interface BooleanFieldEditor extends FieldEditor<Boolean> {
+	/**
+	 * Returns the value of the '<em><b>Style</b></em>' attribute. The literals
+	 * are from the enumeration
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.BooleanFieldStyle}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Style</em>' attribute isn't clear, there
+	 * really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Style</em>' attribute.
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.BooleanFieldStyle
+	 * @see #setStyle(BooleanFieldStyle)
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#getBooleanFieldEditor_Style()
+	 * @model
+	 * @generated
+	 */
+	BooleanFieldStyle getStyle();
+
+	/**
+	 * Sets the value of the '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.BooleanFieldEditor#getStyle
+	 * <em>Style</em>}' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @param value
+	 *            the new value of the '<em>Style</em>' attribute.
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.BooleanFieldStyle
+	 * @see #getStyle()
+	 * @generated
+	 */
+	void setStyle(BooleanFieldStyle value);
+
+} // BooleanFieldEditor
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/BooleanFieldStyle.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/BooleanFieldStyle.java
new file mode 100644
index 0000000..26081bc
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/BooleanFieldStyle.java
@@ -0,0 +1,217 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc --> A representation of the literals of the enumeration '
+ * <em><b>Boolean Field Style</b></em>', and utility methods for working with
+ * them. <!-- end-user-doc -->
+ * 
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#getBooleanFieldStyle()
+ * @model
+ * @generated
+ */
+public enum BooleanFieldStyle implements Enumerator {
+	/**
+	 * The '<em><b>DEFAULT</b></em>' literal object. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #DEFAULT_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	DEFAULT(0, "DEFAULT", "DEFAULT"),
+
+	/**
+	 * The '<em><b>SEPARATE LABEL</b></em>' literal object. <!-- begin-user-doc
+	 * --> <!-- end-user-doc -->
+	 * 
+	 * @see #SEPARATE_LABEL_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	SEPARATE_LABEL(1, "SEPARATE_LABEL", "SEPARATE_LABEL");
+
+	/**
+	 * The '<em><b>DEFAULT</b></em>' literal value. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>DEFAULT</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #DEFAULT
+	 * @model
+	 * @generated
+	 * @ordered
+	 */
+	public static final int DEFAULT_VALUE = 0;
+
+	/**
+	 * The '<em><b>SEPARATE LABEL</b></em>' literal value. <!-- begin-user-doc
+	 * -->
+	 * <p>
+	 * If the meaning of '<em><b>SEPARATE LABEL</b></em>' literal object isn't
+	 * clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #SEPARATE_LABEL
+	 * @model
+	 * @generated
+	 * @ordered
+	 */
+	public static final int SEPARATE_LABEL_VALUE = 1;
+
+	/**
+	 * An array of all the '<em><b>Boolean Field Style</b></em>' enumerators.
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private static final BooleanFieldStyle[] VALUES_ARRAY = new BooleanFieldStyle[] {
+			DEFAULT, SEPARATE_LABEL, };
+
+	/**
+	 * A public read-only list of all the '<em><b>Boolean Field Style</b></em>'
+	 * enumerators. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public static final List<BooleanFieldStyle> VALUES = Collections
+			.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Boolean Field Style</b></em>' literal with the
+	 * specified literal value. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public static BooleanFieldStyle get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			BooleanFieldStyle result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Boolean Field Style</b></em>' literal with the
+	 * specified name. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public static BooleanFieldStyle getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			BooleanFieldStyle result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Boolean Field Style</b></em>' literal with the
+	 * specified integer value. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public static BooleanFieldStyle get(int value) {
+		switch (value) {
+		case DEFAULT_VALUE:
+			return DEFAULT;
+		case SEPARATE_LABEL_VALUE:
+			return SEPARATE_LABEL;
+		}
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private final int value;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private final String name;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private final String literal;
+
+	/**
+	 * Only this class can construct instances. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private BooleanFieldStyle(int value, String name, String literal) {
+		this.value = value;
+		this.name = name;
+		this.literal = literal;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public int getValue() {
+		return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public String getLiteral() {
+		return literal;
+	}
+
+	/**
+	 * Returns the literal value of the enumerator, which is its string
+	 * representation. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		return literal;
+	}
+
+} // BooleanFieldStyle
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/ComboFieldEditor.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/ComboFieldEditor.java
new file mode 100644
index 0000000..a44cb00
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/ComboFieldEditor.java
@@ -0,0 +1,23 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '
+ * <em><b>Combo Field Editor</b></em>'. <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#getComboFieldEditor()
+ * @model
+ * @generated
+ */
+public interface ComboFieldEditor extends ListFieldEditor {
+} // ComboFieldEditor
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/DirectoryFieldEditor.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/DirectoryFieldEditor.java
new file mode 100644
index 0000000..3f1495e
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/DirectoryFieldEditor.java
@@ -0,0 +1,27 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model;
+
+import org.eclipse.e4.ui.model.application.MContribution;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '
+ * <em><b>Directory Field Editor</b></em>'. <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#getDirectoryFieldEditor()
+ * @model superTypes=
+ *        "org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor<org.eclipse.emf.ecore.EString> org.eclipse.e4.ui.model.application.Contribution"
+ * @generated
+ */
+public interface DirectoryFieldEditor extends FieldEditor<String>,
+		MContribution {
+} // DirectoryFieldEditor
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/Entry.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/Entry.java
new file mode 100644
index 0000000..e623a94
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/Entry.java
@@ -0,0 +1,92 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '
+ * <em><b>Entry</b></em>'. <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.osbp.vaaclipse.ui.preferences.model.Entry#getName <em>Name
+ * </em>}</li>
+ * <li>{@link org.eclipse.osbp.vaaclipse.ui.preferences.model.Entry#getValue <em>
+ * Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#getEntry()
+ * @model
+ * @generated
+ */
+public interface Entry extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Name</b></em>' attribute. <!--
+	 * begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Name</em>' attribute isn't clear, there really
+	 * should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Name</em>' attribute.
+	 * @see #setName(String)
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#getEntry_Name()
+	 * @model
+	 * @generated
+	 */
+	String getName();
+
+	/**
+	 * Sets the value of the '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.Entry#getName
+	 * <em>Name</em>}' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @param value
+	 *            the new value of the '<em>Name</em>' attribute.
+	 * @see #getName()
+	 * @generated
+	 */
+	void setName(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Value</b></em>' attribute. <!--
+	 * begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Value</em>' attribute isn't clear, there
+	 * really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Value</em>' attribute.
+	 * @see #setValue(String)
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#getEntry_Value()
+	 * @model
+	 * @generated
+	 */
+	String getValue();
+
+	/**
+	 * Sets the value of the '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.Entry#getValue
+	 * <em>Value</em>}' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @param value
+	 *            the new value of the '<em>Value</em>' attribute.
+	 * @see #getValue()
+	 * @generated
+	 */
+	void setValue(String value);
+
+} // Entry
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/FieldEditor.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/FieldEditor.java
new file mode 100644
index 0000000..0d80468
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/FieldEditor.java
@@ -0,0 +1,262 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model;
+
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.osgi.service.prefs.Preferences;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '
+ * <em><b>Field Editor</b></em>'. <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor#getLabel
+ * <em>Label</em>}</li>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor#getPreferenceName
+ * <em>Preference Name</em>}</li>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor#getDefaultValue
+ * <em>Default Value</em>}</li>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor#getDefaultValueTyped
+ * <em>Default Value Typed</em>}</li>
+ * <li>{@link org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor#getBundle
+ * <em>Bundle</em>}</li>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor#getPreferences
+ * <em>Preferences</em>}</li>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor#getEquinoxPath
+ * <em>Equinox Path</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#getFieldEditor()
+ * @model
+ * @generated
+ */
+public interface FieldEditor<T> extends EObject, MUIElement {
+	/**
+	 * Returns the value of the '<em><b>Label</b></em>' attribute. The default
+	 * value is <code>""</code>. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Label</em>' attribute isn't clear, there
+	 * really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Label</em>' attribute.
+	 * @see #setLabel(String)
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#getFieldEditor_Label()
+	 * @model default=""
+	 * @generated
+	 */
+	String getLabel();
+
+	/**
+	 * Sets the value of the '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor#getLabel
+	 * <em>Label</em>}' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @param value
+	 *            the new value of the '<em>Label</em>' attribute.
+	 * @see #getLabel()
+	 * @generated
+	 */
+	void setLabel(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Preference Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Preference Name</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Preference Name</em>' attribute.
+	 * @see #setPreferenceName(String)
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#getFieldEditor_PreferenceName()
+	 * @model
+	 * @generated
+	 */
+	String getPreferenceName();
+
+	/**
+	 * Sets the value of the '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor#getPreferenceName
+	 * <em>Preference Name</em>}' attribute. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @param value
+	 *            the new value of the '<em>Preference Name</em>' attribute.
+	 * @see #getPreferenceName()
+	 * @generated
+	 */
+	void setPreferenceName(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Default Value</b></em>' attribute. <!--
+	 * begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Default Value</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Default Value</em>' attribute.
+	 * @see #setDefaultValue(String)
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#getFieldEditor_DefaultValue()
+	 * @model
+	 * @generated
+	 */
+	String getDefaultValue();
+
+	/**
+	 * Sets the value of the '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor#getDefaultValue
+	 * <em>Default Value</em>}' attribute. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @param value
+	 *            the new value of the '<em>Default Value</em>' attribute.
+	 * @see #getDefaultValue()
+	 * @generated
+	 */
+	void setDefaultValue(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Default Value Typed</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Default Value Typed</em>' attribute isn't
+	 * clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Default Value Typed</em>' attribute.
+	 * @see #setDefaultValueTyped(Object)
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#getFieldEditor_DefaultValueTyped()
+	 * @model
+	 * @generated
+	 */
+	T getDefaultValueTyped();
+
+	/**
+	 * Sets the value of the '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor#getDefaultValueTyped
+	 * <em>Default Value Typed</em>}' attribute. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @param value
+	 *            the new value of the '<em>Default Value Typed</em>' attribute.
+	 * @see #getDefaultValueTyped()
+	 * @generated
+	 */
+	void setDefaultValueTyped(T value);
+
+	/**
+	 * Returns the value of the '<em><b>Bundle</b></em>' attribute. <!--
+	 * begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Bundle</em>' attribute isn't clear, there
+	 * really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Bundle</em>' attribute.
+	 * @see #setBundle(String)
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#getFieldEditor_Bundle()
+	 * @model
+	 * @generated
+	 */
+	String getBundle();
+
+	/**
+	 * Sets the value of the '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor#getBundle
+	 * <em>Bundle</em>}' attribute. <!-- begin-user-doc --> <!-- end-user-doc
+	 * -->
+	 * 
+	 * @param value
+	 *            the new value of the '<em>Bundle</em>' attribute.
+	 * @see #getBundle()
+	 * @generated
+	 */
+	void setBundle(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Preferences</b></em>' attribute. <!--
+	 * begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Preferences</em>' attribute isn't clear, there
+	 * really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Preferences</em>' attribute.
+	 * @see #setPreferences(Preferences)
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#getFieldEditor_Preferences()
+	 * @model dataType="org.eclipse.osbp.vaaclipse.ui.preferences.model.Preferences"
+	 * @generated
+	 */
+	Preferences getPreferences();
+
+	/**
+	 * Sets the value of the '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor#getPreferences
+	 * <em>Preferences</em>}' attribute. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @param value
+	 *            the new value of the '<em>Preferences</em>' attribute.
+	 * @see #getPreferences()
+	 * @generated
+	 */
+	void setPreferences(Preferences value);
+
+	/**
+	 * Returns the value of the '<em><b>Equinox Path</b></em>' attribute. <!--
+	 * begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Equinox Path</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Equinox Path</em>' attribute.
+	 * @see #setEquinoxPath(String)
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#getFieldEditor_EquinoxPath()
+	 * @model
+	 * @generated
+	 */
+	String getEquinoxPath();
+
+	/**
+	 * Sets the value of the '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor#getEquinoxPath
+	 * <em>Equinox Path</em>}' attribute. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @param value
+	 *            the new value of the '<em>Equinox Path</em>' attribute.
+	 * @see #getEquinoxPath()
+	 * @generated
+	 */
+	void setEquinoxPath(String value);
+
+} // FieldEditor
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/FileFieldEditor.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/FileFieldEditor.java
new file mode 100644
index 0000000..7face91
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/FileFieldEditor.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model;
+
+import org.eclipse.e4.ui.model.application.MContribution;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '
+ * <em><b>File Field Editor</b></em>'. <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#getFileFieldEditor()
+ * @model superTypes=
+ *        "org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor<org.eclipse.emf.ecore.EString> org.eclipse.e4.ui.model.application.Contribution"
+ * @generated
+ */
+public interface FileFieldEditor extends FieldEditor<String>, MContribution {
+} // FileFieldEditor
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/IntegerFieldEditor.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/IntegerFieldEditor.java
new file mode 100644
index 0000000..5f835d4
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/IntegerFieldEditor.java
@@ -0,0 +1,95 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '
+ * <em><b>Integer Field Editor</b></em>'. <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.IntegerFieldEditor#getMinValidValue
+ * <em>Min Valid Value</em>}</li>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.IntegerFieldEditor#getMaxValidValue
+ * <em>Max Valid Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#getIntegerFieldEditor()
+ * @model superTypes=
+ *        "org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor<org.eclipse.emf.ecore.EIntegerObject>"
+ * @generated
+ */
+public interface IntegerFieldEditor extends FieldEditor<Integer> {
+	/**
+	 * Returns the value of the '<em><b>Min Valid Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Min Valid Value</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Min Valid Value</em>' attribute.
+	 * @see #setMinValidValue(Integer)
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#getIntegerFieldEditor_MinValidValue()
+	 * @model
+	 * @generated
+	 */
+	Integer getMinValidValue();
+
+	/**
+	 * Sets the value of the '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.IntegerFieldEditor#getMinValidValue
+	 * <em>Min Valid Value</em>}' attribute. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @param value
+	 *            the new value of the '<em>Min Valid Value</em>' attribute.
+	 * @see #getMinValidValue()
+	 * @generated
+	 */
+	void setMinValidValue(Integer value);
+
+	/**
+	 * Returns the value of the '<em><b>Max Valid Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Max Valid Value</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Max Valid Value</em>' attribute.
+	 * @see #setMaxValidValue(Integer)
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#getIntegerFieldEditor_MaxValidValue()
+	 * @model
+	 * @generated
+	 */
+	Integer getMaxValidValue();
+
+	/**
+	 * Sets the value of the '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.IntegerFieldEditor#getMaxValidValue
+	 * <em>Max Valid Value</em>}' attribute. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @param value
+	 *            the new value of the '<em>Max Valid Value</em>' attribute.
+	 * @see #getMaxValidValue()
+	 * @generated
+	 */
+	void setMaxValidValue(Integer value);
+
+} // IntegerFieldEditor
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/ListCrud.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/ListCrud.java
new file mode 100644
index 0000000..ebe9265
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/ListCrud.java
@@ -0,0 +1,33 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '
+ * <em><b>List Crud</b></em>'. <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#getListCrud()
+ * @model interface="true" abstract="true"
+ * @generated
+ */
+public interface ListCrud extends EObject {
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @model
+	 * @generated
+	 */
+	String addNewValue(String values);
+
+} // ListCrud
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/ListEditor.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/ListEditor.java
new file mode 100644
index 0000000..643000b
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/ListEditor.java
@@ -0,0 +1,97 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model;
+
+import org.eclipse.e4.ui.model.application.MContribution;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '
+ * <em><b>List Editor</b></em>'. <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.ListEditor#getListCrud
+ * <em>List Crud</em>}</li>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.ListEditor#getListFold
+ * <em>List Fold</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#getListEditor()
+ * @model superTypes=
+ *        "org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor<org.eclipse.emf.ecore.EString> org.eclipse.e4.ui.model.application.Contribution"
+ * @generated
+ */
+public interface ListEditor extends FieldEditor<String>, MContribution {
+	/**
+	 * Returns the value of the '<em><b>List Crud</b></em>' reference. <!--
+	 * begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>List Crud</em>' reference isn't clear, there
+	 * really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>List Crud</em>' reference.
+	 * @see #setListCrud(ListCrud)
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#getListEditor_ListCrud()
+	 * @model
+	 * @generated
+	 */
+	ListCrud getListCrud();
+
+	/**
+	 * Sets the value of the '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.ListEditor#getListCrud
+	 * <em>List Crud</em>}' reference. <!-- begin-user-doc --> <!-- end-user-doc
+	 * -->
+	 * 
+	 * @param value
+	 *            the new value of the '<em>List Crud</em>' reference.
+	 * @see #getListCrud()
+	 * @generated
+	 */
+	void setListCrud(ListCrud value);
+
+	/**
+	 * Returns the value of the '<em><b>List Fold</b></em>' reference. <!--
+	 * begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>List Fold</em>' reference isn't clear, there
+	 * really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>List Fold</em>' reference.
+	 * @see #setListFold(ListFold)
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#getListEditor_ListFold()
+	 * @model
+	 * @generated
+	 */
+	ListFold getListFold();
+
+	/**
+	 * Sets the value of the '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.ListEditor#getListFold
+	 * <em>List Fold</em>}' reference. <!-- begin-user-doc --> <!-- end-user-doc
+	 * -->
+	 * 
+	 * @param value
+	 *            the new value of the '<em>List Fold</em>' reference.
+	 * @see #getListFold()
+	 * @generated
+	 */
+	void setListFold(ListFold value);
+
+} // ListEditor
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/ListFieldEditor.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/ListFieldEditor.java
new file mode 100644
index 0000000..afa23ce
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/ListFieldEditor.java
@@ -0,0 +1,54 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model;
+
+import org.eclipse.e4.ui.model.application.MContribution;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '
+ * <em><b>List Field Editor</b></em>'. <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.ListFieldEditor#getEntries
+ * <em>Entries</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#getListFieldEditor()
+ * @model abstract="true" superTypes=
+ *        "org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor<org.eclipse.emf.ecore.EString> org.eclipse.e4.ui.model.application.Contribution"
+ * @generated
+ */
+public interface ListFieldEditor extends FieldEditor<String>, MContribution {
+	/**
+	 * Returns the value of the '<em><b>Entries</b></em>' reference list. The
+	 * list contents are of type
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.Entry}. <!--
+	 * begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Entries</em>' reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Entries</em>' reference list.
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#getListFieldEditor_Entries()
+	 * @model
+	 * @generated
+	 */
+	EList<Entry> getEntries();
+
+} // ListFieldEditor
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/ListFold.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/ListFold.java
new file mode 100644
index 0000000..51d4782
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/ListFold.java
@@ -0,0 +1,34 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '
+ * <em><b>List Fold</b></em>'. <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#getListFold()
+ * @model
+ * @generated
+ */
+public interface ListFold extends EObject {
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @model 
+	 *        prevDataType="org.eclipse.osbp.vaaclipse.ui.preferences.model.StringBuffer"
+	 * @generated
+	 */
+	void apply(String value, StringBuffer prev);
+
+} // ListFold
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/PreferencesCategory.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/PreferencesCategory.java
new file mode 100644
index 0000000..69e414e
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/PreferencesCategory.java
@@ -0,0 +1,196 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model;
+
+import org.eclipse.e4.ui.model.application.MApplicationElement;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '
+ * <em><b>Category</b></em>'. <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory#getName
+ * <em>Name</em>}</li>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory#getChildCategories
+ * <em>Child Categories</em>}</li>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory#getParentCategory
+ * <em>Parent Category</em>}</li>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory#getPage
+ * <em>Page</em>}</li>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory#getId
+ * <em>Id</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#getPreferencesCategory()
+ * @model
+ * @generated
+ */
+public interface PreferencesCategory extends EObject, MApplicationElement {
+	/**
+	 * Returns the value of the '<em><b>Name</b></em>' attribute. The default
+	 * value is <code>"No Name"</code>. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Name</em>' attribute isn't clear, there really
+	 * should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Name</em>' attribute.
+	 * @see #setName(String)
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#getPreferencesCategory_Name()
+	 * @model default="No Name"
+	 * @generated
+	 */
+	String getName();
+
+	/**
+	 * Sets the value of the '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory#getName
+	 * <em>Name</em>}' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @param value
+	 *            the new value of the '<em>Name</em>' attribute.
+	 * @see #getName()
+	 * @generated
+	 */
+	void setName(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Child Categories</b></em>' containment
+	 * reference list. The list contents are of type
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory}.
+	 * It is bidirectional and its opposite is '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory#getParentCategory
+	 * <em>Parent Category</em>}'. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Child Categories</em>' containment reference
+	 * list isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Child Categories</em>' containment
+	 *         reference list.
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#getPreferencesCategory_ChildCategories()
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory#getParentCategory
+	 * @model opposite="parentCategory" containment="true"
+	 * @generated
+	 */
+	EList<PreferencesCategory> getChildCategories();
+
+	/**
+	 * Returns the value of the '<em><b>Parent Category</b></em>' container
+	 * reference. It is bidirectional and its opposite is '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory#getChildCategories
+	 * <em>Child Categories</em>}'. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Parent Category</em>' container reference
+	 * isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Parent Category</em>' container reference.
+	 * @see #setParentCategory(PreferencesCategory)
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#getPreferencesCategory_ParentCategory()
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory#getChildCategories
+	 * @model opposite="childCategories" transient="false"
+	 * @generated
+	 */
+	PreferencesCategory getParentCategory();
+
+	/**
+	 * Sets the value of the '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory#getParentCategory
+	 * <em>Parent Category</em>}' container reference. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @param value
+	 *            the new value of the '<em>Parent Category</em>' container
+	 *            reference.
+	 * @see #getParentCategory()
+	 * @generated
+	 */
+	void setParentCategory(PreferencesCategory value);
+
+	/**
+	 * Returns the value of the '<em><b>Page</b></em>' containment reference. It
+	 * is bidirectional and its opposite is '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesPage#getCategory
+	 * <em>Category</em>}'. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Page</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Page</em>' containment reference.
+	 * @see #setPage(PreferencesPage)
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#getPreferencesCategory_Page()
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesPage#getCategory
+	 * @model opposite="category" containment="true"
+	 * @generated
+	 */
+	PreferencesPage getPage();
+
+	/**
+	 * Sets the value of the '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory#getPage
+	 * <em>Page</em>}' containment reference. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @param value
+	 *            the new value of the '<em>Page</em>' containment reference.
+	 * @see #getPage()
+	 * @generated
+	 */
+	void setPage(PreferencesPage value);
+
+	/**
+	 * Returns the value of the '<em><b>Id</b></em>' attribute. <!--
+	 * begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Id</em>' attribute isn't clear, there really
+	 * should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Id</em>' attribute.
+	 * @see #setId(String)
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#getPreferencesCategory_Id()
+	 * @model
+	 * @generated
+	 */
+	String getId();
+
+	/**
+	 * Sets the value of the '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory#getId
+	 * <em>Id</em>}' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @param value
+	 *            the new value of the '<em>Id</em>' attribute.
+	 * @see #getId()
+	 * @generated
+	 */
+	void setId(String value);
+
+} // PreferencesCategory
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/PreferencesPage.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/PreferencesPage.java
new file mode 100644
index 0000000..5b6736e
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/PreferencesPage.java
@@ -0,0 +1,104 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model;
+
+import org.eclipse.e4.ui.model.application.MContribution;
+
+import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '
+ * <em><b>Page</b></em>'. <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesPage#getCategory
+ * <em>Category</em>}</li>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesPage#getDescription
+ * <em>Description</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#getPreferencesPage()
+ * @model
+ * @generated
+ */
+public interface PreferencesPage extends EObject,
+		MElementContainer<FieldEditor<?>>, MContribution {
+	/**
+	 * Returns the value of the '<em><b>Category</b></em>' container reference.
+	 * It is bidirectional and its opposite is '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory#getPage
+	 * <em>Page</em>}'. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Category</em>' container reference isn't
+	 * clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Category</em>' container reference.
+	 * @see #setCategory(PreferencesCategory)
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#getPreferencesPage_Category()
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory#getPage
+	 * @model opposite="page" transient="false"
+	 * @generated
+	 */
+	PreferencesCategory getCategory();
+
+	/**
+	 * Sets the value of the '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesPage#getCategory
+	 * <em>Category</em>}' container reference. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @param value
+	 *            the new value of the '<em>Category</em>' container reference.
+	 * @see #getCategory()
+	 * @generated
+	 */
+	void setCategory(PreferencesCategory value);
+
+	/**
+	 * Returns the value of the '<em><b>Description</b></em>' attribute. <!--
+	 * begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Description</em>' attribute isn't clear, there
+	 * really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Description</em>' attribute.
+	 * @see #setDescription(String)
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#getPreferencesPage_Description()
+	 * @model
+	 * @generated
+	 */
+	String getDescription();
+
+	/**
+	 * Sets the value of the '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesPage#getDescription
+	 * <em>Description</em>}' attribute. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @param value
+	 *            the new value of the '<em>Description</em>' attribute.
+	 * @see #getDescription()
+	 * @generated
+	 */
+	void setDescription(String value);
+
+} // PreferencesPage
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/RadioGroupFieldEditor.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/RadioGroupFieldEditor.java
new file mode 100644
index 0000000..ce79721
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/RadioGroupFieldEditor.java
@@ -0,0 +1,23 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '
+ * <em><b>Radio Group Field Editor</b></em>'. <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#getRadioGroupFieldEditor()
+ * @model
+ * @generated
+ */
+public interface RadioGroupFieldEditor extends ListFieldEditor {
+} // RadioGroupFieldEditor
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/ScaleFieldEditor.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/ScaleFieldEditor.java
new file mode 100644
index 0000000..2b22d67
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/ScaleFieldEditor.java
@@ -0,0 +1,128 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '
+ * <em><b>Scale Field Editor</b></em>'. <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.ScaleFieldEditor#getMinValue
+ * <em>Min Value</em>}</li>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.ScaleFieldEditor#getMaxValue
+ * <em>Max Value</em>}</li>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.ScaleFieldEditor#getIncrementValue
+ * <em>Increment Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#getScaleFieldEditor()
+ * @model superTypes=
+ *        "org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor<org.eclipse.emf.ecore.EIntegerObject>"
+ * @generated
+ */
+public interface ScaleFieldEditor extends FieldEditor<Integer> {
+	/**
+	 * Returns the value of the '<em><b>Min Value</b></em>' attribute. The
+	 * default value is <code>"0"</code>. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Min Value</em>' attribute isn't clear, there
+	 * really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Min Value</em>' attribute.
+	 * @see #setMinValue(Integer)
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#getScaleFieldEditor_MinValue()
+	 * @model default="0"
+	 * @generated
+	 */
+	Integer getMinValue();
+
+	/**
+	 * Sets the value of the '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.ScaleFieldEditor#getMinValue
+	 * <em>Min Value</em>}' attribute. <!-- begin-user-doc --> <!-- end-user-doc
+	 * -->
+	 * 
+	 * @param value
+	 *            the new value of the '<em>Min Value</em>' attribute.
+	 * @see #getMinValue()
+	 * @generated
+	 */
+	void setMinValue(Integer value);
+
+	/**
+	 * Returns the value of the '<em><b>Max Value</b></em>' attribute. The
+	 * default value is <code>"100"</code>. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Max Value</em>' attribute isn't clear, there
+	 * really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Max Value</em>' attribute.
+	 * @see #setMaxValue(Integer)
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#getScaleFieldEditor_MaxValue()
+	 * @model default="100"
+	 * @generated
+	 */
+	Integer getMaxValue();
+
+	/**
+	 * Sets the value of the '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.ScaleFieldEditor#getMaxValue
+	 * <em>Max Value</em>}' attribute. <!-- begin-user-doc --> <!-- end-user-doc
+	 * -->
+	 * 
+	 * @param value
+	 *            the new value of the '<em>Max Value</em>' attribute.
+	 * @see #getMaxValue()
+	 * @generated
+	 */
+	void setMaxValue(Integer value);
+
+	/**
+	 * Returns the value of the '<em><b>Increment Value</b></em>' attribute. The
+	 * default value is <code>"1"</code>. <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Increment Value</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Increment Value</em>' attribute.
+	 * @see #setIncrementValue(Integer)
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#getScaleFieldEditor_IncrementValue()
+	 * @model default="1"
+	 * @generated
+	 */
+	Integer getIncrementValue();
+
+	/**
+	 * Sets the value of the '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.ScaleFieldEditor#getIncrementValue
+	 * <em>Increment Value</em>}' attribute. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @param value
+	 *            the new value of the '<em>Increment Value</em>' attribute.
+	 * @see #getIncrementValue()
+	 * @generated
+	 */
+	void setIncrementValue(Integer value);
+
+} // ScaleFieldEditor
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/StringFieldEditor.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/StringFieldEditor.java
new file mode 100644
index 0000000..29bc184
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/StringFieldEditor.java
@@ -0,0 +1,62 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '
+ * <em><b>String Field Editor</b></em>'. <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.StringFieldEditor#getMaxLength
+ * <em>Max Length</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#getStringFieldEditor()
+ * @model superTypes=
+ *        "org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor<org.eclipse.emf.ecore.EString>"
+ * @generated
+ */
+public interface StringFieldEditor extends FieldEditor<String> {
+	/**
+	 * Returns the value of the '<em><b>Max Length</b></em>' attribute. <!--
+	 * begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Max Length</em>' attribute isn't clear, there
+	 * really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Max Length</em>' attribute.
+	 * @see #setMaxLength(Integer)
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#getStringFieldEditor_MaxLength()
+	 * @model
+	 * @generated
+	 */
+	Integer getMaxLength();
+
+	/**
+	 * Sets the value of the '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.StringFieldEditor#getMaxLength
+	 * <em>Max Length</em>}' attribute. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @param value
+	 *            the new value of the '<em>Max Length</em>' attribute.
+	 * @see #getMaxLength()
+	 * @generated
+	 */
+	void setMaxLength(Integer value);
+
+} // StringFieldEditor
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/BooleanFieldEditorImpl.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/BooleanFieldEditorImpl.java
new file mode 100644
index 0000000..02ea97c
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/BooleanFieldEditorImpl.java
@@ -0,0 +1,188 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.BooleanFieldEditor;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.BooleanFieldStyle;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '
+ * <em><b>Boolean Field Editor</b></em>'. <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.BooleanFieldEditorImpl#getStyle
+ * <em>Style</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class BooleanFieldEditorImpl extends FieldEditorImpl<Boolean> implements
+		BooleanFieldEditor {
+	/**
+	 * The default value of the '{@link #getStyle() <em>Style</em>}' attribute.
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #getStyle()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final BooleanFieldStyle STYLE_EDEFAULT = BooleanFieldStyle.DEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getStyle() <em>Style</em>}' attribute.
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #getStyle()
+	 * @generated
+	 * @ordered
+	 */
+	protected BooleanFieldStyle style = STYLE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected BooleanFieldEditorImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return PreferencesPackage.Literals.BOOLEAN_FIELD_EDITOR;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc --> This is specialized for the
+	 * more specific type known in this context.
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void setDefaultValueTyped(Boolean newDefaultValueTyped) {
+		super.setDefaultValueTyped(newDefaultValueTyped);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public BooleanFieldStyle getStyle() {
+		return style;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setStyle(BooleanFieldStyle newStyle) {
+		BooleanFieldStyle oldStyle = style;
+		style = newStyle == null ? STYLE_EDEFAULT : newStyle;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET,
+					PreferencesPackage.BOOLEAN_FIELD_EDITOR__STYLE, oldStyle,
+					style));
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case PreferencesPackage.BOOLEAN_FIELD_EDITOR__STYLE:
+			return getStyle();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case PreferencesPackage.BOOLEAN_FIELD_EDITOR__STYLE:
+			setStyle((BooleanFieldStyle) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case PreferencesPackage.BOOLEAN_FIELD_EDITOR__STYLE:
+			setStyle(STYLE_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case PreferencesPackage.BOOLEAN_FIELD_EDITOR__STYLE:
+			return style != STYLE_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy())
+			return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (style: ");
+		result.append(style);
+		result.append(')');
+		return result.toString();
+	}
+
+} // BooleanFieldEditorImpl
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/ComboFieldEditorImpl.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/ComboFieldEditorImpl.java
new file mode 100644
index 0000000..af3e420
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/ComboFieldEditorImpl.java
@@ -0,0 +1,48 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.ComboFieldEditor;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '
+ * <em><b>Combo Field Editor</b></em>'. <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class ComboFieldEditorImpl extends ListFieldEditorImpl implements
+		ComboFieldEditor {
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected ComboFieldEditorImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return PreferencesPackage.Literals.COMBO_FIELD_EDITOR;
+	}
+
+} // ComboFieldEditorImpl
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/DirectoryFieldEditorImpl.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/DirectoryFieldEditorImpl.java
new file mode 100644
index 0000000..8a55b93
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/DirectoryFieldEditorImpl.java
@@ -0,0 +1,295 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model.impl;
+
+import org.eclipse.e4.ui.model.application.MContribution;
+
+import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.DirectoryFieldEditor;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '
+ * <em><b>Directory Field Editor</b></em>'. <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.DirectoryFieldEditorImpl#getContributionURI
+ * <em>Contribution URI</em>}</li>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.DirectoryFieldEditorImpl#getObject
+ * <em>Object</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class DirectoryFieldEditorImpl extends FieldEditorImpl<String> implements
+		DirectoryFieldEditor {
+	/**
+	 * The default value of the '{@link #getContributionURI()
+	 * <em>Contribution URI</em>}' attribute. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @see #getContributionURI()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String CONTRIBUTION_URI_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getContributionURI()
+	 * <em>Contribution URI</em>}' attribute. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @see #getContributionURI()
+	 * @generated
+	 * @ordered
+	 */
+	protected String contributionURI = CONTRIBUTION_URI_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getObject() <em>Object</em>}'
+	 * attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #getObject()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final Object OBJECT_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getObject() <em>Object</em>}' attribute.
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #getObject()
+	 * @generated
+	 * @ordered
+	 */
+	protected Object object = OBJECT_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected DirectoryFieldEditorImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return PreferencesPackage.Literals.DIRECTORY_FIELD_EDITOR;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc --> This is specialized for the
+	 * more specific type known in this context.
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void setDefaultValueTyped(String newDefaultValueTyped) {
+		super.setDefaultValueTyped(newDefaultValueTyped);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public String getContributionURI() {
+		return contributionURI;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setContributionURI(String newContributionURI) {
+		String oldContributionURI = contributionURI;
+		contributionURI = newContributionURI;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(
+					this,
+					Notification.SET,
+					PreferencesPackage.DIRECTORY_FIELD_EDITOR__CONTRIBUTION_URI,
+					oldContributionURI, contributionURI));
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public Object getObject() {
+		return object;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setObject(Object newObject) {
+		Object oldObject = object;
+		object = newObject;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET,
+					PreferencesPackage.DIRECTORY_FIELD_EDITOR__OBJECT,
+					oldObject, object));
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case PreferencesPackage.DIRECTORY_FIELD_EDITOR__CONTRIBUTION_URI:
+			return getContributionURI();
+		case PreferencesPackage.DIRECTORY_FIELD_EDITOR__OBJECT:
+			return getObject();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case PreferencesPackage.DIRECTORY_FIELD_EDITOR__CONTRIBUTION_URI:
+			setContributionURI((String) newValue);
+			return;
+		case PreferencesPackage.DIRECTORY_FIELD_EDITOR__OBJECT:
+			setObject(newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case PreferencesPackage.DIRECTORY_FIELD_EDITOR__CONTRIBUTION_URI:
+			setContributionURI(CONTRIBUTION_URI_EDEFAULT);
+			return;
+		case PreferencesPackage.DIRECTORY_FIELD_EDITOR__OBJECT:
+			setObject(OBJECT_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case PreferencesPackage.DIRECTORY_FIELD_EDITOR__CONTRIBUTION_URI:
+			return CONTRIBUTION_URI_EDEFAULT == null ? contributionURI != null
+					: !CONTRIBUTION_URI_EDEFAULT.equals(contributionURI);
+		case PreferencesPackage.DIRECTORY_FIELD_EDITOR__OBJECT:
+			return OBJECT_EDEFAULT == null ? object != null : !OBJECT_EDEFAULT
+					.equals(object);
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+		if (baseClass == MContribution.class) {
+			switch (derivedFeatureID) {
+			case PreferencesPackage.DIRECTORY_FIELD_EDITOR__CONTRIBUTION_URI:
+				return ApplicationPackageImpl.CONTRIBUTION__CONTRIBUTION_URI;
+			case PreferencesPackage.DIRECTORY_FIELD_EDITOR__OBJECT:
+				return ApplicationPackageImpl.CONTRIBUTION__OBJECT;
+			default:
+				return -1;
+			}
+		}
+		return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
+		if (baseClass == MContribution.class) {
+			switch (baseFeatureID) {
+			case ApplicationPackageImpl.CONTRIBUTION__CONTRIBUTION_URI:
+				return PreferencesPackage.DIRECTORY_FIELD_EDITOR__CONTRIBUTION_URI;
+			case ApplicationPackageImpl.CONTRIBUTION__OBJECT:
+				return PreferencesPackage.DIRECTORY_FIELD_EDITOR__OBJECT;
+			default:
+				return -1;
+			}
+		}
+		return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy())
+			return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (contributionURI: ");
+		result.append(contributionURI);
+		result.append(", object: ");
+		result.append(object);
+		result.append(')');
+		return result.toString();
+	}
+
+} // DirectoryFieldEditorImpl
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/EntryImpl.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/EntryImpl.java
new file mode 100644
index 0000000..a24c45e
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/EntryImpl.java
@@ -0,0 +1,234 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.Entry;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '
+ * <em><b>Entry</b></em>'. <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.EntryImpl#getName
+ * <em>Name</em>}</li>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.EntryImpl#getValue
+ * <em>Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class EntryImpl extends MinimalEObjectImpl.Container implements Entry {
+	/**
+	 * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String NAME_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected String name = NAME_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getValue() <em>Value</em>}' attribute.
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #getValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String VALUE_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getValue() <em>Value</em>}' attribute.
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #getValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected String value = VALUE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected EntryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return PreferencesPackage.Literals.ENTRY;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setName(String newName) {
+		String oldName = name;
+		name = newName;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET,
+					PreferencesPackage.ENTRY__NAME, oldName, name));
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public String getValue() {
+		return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setValue(String newValue) {
+		String oldValue = value;
+		value = newValue;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET,
+					PreferencesPackage.ENTRY__VALUE, oldValue, value));
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case PreferencesPackage.ENTRY__NAME:
+			return getName();
+		case PreferencesPackage.ENTRY__VALUE:
+			return getValue();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case PreferencesPackage.ENTRY__NAME:
+			setName((String) newValue);
+			return;
+		case PreferencesPackage.ENTRY__VALUE:
+			setValue((String) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case PreferencesPackage.ENTRY__NAME:
+			setName(NAME_EDEFAULT);
+			return;
+		case PreferencesPackage.ENTRY__VALUE:
+			setValue(VALUE_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case PreferencesPackage.ENTRY__NAME:
+			return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT
+					.equals(name);
+		case PreferencesPackage.ENTRY__VALUE:
+			return VALUE_EDEFAULT == null ? value != null : !VALUE_EDEFAULT
+					.equals(value);
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy())
+			return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (name: ");
+		result.append(name);
+		result.append(", value: ");
+		result.append(value);
+		result.append(')');
+		return result.toString();
+	}
+
+} // EntryImpl
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/FieldEditorImpl.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/FieldEditorImpl.java
new file mode 100644
index 0000000..edf327d
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/FieldEditorImpl.java
@@ -0,0 +1,527 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model.impl;
+
+import org.eclipse.e4.ui.model.application.ui.impl.UIElementImpl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage;
+
+import org.osgi.service.prefs.Preferences;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '
+ * <em><b>Field Editor</b></em>'. <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.FieldEditorImpl#getLabel
+ * <em>Label</em>}</li>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.FieldEditorImpl#getPreferenceName
+ * <em>Preference Name</em>}</li>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.FieldEditorImpl#getDefaultValue
+ * <em>Default Value</em>}</li>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.FieldEditorImpl#getDefaultValueTyped
+ * <em>Default Value Typed</em>}</li>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.FieldEditorImpl#getBundle
+ * <em>Bundle</em>}</li>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.FieldEditorImpl#getPreferences
+ * <em>Preferences</em>}</li>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.FieldEditorImpl#getEquinoxPath
+ * <em>Equinox Path</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class FieldEditorImpl<T> extends UIElementImpl implements FieldEditor<T> {
+	/**
+	 * The default value of the '{@link #getLabel() <em>Label</em>}' attribute.
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #getLabel()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String LABEL_EDEFAULT = "";
+
+	/**
+	 * The cached value of the '{@link #getLabel() <em>Label</em>}' attribute.
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #getLabel()
+	 * @generated
+	 * @ordered
+	 */
+	protected String label = LABEL_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getPreferenceName()
+	 * <em>Preference Name</em>}' attribute. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @see #getPreferenceName()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String PREFERENCE_NAME_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getPreferenceName()
+	 * <em>Preference Name</em>}' attribute. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @see #getPreferenceName()
+	 * @generated
+	 * @ordered
+	 */
+	protected String preferenceName = PREFERENCE_NAME_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getDefaultValue()
+	 * <em>Default Value</em>}' attribute. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @see #getDefaultValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String DEFAULT_VALUE_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getDefaultValue()
+	 * <em>Default Value</em>}' attribute. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @see #getDefaultValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected String defaultValue = DEFAULT_VALUE_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getDefaultValueTyped()
+	 * <em>Default Value Typed</em>}' attribute. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @see #getDefaultValueTyped()
+	 * @generated
+	 * @ordered
+	 */
+	protected T defaultValueTyped;
+
+	/**
+	 * The default value of the '{@link #getBundle() <em>Bundle</em>}'
+	 * attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #getBundle()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String BUNDLE_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getBundle() <em>Bundle</em>}' attribute.
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #getBundle()
+	 * @generated
+	 * @ordered
+	 */
+	protected String bundle = BUNDLE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getPreferences() <em>Preferences</em>}'
+	 * attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #getPreferences()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final Preferences PREFERENCES_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getPreferences() <em>Preferences</em>}'
+	 * attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #getPreferences()
+	 * @generated
+	 * @ordered
+	 */
+	protected Preferences preferences = PREFERENCES_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getEquinoxPath() <em>Equinox Path</em>}
+	 * ' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #getEquinoxPath()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String EQUINOX_PATH_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getEquinoxPath() <em>Equinox Path</em>}'
+	 * attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #getEquinoxPath()
+	 * @generated
+	 * @ordered
+	 */
+	protected String equinoxPath = EQUINOX_PATH_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected FieldEditorImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return PreferencesPackage.Literals.FIELD_EDITOR;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public String getLabel() {
+		return label;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setLabel(String newLabel) {
+		String oldLabel = label;
+		label = newLabel;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET,
+					PreferencesPackage.FIELD_EDITOR__LABEL, oldLabel, label));
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public String getPreferenceName() {
+		return preferenceName;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setPreferenceName(String newPreferenceName) {
+		String oldPreferenceName = preferenceName;
+		preferenceName = newPreferenceName;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET,
+					PreferencesPackage.FIELD_EDITOR__PREFERENCE_NAME,
+					oldPreferenceName, preferenceName));
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public String getDefaultValue() {
+		return defaultValue;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setDefaultValue(String newDefaultValue) {
+		String oldDefaultValue = defaultValue;
+		defaultValue = newDefaultValue;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET,
+					PreferencesPackage.FIELD_EDITOR__DEFAULT_VALUE,
+					oldDefaultValue, defaultValue));
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public T getDefaultValueTyped() {
+		return defaultValueTyped;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setDefaultValueTyped(T newDefaultValueTyped) {
+		T oldDefaultValueTyped = defaultValueTyped;
+		defaultValueTyped = newDefaultValueTyped;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET,
+					PreferencesPackage.FIELD_EDITOR__DEFAULT_VALUE_TYPED,
+					oldDefaultValueTyped, defaultValueTyped));
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public String getBundle() {
+		return bundle;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setBundle(String newBundle) {
+		String oldBundle = bundle;
+		bundle = newBundle;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET,
+					PreferencesPackage.FIELD_EDITOR__BUNDLE, oldBundle, bundle));
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public Preferences getPreferences() {
+		return preferences;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setPreferences(Preferences newPreferences) {
+		Preferences oldPreferences = preferences;
+		preferences = newPreferences;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET,
+					PreferencesPackage.FIELD_EDITOR__PREFERENCES,
+					oldPreferences, preferences));
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public String getEquinoxPath() {
+		return equinoxPath;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setEquinoxPath(String newEquinoxPath) {
+		String oldEquinoxPath = equinoxPath;
+		equinoxPath = newEquinoxPath;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET,
+					PreferencesPackage.FIELD_EDITOR__EQUINOX_PATH,
+					oldEquinoxPath, equinoxPath));
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case PreferencesPackage.FIELD_EDITOR__LABEL:
+			return getLabel();
+		case PreferencesPackage.FIELD_EDITOR__PREFERENCE_NAME:
+			return getPreferenceName();
+		case PreferencesPackage.FIELD_EDITOR__DEFAULT_VALUE:
+			return getDefaultValue();
+		case PreferencesPackage.FIELD_EDITOR__DEFAULT_VALUE_TYPED:
+			return getDefaultValueTyped();
+		case PreferencesPackage.FIELD_EDITOR__BUNDLE:
+			return getBundle();
+		case PreferencesPackage.FIELD_EDITOR__PREFERENCES:
+			return getPreferences();
+		case PreferencesPackage.FIELD_EDITOR__EQUINOX_PATH:
+			return getEquinoxPath();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case PreferencesPackage.FIELD_EDITOR__LABEL:
+			setLabel((String) newValue);
+			return;
+		case PreferencesPackage.FIELD_EDITOR__PREFERENCE_NAME:
+			setPreferenceName((String) newValue);
+			return;
+		case PreferencesPackage.FIELD_EDITOR__DEFAULT_VALUE:
+			setDefaultValue((String) newValue);
+			return;
+		case PreferencesPackage.FIELD_EDITOR__DEFAULT_VALUE_TYPED:
+			setDefaultValueTyped((T) newValue);
+			return;
+		case PreferencesPackage.FIELD_EDITOR__BUNDLE:
+			setBundle((String) newValue);
+			return;
+		case PreferencesPackage.FIELD_EDITOR__PREFERENCES:
+			setPreferences((Preferences) newValue);
+			return;
+		case PreferencesPackage.FIELD_EDITOR__EQUINOX_PATH:
+			setEquinoxPath((String) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case PreferencesPackage.FIELD_EDITOR__LABEL:
+			setLabel(LABEL_EDEFAULT);
+			return;
+		case PreferencesPackage.FIELD_EDITOR__PREFERENCE_NAME:
+			setPreferenceName(PREFERENCE_NAME_EDEFAULT);
+			return;
+		case PreferencesPackage.FIELD_EDITOR__DEFAULT_VALUE:
+			setDefaultValue(DEFAULT_VALUE_EDEFAULT);
+			return;
+		case PreferencesPackage.FIELD_EDITOR__DEFAULT_VALUE_TYPED:
+			setDefaultValueTyped((T) null);
+			return;
+		case PreferencesPackage.FIELD_EDITOR__BUNDLE:
+			setBundle(BUNDLE_EDEFAULT);
+			return;
+		case PreferencesPackage.FIELD_EDITOR__PREFERENCES:
+			setPreferences(PREFERENCES_EDEFAULT);
+			return;
+		case PreferencesPackage.FIELD_EDITOR__EQUINOX_PATH:
+			setEquinoxPath(EQUINOX_PATH_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case PreferencesPackage.FIELD_EDITOR__LABEL:
+			return LABEL_EDEFAULT == null ? label != null : !LABEL_EDEFAULT
+					.equals(label);
+		case PreferencesPackage.FIELD_EDITOR__PREFERENCE_NAME:
+			return PREFERENCE_NAME_EDEFAULT == null ? preferenceName != null
+					: !PREFERENCE_NAME_EDEFAULT.equals(preferenceName);
+		case PreferencesPackage.FIELD_EDITOR__DEFAULT_VALUE:
+			return DEFAULT_VALUE_EDEFAULT == null ? defaultValue != null
+					: !DEFAULT_VALUE_EDEFAULT.equals(defaultValue);
+		case PreferencesPackage.FIELD_EDITOR__DEFAULT_VALUE_TYPED:
+			return defaultValueTyped != null;
+		case PreferencesPackage.FIELD_EDITOR__BUNDLE:
+			return BUNDLE_EDEFAULT == null ? bundle != null : !BUNDLE_EDEFAULT
+					.equals(bundle);
+		case PreferencesPackage.FIELD_EDITOR__PREFERENCES:
+			return PREFERENCES_EDEFAULT == null ? preferences != null
+					: !PREFERENCES_EDEFAULT.equals(preferences);
+		case PreferencesPackage.FIELD_EDITOR__EQUINOX_PATH:
+			return EQUINOX_PATH_EDEFAULT == null ? equinoxPath != null
+					: !EQUINOX_PATH_EDEFAULT.equals(equinoxPath);
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy())
+			return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (label: ");
+		result.append(label);
+		result.append(", preferenceName: ");
+		result.append(preferenceName);
+		result.append(", defaultValue: ");
+		result.append(defaultValue);
+		result.append(", defaultValueTyped: ");
+		result.append(defaultValueTyped);
+		result.append(", bundle: ");
+		result.append(bundle);
+		result.append(", preferences: ");
+		result.append(preferences);
+		result.append(", equinoxPath: ");
+		result.append(equinoxPath);
+		result.append(')');
+		return result.toString();
+	}
+
+} // FieldEditorImpl
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/FileFieldEditorImpl.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/FileFieldEditorImpl.java
new file mode 100644
index 0000000..4819ad3
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/FileFieldEditorImpl.java
@@ -0,0 +1,293 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model.impl;
+
+import org.eclipse.e4.ui.model.application.MContribution;
+
+import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.FileFieldEditor;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '
+ * <em><b>File Field Editor</b></em>'. <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.FileFieldEditorImpl#getContributionURI
+ * <em>Contribution URI</em>}</li>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.FileFieldEditorImpl#getObject
+ * <em>Object</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class FileFieldEditorImpl extends FieldEditorImpl<String> implements
+		FileFieldEditor {
+	/**
+	 * The default value of the '{@link #getContributionURI()
+	 * <em>Contribution URI</em>}' attribute. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @see #getContributionURI()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String CONTRIBUTION_URI_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getContributionURI()
+	 * <em>Contribution URI</em>}' attribute. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @see #getContributionURI()
+	 * @generated
+	 * @ordered
+	 */
+	protected String contributionURI = CONTRIBUTION_URI_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getObject() <em>Object</em>}'
+	 * attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #getObject()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final Object OBJECT_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getObject() <em>Object</em>}' attribute.
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #getObject()
+	 * @generated
+	 * @ordered
+	 */
+	protected Object object = OBJECT_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected FileFieldEditorImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return PreferencesPackage.Literals.FILE_FIELD_EDITOR;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc --> This is specialized for the
+	 * more specific type known in this context.
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void setDefaultValueTyped(String newDefaultValueTyped) {
+		super.setDefaultValueTyped(newDefaultValueTyped);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public String getContributionURI() {
+		return contributionURI;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setContributionURI(String newContributionURI) {
+		String oldContributionURI = contributionURI;
+		contributionURI = newContributionURI;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET,
+					PreferencesPackage.FILE_FIELD_EDITOR__CONTRIBUTION_URI,
+					oldContributionURI, contributionURI));
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public Object getObject() {
+		return object;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setObject(Object newObject) {
+		Object oldObject = object;
+		object = newObject;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET,
+					PreferencesPackage.FILE_FIELD_EDITOR__OBJECT, oldObject,
+					object));
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case PreferencesPackage.FILE_FIELD_EDITOR__CONTRIBUTION_URI:
+			return getContributionURI();
+		case PreferencesPackage.FILE_FIELD_EDITOR__OBJECT:
+			return getObject();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case PreferencesPackage.FILE_FIELD_EDITOR__CONTRIBUTION_URI:
+			setContributionURI((String) newValue);
+			return;
+		case PreferencesPackage.FILE_FIELD_EDITOR__OBJECT:
+			setObject(newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case PreferencesPackage.FILE_FIELD_EDITOR__CONTRIBUTION_URI:
+			setContributionURI(CONTRIBUTION_URI_EDEFAULT);
+			return;
+		case PreferencesPackage.FILE_FIELD_EDITOR__OBJECT:
+			setObject(OBJECT_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case PreferencesPackage.FILE_FIELD_EDITOR__CONTRIBUTION_URI:
+			return CONTRIBUTION_URI_EDEFAULT == null ? contributionURI != null
+					: !CONTRIBUTION_URI_EDEFAULT.equals(contributionURI);
+		case PreferencesPackage.FILE_FIELD_EDITOR__OBJECT:
+			return OBJECT_EDEFAULT == null ? object != null : !OBJECT_EDEFAULT
+					.equals(object);
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+		if (baseClass == MContribution.class) {
+			switch (derivedFeatureID) {
+			case PreferencesPackage.FILE_FIELD_EDITOR__CONTRIBUTION_URI:
+				return ApplicationPackageImpl.CONTRIBUTION__CONTRIBUTION_URI;
+			case PreferencesPackage.FILE_FIELD_EDITOR__OBJECT:
+				return ApplicationPackageImpl.CONTRIBUTION__OBJECT;
+			default:
+				return -1;
+			}
+		}
+		return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
+		if (baseClass == MContribution.class) {
+			switch (baseFeatureID) {
+			case ApplicationPackageImpl.CONTRIBUTION__CONTRIBUTION_URI:
+				return PreferencesPackage.FILE_FIELD_EDITOR__CONTRIBUTION_URI;
+			case ApplicationPackageImpl.CONTRIBUTION__OBJECT:
+				return PreferencesPackage.FILE_FIELD_EDITOR__OBJECT;
+			default:
+				return -1;
+			}
+		}
+		return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy())
+			return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (contributionURI: ");
+		result.append(contributionURI);
+		result.append(", object: ");
+		result.append(object);
+		result.append(')');
+		return result.toString();
+	}
+
+} // FileFieldEditorImpl
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/IntegerFieldEditorImpl.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/IntegerFieldEditorImpl.java
new file mode 100644
index 0000000..75c3628
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/IntegerFieldEditorImpl.java
@@ -0,0 +1,251 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.IntegerFieldEditor;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '
+ * <em><b>Integer Field Editor</b></em>'. <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.IntegerFieldEditorImpl#getMinValidValue
+ * <em>Min Valid Value</em>}</li>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.IntegerFieldEditorImpl#getMaxValidValue
+ * <em>Max Valid Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class IntegerFieldEditorImpl extends FieldEditorImpl<Integer> implements
+		IntegerFieldEditor {
+	/**
+	 * The default value of the '{@link #getMinValidValue()
+	 * <em>Min Valid Value</em>}' attribute. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @see #getMinValidValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final Integer MIN_VALID_VALUE_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getMinValidValue()
+	 * <em>Min Valid Value</em>}' attribute. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @see #getMinValidValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected Integer minValidValue = MIN_VALID_VALUE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getMaxValidValue()
+	 * <em>Max Valid Value</em>}' attribute. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @see #getMaxValidValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final Integer MAX_VALID_VALUE_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getMaxValidValue()
+	 * <em>Max Valid Value</em>}' attribute. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @see #getMaxValidValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected Integer maxValidValue = MAX_VALID_VALUE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected IntegerFieldEditorImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return PreferencesPackage.Literals.INTEGER_FIELD_EDITOR;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc --> This is specialized for the
+	 * more specific type known in this context.
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void setDefaultValueTyped(Integer newDefaultValueTyped) {
+		super.setDefaultValueTyped(newDefaultValueTyped);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public Integer getMinValidValue() {
+		return minValidValue;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setMinValidValue(Integer newMinValidValue) {
+		Integer oldMinValidValue = minValidValue;
+		minValidValue = newMinValidValue;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET,
+					PreferencesPackage.INTEGER_FIELD_EDITOR__MIN_VALID_VALUE,
+					oldMinValidValue, minValidValue));
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public Integer getMaxValidValue() {
+		return maxValidValue;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setMaxValidValue(Integer newMaxValidValue) {
+		Integer oldMaxValidValue = maxValidValue;
+		maxValidValue = newMaxValidValue;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET,
+					PreferencesPackage.INTEGER_FIELD_EDITOR__MAX_VALID_VALUE,
+					oldMaxValidValue, maxValidValue));
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case PreferencesPackage.INTEGER_FIELD_EDITOR__MIN_VALID_VALUE:
+			return getMinValidValue();
+		case PreferencesPackage.INTEGER_FIELD_EDITOR__MAX_VALID_VALUE:
+			return getMaxValidValue();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case PreferencesPackage.INTEGER_FIELD_EDITOR__MIN_VALID_VALUE:
+			setMinValidValue((Integer) newValue);
+			return;
+		case PreferencesPackage.INTEGER_FIELD_EDITOR__MAX_VALID_VALUE:
+			setMaxValidValue((Integer) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case PreferencesPackage.INTEGER_FIELD_EDITOR__MIN_VALID_VALUE:
+			setMinValidValue(MIN_VALID_VALUE_EDEFAULT);
+			return;
+		case PreferencesPackage.INTEGER_FIELD_EDITOR__MAX_VALID_VALUE:
+			setMaxValidValue(MAX_VALID_VALUE_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case PreferencesPackage.INTEGER_FIELD_EDITOR__MIN_VALID_VALUE:
+			return MIN_VALID_VALUE_EDEFAULT == null ? minValidValue != null
+					: !MIN_VALID_VALUE_EDEFAULT.equals(minValidValue);
+		case PreferencesPackage.INTEGER_FIELD_EDITOR__MAX_VALID_VALUE:
+			return MAX_VALID_VALUE_EDEFAULT == null ? maxValidValue != null
+					: !MAX_VALID_VALUE_EDEFAULT.equals(maxValidValue);
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy())
+			return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (minValidValue: ");
+		result.append(minValidValue);
+		result.append(", maxValidValue: ");
+		result.append(maxValidValue);
+		result.append(')');
+		return result.toString();
+	}
+
+} // IntegerFieldEditorImpl
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/ListEditorImpl.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/ListEditorImpl.java
new file mode 100644
index 0000000..def2517
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/ListEditorImpl.java
@@ -0,0 +1,429 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model.impl;
+
+import org.eclipse.e4.ui.model.application.MContribution;
+
+import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.ListCrud;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.ListEditor;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.ListFold;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '
+ * <em><b>List Editor</b></em>'. <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.ListEditorImpl#getContributionURI
+ * <em>Contribution URI</em>}</li>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.ListEditorImpl#getObject
+ * <em>Object</em>}</li>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.ListEditorImpl#getListCrud
+ * <em>List Crud</em>}</li>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.ListEditorImpl#getListFold
+ * <em>List Fold</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ListEditorImpl extends FieldEditorImpl<String> implements
+		ListEditor {
+	/**
+	 * The default value of the '{@link #getContributionURI()
+	 * <em>Contribution URI</em>}' attribute. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @see #getContributionURI()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String CONTRIBUTION_URI_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getContributionURI()
+	 * <em>Contribution URI</em>}' attribute. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @see #getContributionURI()
+	 * @generated
+	 * @ordered
+	 */
+	protected String contributionURI = CONTRIBUTION_URI_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getObject() <em>Object</em>}'
+	 * attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #getObject()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final Object OBJECT_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getObject() <em>Object</em>}' attribute.
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #getObject()
+	 * @generated
+	 * @ordered
+	 */
+	protected Object object = OBJECT_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getListCrud() <em>List Crud</em>}'
+	 * reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #getListCrud()
+	 * @generated
+	 * @ordered
+	 */
+	protected ListCrud listCrud;
+
+	/**
+	 * The cached value of the '{@link #getListFold() <em>List Fold</em>}'
+	 * reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #getListFold()
+	 * @generated
+	 * @ordered
+	 */
+	protected ListFold listFold;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected ListEditorImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return PreferencesPackage.Literals.LIST_EDITOR;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc --> This is specialized for the
+	 * more specific type known in this context.
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void setDefaultValueTyped(String newDefaultValueTyped) {
+		super.setDefaultValueTyped(newDefaultValueTyped);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public String getContributionURI() {
+		return contributionURI;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setContributionURI(String newContributionURI) {
+		String oldContributionURI = contributionURI;
+		contributionURI = newContributionURI;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET,
+					PreferencesPackage.LIST_EDITOR__CONTRIBUTION_URI,
+					oldContributionURI, contributionURI));
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public Object getObject() {
+		return object;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setObject(Object newObject) {
+		Object oldObject = object;
+		object = newObject;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET,
+					PreferencesPackage.LIST_EDITOR__OBJECT, oldObject, object));
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public ListCrud getListCrud() {
+		if (listCrud != null && listCrud.eIsProxy()) {
+			InternalEObject oldListCrud = (InternalEObject) listCrud;
+			listCrud = (ListCrud) eResolveProxy(oldListCrud);
+			if (listCrud != oldListCrud) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE,
+							PreferencesPackage.LIST_EDITOR__LIST_CRUD,
+							oldListCrud, listCrud));
+			}
+		}
+		return listCrud;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public ListCrud basicGetListCrud() {
+		return listCrud;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setListCrud(ListCrud newListCrud) {
+		ListCrud oldListCrud = listCrud;
+		listCrud = newListCrud;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET,
+					PreferencesPackage.LIST_EDITOR__LIST_CRUD, oldListCrud,
+					listCrud));
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public ListFold getListFold() {
+		if (listFold != null && listFold.eIsProxy()) {
+			InternalEObject oldListFold = (InternalEObject) listFold;
+			listFold = (ListFold) eResolveProxy(oldListFold);
+			if (listFold != oldListFold) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE,
+							PreferencesPackage.LIST_EDITOR__LIST_FOLD,
+							oldListFold, listFold));
+			}
+		}
+		return listFold;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public ListFold basicGetListFold() {
+		return listFold;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setListFold(ListFold newListFold) {
+		ListFold oldListFold = listFold;
+		listFold = newListFold;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET,
+					PreferencesPackage.LIST_EDITOR__LIST_FOLD, oldListFold,
+					listFold));
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case PreferencesPackage.LIST_EDITOR__CONTRIBUTION_URI:
+			return getContributionURI();
+		case PreferencesPackage.LIST_EDITOR__OBJECT:
+			return getObject();
+		case PreferencesPackage.LIST_EDITOR__LIST_CRUD:
+			if (resolve)
+				return getListCrud();
+			return basicGetListCrud();
+		case PreferencesPackage.LIST_EDITOR__LIST_FOLD:
+			if (resolve)
+				return getListFold();
+			return basicGetListFold();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case PreferencesPackage.LIST_EDITOR__CONTRIBUTION_URI:
+			setContributionURI((String) newValue);
+			return;
+		case PreferencesPackage.LIST_EDITOR__OBJECT:
+			setObject(newValue);
+			return;
+		case PreferencesPackage.LIST_EDITOR__LIST_CRUD:
+			setListCrud((ListCrud) newValue);
+			return;
+		case PreferencesPackage.LIST_EDITOR__LIST_FOLD:
+			setListFold((ListFold) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case PreferencesPackage.LIST_EDITOR__CONTRIBUTION_URI:
+			setContributionURI(CONTRIBUTION_URI_EDEFAULT);
+			return;
+		case PreferencesPackage.LIST_EDITOR__OBJECT:
+			setObject(OBJECT_EDEFAULT);
+			return;
+		case PreferencesPackage.LIST_EDITOR__LIST_CRUD:
+			setListCrud((ListCrud) null);
+			return;
+		case PreferencesPackage.LIST_EDITOR__LIST_FOLD:
+			setListFold((ListFold) null);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case PreferencesPackage.LIST_EDITOR__CONTRIBUTION_URI:
+			return CONTRIBUTION_URI_EDEFAULT == null ? contributionURI != null
+					: !CONTRIBUTION_URI_EDEFAULT.equals(contributionURI);
+		case PreferencesPackage.LIST_EDITOR__OBJECT:
+			return OBJECT_EDEFAULT == null ? object != null : !OBJECT_EDEFAULT
+					.equals(object);
+		case PreferencesPackage.LIST_EDITOR__LIST_CRUD:
+			return listCrud != null;
+		case PreferencesPackage.LIST_EDITOR__LIST_FOLD:
+			return listFold != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+		if (baseClass == MContribution.class) {
+			switch (derivedFeatureID) {
+			case PreferencesPackage.LIST_EDITOR__CONTRIBUTION_URI:
+				return ApplicationPackageImpl.CONTRIBUTION__CONTRIBUTION_URI;
+			case PreferencesPackage.LIST_EDITOR__OBJECT:
+				return ApplicationPackageImpl.CONTRIBUTION__OBJECT;
+			default:
+				return -1;
+			}
+		}
+		return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
+		if (baseClass == MContribution.class) {
+			switch (baseFeatureID) {
+			case ApplicationPackageImpl.CONTRIBUTION__CONTRIBUTION_URI:
+				return PreferencesPackage.LIST_EDITOR__CONTRIBUTION_URI;
+			case ApplicationPackageImpl.CONTRIBUTION__OBJECT:
+				return PreferencesPackage.LIST_EDITOR__OBJECT;
+			default:
+				return -1;
+			}
+		}
+		return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy())
+			return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (contributionURI: ");
+		result.append(contributionURI);
+		result.append(", object: ");
+		result.append(object);
+		result.append(')');
+		return result.toString();
+	}
+
+} // ListEditorImpl
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/ListFieldEditorImpl.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/ListFieldEditorImpl.java
new file mode 100644
index 0000000..d6e3029
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/ListFieldEditorImpl.java
@@ -0,0 +1,338 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model.impl;
+
+import java.util.Collection;
+
+import org.eclipse.e4.ui.model.application.MContribution;
+
+import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.emf.ecore.util.EObjectResolvingEList;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.Entry;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.ListFieldEditor;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '
+ * <em><b>List Field Editor</b></em>'. <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.ListFieldEditorImpl#getContributionURI
+ * <em>Contribution URI</em>}</li>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.ListFieldEditorImpl#getObject
+ * <em>Object</em>}</li>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.ListFieldEditorImpl#getEntries
+ * <em>Entries</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class ListFieldEditorImpl extends FieldEditorImpl<String>
+		implements ListFieldEditor {
+	/**
+	 * The default value of the '{@link #getContributionURI()
+	 * <em>Contribution URI</em>}' attribute. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @see #getContributionURI()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String CONTRIBUTION_URI_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getContributionURI()
+	 * <em>Contribution URI</em>}' attribute. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @see #getContributionURI()
+	 * @generated
+	 * @ordered
+	 */
+	protected String contributionURI = CONTRIBUTION_URI_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getObject() <em>Object</em>}'
+	 * attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #getObject()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final Object OBJECT_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getObject() <em>Object</em>}' attribute.
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #getObject()
+	 * @generated
+	 * @ordered
+	 */
+	protected Object object = OBJECT_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getEntries() <em>Entries</em>}'
+	 * reference list. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #getEntries()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Entry> entries;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected ListFieldEditorImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return PreferencesPackage.Literals.LIST_FIELD_EDITOR;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc --> This is specialized for the
+	 * more specific type known in this context.
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void setDefaultValueTyped(String newDefaultValueTyped) {
+		super.setDefaultValueTyped(newDefaultValueTyped);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public String getContributionURI() {
+		return contributionURI;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setContributionURI(String newContributionURI) {
+		String oldContributionURI = contributionURI;
+		contributionURI = newContributionURI;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET,
+					PreferencesPackage.LIST_FIELD_EDITOR__CONTRIBUTION_URI,
+					oldContributionURI, contributionURI));
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public Object getObject() {
+		return object;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setObject(Object newObject) {
+		Object oldObject = object;
+		object = newObject;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET,
+					PreferencesPackage.LIST_FIELD_EDITOR__OBJECT, oldObject,
+					object));
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EList<Entry> getEntries() {
+		if (entries == null) {
+			entries = new EObjectResolvingEList<Entry>(Entry.class, this,
+					PreferencesPackage.LIST_FIELD_EDITOR__ENTRIES);
+		}
+		return entries;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case PreferencesPackage.LIST_FIELD_EDITOR__CONTRIBUTION_URI:
+			return getContributionURI();
+		case PreferencesPackage.LIST_FIELD_EDITOR__OBJECT:
+			return getObject();
+		case PreferencesPackage.LIST_FIELD_EDITOR__ENTRIES:
+			return getEntries();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case PreferencesPackage.LIST_FIELD_EDITOR__CONTRIBUTION_URI:
+			setContributionURI((String) newValue);
+			return;
+		case PreferencesPackage.LIST_FIELD_EDITOR__OBJECT:
+			setObject(newValue);
+			return;
+		case PreferencesPackage.LIST_FIELD_EDITOR__ENTRIES:
+			getEntries().clear();
+			getEntries().addAll((Collection<? extends Entry>) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case PreferencesPackage.LIST_FIELD_EDITOR__CONTRIBUTION_URI:
+			setContributionURI(CONTRIBUTION_URI_EDEFAULT);
+			return;
+		case PreferencesPackage.LIST_FIELD_EDITOR__OBJECT:
+			setObject(OBJECT_EDEFAULT);
+			return;
+		case PreferencesPackage.LIST_FIELD_EDITOR__ENTRIES:
+			getEntries().clear();
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case PreferencesPackage.LIST_FIELD_EDITOR__CONTRIBUTION_URI:
+			return CONTRIBUTION_URI_EDEFAULT == null ? contributionURI != null
+					: !CONTRIBUTION_URI_EDEFAULT.equals(contributionURI);
+		case PreferencesPackage.LIST_FIELD_EDITOR__OBJECT:
+			return OBJECT_EDEFAULT == null ? object != null : !OBJECT_EDEFAULT
+					.equals(object);
+		case PreferencesPackage.LIST_FIELD_EDITOR__ENTRIES:
+			return entries != null && !entries.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+		if (baseClass == MContribution.class) {
+			switch (derivedFeatureID) {
+			case PreferencesPackage.LIST_FIELD_EDITOR__CONTRIBUTION_URI:
+				return ApplicationPackageImpl.CONTRIBUTION__CONTRIBUTION_URI;
+			case PreferencesPackage.LIST_FIELD_EDITOR__OBJECT:
+				return ApplicationPackageImpl.CONTRIBUTION__OBJECT;
+			default:
+				return -1;
+			}
+		}
+		return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
+		if (baseClass == MContribution.class) {
+			switch (baseFeatureID) {
+			case ApplicationPackageImpl.CONTRIBUTION__CONTRIBUTION_URI:
+				return PreferencesPackage.LIST_FIELD_EDITOR__CONTRIBUTION_URI;
+			case ApplicationPackageImpl.CONTRIBUTION__OBJECT:
+				return PreferencesPackage.LIST_FIELD_EDITOR__OBJECT;
+			default:
+				return -1;
+			}
+		}
+		return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy())
+			return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (contributionURI: ");
+		result.append(contributionURI);
+		result.append(", object: ");
+		result.append(object);
+		result.append(')');
+		return result.toString();
+	}
+
+} // ListFieldEditorImpl
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/ListFoldImpl.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/ListFoldImpl.java
new file mode 100644
index 0000000..2c45a1b
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/ListFoldImpl.java
@@ -0,0 +1,58 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.ListFold;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '
+ * <em><b>List Fold</b></em>'. <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class ListFoldImpl extends MinimalEObjectImpl.Container implements
+		ListFold {
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected ListFoldImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return PreferencesPackage.Literals.LIST_FOLD;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void apply(String value, StringBuffer prev) {
+		// TODO: implement this method
+		// Ensure that you remove @generated or mark it @generated NOT
+		throw new UnsupportedOperationException();
+	}
+
+} // ListFoldImpl
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/PreferencesCategoryImpl.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/PreferencesCategoryImpl.java
new file mode 100644
index 0000000..50c0363
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/PreferencesCategoryImpl.java
@@ -0,0 +1,500 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model.impl;
+
+import java.util.Collection;
+
+import org.eclipse.e4.ui.model.application.impl.ApplicationElementImpl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentWithInverseEList;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesPage;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '
+ * <em><b>Category</b></em>'. <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesCategoryImpl#getName
+ * <em>Name</em>}</li>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesCategoryImpl#getChildCategories
+ * <em>Child Categories</em>}</li>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesCategoryImpl#getParentCategory
+ * <em>Parent Category</em>}</li>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesCategoryImpl#getPage
+ * <em>Page</em>}</li>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesCategoryImpl#getId
+ * <em>Id</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class PreferencesCategoryImpl extends ApplicationElementImpl implements
+		PreferencesCategory {
+	/**
+	 * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String NAME_EDEFAULT = "No Name";
+
+	/**
+	 * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected String name = NAME_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getChildCategories()
+	 * <em>Child Categories</em>}' containment reference list. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #getChildCategories()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<PreferencesCategory> childCategories;
+
+	/**
+	 * The cached value of the '{@link #getPage() <em>Page</em>}' containment
+	 * reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #getPage()
+	 * @generated
+	 * @ordered
+	 */
+	protected PreferencesPage page;
+
+	/**
+	 * The default value of the '{@link #getId() <em>Id</em>}' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #getId()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String ID_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getId() <em>Id</em>}' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #getId()
+	 * @generated
+	 * @ordered
+	 */
+	protected String id = ID_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected PreferencesCategoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return PreferencesPackage.Literals.PREFERENCES_CATEGORY;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setName(String newName) {
+		String oldName = name;
+		name = newName;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET,
+					PreferencesPackage.PREFERENCES_CATEGORY__NAME, oldName,
+					name));
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EList<PreferencesCategory> getChildCategories() {
+		if (childCategories == null) {
+			childCategories = new EObjectContainmentWithInverseEList<PreferencesCategory>(
+					PreferencesCategory.class, this,
+					PreferencesPackage.PREFERENCES_CATEGORY__CHILD_CATEGORIES,
+					PreferencesPackage.PREFERENCES_CATEGORY__PARENT_CATEGORY);
+		}
+		return childCategories;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public PreferencesCategory getParentCategory() {
+		if (eContainerFeatureID() != PreferencesPackage.PREFERENCES_CATEGORY__PARENT_CATEGORY)
+			return null;
+		return (PreferencesCategory) eInternalContainer();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public NotificationChain basicSetParentCategory(
+			PreferencesCategory newParentCategory, NotificationChain msgs) {
+		msgs = eBasicSetContainer((InternalEObject) newParentCategory,
+				PreferencesPackage.PREFERENCES_CATEGORY__PARENT_CATEGORY, msgs);
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setParentCategory(PreferencesCategory newParentCategory) {
+		if (newParentCategory != eInternalContainer()
+				|| (eContainerFeatureID() != PreferencesPackage.PREFERENCES_CATEGORY__PARENT_CATEGORY && newParentCategory != null)) {
+			if (EcoreUtil.isAncestor(this, newParentCategory))
+				throw new IllegalArgumentException(
+						"Recursive containment not allowed for " + toString());
+			NotificationChain msgs = null;
+			if (eInternalContainer() != null)
+				msgs = eBasicRemoveFromContainer(msgs);
+			if (newParentCategory != null)
+				msgs = ((InternalEObject) newParentCategory)
+						.eInverseAdd(
+								this,
+								PreferencesPackage.PREFERENCES_CATEGORY__CHILD_CATEGORIES,
+								PreferencesCategory.class, msgs);
+			msgs = basicSetParentCategory(newParentCategory, msgs);
+			if (msgs != null)
+				msgs.dispatch();
+		} else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET,
+					PreferencesPackage.PREFERENCES_CATEGORY__PARENT_CATEGORY,
+					newParentCategory, newParentCategory));
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public PreferencesPage getPage() {
+		return page;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public NotificationChain basicSetPage(PreferencesPage newPage,
+			NotificationChain msgs) {
+		PreferencesPage oldPage = page;
+		page = newPage;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this,
+					Notification.SET,
+					PreferencesPackage.PREFERENCES_CATEGORY__PAGE, oldPage,
+					newPage);
+			if (msgs == null)
+				msgs = notification;
+			else
+				msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setPage(PreferencesPage newPage) {
+		if (newPage != page) {
+			NotificationChain msgs = null;
+			if (page != null)
+				msgs = ((InternalEObject) page).eInverseRemove(this,
+						PreferencesPackage.PREFERENCES_PAGE__CATEGORY,
+						PreferencesPage.class, msgs);
+			if (newPage != null)
+				msgs = ((InternalEObject) newPage).eInverseAdd(this,
+						PreferencesPackage.PREFERENCES_PAGE__CATEGORY,
+						PreferencesPage.class, msgs);
+			msgs = basicSetPage(newPage, msgs);
+			if (msgs != null)
+				msgs.dispatch();
+		} else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET,
+					PreferencesPackage.PREFERENCES_CATEGORY__PAGE, newPage,
+					newPage));
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public String getId() {
+		return id;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setId(String newId) {
+		String oldId = id;
+		id = newId;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET,
+					PreferencesPackage.PREFERENCES_CATEGORY__ID, oldId, id));
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public NotificationChain eInverseAdd(InternalEObject otherEnd,
+			int featureID, NotificationChain msgs) {
+		switch (featureID) {
+		case PreferencesPackage.PREFERENCES_CATEGORY__CHILD_CATEGORIES:
+			return ((InternalEList<InternalEObject>) (InternalEList<?>) getChildCategories())
+					.basicAdd(otherEnd, msgs);
+		case PreferencesPackage.PREFERENCES_CATEGORY__PARENT_CATEGORY:
+			if (eInternalContainer() != null)
+				msgs = eBasicRemoveFromContainer(msgs);
+			return basicSetParentCategory((PreferencesCategory) otherEnd, msgs);
+		case PreferencesPackage.PREFERENCES_CATEGORY__PAGE:
+			if (page != null)
+				msgs = ((InternalEObject) page)
+						.eInverseRemove(
+								this,
+								EOPPOSITE_FEATURE_BASE
+										- PreferencesPackage.PREFERENCES_CATEGORY__PAGE,
+								null, msgs);
+			return basicSetPage((PreferencesPage) otherEnd, msgs);
+		}
+		return super.eInverseAdd(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd,
+			int featureID, NotificationChain msgs) {
+		switch (featureID) {
+		case PreferencesPackage.PREFERENCES_CATEGORY__CHILD_CATEGORIES:
+			return ((InternalEList<?>) getChildCategories()).basicRemove(
+					otherEnd, msgs);
+		case PreferencesPackage.PREFERENCES_CATEGORY__PARENT_CATEGORY:
+			return basicSetParentCategory(null, msgs);
+		case PreferencesPackage.PREFERENCES_CATEGORY__PAGE:
+			return basicSetPage(null, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eBasicRemoveFromContainerFeature(
+			NotificationChain msgs) {
+		switch (eContainerFeatureID()) {
+		case PreferencesPackage.PREFERENCES_CATEGORY__PARENT_CATEGORY:
+			return eInternalContainer().eInverseRemove(this,
+					PreferencesPackage.PREFERENCES_CATEGORY__CHILD_CATEGORIES,
+					PreferencesCategory.class, msgs);
+		}
+		return super.eBasicRemoveFromContainerFeature(msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case PreferencesPackage.PREFERENCES_CATEGORY__NAME:
+			return getName();
+		case PreferencesPackage.PREFERENCES_CATEGORY__CHILD_CATEGORIES:
+			return getChildCategories();
+		case PreferencesPackage.PREFERENCES_CATEGORY__PARENT_CATEGORY:
+			return getParentCategory();
+		case PreferencesPackage.PREFERENCES_CATEGORY__PAGE:
+			return getPage();
+		case PreferencesPackage.PREFERENCES_CATEGORY__ID:
+			return getId();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case PreferencesPackage.PREFERENCES_CATEGORY__NAME:
+			setName((String) newValue);
+			return;
+		case PreferencesPackage.PREFERENCES_CATEGORY__CHILD_CATEGORIES:
+			getChildCategories().clear();
+			getChildCategories().addAll(
+					(Collection<? extends PreferencesCategory>) newValue);
+			return;
+		case PreferencesPackage.PREFERENCES_CATEGORY__PARENT_CATEGORY:
+			setParentCategory((PreferencesCategory) newValue);
+			return;
+		case PreferencesPackage.PREFERENCES_CATEGORY__PAGE:
+			setPage((PreferencesPage) newValue);
+			return;
+		case PreferencesPackage.PREFERENCES_CATEGORY__ID:
+			setId((String) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case PreferencesPackage.PREFERENCES_CATEGORY__NAME:
+			setName(NAME_EDEFAULT);
+			return;
+		case PreferencesPackage.PREFERENCES_CATEGORY__CHILD_CATEGORIES:
+			getChildCategories().clear();
+			return;
+		case PreferencesPackage.PREFERENCES_CATEGORY__PARENT_CATEGORY:
+			setParentCategory((PreferencesCategory) null);
+			return;
+		case PreferencesPackage.PREFERENCES_CATEGORY__PAGE:
+			setPage((PreferencesPage) null);
+			return;
+		case PreferencesPackage.PREFERENCES_CATEGORY__ID:
+			setId(ID_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case PreferencesPackage.PREFERENCES_CATEGORY__NAME:
+			return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT
+					.equals(name);
+		case PreferencesPackage.PREFERENCES_CATEGORY__CHILD_CATEGORIES:
+			return childCategories != null && !childCategories.isEmpty();
+		case PreferencesPackage.PREFERENCES_CATEGORY__PARENT_CATEGORY:
+			return getParentCategory() != null;
+		case PreferencesPackage.PREFERENCES_CATEGORY__PAGE:
+			return page != null;
+		case PreferencesPackage.PREFERENCES_CATEGORY__ID:
+			return ID_EDEFAULT == null ? id != null : !ID_EDEFAULT.equals(id);
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy())
+			return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (name: ");
+		result.append(name);
+		result.append(", id: ");
+		result.append(id);
+		result.append(')');
+		return result.toString();
+	}
+
+} // PreferencesCategoryImpl
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/PreferencesFactoryImpl.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/PreferencesFactoryImpl.java
new file mode 100644
index 0000000..d8909a2
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/PreferencesFactoryImpl.java
@@ -0,0 +1,373 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.*;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesFactory;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage;
+
+import org.osgi.service.prefs.Preferences;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model <b>Factory</b>. <!--
+ * end-user-doc -->
+ * 
+ * @generated
+ */
+public class PreferencesFactoryImpl extends EFactoryImpl implements
+		PreferencesFactory {
+	/**
+	 * Creates the default factory implementation. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public static PreferencesFactory init() {
+		try {
+			PreferencesFactory thePreferencesFactory = (PreferencesFactory) EPackage.Registry.INSTANCE
+					.getEFactory(PreferencesPackage.eNS_URI);
+			if (thePreferencesFactory != null) {
+				return thePreferencesFactory;
+			}
+		} catch (Exception exception) {
+			EcorePlugin.INSTANCE.log(exception);
+		}
+		return new PreferencesFactoryImpl();
+	}
+
+	/**
+	 * Creates an instance of the factory. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public PreferencesFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+		case PreferencesPackage.PREFERENCES_CATEGORY:
+			return createPreferencesCategory();
+		case PreferencesPackage.PREFERENCES_PAGE:
+			return createPreferencesPage();
+		case PreferencesPackage.FIELD_EDITOR:
+			return createFieldEditor();
+		case PreferencesPackage.BOOLEAN_FIELD_EDITOR:
+			return createBooleanFieldEditor();
+		case PreferencesPackage.ENTRY:
+			return createEntry();
+		case PreferencesPackage.COMBO_FIELD_EDITOR:
+			return createComboFieldEditor();
+		case PreferencesPackage.LIST_EDITOR:
+			return createListEditor();
+		case PreferencesPackage.RADIO_GROUP_FIELD_EDITOR:
+			return createRadioGroupFieldEditor();
+		case PreferencesPackage.SCALE_FIELD_EDITOR:
+			return createScaleFieldEditor();
+		case PreferencesPackage.STRING_FIELD_EDITOR:
+			return createStringFieldEditor();
+		case PreferencesPackage.INTEGER_FIELD_EDITOR:
+			return createIntegerFieldEditor();
+		case PreferencesPackage.FILE_FIELD_EDITOR:
+			return createFileFieldEditor();
+		case PreferencesPackage.DIRECTORY_FIELD_EDITOR:
+			return createDirectoryFieldEditor();
+		case PreferencesPackage.LIST_FOLD:
+			return createListFold();
+		default:
+			throw new IllegalArgumentException("The class '" + eClass.getName()
+					+ "' is not a valid classifier");
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public Object createFromString(EDataType eDataType, String initialValue) {
+		switch (eDataType.getClassifierID()) {
+		case PreferencesPackage.BOOLEAN_FIELD_STYLE:
+			return createBooleanFieldStyleFromString(eDataType, initialValue);
+		case PreferencesPackage.STRING_BUFFER:
+			return createStringBufferFromString(eDataType, initialValue);
+		case PreferencesPackage.PREFERENCES:
+			return createPreferencesFromString(eDataType, initialValue);
+		default:
+			throw new IllegalArgumentException("The datatype '"
+					+ eDataType.getName() + "' is not a valid classifier");
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public String convertToString(EDataType eDataType, Object instanceValue) {
+		switch (eDataType.getClassifierID()) {
+		case PreferencesPackage.BOOLEAN_FIELD_STYLE:
+			return convertBooleanFieldStyleToString(eDataType, instanceValue);
+		case PreferencesPackage.STRING_BUFFER:
+			return convertStringBufferToString(eDataType, instanceValue);
+		case PreferencesPackage.PREFERENCES:
+			return convertPreferencesToString(eDataType, instanceValue);
+		default:
+			throw new IllegalArgumentException("The datatype '"
+					+ eDataType.getName() + "' is not a valid classifier");
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public PreferencesCategory createPreferencesCategory() {
+		PreferencesCategoryImpl preferencesCategory = new PreferencesCategoryImpl();
+		return preferencesCategory;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public PreferencesPage createPreferencesPage() {
+		PreferencesPageImpl preferencesPage = new PreferencesPageImpl();
+		return preferencesPage;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public <T> FieldEditor<T> createFieldEditor() {
+		FieldEditorImpl<T> fieldEditor = new FieldEditorImpl<T>();
+		return fieldEditor;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public BooleanFieldEditor createBooleanFieldEditor() {
+		BooleanFieldEditorImpl booleanFieldEditor = new BooleanFieldEditorImpl();
+		return booleanFieldEditor;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public Entry createEntry() {
+		EntryImpl entry = new EntryImpl();
+		return entry;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public ComboFieldEditor createComboFieldEditor() {
+		ComboFieldEditorImpl comboFieldEditor = new ComboFieldEditorImpl();
+		return comboFieldEditor;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public ListEditor createListEditor() {
+		ListEditorImpl listEditor = new ListEditorImpl();
+		return listEditor;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public RadioGroupFieldEditor createRadioGroupFieldEditor() {
+		RadioGroupFieldEditorImpl radioGroupFieldEditor = new RadioGroupFieldEditorImpl();
+		return radioGroupFieldEditor;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public ScaleFieldEditor createScaleFieldEditor() {
+		ScaleFieldEditorImpl scaleFieldEditor = new ScaleFieldEditorImpl();
+		return scaleFieldEditor;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public StringFieldEditor createStringFieldEditor() {
+		StringFieldEditorImpl stringFieldEditor = new StringFieldEditorImpl();
+		return stringFieldEditor;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public IntegerFieldEditor createIntegerFieldEditor() {
+		IntegerFieldEditorImpl integerFieldEditor = new IntegerFieldEditorImpl();
+		return integerFieldEditor;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public FileFieldEditor createFileFieldEditor() {
+		FileFieldEditorImpl fileFieldEditor = new FileFieldEditorImpl();
+		return fileFieldEditor;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public DirectoryFieldEditor createDirectoryFieldEditor() {
+		DirectoryFieldEditorImpl directoryFieldEditor = new DirectoryFieldEditorImpl();
+		return directoryFieldEditor;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public ListFold createListFold() {
+		ListFoldImpl listFold = new ListFoldImpl();
+		return listFold;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public BooleanFieldStyle createBooleanFieldStyleFromString(
+			EDataType eDataType, String initialValue) {
+		BooleanFieldStyle result = BooleanFieldStyle.get(initialValue);
+		if (result == null)
+			throw new IllegalArgumentException("The value '" + initialValue
+					+ "' is not a valid enumerator of '" + eDataType.getName()
+					+ "'");
+		return result;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public String convertBooleanFieldStyleToString(EDataType eDataType,
+			Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public StringBuffer createStringBufferFromString(EDataType eDataType,
+			String initialValue) {
+		return (StringBuffer) super.createFromString(eDataType, initialValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public String convertStringBufferToString(EDataType eDataType,
+			Object instanceValue) {
+		return super.convertToString(eDataType, instanceValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public Preferences createPreferencesFromString(EDataType eDataType,
+			String initialValue) {
+		return (Preferences) super.createFromString(eDataType, initialValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public String convertPreferencesToString(EDataType eDataType,
+			Object instanceValue) {
+		return super.convertToString(eDataType, instanceValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public PreferencesPackage getPreferencesPackage() {
+		return (PreferencesPackage) getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @deprecated
+	 * @generated
+	 */
+	@Deprecated
+	public static PreferencesPackage getPackage() {
+		return PreferencesPackage.eINSTANCE;
+	}
+
+} // PreferencesFactoryImpl
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/PreferencesPackageImpl.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/PreferencesPackageImpl.java
new file mode 100644
index 0000000..253d483
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/PreferencesPackageImpl.java
@@ -0,0 +1,1090 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model.impl;
+
+import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
+
+import org.eclipse.e4.ui.model.application.ui.impl.UiPackageImpl;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EEnum;
+import org.eclipse.emf.ecore.EGenericType;
+import org.eclipse.emf.ecore.EOperation;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.ETypeParameter;
+
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.BooleanFieldEditor;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.BooleanFieldStyle;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.ComboFieldEditor;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.DirectoryFieldEditor;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.Entry;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.FileFieldEditor;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.IntegerFieldEditor;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.ListCrud;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.ListEditor;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.ListFieldEditor;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.ListFold;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesPage;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.RadioGroupFieldEditor;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.ScaleFieldEditor;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.StringFieldEditor;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesFactory;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage;
+
+import org.osgi.service.prefs.Preferences;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model <b>Package</b>. <!--
+ * end-user-doc -->
+ * 
+ * @generated
+ */
+public class PreferencesPackageImpl extends EPackageImpl implements
+		PreferencesPackage {
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private EClass preferencesCategoryEClass = null;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private EClass preferencesPageEClass = null;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private EClass fieldEditorEClass = null;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private EClass booleanFieldEditorEClass = null;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private EClass listFieldEditorEClass = null;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private EClass entryEClass = null;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private EClass comboFieldEditorEClass = null;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private EClass listEditorEClass = null;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private EClass radioGroupFieldEditorEClass = null;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private EClass scaleFieldEditorEClass = null;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private EClass stringFieldEditorEClass = null;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private EClass integerFieldEditorEClass = null;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private EClass fileFieldEditorEClass = null;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private EClass directoryFieldEditorEClass = null;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private EClass listCrudEClass = null;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private EClass listFoldEClass = null;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private EEnum booleanFieldStyleEEnum = null;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private EDataType stringBufferEDataType = null;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private EDataType preferencesEDataType = null;
+
+	/**
+	 * Creates an instance of the model <b>Package</b>, registered with
+	 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the
+	 * package package URI value.
+	 * <p>
+	 * Note: the correct way to create the package is via the static factory
+	 * method {@link #init init()}, which also performs initialization of the
+	 * package, or returns the registered package, if one already exists. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see org.eclipse.emf.ecore.EPackage.Registry
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#eNS_URI
+	 * @see #init()
+	 * @generated
+	 */
+	private PreferencesPackageImpl() {
+		super(eNS_URI, PreferencesFactory.eINSTANCE);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private static boolean isInited = false;
+
+	/**
+	 * Creates, registers, and initializes the <b>Package</b> for this model,
+	 * and for any others upon which it depends.
+	 * 
+	 * <p>
+	 * This method is used to initialize {@link PreferencesPackage#eINSTANCE}
+	 * when that field is accessed. Clients should not invoke it directly.
+	 * Instead, they should simply access that field to obtain the package. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #eNS_URI
+	 * @see #createPackageContents()
+	 * @see #initializePackageContents()
+	 * @generated
+	 */
+	public static PreferencesPackage init() {
+		if (isInited)
+			return (PreferencesPackage) EPackage.Registry.INSTANCE
+					.getEPackage(PreferencesPackage.eNS_URI);
+
+		// Obtain or create and register package
+		PreferencesPackageImpl thePreferencesPackage = (PreferencesPackageImpl) (EPackage.Registry.INSTANCE
+				.get(eNS_URI) instanceof PreferencesPackageImpl ? EPackage.Registry.INSTANCE
+				.get(eNS_URI) : new PreferencesPackageImpl());
+
+		isInited = true;
+
+		// Initialize simple dependencies
+		ApplicationPackageImpl.eINSTANCE.eClass();
+
+		// Create package meta-data objects
+		thePreferencesPackage.createPackageContents();
+
+		// Initialize created meta-data
+		thePreferencesPackage.initializePackageContents();
+
+		// Mark meta-data to indicate it can't be changed
+		thePreferencesPackage.freeze();
+
+		// Update the registry and return the package
+		EPackage.Registry.INSTANCE.put(PreferencesPackage.eNS_URI,
+				thePreferencesPackage);
+		return thePreferencesPackage;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EClass getPreferencesCategory() {
+		return preferencesCategoryEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EAttribute getPreferencesCategory_Name() {
+		return (EAttribute) preferencesCategoryEClass.getEStructuralFeatures()
+				.get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EReference getPreferencesCategory_ChildCategories() {
+		return (EReference) preferencesCategoryEClass.getEStructuralFeatures()
+				.get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EReference getPreferencesCategory_ParentCategory() {
+		return (EReference) preferencesCategoryEClass.getEStructuralFeatures()
+				.get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EReference getPreferencesCategory_Page() {
+		return (EReference) preferencesCategoryEClass.getEStructuralFeatures()
+				.get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EAttribute getPreferencesCategory_Id() {
+		return (EAttribute) preferencesCategoryEClass.getEStructuralFeatures()
+				.get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EClass getPreferencesPage() {
+		return preferencesPageEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EReference getPreferencesPage_Category() {
+		return (EReference) preferencesPageEClass.getEStructuralFeatures().get(
+				0);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EAttribute getPreferencesPage_Description() {
+		return (EAttribute) preferencesPageEClass.getEStructuralFeatures().get(
+				1);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EClass getFieldEditor() {
+		return fieldEditorEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EAttribute getFieldEditor_Label() {
+		return (EAttribute) fieldEditorEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EAttribute getFieldEditor_PreferenceName() {
+		return (EAttribute) fieldEditorEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EAttribute getFieldEditor_DefaultValue() {
+		return (EAttribute) fieldEditorEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EAttribute getFieldEditor_DefaultValueTyped() {
+		return (EAttribute) fieldEditorEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EAttribute getFieldEditor_Bundle() {
+		return (EAttribute) fieldEditorEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EAttribute getFieldEditor_Preferences() {
+		return (EAttribute) fieldEditorEClass.getEStructuralFeatures().get(5);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EAttribute getFieldEditor_EquinoxPath() {
+		return (EAttribute) fieldEditorEClass.getEStructuralFeatures().get(6);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EClass getBooleanFieldEditor() {
+		return booleanFieldEditorEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EAttribute getBooleanFieldEditor_Style() {
+		return (EAttribute) booleanFieldEditorEClass.getEStructuralFeatures()
+				.get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EClass getListFieldEditor() {
+		return listFieldEditorEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EReference getListFieldEditor_Entries() {
+		return (EReference) listFieldEditorEClass.getEStructuralFeatures().get(
+				0);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EClass getEntry() {
+		return entryEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EAttribute getEntry_Name() {
+		return (EAttribute) entryEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EAttribute getEntry_Value() {
+		return (EAttribute) entryEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EClass getComboFieldEditor() {
+		return comboFieldEditorEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EClass getListEditor() {
+		return listEditorEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EReference getListEditor_ListCrud() {
+		return (EReference) listEditorEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EReference getListEditor_ListFold() {
+		return (EReference) listEditorEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EClass getRadioGroupFieldEditor() {
+		return radioGroupFieldEditorEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EClass getScaleFieldEditor() {
+		return scaleFieldEditorEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EAttribute getScaleFieldEditor_MinValue() {
+		return (EAttribute) scaleFieldEditorEClass.getEStructuralFeatures()
+				.get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EAttribute getScaleFieldEditor_MaxValue() {
+		return (EAttribute) scaleFieldEditorEClass.getEStructuralFeatures()
+				.get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EAttribute getScaleFieldEditor_IncrementValue() {
+		return (EAttribute) scaleFieldEditorEClass.getEStructuralFeatures()
+				.get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EClass getStringFieldEditor() {
+		return stringFieldEditorEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EAttribute getStringFieldEditor_MaxLength() {
+		return (EAttribute) stringFieldEditorEClass.getEStructuralFeatures()
+				.get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EClass getIntegerFieldEditor() {
+		return integerFieldEditorEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EAttribute getIntegerFieldEditor_MinValidValue() {
+		return (EAttribute) integerFieldEditorEClass.getEStructuralFeatures()
+				.get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EAttribute getIntegerFieldEditor_MaxValidValue() {
+		return (EAttribute) integerFieldEditorEClass.getEStructuralFeatures()
+				.get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EClass getFileFieldEditor() {
+		return fileFieldEditorEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EClass getDirectoryFieldEditor() {
+		return directoryFieldEditorEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EClass getListCrud() {
+		return listCrudEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EClass getListFold() {
+		return listFoldEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EEnum getBooleanFieldStyle() {
+		return booleanFieldStyleEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EDataType getStringBuffer() {
+		return stringBufferEDataType;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EDataType getPreferences() {
+		return preferencesEDataType;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public PreferencesFactory getPreferencesFactory() {
+		return (PreferencesFactory) getEFactoryInstance();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private boolean isCreated = false;
+
+	/**
+	 * Creates the meta-model objects for the package. This method is guarded to
+	 * have no affect on any invocation but its first. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void createPackageContents() {
+		if (isCreated)
+			return;
+		isCreated = true;
+
+		// Create classes and their features
+		preferencesCategoryEClass = createEClass(PREFERENCES_CATEGORY);
+		createEAttribute(preferencesCategoryEClass, PREFERENCES_CATEGORY__NAME);
+		createEReference(preferencesCategoryEClass,
+				PREFERENCES_CATEGORY__CHILD_CATEGORIES);
+		createEReference(preferencesCategoryEClass,
+				PREFERENCES_CATEGORY__PARENT_CATEGORY);
+		createEReference(preferencesCategoryEClass, PREFERENCES_CATEGORY__PAGE);
+		createEAttribute(preferencesCategoryEClass, PREFERENCES_CATEGORY__ID);
+
+		preferencesPageEClass = createEClass(PREFERENCES_PAGE);
+		createEReference(preferencesPageEClass, PREFERENCES_PAGE__CATEGORY);
+		createEAttribute(preferencesPageEClass, PREFERENCES_PAGE__DESCRIPTION);
+
+		fieldEditorEClass = createEClass(FIELD_EDITOR);
+		createEAttribute(fieldEditorEClass, FIELD_EDITOR__LABEL);
+		createEAttribute(fieldEditorEClass, FIELD_EDITOR__PREFERENCE_NAME);
+		createEAttribute(fieldEditorEClass, FIELD_EDITOR__DEFAULT_VALUE);
+		createEAttribute(fieldEditorEClass, FIELD_EDITOR__DEFAULT_VALUE_TYPED);
+		createEAttribute(fieldEditorEClass, FIELD_EDITOR__BUNDLE);
+		createEAttribute(fieldEditorEClass, FIELD_EDITOR__PREFERENCES);
+		createEAttribute(fieldEditorEClass, FIELD_EDITOR__EQUINOX_PATH);
+
+		booleanFieldEditorEClass = createEClass(BOOLEAN_FIELD_EDITOR);
+		createEAttribute(booleanFieldEditorEClass, BOOLEAN_FIELD_EDITOR__STYLE);
+
+		listFieldEditorEClass = createEClass(LIST_FIELD_EDITOR);
+		createEReference(listFieldEditorEClass, LIST_FIELD_EDITOR__ENTRIES);
+
+		entryEClass = createEClass(ENTRY);
+		createEAttribute(entryEClass, ENTRY__NAME);
+		createEAttribute(entryEClass, ENTRY__VALUE);
+
+		comboFieldEditorEClass = createEClass(COMBO_FIELD_EDITOR);
+
+		listEditorEClass = createEClass(LIST_EDITOR);
+		createEReference(listEditorEClass, LIST_EDITOR__LIST_CRUD);
+		createEReference(listEditorEClass, LIST_EDITOR__LIST_FOLD);
+
+		radioGroupFieldEditorEClass = createEClass(RADIO_GROUP_FIELD_EDITOR);
+
+		scaleFieldEditorEClass = createEClass(SCALE_FIELD_EDITOR);
+		createEAttribute(scaleFieldEditorEClass, SCALE_FIELD_EDITOR__MIN_VALUE);
+		createEAttribute(scaleFieldEditorEClass, SCALE_FIELD_EDITOR__MAX_VALUE);
+		createEAttribute(scaleFieldEditorEClass,
+				SCALE_FIELD_EDITOR__INCREMENT_VALUE);
+
+		stringFieldEditorEClass = createEClass(STRING_FIELD_EDITOR);
+		createEAttribute(stringFieldEditorEClass,
+				STRING_FIELD_EDITOR__MAX_LENGTH);
+
+		integerFieldEditorEClass = createEClass(INTEGER_FIELD_EDITOR);
+		createEAttribute(integerFieldEditorEClass,
+				INTEGER_FIELD_EDITOR__MIN_VALID_VALUE);
+		createEAttribute(integerFieldEditorEClass,
+				INTEGER_FIELD_EDITOR__MAX_VALID_VALUE);
+
+		fileFieldEditorEClass = createEClass(FILE_FIELD_EDITOR);
+
+		directoryFieldEditorEClass = createEClass(DIRECTORY_FIELD_EDITOR);
+
+		listCrudEClass = createEClass(LIST_CRUD);
+
+		listFoldEClass = createEClass(LIST_FOLD);
+
+		// Create enums
+		booleanFieldStyleEEnum = createEEnum(BOOLEAN_FIELD_STYLE);
+
+		// Create data types
+		stringBufferEDataType = createEDataType(STRING_BUFFER);
+		preferencesEDataType = createEDataType(PREFERENCES);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private boolean isInitialized = false;
+
+	/**
+	 * Complete the initialization of the package and its meta-model. This
+	 * method is guarded to have no affect on any invocation but its first. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void initializePackageContents() {
+		if (isInitialized)
+			return;
+		isInitialized = true;
+
+		// Initialize package
+		setName(eNAME);
+		setNsPrefix(eNS_PREFIX);
+		setNsURI(eNS_URI);
+
+		// Obtain other dependent packages
+		ApplicationPackageImpl theApplicationPackage = (ApplicationPackageImpl) EPackage.Registry.INSTANCE
+				.getEPackage(ApplicationPackageImpl.eNS_URI);
+		UiPackageImpl theUiPackage = (UiPackageImpl) EPackage.Registry.INSTANCE
+				.getEPackage(UiPackageImpl.eNS_URI);
+
+		// Create type parameters
+		ETypeParameter fieldEditorEClass_T = addETypeParameter(
+				fieldEditorEClass, "T");
+
+		// Set bounds for type parameters
+
+		// Add supertypes to classes
+		preferencesCategoryEClass.getESuperTypes().add(
+				theApplicationPackage.getApplicationElement());
+		EGenericType g1 = createEGenericType(theUiPackage.getElementContainer());
+		EGenericType g2 = createEGenericType(this.getFieldEditor());
+		g1.getETypeArguments().add(g2);
+		EGenericType g3 = createEGenericType();
+		g2.getETypeArguments().add(g3);
+		preferencesPageEClass.getEGenericSuperTypes().add(g1);
+		g1 = createEGenericType(theApplicationPackage.getContribution());
+		preferencesPageEClass.getEGenericSuperTypes().add(g1);
+		fieldEditorEClass.getESuperTypes().add(theUiPackage.getUIElement());
+		g1 = createEGenericType(this.getFieldEditor());
+		g2 = createEGenericType(ecorePackage.getEBooleanObject());
+		g1.getETypeArguments().add(g2);
+		booleanFieldEditorEClass.getEGenericSuperTypes().add(g1);
+		g1 = createEGenericType(this.getFieldEditor());
+		g2 = createEGenericType(ecorePackage.getEString());
+		g1.getETypeArguments().add(g2);
+		listFieldEditorEClass.getEGenericSuperTypes().add(g1);
+		g1 = createEGenericType(theApplicationPackage.getContribution());
+		listFieldEditorEClass.getEGenericSuperTypes().add(g1);
+		comboFieldEditorEClass.getESuperTypes().add(this.getListFieldEditor());
+		g1 = createEGenericType(this.getFieldEditor());
+		g2 = createEGenericType(ecorePackage.getEString());
+		g1.getETypeArguments().add(g2);
+		listEditorEClass.getEGenericSuperTypes().add(g1);
+		g1 = createEGenericType(theApplicationPackage.getContribution());
+		listEditorEClass.getEGenericSuperTypes().add(g1);
+		radioGroupFieldEditorEClass.getESuperTypes().add(
+				this.getListFieldEditor());
+		g1 = createEGenericType(this.getFieldEditor());
+		g2 = createEGenericType(ecorePackage.getEIntegerObject());
+		g1.getETypeArguments().add(g2);
+		scaleFieldEditorEClass.getEGenericSuperTypes().add(g1);
+		g1 = createEGenericType(this.getFieldEditor());
+		g2 = createEGenericType(ecorePackage.getEString());
+		g1.getETypeArguments().add(g2);
+		stringFieldEditorEClass.getEGenericSuperTypes().add(g1);
+		g1 = createEGenericType(this.getFieldEditor());
+		g2 = createEGenericType(ecorePackage.getEIntegerObject());
+		g1.getETypeArguments().add(g2);
+		integerFieldEditorEClass.getEGenericSuperTypes().add(g1);
+		g1 = createEGenericType(this.getFieldEditor());
+		g2 = createEGenericType(ecorePackage.getEString());
+		g1.getETypeArguments().add(g2);
+		fileFieldEditorEClass.getEGenericSuperTypes().add(g1);
+		g1 = createEGenericType(theApplicationPackage.getContribution());
+		fileFieldEditorEClass.getEGenericSuperTypes().add(g1);
+		g1 = createEGenericType(this.getFieldEditor());
+		g2 = createEGenericType(ecorePackage.getEString());
+		g1.getETypeArguments().add(g2);
+		directoryFieldEditorEClass.getEGenericSuperTypes().add(g1);
+		g1 = createEGenericType(theApplicationPackage.getContribution());
+		directoryFieldEditorEClass.getEGenericSuperTypes().add(g1);
+
+		// Initialize classes and features; add operations and parameters
+		initEClass(preferencesCategoryEClass, PreferencesCategory.class,
+				"PreferencesCategory", !IS_ABSTRACT, !IS_INTERFACE,
+				IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getPreferencesCategory_Name(),
+				ecorePackage.getEString(), "name", "No Name", 0, 1,
+				PreferencesCategory.class, !IS_TRANSIENT, !IS_VOLATILE,
+				IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
+				IS_ORDERED);
+		initEReference(getPreferencesCategory_ChildCategories(),
+				this.getPreferencesCategory(),
+				this.getPreferencesCategory_ParentCategory(),
+				"childCategories", null, 0, -1, PreferencesCategory.class,
+				!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE,
+				!IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED,
+				IS_ORDERED);
+		initEReference(getPreferencesCategory_ParentCategory(),
+				this.getPreferencesCategory(),
+				this.getPreferencesCategory_ChildCategories(),
+				"parentCategory", null, 0, 1, PreferencesCategory.class,
+				!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE,
+				!IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED,
+				IS_ORDERED);
+		initEReference(getPreferencesCategory_Page(),
+				this.getPreferencesPage(), this.getPreferencesPage_Category(),
+				"page", null, 0, 1, PreferencesCategory.class, !IS_TRANSIENT,
+				!IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES,
+				!IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getPreferencesCategory_Id(), ecorePackage.getEString(),
+				"id", null, 0, 1, PreferencesCategory.class, !IS_TRANSIENT,
+				!IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+				!IS_DERIVED, IS_ORDERED);
+
+		initEClass(preferencesPageEClass, PreferencesPage.class,
+				"PreferencesPage", !IS_ABSTRACT, !IS_INTERFACE,
+				IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getPreferencesPage_Category(),
+				this.getPreferencesCategory(),
+				this.getPreferencesCategory_Page(), "category", null, 0, 1,
+				PreferencesPage.class, !IS_TRANSIENT, !IS_VOLATILE,
+				IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES,
+				!IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getPreferencesPage_Description(),
+				ecorePackage.getEString(), "description", null, 0, 1,
+				PreferencesPage.class, !IS_TRANSIENT, !IS_VOLATILE,
+				IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
+				IS_ORDERED);
+
+		initEClass(fieldEditorEClass, FieldEditor.class, "FieldEditor",
+				!IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getFieldEditor_Label(), ecorePackage.getEString(),
+				"label", "", 0, 1, FieldEditor.class, !IS_TRANSIENT,
+				!IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+				!IS_DERIVED, IS_ORDERED);
+		initEAttribute(getFieldEditor_PreferenceName(),
+				ecorePackage.getEString(), "preferenceName", null, 0, 1,
+				FieldEditor.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
+				!IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getFieldEditor_DefaultValue(),
+				ecorePackage.getEString(), "defaultValue", null, 0, 1,
+				FieldEditor.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
+				!IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		g1 = createEGenericType(fieldEditorEClass_T);
+		initEAttribute(getFieldEditor_DefaultValueTyped(), g1,
+				"defaultValueTyped", null, 0, 1, FieldEditor.class,
+				!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE,
+				!IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getFieldEditor_Bundle(), ecorePackage.getEString(),
+				"bundle", null, 0, 1, FieldEditor.class, !IS_TRANSIENT,
+				!IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+				!IS_DERIVED, IS_ORDERED);
+		initEAttribute(getFieldEditor_Preferences(), this.getPreferences(),
+				"preferences", null, 0, 1, FieldEditor.class, !IS_TRANSIENT,
+				!IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+				!IS_DERIVED, IS_ORDERED);
+		initEAttribute(getFieldEditor_EquinoxPath(), ecorePackage.getEString(),
+				"equinoxPath", null, 0, 1, FieldEditor.class, !IS_TRANSIENT,
+				!IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+				!IS_DERIVED, IS_ORDERED);
+
+		initEClass(booleanFieldEditorEClass, BooleanFieldEditor.class,
+				"BooleanFieldEditor", !IS_ABSTRACT, !IS_INTERFACE,
+				IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getBooleanFieldEditor_Style(),
+				this.getBooleanFieldStyle(), "style", null, 0, 1,
+				BooleanFieldEditor.class, !IS_TRANSIENT, !IS_VOLATILE,
+				IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
+				IS_ORDERED);
+
+		initEClass(listFieldEditorEClass, ListFieldEditor.class,
+				"ListFieldEditor", IS_ABSTRACT, !IS_INTERFACE,
+				IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getListFieldEditor_Entries(), this.getEntry(), null,
+				"entries", null, 0, -1, ListFieldEditor.class, !IS_TRANSIENT,
+				!IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES,
+				!IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(entryEClass, Entry.class, "Entry", !IS_ABSTRACT,
+				!IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getEntry_Name(), ecorePackage.getEString(), "name",
+				null, 0, 1, Entry.class, !IS_TRANSIENT, !IS_VOLATILE,
+				IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
+				IS_ORDERED);
+		initEAttribute(getEntry_Value(), ecorePackage.getEString(), "value",
+				null, 0, 1, Entry.class, !IS_TRANSIENT, !IS_VOLATILE,
+				IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
+				IS_ORDERED);
+
+		initEClass(comboFieldEditorEClass, ComboFieldEditor.class,
+				"ComboFieldEditor", !IS_ABSTRACT, !IS_INTERFACE,
+				IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(listEditorEClass, ListEditor.class, "ListEditor",
+				!IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getListEditor_ListCrud(), this.getListCrud(), null,
+				"listCrud", null, 0, 1, ListEditor.class, !IS_TRANSIENT,
+				!IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES,
+				!IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getListEditor_ListFold(), this.getListFold(), null,
+				"listFold", null, 0, 1, ListEditor.class, !IS_TRANSIENT,
+				!IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES,
+				!IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(radioGroupFieldEditorEClass, RadioGroupFieldEditor.class,
+				"RadioGroupFieldEditor", !IS_ABSTRACT, !IS_INTERFACE,
+				IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(scaleFieldEditorEClass, ScaleFieldEditor.class,
+				"ScaleFieldEditor", !IS_ABSTRACT, !IS_INTERFACE,
+				IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getScaleFieldEditor_MinValue(),
+				ecorePackage.getEIntegerObject(), "minValue", "0", 0, 1,
+				ScaleFieldEditor.class, !IS_TRANSIENT, !IS_VOLATILE,
+				IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
+				IS_ORDERED);
+		initEAttribute(getScaleFieldEditor_MaxValue(),
+				ecorePackage.getEIntegerObject(), "maxValue", "100", 0, 1,
+				ScaleFieldEditor.class, !IS_TRANSIENT, !IS_VOLATILE,
+				IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
+				IS_ORDERED);
+		initEAttribute(getScaleFieldEditor_IncrementValue(),
+				ecorePackage.getEIntegerObject(), "incrementValue", "1", 0, 1,
+				ScaleFieldEditor.class, !IS_TRANSIENT, !IS_VOLATILE,
+				IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
+				IS_ORDERED);
+
+		initEClass(stringFieldEditorEClass, StringFieldEditor.class,
+				"StringFieldEditor", !IS_ABSTRACT, !IS_INTERFACE,
+				IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getStringFieldEditor_MaxLength(),
+				ecorePackage.getEIntegerObject(), "maxLength", null, 0, 1,
+				StringFieldEditor.class, !IS_TRANSIENT, !IS_VOLATILE,
+				IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
+				IS_ORDERED);
+
+		initEClass(integerFieldEditorEClass, IntegerFieldEditor.class,
+				"IntegerFieldEditor", !IS_ABSTRACT, !IS_INTERFACE,
+				IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getIntegerFieldEditor_MinValidValue(),
+				ecorePackage.getEIntegerObject(), "minValidValue", null, 0, 1,
+				IntegerFieldEditor.class, !IS_TRANSIENT, !IS_VOLATILE,
+				IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
+				IS_ORDERED);
+		initEAttribute(getIntegerFieldEditor_MaxValidValue(),
+				ecorePackage.getEIntegerObject(), "maxValidValue", null, 0, 1,
+				IntegerFieldEditor.class, !IS_TRANSIENT, !IS_VOLATILE,
+				IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
+				IS_ORDERED);
+
+		initEClass(fileFieldEditorEClass, FileFieldEditor.class,
+				"FileFieldEditor", !IS_ABSTRACT, !IS_INTERFACE,
+				IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(directoryFieldEditorEClass, DirectoryFieldEditor.class,
+				"DirectoryFieldEditor", !IS_ABSTRACT, !IS_INTERFACE,
+				IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(listCrudEClass, ListCrud.class, "ListCrud", IS_ABSTRACT,
+				IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		EOperation op = addEOperation(listCrudEClass,
+				ecorePackage.getEString(), "addNewValue", 0, 1, IS_UNIQUE,
+				IS_ORDERED);
+		addEParameter(op, ecorePackage.getEString(), "values", 0, 1, IS_UNIQUE,
+				IS_ORDERED);
+
+		initEClass(listFoldEClass, ListFold.class, "ListFold", !IS_ABSTRACT,
+				!IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		op = addEOperation(listFoldEClass, null, "apply", 0, 1, IS_UNIQUE,
+				IS_ORDERED);
+		addEParameter(op, ecorePackage.getEString(), "value", 0, 1, IS_UNIQUE,
+				IS_ORDERED);
+		addEParameter(op, this.getStringBuffer(), "prev", 0, 1, IS_UNIQUE,
+				IS_ORDERED);
+
+		// Initialize enums and add enum literals
+		initEEnum(booleanFieldStyleEEnum, BooleanFieldStyle.class,
+				"BooleanFieldStyle");
+		addEEnumLiteral(booleanFieldStyleEEnum, BooleanFieldStyle.DEFAULT);
+		addEEnumLiteral(booleanFieldStyleEEnum,
+				BooleanFieldStyle.SEPARATE_LABEL);
+
+		// Initialize data types
+		initEDataType(stringBufferEDataType, StringBuffer.class,
+				"StringBuffer", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+		initEDataType(preferencesEDataType, Preferences.class, "Preferences",
+				IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+
+		// Create resource
+		createResource(eNS_URI);
+	}
+
+} // PreferencesPackageImpl
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/PreferencesPageImpl.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/PreferencesPageImpl.java
new file mode 100644
index 0000000..f560a15
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/PreferencesPageImpl.java
@@ -0,0 +1,502 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model.impl;
+
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.MContribution;
+
+import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
+
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+
+import org.eclipse.e4.ui.model.application.ui.impl.ElementContainerImpl;
+import org.eclipse.e4.ui.model.application.ui.impl.UiPackageImpl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentWithInverseEList;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesPage;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '
+ * <em><b>Page</b></em>'. <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPageImpl#getContributionURI
+ * <em>Contribution URI</em>}</li>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPageImpl#getObject
+ * <em>Object</em>}</li>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPageImpl#getCategory
+ * <em>Category</em>}</li>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPageImpl#getDescription
+ * <em>Description</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class PreferencesPageImpl extends ElementContainerImpl<FieldEditor<?>>
+		implements PreferencesPage {
+	/**
+	 * The default value of the '{@link #getContributionURI()
+	 * <em>Contribution URI</em>}' attribute. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @see #getContributionURI()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String CONTRIBUTION_URI_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getContributionURI()
+	 * <em>Contribution URI</em>}' attribute. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @see #getContributionURI()
+	 * @generated
+	 * @ordered
+	 */
+	protected String contributionURI = CONTRIBUTION_URI_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getObject() <em>Object</em>}'
+	 * attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #getObject()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final Object OBJECT_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getObject() <em>Object</em>}' attribute.
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #getObject()
+	 * @generated
+	 * @ordered
+	 */
+	protected Object object = OBJECT_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getDescription() <em>Description</em>}'
+	 * attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #getDescription()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String DESCRIPTION_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getDescription() <em>Description</em>}'
+	 * attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #getDescription()
+	 * @generated
+	 * @ordered
+	 */
+	protected String description = DESCRIPTION_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected PreferencesPageImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return PreferencesPackage.Literals.PREFERENCES_PAGE;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc --> This is specialized for the
+	 * more specific element type known in this context.
+	 * 
+	 * @generated
+	 */
+	@Override
+	public List<FieldEditor<?>> getChildren() {
+		if (children == null) {
+			children = new EObjectContainmentWithInverseEList<FieldEditor<?>>(
+					FieldEditor.class, this,
+					PreferencesPackage.PREFERENCES_PAGE__CHILDREN,
+					UiPackageImpl.UI_ELEMENT__PARENT) {
+				private static final long serialVersionUID = 1L;
+
+				@Override
+				public Class<?> getInverseFeatureClass() {
+					return MUIElement.class;
+				}
+			};
+		}
+		return children;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc --> This is specialized for the
+	 * more specific type known in this context.
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void setSelectedElement(FieldEditor<?> newSelectedElement) {
+		super.setSelectedElement(newSelectedElement);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public String getContributionURI() {
+		return contributionURI;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setContributionURI(String newContributionURI) {
+		String oldContributionURI = contributionURI;
+		contributionURI = newContributionURI;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET,
+					PreferencesPackage.PREFERENCES_PAGE__CONTRIBUTION_URI,
+					oldContributionURI, contributionURI));
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public Object getObject() {
+		return object;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setObject(Object newObject) {
+		Object oldObject = object;
+		object = newObject;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET,
+					PreferencesPackage.PREFERENCES_PAGE__OBJECT, oldObject,
+					object));
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public PreferencesCategory getCategory() {
+		if (eContainerFeatureID() != PreferencesPackage.PREFERENCES_PAGE__CATEGORY)
+			return null;
+		return (PreferencesCategory) eInternalContainer();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public NotificationChain basicSetCategory(PreferencesCategory newCategory,
+			NotificationChain msgs) {
+		msgs = eBasicSetContainer((InternalEObject) newCategory,
+				PreferencesPackage.PREFERENCES_PAGE__CATEGORY, msgs);
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setCategory(PreferencesCategory newCategory) {
+		if (newCategory != eInternalContainer()
+				|| (eContainerFeatureID() != PreferencesPackage.PREFERENCES_PAGE__CATEGORY && newCategory != null)) {
+			if (EcoreUtil.isAncestor(this, newCategory))
+				throw new IllegalArgumentException(
+						"Recursive containment not allowed for " + toString());
+			NotificationChain msgs = null;
+			if (eInternalContainer() != null)
+				msgs = eBasicRemoveFromContainer(msgs);
+			if (newCategory != null)
+				msgs = ((InternalEObject) newCategory).eInverseAdd(this,
+						PreferencesPackage.PREFERENCES_CATEGORY__PAGE,
+						PreferencesCategory.class, msgs);
+			msgs = basicSetCategory(newCategory, msgs);
+			if (msgs != null)
+				msgs.dispatch();
+		} else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET,
+					PreferencesPackage.PREFERENCES_PAGE__CATEGORY, newCategory,
+					newCategory));
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public String getDescription() {
+		return description;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setDescription(String newDescription) {
+		String oldDescription = description;
+		description = newDescription;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET,
+					PreferencesPackage.PREFERENCES_PAGE__DESCRIPTION,
+					oldDescription, description));
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseAdd(InternalEObject otherEnd,
+			int featureID, NotificationChain msgs) {
+		switch (featureID) {
+		case PreferencesPackage.PREFERENCES_PAGE__CATEGORY:
+			if (eInternalContainer() != null)
+				msgs = eBasicRemoveFromContainer(msgs);
+			return basicSetCategory((PreferencesCategory) otherEnd, msgs);
+		}
+		return super.eInverseAdd(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd,
+			int featureID, NotificationChain msgs) {
+		switch (featureID) {
+		case PreferencesPackage.PREFERENCES_PAGE__CATEGORY:
+			return basicSetCategory(null, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eBasicRemoveFromContainerFeature(
+			NotificationChain msgs) {
+		switch (eContainerFeatureID()) {
+		case PreferencesPackage.PREFERENCES_PAGE__CATEGORY:
+			return eInternalContainer().eInverseRemove(this,
+					PreferencesPackage.PREFERENCES_CATEGORY__PAGE,
+					PreferencesCategory.class, msgs);
+		}
+		return super.eBasicRemoveFromContainerFeature(msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case PreferencesPackage.PREFERENCES_PAGE__CONTRIBUTION_URI:
+			return getContributionURI();
+		case PreferencesPackage.PREFERENCES_PAGE__OBJECT:
+			return getObject();
+		case PreferencesPackage.PREFERENCES_PAGE__CATEGORY:
+			return getCategory();
+		case PreferencesPackage.PREFERENCES_PAGE__DESCRIPTION:
+			return getDescription();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case PreferencesPackage.PREFERENCES_PAGE__CONTRIBUTION_URI:
+			setContributionURI((String) newValue);
+			return;
+		case PreferencesPackage.PREFERENCES_PAGE__OBJECT:
+			setObject(newValue);
+			return;
+		case PreferencesPackage.PREFERENCES_PAGE__CATEGORY:
+			setCategory((PreferencesCategory) newValue);
+			return;
+		case PreferencesPackage.PREFERENCES_PAGE__DESCRIPTION:
+			setDescription((String) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case PreferencesPackage.PREFERENCES_PAGE__CONTRIBUTION_URI:
+			setContributionURI(CONTRIBUTION_URI_EDEFAULT);
+			return;
+		case PreferencesPackage.PREFERENCES_PAGE__OBJECT:
+			setObject(OBJECT_EDEFAULT);
+			return;
+		case PreferencesPackage.PREFERENCES_PAGE__CATEGORY:
+			setCategory((PreferencesCategory) null);
+			return;
+		case PreferencesPackage.PREFERENCES_PAGE__DESCRIPTION:
+			setDescription(DESCRIPTION_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case PreferencesPackage.PREFERENCES_PAGE__CONTRIBUTION_URI:
+			return CONTRIBUTION_URI_EDEFAULT == null ? contributionURI != null
+					: !CONTRIBUTION_URI_EDEFAULT.equals(contributionURI);
+		case PreferencesPackage.PREFERENCES_PAGE__OBJECT:
+			return OBJECT_EDEFAULT == null ? object != null : !OBJECT_EDEFAULT
+					.equals(object);
+		case PreferencesPackage.PREFERENCES_PAGE__CATEGORY:
+			return getCategory() != null;
+		case PreferencesPackage.PREFERENCES_PAGE__DESCRIPTION:
+			return DESCRIPTION_EDEFAULT == null ? description != null
+					: !DESCRIPTION_EDEFAULT.equals(description);
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+		if (baseClass == MContribution.class) {
+			switch (derivedFeatureID) {
+			case PreferencesPackage.PREFERENCES_PAGE__CONTRIBUTION_URI:
+				return ApplicationPackageImpl.CONTRIBUTION__CONTRIBUTION_URI;
+			case PreferencesPackage.PREFERENCES_PAGE__OBJECT:
+				return ApplicationPackageImpl.CONTRIBUTION__OBJECT;
+			default:
+				return -1;
+			}
+		}
+		return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
+		if (baseClass == MContribution.class) {
+			switch (baseFeatureID) {
+			case ApplicationPackageImpl.CONTRIBUTION__CONTRIBUTION_URI:
+				return PreferencesPackage.PREFERENCES_PAGE__CONTRIBUTION_URI;
+			case ApplicationPackageImpl.CONTRIBUTION__OBJECT:
+				return PreferencesPackage.PREFERENCES_PAGE__OBJECT;
+			default:
+				return -1;
+			}
+		}
+		return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy())
+			return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (contributionURI: ");
+		result.append(contributionURI);
+		result.append(", object: ");
+		result.append(object);
+		result.append(", description: ");
+		result.append(description);
+		result.append(')');
+		return result.toString();
+	}
+
+} // PreferencesPageImpl
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/RadioGroupFieldEditorImpl.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/RadioGroupFieldEditorImpl.java
new file mode 100644
index 0000000..e04d1aa
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/RadioGroupFieldEditorImpl.java
@@ -0,0 +1,48 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.RadioGroupFieldEditor;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '
+ * <em><b>Radio Group Field Editor</b></em>'. <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class RadioGroupFieldEditorImpl extends ListFieldEditorImpl implements
+		RadioGroupFieldEditor {
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected RadioGroupFieldEditorImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return PreferencesPackage.Literals.RADIO_GROUP_FIELD_EDITOR;
+	}
+
+} // RadioGroupFieldEditorImpl
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/ScaleFieldEditorImpl.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/ScaleFieldEditorImpl.java
new file mode 100644
index 0000000..5b98eb5
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/ScaleFieldEditorImpl.java
@@ -0,0 +1,308 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.ScaleFieldEditor;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '
+ * <em><b>Scale Field Editor</b></em>'. <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.ScaleFieldEditorImpl#getMinValue
+ * <em>Min Value</em>}</li>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.ScaleFieldEditorImpl#getMaxValue
+ * <em>Max Value</em>}</li>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.ScaleFieldEditorImpl#getIncrementValue
+ * <em>Increment Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ScaleFieldEditorImpl extends FieldEditorImpl<Integer> implements
+		ScaleFieldEditor {
+	/**
+	 * The default value of the '{@link #getMinValue() <em>Min Value</em>}'
+	 * attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #getMinValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final Integer MIN_VALUE_EDEFAULT = new Integer(0);
+
+	/**
+	 * The cached value of the '{@link #getMinValue() <em>Min Value</em>}'
+	 * attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #getMinValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected Integer minValue = MIN_VALUE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getMaxValue() <em>Max Value</em>}'
+	 * attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #getMaxValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final Integer MAX_VALUE_EDEFAULT = new Integer(100);
+
+	/**
+	 * The cached value of the '{@link #getMaxValue() <em>Max Value</em>}'
+	 * attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #getMaxValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected Integer maxValue = MAX_VALUE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getIncrementValue()
+	 * <em>Increment Value</em>}' attribute. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @see #getIncrementValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final Integer INCREMENT_VALUE_EDEFAULT = new Integer(1);
+
+	/**
+	 * The cached value of the '{@link #getIncrementValue()
+	 * <em>Increment Value</em>}' attribute. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @see #getIncrementValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected Integer incrementValue = INCREMENT_VALUE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected ScaleFieldEditorImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return PreferencesPackage.Literals.SCALE_FIELD_EDITOR;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc --> This is specialized for the
+	 * more specific type known in this context.
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void setDefaultValueTyped(Integer newDefaultValueTyped) {
+		super.setDefaultValueTyped(newDefaultValueTyped);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public Integer getMinValue() {
+		return minValue;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setMinValue(Integer newMinValue) {
+		Integer oldMinValue = minValue;
+		minValue = newMinValue;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET,
+					PreferencesPackage.SCALE_FIELD_EDITOR__MIN_VALUE,
+					oldMinValue, minValue));
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public Integer getMaxValue() {
+		return maxValue;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setMaxValue(Integer newMaxValue) {
+		Integer oldMaxValue = maxValue;
+		maxValue = newMaxValue;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET,
+					PreferencesPackage.SCALE_FIELD_EDITOR__MAX_VALUE,
+					oldMaxValue, maxValue));
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public Integer getIncrementValue() {
+		return incrementValue;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setIncrementValue(Integer newIncrementValue) {
+		Integer oldIncrementValue = incrementValue;
+		incrementValue = newIncrementValue;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET,
+					PreferencesPackage.SCALE_FIELD_EDITOR__INCREMENT_VALUE,
+					oldIncrementValue, incrementValue));
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case PreferencesPackage.SCALE_FIELD_EDITOR__MIN_VALUE:
+			return getMinValue();
+		case PreferencesPackage.SCALE_FIELD_EDITOR__MAX_VALUE:
+			return getMaxValue();
+		case PreferencesPackage.SCALE_FIELD_EDITOR__INCREMENT_VALUE:
+			return getIncrementValue();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case PreferencesPackage.SCALE_FIELD_EDITOR__MIN_VALUE:
+			setMinValue((Integer) newValue);
+			return;
+		case PreferencesPackage.SCALE_FIELD_EDITOR__MAX_VALUE:
+			setMaxValue((Integer) newValue);
+			return;
+		case PreferencesPackage.SCALE_FIELD_EDITOR__INCREMENT_VALUE:
+			setIncrementValue((Integer) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case PreferencesPackage.SCALE_FIELD_EDITOR__MIN_VALUE:
+			setMinValue(MIN_VALUE_EDEFAULT);
+			return;
+		case PreferencesPackage.SCALE_FIELD_EDITOR__MAX_VALUE:
+			setMaxValue(MAX_VALUE_EDEFAULT);
+			return;
+		case PreferencesPackage.SCALE_FIELD_EDITOR__INCREMENT_VALUE:
+			setIncrementValue(INCREMENT_VALUE_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case PreferencesPackage.SCALE_FIELD_EDITOR__MIN_VALUE:
+			return MIN_VALUE_EDEFAULT == null ? minValue != null
+					: !MIN_VALUE_EDEFAULT.equals(minValue);
+		case PreferencesPackage.SCALE_FIELD_EDITOR__MAX_VALUE:
+			return MAX_VALUE_EDEFAULT == null ? maxValue != null
+					: !MAX_VALUE_EDEFAULT.equals(maxValue);
+		case PreferencesPackage.SCALE_FIELD_EDITOR__INCREMENT_VALUE:
+			return INCREMENT_VALUE_EDEFAULT == null ? incrementValue != null
+					: !INCREMENT_VALUE_EDEFAULT.equals(incrementValue);
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy())
+			return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (minValue: ");
+		result.append(minValue);
+		result.append(", maxValue: ");
+		result.append(maxValue);
+		result.append(", incrementValue: ");
+		result.append(incrementValue);
+		result.append(')');
+		return result.toString();
+	}
+
+} // ScaleFieldEditorImpl
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/StringFieldEditorImpl.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/StringFieldEditorImpl.java
new file mode 100644
index 0000000..f0dab7a
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/StringFieldEditorImpl.java
@@ -0,0 +1,188 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.StringFieldEditor;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '
+ * <em><b>String Field Editor</b></em>'. <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.StringFieldEditorImpl#getMaxLength
+ * <em>Max Length</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StringFieldEditorImpl extends FieldEditorImpl<String> implements
+		StringFieldEditor {
+	/**
+	 * The default value of the '{@link #getMaxLength() <em>Max Length</em>}'
+	 * attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #getMaxLength()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final Integer MAX_LENGTH_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getMaxLength() <em>Max Length</em>}'
+	 * attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #getMaxLength()
+	 * @generated
+	 * @ordered
+	 */
+	protected Integer maxLength = MAX_LENGTH_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected StringFieldEditorImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return PreferencesPackage.Literals.STRING_FIELD_EDITOR;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc --> This is specialized for the
+	 * more specific type known in this context.
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void setDefaultValueTyped(String newDefaultValueTyped) {
+		super.setDefaultValueTyped(newDefaultValueTyped);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public Integer getMaxLength() {
+		return maxLength;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setMaxLength(Integer newMaxLength) {
+		Integer oldMaxLength = maxLength;
+		maxLength = newMaxLength;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET,
+					PreferencesPackage.STRING_FIELD_EDITOR__MAX_LENGTH,
+					oldMaxLength, maxLength));
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case PreferencesPackage.STRING_FIELD_EDITOR__MAX_LENGTH:
+			return getMaxLength();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case PreferencesPackage.STRING_FIELD_EDITOR__MAX_LENGTH:
+			setMaxLength((Integer) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case PreferencesPackage.STRING_FIELD_EDITOR__MAX_LENGTH:
+			setMaxLength(MAX_LENGTH_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case PreferencesPackage.STRING_FIELD_EDITOR__MAX_LENGTH:
+			return MAX_LENGTH_EDEFAULT == null ? maxLength != null
+					: !MAX_LENGTH_EDEFAULT.equals(maxLength);
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy())
+			return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (maxLength: ");
+		result.append(maxLength);
+		result.append(')');
+		return result.toString();
+	}
+
+} // StringFieldEditorImpl
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/metadata/PreferencesFactory.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/metadata/PreferencesFactory.java
new file mode 100644
index 0000000..df68ed6
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/metadata/PreferencesFactory.java
@@ -0,0 +1,182 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata;
+
+import org.eclipse.emf.ecore.EFactory;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.BooleanFieldEditor;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.ComboFieldEditor;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.DirectoryFieldEditor;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.Entry;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.FileFieldEditor;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.IntegerFieldEditor;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.ListEditor;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.ListFold;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesPage;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.RadioGroupFieldEditor;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.ScaleFieldEditor;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.StringFieldEditor;
+
+/**
+ * <!-- begin-user-doc --> The <b>Factory</b> for the model. It provides a
+ * create method for each non-abstract class of the model. <!-- end-user-doc -->
+ * 
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage
+ * @generated
+ */
+public interface PreferencesFactory extends EFactory {
+	/**
+	 * The singleton instance of the factory. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	PreferencesFactory eINSTANCE = org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesFactoryImpl
+			.init();
+
+	/**
+	 * Returns a new object of class '<em>Category</em>'. <!-- begin-user-doc
+	 * --> <!-- end-user-doc -->
+	 * 
+	 * @return a new object of class '<em>Category</em>'.
+	 * @generated
+	 */
+	PreferencesCategory createPreferencesCategory();
+
+	/**
+	 * Returns a new object of class '<em>Page</em>'. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return a new object of class '<em>Page</em>'.
+	 * @generated
+	 */
+	PreferencesPage createPreferencesPage();
+
+	/**
+	 * Returns a new object of class '<em>Field Editor</em>'. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return a new object of class '<em>Field Editor</em>'.
+	 * @generated
+	 */
+	<T> FieldEditor<T> createFieldEditor();
+
+	/**
+	 * Returns a new object of class '<em>Boolean Field Editor</em>'. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return a new object of class '<em>Boolean Field Editor</em>'.
+	 * @generated
+	 */
+	BooleanFieldEditor createBooleanFieldEditor();
+
+	/**
+	 * Returns a new object of class '<em>Entry</em>'. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return a new object of class '<em>Entry</em>'.
+	 * @generated
+	 */
+	Entry createEntry();
+
+	/**
+	 * Returns a new object of class '<em>Combo Field Editor</em>'. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return a new object of class '<em>Combo Field Editor</em>'.
+	 * @generated
+	 */
+	ComboFieldEditor createComboFieldEditor();
+
+	/**
+	 * Returns a new object of class '<em>List Editor</em>'. <!-- begin-user-doc
+	 * --> <!-- end-user-doc -->
+	 * 
+	 * @return a new object of class '<em>List Editor</em>'.
+	 * @generated
+	 */
+	ListEditor createListEditor();
+
+	/**
+	 * Returns a new object of class '<em>Radio Group Field Editor</em>'. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return a new object of class '<em>Radio Group Field Editor</em>'.
+	 * @generated
+	 */
+	RadioGroupFieldEditor createRadioGroupFieldEditor();
+
+	/**
+	 * Returns a new object of class '<em>Scale Field Editor</em>'. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return a new object of class '<em>Scale Field Editor</em>'.
+	 * @generated
+	 */
+	ScaleFieldEditor createScaleFieldEditor();
+
+	/**
+	 * Returns a new object of class '<em>String Field Editor</em>'. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return a new object of class '<em>String Field Editor</em>'.
+	 * @generated
+	 */
+	StringFieldEditor createStringFieldEditor();
+
+	/**
+	 * Returns a new object of class '<em>Integer Field Editor</em>'. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return a new object of class '<em>Integer Field Editor</em>'.
+	 * @generated
+	 */
+	IntegerFieldEditor createIntegerFieldEditor();
+
+	/**
+	 * Returns a new object of class '<em>File Field Editor</em>'. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return a new object of class '<em>File Field Editor</em>'.
+	 * @generated
+	 */
+	FileFieldEditor createFileFieldEditor();
+
+	/**
+	 * Returns a new object of class '<em>Directory Field Editor</em>'. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return a new object of class '<em>Directory Field Editor</em>'.
+	 * @generated
+	 */
+	DirectoryFieldEditor createDirectoryFieldEditor();
+
+	/**
+	 * Returns a new object of class '<em>List Fold</em>'. <!-- begin-user-doc
+	 * --> <!-- end-user-doc -->
+	 * 
+	 * @return a new object of class '<em>List Fold</em>'.
+	 * @generated
+	 */
+	ListFold createListFold();
+
+	/**
+	 * Returns the package supported by this factory. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the package supported by this factory.
+	 * @generated
+	 */
+	PreferencesPackage getPreferencesPackage();
+
+} // PreferencesFactory
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/metadata/PreferencesPackage.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/metadata/PreferencesPackage.java
new file mode 100644
index 0000000..db5cf11
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/metadata/PreferencesPackage.java
@@ -0,0 +1,4246 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata;
+
+import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
+import org.eclipse.e4.ui.model.application.ui.impl.UiPackageImpl;
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EEnum;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+/**
+ * <!-- begin-user-doc --> The <b>Package</b> for the model. It contains
+ * accessors for the meta objects to represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each operation of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * 
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface PreferencesPackage extends EPackage {
+	/**
+	 * The package name. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	String eNAME = "preferences";
+
+	/**
+	 * The package namespace URI. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	String eNS_URI = "http://www.osbp.org/vaaclipse/ui/preferences";
+
+	/**
+	 * The package namespace name. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	String eNS_PREFIX = "preferences";
+
+	/**
+	 * The singleton instance of the package. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	PreferencesPackage eINSTANCE = org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPackageImpl
+			.init();
+
+	/**
+	 * The meta object id for the '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesCategoryImpl
+	 * <em>Category</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesCategoryImpl
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPackageImpl#getPreferencesCategory()
+	 * @generated
+	 */
+	int PREFERENCES_CATEGORY = 0;
+
+	/**
+	 * The feature id for the '<em><b>Element Id</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int PREFERENCES_CATEGORY__ELEMENT_ID = ApplicationPackageImpl.APPLICATION_ELEMENT__ELEMENT_ID;
+
+	/**
+	 * The feature id for the '<em><b>Persisted State</b></em>' map. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int PREFERENCES_CATEGORY__PERSISTED_STATE = ApplicationPackageImpl.APPLICATION_ELEMENT__PERSISTED_STATE;
+
+	/**
+	 * The feature id for the '<em><b>Tags</b></em>' attribute list. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int PREFERENCES_CATEGORY__TAGS = ApplicationPackageImpl.APPLICATION_ELEMENT__TAGS;
+
+	/**
+	 * The feature id for the '<em><b>Contributor URI</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int PREFERENCES_CATEGORY__CONTRIBUTOR_URI = ApplicationPackageImpl.APPLICATION_ELEMENT__CONTRIBUTOR_URI;
+
+	/**
+	 * The feature id for the '<em><b>Transient Data</b></em>' map. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int PREFERENCES_CATEGORY__TRANSIENT_DATA = ApplicationPackageImpl.APPLICATION_ELEMENT__TRANSIENT_DATA;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int PREFERENCES_CATEGORY__NAME = ApplicationPackageImpl.APPLICATION_ELEMENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Child Categories</b></em>' containment
+	 * reference list. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int PREFERENCES_CATEGORY__CHILD_CATEGORIES = ApplicationPackageImpl.APPLICATION_ELEMENT_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Parent Category</b></em>' container
+	 * reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int PREFERENCES_CATEGORY__PARENT_CATEGORY = ApplicationPackageImpl.APPLICATION_ELEMENT_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Page</b></em>' containment reference. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int PREFERENCES_CATEGORY__PAGE = ApplicationPackageImpl.APPLICATION_ELEMENT_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>Id</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int PREFERENCES_CATEGORY__ID = ApplicationPackageImpl.APPLICATION_ELEMENT_FEATURE_COUNT + 4;
+
+	/**
+	 * The number of structural features of the '<em>Category</em>' class. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int PREFERENCES_CATEGORY_FEATURE_COUNT = ApplicationPackageImpl.APPLICATION_ELEMENT_FEATURE_COUNT + 5;
+
+	/**
+	 * The meta object id for the '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPageImpl
+	 * <em>Page</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPageImpl
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPackageImpl#getPreferencesPage()
+	 * @generated
+	 */
+	int PREFERENCES_PAGE = 1;
+
+	/**
+	 * The feature id for the '<em><b>Element Id</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int PREFERENCES_PAGE__ELEMENT_ID = UiPackageImpl.ELEMENT_CONTAINER__ELEMENT_ID;
+
+	/**
+	 * The feature id for the '<em><b>Persisted State</b></em>' map. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int PREFERENCES_PAGE__PERSISTED_STATE = UiPackageImpl.ELEMENT_CONTAINER__PERSISTED_STATE;
+
+	/**
+	 * The feature id for the '<em><b>Tags</b></em>' attribute list. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int PREFERENCES_PAGE__TAGS = UiPackageImpl.ELEMENT_CONTAINER__TAGS;
+
+	/**
+	 * The feature id for the '<em><b>Contributor URI</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int PREFERENCES_PAGE__CONTRIBUTOR_URI = UiPackageImpl.ELEMENT_CONTAINER__CONTRIBUTOR_URI;
+
+	/**
+	 * The feature id for the '<em><b>Transient Data</b></em>' map. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int PREFERENCES_PAGE__TRANSIENT_DATA = UiPackageImpl.ELEMENT_CONTAINER__TRANSIENT_DATA;
+
+	/**
+	 * The feature id for the '<em><b>Widget</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int PREFERENCES_PAGE__WIDGET = UiPackageImpl.ELEMENT_CONTAINER__WIDGET;
+
+	/**
+	 * The feature id for the '<em><b>Renderer</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int PREFERENCES_PAGE__RENDERER = UiPackageImpl.ELEMENT_CONTAINER__RENDERER;
+
+	/**
+	 * The feature id for the '<em><b>To Be Rendered</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int PREFERENCES_PAGE__TO_BE_RENDERED = UiPackageImpl.ELEMENT_CONTAINER__TO_BE_RENDERED;
+
+	/**
+	 * The feature id for the '<em><b>On Top</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int PREFERENCES_PAGE__ON_TOP = UiPackageImpl.ELEMENT_CONTAINER__ON_TOP;
+
+	/**
+	 * The feature id for the '<em><b>Visible</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int PREFERENCES_PAGE__VISIBLE = UiPackageImpl.ELEMENT_CONTAINER__VISIBLE;
+
+	/**
+	 * The feature id for the '<em><b>Parent</b></em>' container reference. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int PREFERENCES_PAGE__PARENT = UiPackageImpl.ELEMENT_CONTAINER__PARENT;
+
+	/**
+	 * The feature id for the '<em><b>Container Data</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int PREFERENCES_PAGE__CONTAINER_DATA = UiPackageImpl.ELEMENT_CONTAINER__CONTAINER_DATA;
+
+	/**
+	 * The feature id for the '<em><b>Cur Shared Ref</b></em>' reference. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int PREFERENCES_PAGE__CUR_SHARED_REF = UiPackageImpl.ELEMENT_CONTAINER__CUR_SHARED_REF;
+
+	/**
+	 * The feature id for the '<em><b>Visible When</b></em>' containment
+	 * reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int PREFERENCES_PAGE__VISIBLE_WHEN = UiPackageImpl.ELEMENT_CONTAINER__VISIBLE_WHEN;
+
+	/**
+	 * The feature id for the '<em><b>Accessibility Phrase</b></em>' attribute.
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int PREFERENCES_PAGE__ACCESSIBILITY_PHRASE = UiPackageImpl.ELEMENT_CONTAINER__ACCESSIBILITY_PHRASE;
+
+	/**
+	 * The feature id for the '<em><b>Localized Accessibility Phrase</b></em>'
+	 * attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int PREFERENCES_PAGE__LOCALIZED_ACCESSIBILITY_PHRASE = UiPackageImpl.ELEMENT_CONTAINER__LOCALIZED_ACCESSIBILITY_PHRASE;
+
+	/**
+	 * The feature id for the '<em><b>Children</b></em>' containment reference
+	 * list. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int PREFERENCES_PAGE__CHILDREN = UiPackageImpl.ELEMENT_CONTAINER__CHILDREN;
+
+	/**
+	 * The feature id for the '<em><b>Selected Element</b></em>' reference. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int PREFERENCES_PAGE__SELECTED_ELEMENT = UiPackageImpl.ELEMENT_CONTAINER__SELECTED_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Contribution URI</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int PREFERENCES_PAGE__CONTRIBUTION_URI = UiPackageImpl.ELEMENT_CONTAINER_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Object</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int PREFERENCES_PAGE__OBJECT = UiPackageImpl.ELEMENT_CONTAINER_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Category</b></em>' container reference.
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int PREFERENCES_PAGE__CATEGORY = UiPackageImpl.ELEMENT_CONTAINER_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Description</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int PREFERENCES_PAGE__DESCRIPTION = UiPackageImpl.ELEMENT_CONTAINER_FEATURE_COUNT + 3;
+
+	/**
+	 * The number of structural features of the '<em>Page</em>' class. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int PREFERENCES_PAGE_FEATURE_COUNT = UiPackageImpl.ELEMENT_CONTAINER_FEATURE_COUNT + 4;
+
+	/**
+	 * The meta object id for the '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.FieldEditorImpl
+	 * <em>Field Editor</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc
+	 * -->
+	 * 
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.FieldEditorImpl
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPackageImpl#getFieldEditor()
+	 * @generated
+	 */
+	int FIELD_EDITOR = 2;
+
+	/**
+	 * The feature id for the '<em><b>Element Id</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int FIELD_EDITOR__ELEMENT_ID = UiPackageImpl.UI_ELEMENT__ELEMENT_ID;
+
+	/**
+	 * The feature id for the '<em><b>Persisted State</b></em>' map. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int FIELD_EDITOR__PERSISTED_STATE = UiPackageImpl.UI_ELEMENT__PERSISTED_STATE;
+
+	/**
+	 * The feature id for the '<em><b>Tags</b></em>' attribute list. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int FIELD_EDITOR__TAGS = UiPackageImpl.UI_ELEMENT__TAGS;
+
+	/**
+	 * The feature id for the '<em><b>Contributor URI</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int FIELD_EDITOR__CONTRIBUTOR_URI = UiPackageImpl.UI_ELEMENT__CONTRIBUTOR_URI;
+
+	/**
+	 * The feature id for the '<em><b>Transient Data</b></em>' map. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int FIELD_EDITOR__TRANSIENT_DATA = UiPackageImpl.UI_ELEMENT__TRANSIENT_DATA;
+
+	/**
+	 * The feature id for the '<em><b>Widget</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int FIELD_EDITOR__WIDGET = UiPackageImpl.UI_ELEMENT__WIDGET;
+
+	/**
+	 * The feature id for the '<em><b>Renderer</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int FIELD_EDITOR__RENDERER = UiPackageImpl.UI_ELEMENT__RENDERER;
+
+	/**
+	 * The feature id for the '<em><b>To Be Rendered</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int FIELD_EDITOR__TO_BE_RENDERED = UiPackageImpl.UI_ELEMENT__TO_BE_RENDERED;
+
+	/**
+	 * The feature id for the '<em><b>On Top</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int FIELD_EDITOR__ON_TOP = UiPackageImpl.UI_ELEMENT__ON_TOP;
+
+	/**
+	 * The feature id for the '<em><b>Visible</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int FIELD_EDITOR__VISIBLE = UiPackageImpl.UI_ELEMENT__VISIBLE;
+
+	/**
+	 * The feature id for the '<em><b>Parent</b></em>' container reference. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int FIELD_EDITOR__PARENT = UiPackageImpl.UI_ELEMENT__PARENT;
+
+	/**
+	 * The feature id for the '<em><b>Container Data</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int FIELD_EDITOR__CONTAINER_DATA = UiPackageImpl.UI_ELEMENT__CONTAINER_DATA;
+
+	/**
+	 * The feature id for the '<em><b>Cur Shared Ref</b></em>' reference. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int FIELD_EDITOR__CUR_SHARED_REF = UiPackageImpl.UI_ELEMENT__CUR_SHARED_REF;
+
+	/**
+	 * The feature id for the '<em><b>Visible When</b></em>' containment
+	 * reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int FIELD_EDITOR__VISIBLE_WHEN = UiPackageImpl.UI_ELEMENT__VISIBLE_WHEN;
+
+	/**
+	 * The feature id for the '<em><b>Accessibility Phrase</b></em>' attribute.
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int FIELD_EDITOR__ACCESSIBILITY_PHRASE = UiPackageImpl.UI_ELEMENT__ACCESSIBILITY_PHRASE;
+
+	/**
+	 * The feature id for the '<em><b>Localized Accessibility Phrase</b></em>'
+	 * attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int FIELD_EDITOR__LOCALIZED_ACCESSIBILITY_PHRASE = UiPackageImpl.UI_ELEMENT__LOCALIZED_ACCESSIBILITY_PHRASE;
+
+	/**
+	 * The feature id for the '<em><b>Label</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int FIELD_EDITOR__LABEL = UiPackageImpl.UI_ELEMENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Preference Name</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int FIELD_EDITOR__PREFERENCE_NAME = UiPackageImpl.UI_ELEMENT_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Default Value</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int FIELD_EDITOR__DEFAULT_VALUE = UiPackageImpl.UI_ELEMENT_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Default Value Typed</b></em>' attribute.
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int FIELD_EDITOR__DEFAULT_VALUE_TYPED = UiPackageImpl.UI_ELEMENT_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>Bundle</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int FIELD_EDITOR__BUNDLE = UiPackageImpl.UI_ELEMENT_FEATURE_COUNT + 4;
+
+	/**
+	 * The feature id for the '<em><b>Preferences</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int FIELD_EDITOR__PREFERENCES = UiPackageImpl.UI_ELEMENT_FEATURE_COUNT + 5;
+
+	/**
+	 * The feature id for the '<em><b>Equinox Path</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int FIELD_EDITOR__EQUINOX_PATH = UiPackageImpl.UI_ELEMENT_FEATURE_COUNT + 6;
+
+	/**
+	 * The number of structural features of the '<em>Field Editor</em>' class.
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int FIELD_EDITOR_FEATURE_COUNT = UiPackageImpl.UI_ELEMENT_FEATURE_COUNT + 7;
+
+	/**
+	 * The meta object id for the '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.BooleanFieldEditorImpl
+	 * <em>Boolean Field Editor</em>}' class. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.BooleanFieldEditorImpl
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPackageImpl#getBooleanFieldEditor()
+	 * @generated
+	 */
+	int BOOLEAN_FIELD_EDITOR = 3;
+
+	/**
+	 * The feature id for the '<em><b>Element Id</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int BOOLEAN_FIELD_EDITOR__ELEMENT_ID = FIELD_EDITOR__ELEMENT_ID;
+
+	/**
+	 * The feature id for the '<em><b>Persisted State</b></em>' map. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int BOOLEAN_FIELD_EDITOR__PERSISTED_STATE = FIELD_EDITOR__PERSISTED_STATE;
+
+	/**
+	 * The feature id for the '<em><b>Tags</b></em>' attribute list. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int BOOLEAN_FIELD_EDITOR__TAGS = FIELD_EDITOR__TAGS;
+
+	/**
+	 * The feature id for the '<em><b>Contributor URI</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int BOOLEAN_FIELD_EDITOR__CONTRIBUTOR_URI = FIELD_EDITOR__CONTRIBUTOR_URI;
+
+	/**
+	 * The feature id for the '<em><b>Transient Data</b></em>' map. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int BOOLEAN_FIELD_EDITOR__TRANSIENT_DATA = FIELD_EDITOR__TRANSIENT_DATA;
+
+	/**
+	 * The feature id for the '<em><b>Widget</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int BOOLEAN_FIELD_EDITOR__WIDGET = FIELD_EDITOR__WIDGET;
+
+	/**
+	 * The feature id for the '<em><b>Renderer</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int BOOLEAN_FIELD_EDITOR__RENDERER = FIELD_EDITOR__RENDERER;
+
+	/**
+	 * The feature id for the '<em><b>To Be Rendered</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int BOOLEAN_FIELD_EDITOR__TO_BE_RENDERED = FIELD_EDITOR__TO_BE_RENDERED;
+
+	/**
+	 * The feature id for the '<em><b>On Top</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int BOOLEAN_FIELD_EDITOR__ON_TOP = FIELD_EDITOR__ON_TOP;
+
+	/**
+	 * The feature id for the '<em><b>Visible</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int BOOLEAN_FIELD_EDITOR__VISIBLE = FIELD_EDITOR__VISIBLE;
+
+	/**
+	 * The feature id for the '<em><b>Parent</b></em>' container reference. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int BOOLEAN_FIELD_EDITOR__PARENT = FIELD_EDITOR__PARENT;
+
+	/**
+	 * The feature id for the '<em><b>Container Data</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int BOOLEAN_FIELD_EDITOR__CONTAINER_DATA = FIELD_EDITOR__CONTAINER_DATA;
+
+	/**
+	 * The feature id for the '<em><b>Cur Shared Ref</b></em>' reference. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int BOOLEAN_FIELD_EDITOR__CUR_SHARED_REF = FIELD_EDITOR__CUR_SHARED_REF;
+
+	/**
+	 * The feature id for the '<em><b>Visible When</b></em>' containment
+	 * reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int BOOLEAN_FIELD_EDITOR__VISIBLE_WHEN = FIELD_EDITOR__VISIBLE_WHEN;
+
+	/**
+	 * The feature id for the '<em><b>Accessibility Phrase</b></em>' attribute.
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int BOOLEAN_FIELD_EDITOR__ACCESSIBILITY_PHRASE = FIELD_EDITOR__ACCESSIBILITY_PHRASE;
+
+	/**
+	 * The feature id for the '<em><b>Localized Accessibility Phrase</b></em>'
+	 * attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int BOOLEAN_FIELD_EDITOR__LOCALIZED_ACCESSIBILITY_PHRASE = FIELD_EDITOR__LOCALIZED_ACCESSIBILITY_PHRASE;
+
+	/**
+	 * The feature id for the '<em><b>Label</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int BOOLEAN_FIELD_EDITOR__LABEL = FIELD_EDITOR__LABEL;
+
+	/**
+	 * The feature id for the '<em><b>Preference Name</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int BOOLEAN_FIELD_EDITOR__PREFERENCE_NAME = FIELD_EDITOR__PREFERENCE_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Default Value</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int BOOLEAN_FIELD_EDITOR__DEFAULT_VALUE = FIELD_EDITOR__DEFAULT_VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Default Value Typed</b></em>' attribute.
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int BOOLEAN_FIELD_EDITOR__DEFAULT_VALUE_TYPED = FIELD_EDITOR__DEFAULT_VALUE_TYPED;
+
+	/**
+	 * The feature id for the '<em><b>Bundle</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int BOOLEAN_FIELD_EDITOR__BUNDLE = FIELD_EDITOR__BUNDLE;
+
+	/**
+	 * The feature id for the '<em><b>Preferences</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int BOOLEAN_FIELD_EDITOR__PREFERENCES = FIELD_EDITOR__PREFERENCES;
+
+	/**
+	 * The feature id for the '<em><b>Equinox Path</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int BOOLEAN_FIELD_EDITOR__EQUINOX_PATH = FIELD_EDITOR__EQUINOX_PATH;
+
+	/**
+	 * The feature id for the '<em><b>Style</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int BOOLEAN_FIELD_EDITOR__STYLE = FIELD_EDITOR_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Boolean Field Editor</em>'
+	 * class. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int BOOLEAN_FIELD_EDITOR_FEATURE_COUNT = FIELD_EDITOR_FEATURE_COUNT + 1;
+
+	/**
+	 * The meta object id for the '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.ListFieldEditorImpl
+	 * <em>List Field Editor</em>}' class. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.ListFieldEditorImpl
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPackageImpl#getListFieldEditor()
+	 * @generated
+	 */
+	int LIST_FIELD_EDITOR = 4;
+
+	/**
+	 * The feature id for the '<em><b>Element Id</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int LIST_FIELD_EDITOR__ELEMENT_ID = FIELD_EDITOR__ELEMENT_ID;
+
+	/**
+	 * The feature id for the '<em><b>Persisted State</b></em>' map. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int LIST_FIELD_EDITOR__PERSISTED_STATE = FIELD_EDITOR__PERSISTED_STATE;
+
+	/**
+	 * The feature id for the '<em><b>Tags</b></em>' attribute list. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int LIST_FIELD_EDITOR__TAGS = FIELD_EDITOR__TAGS;
+
+	/**
+	 * The feature id for the '<em><b>Contributor URI</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int LIST_FIELD_EDITOR__CONTRIBUTOR_URI = FIELD_EDITOR__CONTRIBUTOR_URI;
+
+	/**
+	 * The feature id for the '<em><b>Transient Data</b></em>' map. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int LIST_FIELD_EDITOR__TRANSIENT_DATA = FIELD_EDITOR__TRANSIENT_DATA;
+
+	/**
+	 * The feature id for the '<em><b>Widget</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int LIST_FIELD_EDITOR__WIDGET = FIELD_EDITOR__WIDGET;
+
+	/**
+	 * The feature id for the '<em><b>Renderer</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int LIST_FIELD_EDITOR__RENDERER = FIELD_EDITOR__RENDERER;
+
+	/**
+	 * The feature id for the '<em><b>To Be Rendered</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int LIST_FIELD_EDITOR__TO_BE_RENDERED = FIELD_EDITOR__TO_BE_RENDERED;
+
+	/**
+	 * The feature id for the '<em><b>On Top</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int LIST_FIELD_EDITOR__ON_TOP = FIELD_EDITOR__ON_TOP;
+
+	/**
+	 * The feature id for the '<em><b>Visible</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int LIST_FIELD_EDITOR__VISIBLE = FIELD_EDITOR__VISIBLE;
+
+	/**
+	 * The feature id for the '<em><b>Parent</b></em>' container reference. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int LIST_FIELD_EDITOR__PARENT = FIELD_EDITOR__PARENT;
+
+	/**
+	 * The feature id for the '<em><b>Container Data</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int LIST_FIELD_EDITOR__CONTAINER_DATA = FIELD_EDITOR__CONTAINER_DATA;
+
+	/**
+	 * The feature id for the '<em><b>Cur Shared Ref</b></em>' reference. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int LIST_FIELD_EDITOR__CUR_SHARED_REF = FIELD_EDITOR__CUR_SHARED_REF;
+
+	/**
+	 * The feature id for the '<em><b>Visible When</b></em>' containment
+	 * reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int LIST_FIELD_EDITOR__VISIBLE_WHEN = FIELD_EDITOR__VISIBLE_WHEN;
+
+	/**
+	 * The feature id for the '<em><b>Accessibility Phrase</b></em>' attribute.
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int LIST_FIELD_EDITOR__ACCESSIBILITY_PHRASE = FIELD_EDITOR__ACCESSIBILITY_PHRASE;
+
+	/**
+	 * The feature id for the '<em><b>Localized Accessibility Phrase</b></em>'
+	 * attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int LIST_FIELD_EDITOR__LOCALIZED_ACCESSIBILITY_PHRASE = FIELD_EDITOR__LOCALIZED_ACCESSIBILITY_PHRASE;
+
+	/**
+	 * The feature id for the '<em><b>Label</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int LIST_FIELD_EDITOR__LABEL = FIELD_EDITOR__LABEL;
+
+	/**
+	 * The feature id for the '<em><b>Preference Name</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int LIST_FIELD_EDITOR__PREFERENCE_NAME = FIELD_EDITOR__PREFERENCE_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Default Value</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int LIST_FIELD_EDITOR__DEFAULT_VALUE = FIELD_EDITOR__DEFAULT_VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Default Value Typed</b></em>' attribute.
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int LIST_FIELD_EDITOR__DEFAULT_VALUE_TYPED = FIELD_EDITOR__DEFAULT_VALUE_TYPED;
+
+	/**
+	 * The feature id for the '<em><b>Bundle</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int LIST_FIELD_EDITOR__BUNDLE = FIELD_EDITOR__BUNDLE;
+
+	/**
+	 * The feature id for the '<em><b>Preferences</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int LIST_FIELD_EDITOR__PREFERENCES = FIELD_EDITOR__PREFERENCES;
+
+	/**
+	 * The feature id for the '<em><b>Equinox Path</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int LIST_FIELD_EDITOR__EQUINOX_PATH = FIELD_EDITOR__EQUINOX_PATH;
+
+	/**
+	 * The feature id for the '<em><b>Contribution URI</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int LIST_FIELD_EDITOR__CONTRIBUTION_URI = FIELD_EDITOR_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Object</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int LIST_FIELD_EDITOR__OBJECT = FIELD_EDITOR_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Entries</b></em>' reference list. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int LIST_FIELD_EDITOR__ENTRIES = FIELD_EDITOR_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of structural features of the '<em>List Field Editor</em>'
+	 * class. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int LIST_FIELD_EDITOR_FEATURE_COUNT = FIELD_EDITOR_FEATURE_COUNT + 3;
+
+	/**
+	 * The meta object id for the '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.EntryImpl
+	 * <em>Entry</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.EntryImpl
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPackageImpl#getEntry()
+	 * @generated
+	 */
+	int ENTRY = 5;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int ENTRY__NAME = 0;
+
+	/**
+	 * The feature id for the '<em><b>Value</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int ENTRY__VALUE = 1;
+
+	/**
+	 * The number of structural features of the '<em>Entry</em>' class. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int ENTRY_FEATURE_COUNT = 2;
+
+	/**
+	 * The meta object id for the '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.ComboFieldEditorImpl
+	 * <em>Combo Field Editor</em>}' class. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.ComboFieldEditorImpl
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPackageImpl#getComboFieldEditor()
+	 * @generated
+	 */
+	int COMBO_FIELD_EDITOR = 6;
+
+	/**
+	 * The feature id for the '<em><b>Element Id</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int COMBO_FIELD_EDITOR__ELEMENT_ID = LIST_FIELD_EDITOR__ELEMENT_ID;
+
+	/**
+	 * The feature id for the '<em><b>Persisted State</b></em>' map. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int COMBO_FIELD_EDITOR__PERSISTED_STATE = LIST_FIELD_EDITOR__PERSISTED_STATE;
+
+	/**
+	 * The feature id for the '<em><b>Tags</b></em>' attribute list. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int COMBO_FIELD_EDITOR__TAGS = LIST_FIELD_EDITOR__TAGS;
+
+	/**
+	 * The feature id for the '<em><b>Contributor URI</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int COMBO_FIELD_EDITOR__CONTRIBUTOR_URI = LIST_FIELD_EDITOR__CONTRIBUTOR_URI;
+
+	/**
+	 * The feature id for the '<em><b>Transient Data</b></em>' map. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int COMBO_FIELD_EDITOR__TRANSIENT_DATA = LIST_FIELD_EDITOR__TRANSIENT_DATA;
+
+	/**
+	 * The feature id for the '<em><b>Widget</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int COMBO_FIELD_EDITOR__WIDGET = LIST_FIELD_EDITOR__WIDGET;
+
+	/**
+	 * The feature id for the '<em><b>Renderer</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int COMBO_FIELD_EDITOR__RENDERER = LIST_FIELD_EDITOR__RENDERER;
+
+	/**
+	 * The feature id for the '<em><b>To Be Rendered</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int COMBO_FIELD_EDITOR__TO_BE_RENDERED = LIST_FIELD_EDITOR__TO_BE_RENDERED;
+
+	/**
+	 * The feature id for the '<em><b>On Top</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int COMBO_FIELD_EDITOR__ON_TOP = LIST_FIELD_EDITOR__ON_TOP;
+
+	/**
+	 * The feature id for the '<em><b>Visible</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int COMBO_FIELD_EDITOR__VISIBLE = LIST_FIELD_EDITOR__VISIBLE;
+
+	/**
+	 * The feature id for the '<em><b>Parent</b></em>' container reference. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int COMBO_FIELD_EDITOR__PARENT = LIST_FIELD_EDITOR__PARENT;
+
+	/**
+	 * The feature id for the '<em><b>Container Data</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int COMBO_FIELD_EDITOR__CONTAINER_DATA = LIST_FIELD_EDITOR__CONTAINER_DATA;
+
+	/**
+	 * The feature id for the '<em><b>Cur Shared Ref</b></em>' reference. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int COMBO_FIELD_EDITOR__CUR_SHARED_REF = LIST_FIELD_EDITOR__CUR_SHARED_REF;
+
+	/**
+	 * The feature id for the '<em><b>Visible When</b></em>' containment
+	 * reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int COMBO_FIELD_EDITOR__VISIBLE_WHEN = LIST_FIELD_EDITOR__VISIBLE_WHEN;
+
+	/**
+	 * The feature id for the '<em><b>Accessibility Phrase</b></em>' attribute.
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int COMBO_FIELD_EDITOR__ACCESSIBILITY_PHRASE = LIST_FIELD_EDITOR__ACCESSIBILITY_PHRASE;
+
+	/**
+	 * The feature id for the '<em><b>Localized Accessibility Phrase</b></em>'
+	 * attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int COMBO_FIELD_EDITOR__LOCALIZED_ACCESSIBILITY_PHRASE = LIST_FIELD_EDITOR__LOCALIZED_ACCESSIBILITY_PHRASE;
+
+	/**
+	 * The feature id for the '<em><b>Label</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int COMBO_FIELD_EDITOR__LABEL = LIST_FIELD_EDITOR__LABEL;
+
+	/**
+	 * The feature id for the '<em><b>Preference Name</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int COMBO_FIELD_EDITOR__PREFERENCE_NAME = LIST_FIELD_EDITOR__PREFERENCE_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Default Value</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int COMBO_FIELD_EDITOR__DEFAULT_VALUE = LIST_FIELD_EDITOR__DEFAULT_VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Default Value Typed</b></em>' attribute.
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int COMBO_FIELD_EDITOR__DEFAULT_VALUE_TYPED = LIST_FIELD_EDITOR__DEFAULT_VALUE_TYPED;
+
+	/**
+	 * The feature id for the '<em><b>Bundle</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int COMBO_FIELD_EDITOR__BUNDLE = LIST_FIELD_EDITOR__BUNDLE;
+
+	/**
+	 * The feature id for the '<em><b>Preferences</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int COMBO_FIELD_EDITOR__PREFERENCES = LIST_FIELD_EDITOR__PREFERENCES;
+
+	/**
+	 * The feature id for the '<em><b>Equinox Path</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int COMBO_FIELD_EDITOR__EQUINOX_PATH = LIST_FIELD_EDITOR__EQUINOX_PATH;
+
+	/**
+	 * The feature id for the '<em><b>Contribution URI</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int COMBO_FIELD_EDITOR__CONTRIBUTION_URI = LIST_FIELD_EDITOR__CONTRIBUTION_URI;
+
+	/**
+	 * The feature id for the '<em><b>Object</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int COMBO_FIELD_EDITOR__OBJECT = LIST_FIELD_EDITOR__OBJECT;
+
+	/**
+	 * The feature id for the '<em><b>Entries</b></em>' reference list. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int COMBO_FIELD_EDITOR__ENTRIES = LIST_FIELD_EDITOR__ENTRIES;
+
+	/**
+	 * The number of structural features of the '<em>Combo Field Editor</em>'
+	 * class. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int COMBO_FIELD_EDITOR_FEATURE_COUNT = LIST_FIELD_EDITOR_FEATURE_COUNT + 0;
+
+	/**
+	 * The meta object id for the '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.ListEditorImpl
+	 * <em>List Editor</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc
+	 * -->
+	 * 
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.ListEditorImpl
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPackageImpl#getListEditor()
+	 * @generated
+	 */
+	int LIST_EDITOR = 7;
+
+	/**
+	 * The feature id for the '<em><b>Element Id</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int LIST_EDITOR__ELEMENT_ID = FIELD_EDITOR__ELEMENT_ID;
+
+	/**
+	 * The feature id for the '<em><b>Persisted State</b></em>' map. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int LIST_EDITOR__PERSISTED_STATE = FIELD_EDITOR__PERSISTED_STATE;
+
+	/**
+	 * The feature id for the '<em><b>Tags</b></em>' attribute list. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int LIST_EDITOR__TAGS = FIELD_EDITOR__TAGS;
+
+	/**
+	 * The feature id for the '<em><b>Contributor URI</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int LIST_EDITOR__CONTRIBUTOR_URI = FIELD_EDITOR__CONTRIBUTOR_URI;
+
+	/**
+	 * The feature id for the '<em><b>Transient Data</b></em>' map. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int LIST_EDITOR__TRANSIENT_DATA = FIELD_EDITOR__TRANSIENT_DATA;
+
+	/**
+	 * The feature id for the '<em><b>Widget</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int LIST_EDITOR__WIDGET = FIELD_EDITOR__WIDGET;
+
+	/**
+	 * The feature id for the '<em><b>Renderer</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int LIST_EDITOR__RENDERER = FIELD_EDITOR__RENDERER;
+
+	/**
+	 * The feature id for the '<em><b>To Be Rendered</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int LIST_EDITOR__TO_BE_RENDERED = FIELD_EDITOR__TO_BE_RENDERED;
+
+	/**
+	 * The feature id for the '<em><b>On Top</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int LIST_EDITOR__ON_TOP = FIELD_EDITOR__ON_TOP;
+
+	/**
+	 * The feature id for the '<em><b>Visible</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int LIST_EDITOR__VISIBLE = FIELD_EDITOR__VISIBLE;
+
+	/**
+	 * The feature id for the '<em><b>Parent</b></em>' container reference. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int LIST_EDITOR__PARENT = FIELD_EDITOR__PARENT;
+
+	/**
+	 * The feature id for the '<em><b>Container Data</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int LIST_EDITOR__CONTAINER_DATA = FIELD_EDITOR__CONTAINER_DATA;
+
+	/**
+	 * The feature id for the '<em><b>Cur Shared Ref</b></em>' reference. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int LIST_EDITOR__CUR_SHARED_REF = FIELD_EDITOR__CUR_SHARED_REF;
+
+	/**
+	 * The feature id for the '<em><b>Visible When</b></em>' containment
+	 * reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int LIST_EDITOR__VISIBLE_WHEN = FIELD_EDITOR__VISIBLE_WHEN;
+
+	/**
+	 * The feature id for the '<em><b>Accessibility Phrase</b></em>' attribute.
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int LIST_EDITOR__ACCESSIBILITY_PHRASE = FIELD_EDITOR__ACCESSIBILITY_PHRASE;
+
+	/**
+	 * The feature id for the '<em><b>Localized Accessibility Phrase</b></em>'
+	 * attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int LIST_EDITOR__LOCALIZED_ACCESSIBILITY_PHRASE = FIELD_EDITOR__LOCALIZED_ACCESSIBILITY_PHRASE;
+
+	/**
+	 * The feature id for the '<em><b>Label</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int LIST_EDITOR__LABEL = FIELD_EDITOR__LABEL;
+
+	/**
+	 * The feature id for the '<em><b>Preference Name</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int LIST_EDITOR__PREFERENCE_NAME = FIELD_EDITOR__PREFERENCE_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Default Value</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int LIST_EDITOR__DEFAULT_VALUE = FIELD_EDITOR__DEFAULT_VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Default Value Typed</b></em>' attribute.
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int LIST_EDITOR__DEFAULT_VALUE_TYPED = FIELD_EDITOR__DEFAULT_VALUE_TYPED;
+
+	/**
+	 * The feature id for the '<em><b>Bundle</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int LIST_EDITOR__BUNDLE = FIELD_EDITOR__BUNDLE;
+
+	/**
+	 * The feature id for the '<em><b>Preferences</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int LIST_EDITOR__PREFERENCES = FIELD_EDITOR__PREFERENCES;
+
+	/**
+	 * The feature id for the '<em><b>Equinox Path</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int LIST_EDITOR__EQUINOX_PATH = FIELD_EDITOR__EQUINOX_PATH;
+
+	/**
+	 * The feature id for the '<em><b>Contribution URI</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int LIST_EDITOR__CONTRIBUTION_URI = FIELD_EDITOR_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Object</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int LIST_EDITOR__OBJECT = FIELD_EDITOR_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>List Crud</b></em>' reference. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int LIST_EDITOR__LIST_CRUD = FIELD_EDITOR_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>List Fold</b></em>' reference. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int LIST_EDITOR__LIST_FOLD = FIELD_EDITOR_FEATURE_COUNT + 3;
+
+	/**
+	 * The number of structural features of the '<em>List Editor</em>' class.
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int LIST_EDITOR_FEATURE_COUNT = FIELD_EDITOR_FEATURE_COUNT + 4;
+
+	/**
+	 * The meta object id for the '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.RadioGroupFieldEditorImpl
+	 * <em>Radio Group Field Editor</em>}' class. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.RadioGroupFieldEditorImpl
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPackageImpl#getRadioGroupFieldEditor()
+	 * @generated
+	 */
+	int RADIO_GROUP_FIELD_EDITOR = 8;
+
+	/**
+	 * The feature id for the '<em><b>Element Id</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int RADIO_GROUP_FIELD_EDITOR__ELEMENT_ID = LIST_FIELD_EDITOR__ELEMENT_ID;
+
+	/**
+	 * The feature id for the '<em><b>Persisted State</b></em>' map. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int RADIO_GROUP_FIELD_EDITOR__PERSISTED_STATE = LIST_FIELD_EDITOR__PERSISTED_STATE;
+
+	/**
+	 * The feature id for the '<em><b>Tags</b></em>' attribute list. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int RADIO_GROUP_FIELD_EDITOR__TAGS = LIST_FIELD_EDITOR__TAGS;
+
+	/**
+	 * The feature id for the '<em><b>Contributor URI</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int RADIO_GROUP_FIELD_EDITOR__CONTRIBUTOR_URI = LIST_FIELD_EDITOR__CONTRIBUTOR_URI;
+
+	/**
+	 * The feature id for the '<em><b>Transient Data</b></em>' map. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int RADIO_GROUP_FIELD_EDITOR__TRANSIENT_DATA = LIST_FIELD_EDITOR__TRANSIENT_DATA;
+
+	/**
+	 * The feature id for the '<em><b>Widget</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int RADIO_GROUP_FIELD_EDITOR__WIDGET = LIST_FIELD_EDITOR__WIDGET;
+
+	/**
+	 * The feature id for the '<em><b>Renderer</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int RADIO_GROUP_FIELD_EDITOR__RENDERER = LIST_FIELD_EDITOR__RENDERER;
+
+	/**
+	 * The feature id for the '<em><b>To Be Rendered</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int RADIO_GROUP_FIELD_EDITOR__TO_BE_RENDERED = LIST_FIELD_EDITOR__TO_BE_RENDERED;
+
+	/**
+	 * The feature id for the '<em><b>On Top</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int RADIO_GROUP_FIELD_EDITOR__ON_TOP = LIST_FIELD_EDITOR__ON_TOP;
+
+	/**
+	 * The feature id for the '<em><b>Visible</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int RADIO_GROUP_FIELD_EDITOR__VISIBLE = LIST_FIELD_EDITOR__VISIBLE;
+
+	/**
+	 * The feature id for the '<em><b>Parent</b></em>' container reference. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int RADIO_GROUP_FIELD_EDITOR__PARENT = LIST_FIELD_EDITOR__PARENT;
+
+	/**
+	 * The feature id for the '<em><b>Container Data</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int RADIO_GROUP_FIELD_EDITOR__CONTAINER_DATA = LIST_FIELD_EDITOR__CONTAINER_DATA;
+
+	/**
+	 * The feature id for the '<em><b>Cur Shared Ref</b></em>' reference. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int RADIO_GROUP_FIELD_EDITOR__CUR_SHARED_REF = LIST_FIELD_EDITOR__CUR_SHARED_REF;
+
+	/**
+	 * The feature id for the '<em><b>Visible When</b></em>' containment
+	 * reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int RADIO_GROUP_FIELD_EDITOR__VISIBLE_WHEN = LIST_FIELD_EDITOR__VISIBLE_WHEN;
+
+	/**
+	 * The feature id for the '<em><b>Accessibility Phrase</b></em>' attribute.
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int RADIO_GROUP_FIELD_EDITOR__ACCESSIBILITY_PHRASE = LIST_FIELD_EDITOR__ACCESSIBILITY_PHRASE;
+
+	/**
+	 * The feature id for the '<em><b>Localized Accessibility Phrase</b></em>'
+	 * attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int RADIO_GROUP_FIELD_EDITOR__LOCALIZED_ACCESSIBILITY_PHRASE = LIST_FIELD_EDITOR__LOCALIZED_ACCESSIBILITY_PHRASE;
+
+	/**
+	 * The feature id for the '<em><b>Label</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int RADIO_GROUP_FIELD_EDITOR__LABEL = LIST_FIELD_EDITOR__LABEL;
+
+	/**
+	 * The feature id for the '<em><b>Preference Name</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int RADIO_GROUP_FIELD_EDITOR__PREFERENCE_NAME = LIST_FIELD_EDITOR__PREFERENCE_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Default Value</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int RADIO_GROUP_FIELD_EDITOR__DEFAULT_VALUE = LIST_FIELD_EDITOR__DEFAULT_VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Default Value Typed</b></em>' attribute.
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int RADIO_GROUP_FIELD_EDITOR__DEFAULT_VALUE_TYPED = LIST_FIELD_EDITOR__DEFAULT_VALUE_TYPED;
+
+	/**
+	 * The feature id for the '<em><b>Bundle</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int RADIO_GROUP_FIELD_EDITOR__BUNDLE = LIST_FIELD_EDITOR__BUNDLE;
+
+	/**
+	 * The feature id for the '<em><b>Preferences</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int RADIO_GROUP_FIELD_EDITOR__PREFERENCES = LIST_FIELD_EDITOR__PREFERENCES;
+
+	/**
+	 * The feature id for the '<em><b>Equinox Path</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int RADIO_GROUP_FIELD_EDITOR__EQUINOX_PATH = LIST_FIELD_EDITOR__EQUINOX_PATH;
+
+	/**
+	 * The feature id for the '<em><b>Contribution URI</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int RADIO_GROUP_FIELD_EDITOR__CONTRIBUTION_URI = LIST_FIELD_EDITOR__CONTRIBUTION_URI;
+
+	/**
+	 * The feature id for the '<em><b>Object</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int RADIO_GROUP_FIELD_EDITOR__OBJECT = LIST_FIELD_EDITOR__OBJECT;
+
+	/**
+	 * The feature id for the '<em><b>Entries</b></em>' reference list. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int RADIO_GROUP_FIELD_EDITOR__ENTRIES = LIST_FIELD_EDITOR__ENTRIES;
+
+	/**
+	 * The number of structural features of the '
+	 * <em>Radio Group Field Editor</em>' class. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int RADIO_GROUP_FIELD_EDITOR_FEATURE_COUNT = LIST_FIELD_EDITOR_FEATURE_COUNT + 0;
+
+	/**
+	 * The meta object id for the '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.ScaleFieldEditorImpl
+	 * <em>Scale Field Editor</em>}' class. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.ScaleFieldEditorImpl
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPackageImpl#getScaleFieldEditor()
+	 * @generated
+	 */
+	int SCALE_FIELD_EDITOR = 9;
+
+	/**
+	 * The feature id for the '<em><b>Element Id</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int SCALE_FIELD_EDITOR__ELEMENT_ID = FIELD_EDITOR__ELEMENT_ID;
+
+	/**
+	 * The feature id for the '<em><b>Persisted State</b></em>' map. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int SCALE_FIELD_EDITOR__PERSISTED_STATE = FIELD_EDITOR__PERSISTED_STATE;
+
+	/**
+	 * The feature id for the '<em><b>Tags</b></em>' attribute list. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int SCALE_FIELD_EDITOR__TAGS = FIELD_EDITOR__TAGS;
+
+	/**
+	 * The feature id for the '<em><b>Contributor URI</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int SCALE_FIELD_EDITOR__CONTRIBUTOR_URI = FIELD_EDITOR__CONTRIBUTOR_URI;
+
+	/**
+	 * The feature id for the '<em><b>Transient Data</b></em>' map. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int SCALE_FIELD_EDITOR__TRANSIENT_DATA = FIELD_EDITOR__TRANSIENT_DATA;
+
+	/**
+	 * The feature id for the '<em><b>Widget</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int SCALE_FIELD_EDITOR__WIDGET = FIELD_EDITOR__WIDGET;
+
+	/**
+	 * The feature id for the '<em><b>Renderer</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int SCALE_FIELD_EDITOR__RENDERER = FIELD_EDITOR__RENDERER;
+
+	/**
+	 * The feature id for the '<em><b>To Be Rendered</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int SCALE_FIELD_EDITOR__TO_BE_RENDERED = FIELD_EDITOR__TO_BE_RENDERED;
+
+	/**
+	 * The feature id for the '<em><b>On Top</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int SCALE_FIELD_EDITOR__ON_TOP = FIELD_EDITOR__ON_TOP;
+
+	/**
+	 * The feature id for the '<em><b>Visible</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int SCALE_FIELD_EDITOR__VISIBLE = FIELD_EDITOR__VISIBLE;
+
+	/**
+	 * The feature id for the '<em><b>Parent</b></em>' container reference. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int SCALE_FIELD_EDITOR__PARENT = FIELD_EDITOR__PARENT;
+
+	/**
+	 * The feature id for the '<em><b>Container Data</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int SCALE_FIELD_EDITOR__CONTAINER_DATA = FIELD_EDITOR__CONTAINER_DATA;
+
+	/**
+	 * The feature id for the '<em><b>Cur Shared Ref</b></em>' reference. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int SCALE_FIELD_EDITOR__CUR_SHARED_REF = FIELD_EDITOR__CUR_SHARED_REF;
+
+	/**
+	 * The feature id for the '<em><b>Visible When</b></em>' containment
+	 * reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int SCALE_FIELD_EDITOR__VISIBLE_WHEN = FIELD_EDITOR__VISIBLE_WHEN;
+
+	/**
+	 * The feature id for the '<em><b>Accessibility Phrase</b></em>' attribute.
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int SCALE_FIELD_EDITOR__ACCESSIBILITY_PHRASE = FIELD_EDITOR__ACCESSIBILITY_PHRASE;
+
+	/**
+	 * The feature id for the '<em><b>Localized Accessibility Phrase</b></em>'
+	 * attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int SCALE_FIELD_EDITOR__LOCALIZED_ACCESSIBILITY_PHRASE = FIELD_EDITOR__LOCALIZED_ACCESSIBILITY_PHRASE;
+
+	/**
+	 * The feature id for the '<em><b>Label</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int SCALE_FIELD_EDITOR__LABEL = FIELD_EDITOR__LABEL;
+
+	/**
+	 * The feature id for the '<em><b>Preference Name</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int SCALE_FIELD_EDITOR__PREFERENCE_NAME = FIELD_EDITOR__PREFERENCE_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Default Value</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int SCALE_FIELD_EDITOR__DEFAULT_VALUE = FIELD_EDITOR__DEFAULT_VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Default Value Typed</b></em>' attribute.
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int SCALE_FIELD_EDITOR__DEFAULT_VALUE_TYPED = FIELD_EDITOR__DEFAULT_VALUE_TYPED;
+
+	/**
+	 * The feature id for the '<em><b>Bundle</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int SCALE_FIELD_EDITOR__BUNDLE = FIELD_EDITOR__BUNDLE;
+
+	/**
+	 * The feature id for the '<em><b>Preferences</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int SCALE_FIELD_EDITOR__PREFERENCES = FIELD_EDITOR__PREFERENCES;
+
+	/**
+	 * The feature id for the '<em><b>Equinox Path</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int SCALE_FIELD_EDITOR__EQUINOX_PATH = FIELD_EDITOR__EQUINOX_PATH;
+
+	/**
+	 * The feature id for the '<em><b>Min Value</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int SCALE_FIELD_EDITOR__MIN_VALUE = FIELD_EDITOR_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Max Value</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int SCALE_FIELD_EDITOR__MAX_VALUE = FIELD_EDITOR_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Increment Value</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int SCALE_FIELD_EDITOR__INCREMENT_VALUE = FIELD_EDITOR_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of structural features of the '<em>Scale Field Editor</em>'
+	 * class. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int SCALE_FIELD_EDITOR_FEATURE_COUNT = FIELD_EDITOR_FEATURE_COUNT + 3;
+
+	/**
+	 * The meta object id for the '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.StringFieldEditorImpl
+	 * <em>String Field Editor</em>}' class. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.StringFieldEditorImpl
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPackageImpl#getStringFieldEditor()
+	 * @generated
+	 */
+	int STRING_FIELD_EDITOR = 10;
+
+	/**
+	 * The feature id for the '<em><b>Element Id</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int STRING_FIELD_EDITOR__ELEMENT_ID = FIELD_EDITOR__ELEMENT_ID;
+
+	/**
+	 * The feature id for the '<em><b>Persisted State</b></em>' map. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int STRING_FIELD_EDITOR__PERSISTED_STATE = FIELD_EDITOR__PERSISTED_STATE;
+
+	/**
+	 * The feature id for the '<em><b>Tags</b></em>' attribute list. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int STRING_FIELD_EDITOR__TAGS = FIELD_EDITOR__TAGS;
+
+	/**
+	 * The feature id for the '<em><b>Contributor URI</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int STRING_FIELD_EDITOR__CONTRIBUTOR_URI = FIELD_EDITOR__CONTRIBUTOR_URI;
+
+	/**
+	 * The feature id for the '<em><b>Transient Data</b></em>' map. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int STRING_FIELD_EDITOR__TRANSIENT_DATA = FIELD_EDITOR__TRANSIENT_DATA;
+
+	/**
+	 * The feature id for the '<em><b>Widget</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int STRING_FIELD_EDITOR__WIDGET = FIELD_EDITOR__WIDGET;
+
+	/**
+	 * The feature id for the '<em><b>Renderer</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int STRING_FIELD_EDITOR__RENDERER = FIELD_EDITOR__RENDERER;
+
+	/**
+	 * The feature id for the '<em><b>To Be Rendered</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int STRING_FIELD_EDITOR__TO_BE_RENDERED = FIELD_EDITOR__TO_BE_RENDERED;
+
+	/**
+	 * The feature id for the '<em><b>On Top</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int STRING_FIELD_EDITOR__ON_TOP = FIELD_EDITOR__ON_TOP;
+
+	/**
+	 * The feature id for the '<em><b>Visible</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int STRING_FIELD_EDITOR__VISIBLE = FIELD_EDITOR__VISIBLE;
+
+	/**
+	 * The feature id for the '<em><b>Parent</b></em>' container reference. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int STRING_FIELD_EDITOR__PARENT = FIELD_EDITOR__PARENT;
+
+	/**
+	 * The feature id for the '<em><b>Container Data</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int STRING_FIELD_EDITOR__CONTAINER_DATA = FIELD_EDITOR__CONTAINER_DATA;
+
+	/**
+	 * The feature id for the '<em><b>Cur Shared Ref</b></em>' reference. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int STRING_FIELD_EDITOR__CUR_SHARED_REF = FIELD_EDITOR__CUR_SHARED_REF;
+
+	/**
+	 * The feature id for the '<em><b>Visible When</b></em>' containment
+	 * reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int STRING_FIELD_EDITOR__VISIBLE_WHEN = FIELD_EDITOR__VISIBLE_WHEN;
+
+	/**
+	 * The feature id for the '<em><b>Accessibility Phrase</b></em>' attribute.
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int STRING_FIELD_EDITOR__ACCESSIBILITY_PHRASE = FIELD_EDITOR__ACCESSIBILITY_PHRASE;
+
+	/**
+	 * The feature id for the '<em><b>Localized Accessibility Phrase</b></em>'
+	 * attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int STRING_FIELD_EDITOR__LOCALIZED_ACCESSIBILITY_PHRASE = FIELD_EDITOR__LOCALIZED_ACCESSIBILITY_PHRASE;
+
+	/**
+	 * The feature id for the '<em><b>Label</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int STRING_FIELD_EDITOR__LABEL = FIELD_EDITOR__LABEL;
+
+	/**
+	 * The feature id for the '<em><b>Preference Name</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int STRING_FIELD_EDITOR__PREFERENCE_NAME = FIELD_EDITOR__PREFERENCE_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Default Value</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int STRING_FIELD_EDITOR__DEFAULT_VALUE = FIELD_EDITOR__DEFAULT_VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Default Value Typed</b></em>' attribute.
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int STRING_FIELD_EDITOR__DEFAULT_VALUE_TYPED = FIELD_EDITOR__DEFAULT_VALUE_TYPED;
+
+	/**
+	 * The feature id for the '<em><b>Bundle</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int STRING_FIELD_EDITOR__BUNDLE = FIELD_EDITOR__BUNDLE;
+
+	/**
+	 * The feature id for the '<em><b>Preferences</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int STRING_FIELD_EDITOR__PREFERENCES = FIELD_EDITOR__PREFERENCES;
+
+	/**
+	 * The feature id for the '<em><b>Equinox Path</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int STRING_FIELD_EDITOR__EQUINOX_PATH = FIELD_EDITOR__EQUINOX_PATH;
+
+	/**
+	 * The feature id for the '<em><b>Max Length</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int STRING_FIELD_EDITOR__MAX_LENGTH = FIELD_EDITOR_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>String Field Editor</em>'
+	 * class. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int STRING_FIELD_EDITOR_FEATURE_COUNT = FIELD_EDITOR_FEATURE_COUNT + 1;
+
+	/**
+	 * The meta object id for the '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.IntegerFieldEditorImpl
+	 * <em>Integer Field Editor</em>}' class. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.IntegerFieldEditorImpl
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPackageImpl#getIntegerFieldEditor()
+	 * @generated
+	 */
+	int INTEGER_FIELD_EDITOR = 11;
+
+	/**
+	 * The feature id for the '<em><b>Element Id</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int INTEGER_FIELD_EDITOR__ELEMENT_ID = FIELD_EDITOR__ELEMENT_ID;
+
+	/**
+	 * The feature id for the '<em><b>Persisted State</b></em>' map. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int INTEGER_FIELD_EDITOR__PERSISTED_STATE = FIELD_EDITOR__PERSISTED_STATE;
+
+	/**
+	 * The feature id for the '<em><b>Tags</b></em>' attribute list. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int INTEGER_FIELD_EDITOR__TAGS = FIELD_EDITOR__TAGS;
+
+	/**
+	 * The feature id for the '<em><b>Contributor URI</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int INTEGER_FIELD_EDITOR__CONTRIBUTOR_URI = FIELD_EDITOR__CONTRIBUTOR_URI;
+
+	/**
+	 * The feature id for the '<em><b>Transient Data</b></em>' map. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int INTEGER_FIELD_EDITOR__TRANSIENT_DATA = FIELD_EDITOR__TRANSIENT_DATA;
+
+	/**
+	 * The feature id for the '<em><b>Widget</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int INTEGER_FIELD_EDITOR__WIDGET = FIELD_EDITOR__WIDGET;
+
+	/**
+	 * The feature id for the '<em><b>Renderer</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int INTEGER_FIELD_EDITOR__RENDERER = FIELD_EDITOR__RENDERER;
+
+	/**
+	 * The feature id for the '<em><b>To Be Rendered</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int INTEGER_FIELD_EDITOR__TO_BE_RENDERED = FIELD_EDITOR__TO_BE_RENDERED;
+
+	/**
+	 * The feature id for the '<em><b>On Top</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int INTEGER_FIELD_EDITOR__ON_TOP = FIELD_EDITOR__ON_TOP;
+
+	/**
+	 * The feature id for the '<em><b>Visible</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int INTEGER_FIELD_EDITOR__VISIBLE = FIELD_EDITOR__VISIBLE;
+
+	/**
+	 * The feature id for the '<em><b>Parent</b></em>' container reference. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int INTEGER_FIELD_EDITOR__PARENT = FIELD_EDITOR__PARENT;
+
+	/**
+	 * The feature id for the '<em><b>Container Data</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int INTEGER_FIELD_EDITOR__CONTAINER_DATA = FIELD_EDITOR__CONTAINER_DATA;
+
+	/**
+	 * The feature id for the '<em><b>Cur Shared Ref</b></em>' reference. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int INTEGER_FIELD_EDITOR__CUR_SHARED_REF = FIELD_EDITOR__CUR_SHARED_REF;
+
+	/**
+	 * The feature id for the '<em><b>Visible When</b></em>' containment
+	 * reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int INTEGER_FIELD_EDITOR__VISIBLE_WHEN = FIELD_EDITOR__VISIBLE_WHEN;
+
+	/**
+	 * The feature id for the '<em><b>Accessibility Phrase</b></em>' attribute.
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int INTEGER_FIELD_EDITOR__ACCESSIBILITY_PHRASE = FIELD_EDITOR__ACCESSIBILITY_PHRASE;
+
+	/**
+	 * The feature id for the '<em><b>Localized Accessibility Phrase</b></em>'
+	 * attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int INTEGER_FIELD_EDITOR__LOCALIZED_ACCESSIBILITY_PHRASE = FIELD_EDITOR__LOCALIZED_ACCESSIBILITY_PHRASE;
+
+	/**
+	 * The feature id for the '<em><b>Label</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int INTEGER_FIELD_EDITOR__LABEL = FIELD_EDITOR__LABEL;
+
+	/**
+	 * The feature id for the '<em><b>Preference Name</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int INTEGER_FIELD_EDITOR__PREFERENCE_NAME = FIELD_EDITOR__PREFERENCE_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Default Value</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int INTEGER_FIELD_EDITOR__DEFAULT_VALUE = FIELD_EDITOR__DEFAULT_VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Default Value Typed</b></em>' attribute.
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int INTEGER_FIELD_EDITOR__DEFAULT_VALUE_TYPED = FIELD_EDITOR__DEFAULT_VALUE_TYPED;
+
+	/**
+	 * The feature id for the '<em><b>Bundle</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int INTEGER_FIELD_EDITOR__BUNDLE = FIELD_EDITOR__BUNDLE;
+
+	/**
+	 * The feature id for the '<em><b>Preferences</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int INTEGER_FIELD_EDITOR__PREFERENCES = FIELD_EDITOR__PREFERENCES;
+
+	/**
+	 * The feature id for the '<em><b>Equinox Path</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int INTEGER_FIELD_EDITOR__EQUINOX_PATH = FIELD_EDITOR__EQUINOX_PATH;
+
+	/**
+	 * The feature id for the '<em><b>Min Valid Value</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int INTEGER_FIELD_EDITOR__MIN_VALID_VALUE = FIELD_EDITOR_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Max Valid Value</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int INTEGER_FIELD_EDITOR__MAX_VALID_VALUE = FIELD_EDITOR_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Integer Field Editor</em>'
+	 * class. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int INTEGER_FIELD_EDITOR_FEATURE_COUNT = FIELD_EDITOR_FEATURE_COUNT + 2;
+
+	/**
+	 * The meta object id for the '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.FileFieldEditorImpl
+	 * <em>File Field Editor</em>}' class. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.FileFieldEditorImpl
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPackageImpl#getFileFieldEditor()
+	 * @generated
+	 */
+	int FILE_FIELD_EDITOR = 12;
+
+	/**
+	 * The feature id for the '<em><b>Element Id</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int FILE_FIELD_EDITOR__ELEMENT_ID = FIELD_EDITOR__ELEMENT_ID;
+
+	/**
+	 * The feature id for the '<em><b>Persisted State</b></em>' map. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int FILE_FIELD_EDITOR__PERSISTED_STATE = FIELD_EDITOR__PERSISTED_STATE;
+
+	/**
+	 * The feature id for the '<em><b>Tags</b></em>' attribute list. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int FILE_FIELD_EDITOR__TAGS = FIELD_EDITOR__TAGS;
+
+	/**
+	 * The feature id for the '<em><b>Contributor URI</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int FILE_FIELD_EDITOR__CONTRIBUTOR_URI = FIELD_EDITOR__CONTRIBUTOR_URI;
+
+	/**
+	 * The feature id for the '<em><b>Transient Data</b></em>' map. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int FILE_FIELD_EDITOR__TRANSIENT_DATA = FIELD_EDITOR__TRANSIENT_DATA;
+
+	/**
+	 * The feature id for the '<em><b>Widget</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int FILE_FIELD_EDITOR__WIDGET = FIELD_EDITOR__WIDGET;
+
+	/**
+	 * The feature id for the '<em><b>Renderer</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int FILE_FIELD_EDITOR__RENDERER = FIELD_EDITOR__RENDERER;
+
+	/**
+	 * The feature id for the '<em><b>To Be Rendered</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int FILE_FIELD_EDITOR__TO_BE_RENDERED = FIELD_EDITOR__TO_BE_RENDERED;
+
+	/**
+	 * The feature id for the '<em><b>On Top</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int FILE_FIELD_EDITOR__ON_TOP = FIELD_EDITOR__ON_TOP;
+
+	/**
+	 * The feature id for the '<em><b>Visible</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int FILE_FIELD_EDITOR__VISIBLE = FIELD_EDITOR__VISIBLE;
+
+	/**
+	 * The feature id for the '<em><b>Parent</b></em>' container reference. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int FILE_FIELD_EDITOR__PARENT = FIELD_EDITOR__PARENT;
+
+	/**
+	 * The feature id for the '<em><b>Container Data</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int FILE_FIELD_EDITOR__CONTAINER_DATA = FIELD_EDITOR__CONTAINER_DATA;
+
+	/**
+	 * The feature id for the '<em><b>Cur Shared Ref</b></em>' reference. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int FILE_FIELD_EDITOR__CUR_SHARED_REF = FIELD_EDITOR__CUR_SHARED_REF;
+
+	/**
+	 * The feature id for the '<em><b>Visible When</b></em>' containment
+	 * reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int FILE_FIELD_EDITOR__VISIBLE_WHEN = FIELD_EDITOR__VISIBLE_WHEN;
+
+	/**
+	 * The feature id for the '<em><b>Accessibility Phrase</b></em>' attribute.
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int FILE_FIELD_EDITOR__ACCESSIBILITY_PHRASE = FIELD_EDITOR__ACCESSIBILITY_PHRASE;
+
+	/**
+	 * The feature id for the '<em><b>Localized Accessibility Phrase</b></em>'
+	 * attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int FILE_FIELD_EDITOR__LOCALIZED_ACCESSIBILITY_PHRASE = FIELD_EDITOR__LOCALIZED_ACCESSIBILITY_PHRASE;
+
+	/**
+	 * The feature id for the '<em><b>Label</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int FILE_FIELD_EDITOR__LABEL = FIELD_EDITOR__LABEL;
+
+	/**
+	 * The feature id for the '<em><b>Preference Name</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int FILE_FIELD_EDITOR__PREFERENCE_NAME = FIELD_EDITOR__PREFERENCE_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Default Value</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int FILE_FIELD_EDITOR__DEFAULT_VALUE = FIELD_EDITOR__DEFAULT_VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Default Value Typed</b></em>' attribute.
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int FILE_FIELD_EDITOR__DEFAULT_VALUE_TYPED = FIELD_EDITOR__DEFAULT_VALUE_TYPED;
+
+	/**
+	 * The feature id for the '<em><b>Bundle</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int FILE_FIELD_EDITOR__BUNDLE = FIELD_EDITOR__BUNDLE;
+
+	/**
+	 * The feature id for the '<em><b>Preferences</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int FILE_FIELD_EDITOR__PREFERENCES = FIELD_EDITOR__PREFERENCES;
+
+	/**
+	 * The feature id for the '<em><b>Equinox Path</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int FILE_FIELD_EDITOR__EQUINOX_PATH = FIELD_EDITOR__EQUINOX_PATH;
+
+	/**
+	 * The feature id for the '<em><b>Contribution URI</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int FILE_FIELD_EDITOR__CONTRIBUTION_URI = FIELD_EDITOR_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Object</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int FILE_FIELD_EDITOR__OBJECT = FIELD_EDITOR_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>File Field Editor</em>'
+	 * class. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int FILE_FIELD_EDITOR_FEATURE_COUNT = FIELD_EDITOR_FEATURE_COUNT + 2;
+
+	/**
+	 * The meta object id for the '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.DirectoryFieldEditorImpl
+	 * <em>Directory Field Editor</em>}' class. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.DirectoryFieldEditorImpl
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPackageImpl#getDirectoryFieldEditor()
+	 * @generated
+	 */
+	int DIRECTORY_FIELD_EDITOR = 13;
+
+	/**
+	 * The feature id for the '<em><b>Element Id</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int DIRECTORY_FIELD_EDITOR__ELEMENT_ID = FIELD_EDITOR__ELEMENT_ID;
+
+	/**
+	 * The feature id for the '<em><b>Persisted State</b></em>' map. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int DIRECTORY_FIELD_EDITOR__PERSISTED_STATE = FIELD_EDITOR__PERSISTED_STATE;
+
+	/**
+	 * The feature id for the '<em><b>Tags</b></em>' attribute list. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int DIRECTORY_FIELD_EDITOR__TAGS = FIELD_EDITOR__TAGS;
+
+	/**
+	 * The feature id for the '<em><b>Contributor URI</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int DIRECTORY_FIELD_EDITOR__CONTRIBUTOR_URI = FIELD_EDITOR__CONTRIBUTOR_URI;
+
+	/**
+	 * The feature id for the '<em><b>Transient Data</b></em>' map. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int DIRECTORY_FIELD_EDITOR__TRANSIENT_DATA = FIELD_EDITOR__TRANSIENT_DATA;
+
+	/**
+	 * The feature id for the '<em><b>Widget</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int DIRECTORY_FIELD_EDITOR__WIDGET = FIELD_EDITOR__WIDGET;
+
+	/**
+	 * The feature id for the '<em><b>Renderer</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int DIRECTORY_FIELD_EDITOR__RENDERER = FIELD_EDITOR__RENDERER;
+
+	/**
+	 * The feature id for the '<em><b>To Be Rendered</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int DIRECTORY_FIELD_EDITOR__TO_BE_RENDERED = FIELD_EDITOR__TO_BE_RENDERED;
+
+	/**
+	 * The feature id for the '<em><b>On Top</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int DIRECTORY_FIELD_EDITOR__ON_TOP = FIELD_EDITOR__ON_TOP;
+
+	/**
+	 * The feature id for the '<em><b>Visible</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int DIRECTORY_FIELD_EDITOR__VISIBLE = FIELD_EDITOR__VISIBLE;
+
+	/**
+	 * The feature id for the '<em><b>Parent</b></em>' container reference. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int DIRECTORY_FIELD_EDITOR__PARENT = FIELD_EDITOR__PARENT;
+
+	/**
+	 * The feature id for the '<em><b>Container Data</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int DIRECTORY_FIELD_EDITOR__CONTAINER_DATA = FIELD_EDITOR__CONTAINER_DATA;
+
+	/**
+	 * The feature id for the '<em><b>Cur Shared Ref</b></em>' reference. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int DIRECTORY_FIELD_EDITOR__CUR_SHARED_REF = FIELD_EDITOR__CUR_SHARED_REF;
+
+	/**
+	 * The feature id for the '<em><b>Visible When</b></em>' containment
+	 * reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int DIRECTORY_FIELD_EDITOR__VISIBLE_WHEN = FIELD_EDITOR__VISIBLE_WHEN;
+
+	/**
+	 * The feature id for the '<em><b>Accessibility Phrase</b></em>' attribute.
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int DIRECTORY_FIELD_EDITOR__ACCESSIBILITY_PHRASE = FIELD_EDITOR__ACCESSIBILITY_PHRASE;
+
+	/**
+	 * The feature id for the '<em><b>Localized Accessibility Phrase</b></em>'
+	 * attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int DIRECTORY_FIELD_EDITOR__LOCALIZED_ACCESSIBILITY_PHRASE = FIELD_EDITOR__LOCALIZED_ACCESSIBILITY_PHRASE;
+
+	/**
+	 * The feature id for the '<em><b>Label</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int DIRECTORY_FIELD_EDITOR__LABEL = FIELD_EDITOR__LABEL;
+
+	/**
+	 * The feature id for the '<em><b>Preference Name</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int DIRECTORY_FIELD_EDITOR__PREFERENCE_NAME = FIELD_EDITOR__PREFERENCE_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Default Value</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int DIRECTORY_FIELD_EDITOR__DEFAULT_VALUE = FIELD_EDITOR__DEFAULT_VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Default Value Typed</b></em>' attribute.
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int DIRECTORY_FIELD_EDITOR__DEFAULT_VALUE_TYPED = FIELD_EDITOR__DEFAULT_VALUE_TYPED;
+
+	/**
+	 * The feature id for the '<em><b>Bundle</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int DIRECTORY_FIELD_EDITOR__BUNDLE = FIELD_EDITOR__BUNDLE;
+
+	/**
+	 * The feature id for the '<em><b>Preferences</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int DIRECTORY_FIELD_EDITOR__PREFERENCES = FIELD_EDITOR__PREFERENCES;
+
+	/**
+	 * The feature id for the '<em><b>Equinox Path</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int DIRECTORY_FIELD_EDITOR__EQUINOX_PATH = FIELD_EDITOR__EQUINOX_PATH;
+
+	/**
+	 * The feature id for the '<em><b>Contribution URI</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int DIRECTORY_FIELD_EDITOR__CONTRIBUTION_URI = FIELD_EDITOR_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Object</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int DIRECTORY_FIELD_EDITOR__OBJECT = FIELD_EDITOR_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Directory Field Editor</em>
+	 * ' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int DIRECTORY_FIELD_EDITOR_FEATURE_COUNT = FIELD_EDITOR_FEATURE_COUNT + 2;
+
+	/**
+	 * The meta object id for the '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.ListCrud
+	 * <em>List Crud</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.ListCrud
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPackageImpl#getListCrud()
+	 * @generated
+	 */
+	int LIST_CRUD = 14;
+
+	/**
+	 * The number of structural features of the '<em>List Crud</em>' class. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int LIST_CRUD_FEATURE_COUNT = 0;
+
+	/**
+	 * The meta object id for the '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.ListFoldImpl
+	 * <em>List Fold</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.ListFoldImpl
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPackageImpl#getListFold()
+	 * @generated
+	 */
+	int LIST_FOLD = 15;
+
+	/**
+	 * The number of structural features of the '<em>List Fold</em>' class. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int LIST_FOLD_FEATURE_COUNT = 0;
+
+	/**
+	 * The meta object id for the '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.BooleanFieldStyle
+	 * <em>Boolean Field Style</em>}' enum. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.BooleanFieldStyle
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPackageImpl#getBooleanFieldStyle()
+	 * @generated
+	 */
+	int BOOLEAN_FIELD_STYLE = 16;
+
+	/**
+	 * The meta object id for the '<em>String Buffer</em>' data type. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see java.lang.StringBuffer
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPackageImpl#getStringBuffer()
+	 * @generated
+	 */
+	int STRING_BUFFER = 17;
+
+	/**
+	 * The meta object id for the '<em>Preferences</em>' data type. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see org.osgi.service.prefs.Preferences
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPackageImpl#getPreferences()
+	 * @generated
+	 */
+	int PREFERENCES = 18;
+
+	/**
+	 * Returns the meta object for class '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory
+	 * <em>Category</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for class '<em>Category</em>'.
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory
+	 * @generated
+	 */
+	EClass getPreferencesCategory();
+
+	/**
+	 * Returns the meta object for the attribute '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory#getName
+	 * <em>Name</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the attribute '<em>Name</em>'.
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory#getName()
+	 * @see #getPreferencesCategory()
+	 * @generated
+	 */
+	EAttribute getPreferencesCategory_Name();
+
+	/**
+	 * Returns the meta object for the containment reference list '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory#getChildCategories
+	 * <em>Child Categories</em>}'. <!-- begin-user-doc --> <!-- end-user-doc
+	 * -->
+	 * 
+	 * @return the meta object for the containment reference list '
+	 *         <em>Child Categories</em>'.
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory#getChildCategories()
+	 * @see #getPreferencesCategory()
+	 * @generated
+	 */
+	EReference getPreferencesCategory_ChildCategories();
+
+	/**
+	 * Returns the meta object for the container reference '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory#getParentCategory
+	 * <em>Parent Category</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the container reference '
+	 *         <em>Parent Category</em>'.
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory#getParentCategory()
+	 * @see #getPreferencesCategory()
+	 * @generated
+	 */
+	EReference getPreferencesCategory_ParentCategory();
+
+	/**
+	 * Returns the meta object for the containment reference '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory#getPage
+	 * <em>Page</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the containment reference '<em>Page</em>'.
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory#getPage()
+	 * @see #getPreferencesCategory()
+	 * @generated
+	 */
+	EReference getPreferencesCategory_Page();
+
+	/**
+	 * Returns the meta object for the attribute '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory#getId
+	 * <em>Id</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the attribute '<em>Id</em>'.
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory#getId()
+	 * @see #getPreferencesCategory()
+	 * @generated
+	 */
+	EAttribute getPreferencesCategory_Id();
+
+	/**
+	 * Returns the meta object for class '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesPage
+	 * <em>Page</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for class '<em>Page</em>'.
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesPage
+	 * @generated
+	 */
+	EClass getPreferencesPage();
+
+	/**
+	 * Returns the meta object for the container reference '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesPage#getCategory
+	 * <em>Category</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the container reference '<em>Category</em>'.
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesPage#getCategory()
+	 * @see #getPreferencesPage()
+	 * @generated
+	 */
+	EReference getPreferencesPage_Category();
+
+	/**
+	 * Returns the meta object for the attribute '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesPage#getDescription
+	 * <em>Description</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the attribute '<em>Description</em>'.
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesPage#getDescription()
+	 * @see #getPreferencesPage()
+	 * @generated
+	 */
+	EAttribute getPreferencesPage_Description();
+
+	/**
+	 * Returns the meta object for class '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor
+	 * <em>Field Editor</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for class '<em>Field Editor</em>'.
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor
+	 * @generated
+	 */
+	EClass getFieldEditor();
+
+	/**
+	 * Returns the meta object for the attribute '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor#getLabel
+	 * <em>Label</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the attribute '<em>Label</em>'.
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor#getLabel()
+	 * @see #getFieldEditor()
+	 * @generated
+	 */
+	EAttribute getFieldEditor_Label();
+
+	/**
+	 * Returns the meta object for the attribute '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor#getPreferenceName
+	 * <em>Preference Name</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the attribute '<em>Preference Name</em>'.
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor#getPreferenceName()
+	 * @see #getFieldEditor()
+	 * @generated
+	 */
+	EAttribute getFieldEditor_PreferenceName();
+
+	/**
+	 * Returns the meta object for the attribute '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor#getDefaultValue
+	 * <em>Default Value</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the attribute '<em>Default Value</em>'.
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor#getDefaultValue()
+	 * @see #getFieldEditor()
+	 * @generated
+	 */
+	EAttribute getFieldEditor_DefaultValue();
+
+	/**
+	 * Returns the meta object for the attribute '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor#getDefaultValueTyped
+	 * <em>Default Value Typed</em>}'. <!-- begin-user-doc --> <!-- end-user-doc
+	 * -->
+	 * 
+	 * @return the meta object for the attribute '<em>Default Value Typed</em>'.
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor#getDefaultValueTyped()
+	 * @see #getFieldEditor()
+	 * @generated
+	 */
+	EAttribute getFieldEditor_DefaultValueTyped();
+
+	/**
+	 * Returns the meta object for the attribute '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor#getBundle
+	 * <em>Bundle</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the attribute '<em>Bundle</em>'.
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor#getBundle()
+	 * @see #getFieldEditor()
+	 * @generated
+	 */
+	EAttribute getFieldEditor_Bundle();
+
+	/**
+	 * Returns the meta object for the attribute '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor#getPreferences
+	 * <em>Preferences</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the attribute '<em>Preferences</em>'.
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor#getPreferences()
+	 * @see #getFieldEditor()
+	 * @generated
+	 */
+	EAttribute getFieldEditor_Preferences();
+
+	/**
+	 * Returns the meta object for the attribute '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor#getEquinoxPath
+	 * <em>Equinox Path</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the attribute '<em>Equinox Path</em>'.
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor#getEquinoxPath()
+	 * @see #getFieldEditor()
+	 * @generated
+	 */
+	EAttribute getFieldEditor_EquinoxPath();
+
+	/**
+	 * Returns the meta object for class '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.BooleanFieldEditor
+	 * <em>Boolean Field Editor</em>}'. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @return the meta object for class '<em>Boolean Field Editor</em>'.
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.BooleanFieldEditor
+	 * @generated
+	 */
+	EClass getBooleanFieldEditor();
+
+	/**
+	 * Returns the meta object for the attribute '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.BooleanFieldEditor#getStyle
+	 * <em>Style</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the attribute '<em>Style</em>'.
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.BooleanFieldEditor#getStyle()
+	 * @see #getBooleanFieldEditor()
+	 * @generated
+	 */
+	EAttribute getBooleanFieldEditor_Style();
+
+	/**
+	 * Returns the meta object for class '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.ListFieldEditor
+	 * <em>List Field Editor</em>}'. <!-- begin-user-doc --> <!-- end-user-doc
+	 * -->
+	 * 
+	 * @return the meta object for class '<em>List Field Editor</em>'.
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.ListFieldEditor
+	 * @generated
+	 */
+	EClass getListFieldEditor();
+
+	/**
+	 * Returns the meta object for the reference list '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.ListFieldEditor#getEntries
+	 * <em>Entries</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the reference list '<em>Entries</em>'.
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.ListFieldEditor#getEntries()
+	 * @see #getListFieldEditor()
+	 * @generated
+	 */
+	EReference getListFieldEditor_Entries();
+
+	/**
+	 * Returns the meta object for class '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.Entry <em>Entry</em>}
+	 * '. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for class '<em>Entry</em>'.
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.Entry
+	 * @generated
+	 */
+	EClass getEntry();
+
+	/**
+	 * Returns the meta object for the attribute '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.Entry#getName
+	 * <em>Name</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the attribute '<em>Name</em>'.
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.Entry#getName()
+	 * @see #getEntry()
+	 * @generated
+	 */
+	EAttribute getEntry_Name();
+
+	/**
+	 * Returns the meta object for the attribute '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.Entry#getValue
+	 * <em>Value</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the attribute '<em>Value</em>'.
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.Entry#getValue()
+	 * @see #getEntry()
+	 * @generated
+	 */
+	EAttribute getEntry_Value();
+
+	/**
+	 * Returns the meta object for class '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.ComboFieldEditor
+	 * <em>Combo Field Editor</em>}'. <!-- begin-user-doc --> <!-- end-user-doc
+	 * -->
+	 * 
+	 * @return the meta object for class '<em>Combo Field Editor</em>'.
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.ComboFieldEditor
+	 * @generated
+	 */
+	EClass getComboFieldEditor();
+
+	/**
+	 * Returns the meta object for class '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.ListEditor
+	 * <em>List Editor</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for class '<em>List Editor</em>'.
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.ListEditor
+	 * @generated
+	 */
+	EClass getListEditor();
+
+	/**
+	 * Returns the meta object for the reference '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.ListEditor#getListCrud
+	 * <em>List Crud</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the reference '<em>List Crud</em>'.
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.ListEditor#getListCrud()
+	 * @see #getListEditor()
+	 * @generated
+	 */
+	EReference getListEditor_ListCrud();
+
+	/**
+	 * Returns the meta object for the reference '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.ListEditor#getListFold
+	 * <em>List Fold</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the reference '<em>List Fold</em>'.
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.ListEditor#getListFold()
+	 * @see #getListEditor()
+	 * @generated
+	 */
+	EReference getListEditor_ListFold();
+
+	/**
+	 * Returns the meta object for class '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.RadioGroupFieldEditor
+	 * <em>Radio Group Field Editor</em>}'. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @return the meta object for class '<em>Radio Group Field Editor</em>'.
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.RadioGroupFieldEditor
+	 * @generated
+	 */
+	EClass getRadioGroupFieldEditor();
+
+	/**
+	 * Returns the meta object for class '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.ScaleFieldEditor
+	 * <em>Scale Field Editor</em>}'. <!-- begin-user-doc --> <!-- end-user-doc
+	 * -->
+	 * 
+	 * @return the meta object for class '<em>Scale Field Editor</em>'.
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.ScaleFieldEditor
+	 * @generated
+	 */
+	EClass getScaleFieldEditor();
+
+	/**
+	 * Returns the meta object for the attribute '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.ScaleFieldEditor#getMinValue
+	 * <em>Min Value</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the attribute '<em>Min Value</em>'.
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.ScaleFieldEditor#getMinValue()
+	 * @see #getScaleFieldEditor()
+	 * @generated
+	 */
+	EAttribute getScaleFieldEditor_MinValue();
+
+	/**
+	 * Returns the meta object for the attribute '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.ScaleFieldEditor#getMaxValue
+	 * <em>Max Value</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the attribute '<em>Max Value</em>'.
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.ScaleFieldEditor#getMaxValue()
+	 * @see #getScaleFieldEditor()
+	 * @generated
+	 */
+	EAttribute getScaleFieldEditor_MaxValue();
+
+	/**
+	 * Returns the meta object for the attribute '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.ScaleFieldEditor#getIncrementValue
+	 * <em>Increment Value</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the attribute '<em>Increment Value</em>'.
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.ScaleFieldEditor#getIncrementValue()
+	 * @see #getScaleFieldEditor()
+	 * @generated
+	 */
+	EAttribute getScaleFieldEditor_IncrementValue();
+
+	/**
+	 * Returns the meta object for class '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.StringFieldEditor
+	 * <em>String Field Editor</em>}'. <!-- begin-user-doc --> <!-- end-user-doc
+	 * -->
+	 * 
+	 * @return the meta object for class '<em>String Field Editor</em>'.
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.StringFieldEditor
+	 * @generated
+	 */
+	EClass getStringFieldEditor();
+
+	/**
+	 * Returns the meta object for the attribute '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.StringFieldEditor#getMaxLength
+	 * <em>Max Length</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the attribute '<em>Max Length</em>'.
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.StringFieldEditor#getMaxLength()
+	 * @see #getStringFieldEditor()
+	 * @generated
+	 */
+	EAttribute getStringFieldEditor_MaxLength();
+
+	/**
+	 * Returns the meta object for class '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.IntegerFieldEditor
+	 * <em>Integer Field Editor</em>}'. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @return the meta object for class '<em>Integer Field Editor</em>'.
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.IntegerFieldEditor
+	 * @generated
+	 */
+	EClass getIntegerFieldEditor();
+
+	/**
+	 * Returns the meta object for the attribute '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.IntegerFieldEditor#getMinValidValue
+	 * <em>Min Valid Value</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the attribute '<em>Min Valid Value</em>'.
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.IntegerFieldEditor#getMinValidValue()
+	 * @see #getIntegerFieldEditor()
+	 * @generated
+	 */
+	EAttribute getIntegerFieldEditor_MinValidValue();
+
+	/**
+	 * Returns the meta object for the attribute '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.IntegerFieldEditor#getMaxValidValue
+	 * <em>Max Valid Value</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the attribute '<em>Max Valid Value</em>'.
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.IntegerFieldEditor#getMaxValidValue()
+	 * @see #getIntegerFieldEditor()
+	 * @generated
+	 */
+	EAttribute getIntegerFieldEditor_MaxValidValue();
+
+	/**
+	 * Returns the meta object for class '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.FileFieldEditor
+	 * <em>File Field Editor</em>}'. <!-- begin-user-doc --> <!-- end-user-doc
+	 * -->
+	 * 
+	 * @return the meta object for class '<em>File Field Editor</em>'.
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.FileFieldEditor
+	 * @generated
+	 */
+	EClass getFileFieldEditor();
+
+	/**
+	 * Returns the meta object for class '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.DirectoryFieldEditor
+	 * <em>Directory Field Editor</em>}'. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @return the meta object for class '<em>Directory Field Editor</em>'.
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.DirectoryFieldEditor
+	 * @generated
+	 */
+	EClass getDirectoryFieldEditor();
+
+	/**
+	 * Returns the meta object for class '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.ListCrud
+	 * <em>List Crud</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for class '<em>List Crud</em>'.
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.ListCrud
+	 * @generated
+	 */
+	EClass getListCrud();
+
+	/**
+	 * Returns the meta object for class '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.ListFold
+	 * <em>List Fold</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for class '<em>List Fold</em>'.
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.ListFold
+	 * @generated
+	 */
+	EClass getListFold();
+
+	/**
+	 * Returns the meta object for enum '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.BooleanFieldStyle
+	 * <em>Boolean Field Style</em>}'. <!-- begin-user-doc --> <!-- end-user-doc
+	 * -->
+	 * 
+	 * @return the meta object for enum '<em>Boolean Field Style</em>'.
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.BooleanFieldStyle
+	 * @generated
+	 */
+	EEnum getBooleanFieldStyle();
+
+	/**
+	 * Returns the meta object for data type '{@link java.lang.StringBuffer
+	 * <em>String Buffer</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for data type '<em>String Buffer</em>'.
+	 * @see java.lang.StringBuffer
+	 * @model instanceClass="java.lang.StringBuffer"
+	 * @generated
+	 */
+	EDataType getStringBuffer();
+
+	/**
+	 * Returns the meta object for data type '
+	 * {@link org.osgi.service.prefs.Preferences <em>Preferences</em>}'. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for data type '<em>Preferences</em>'.
+	 * @see org.osgi.service.prefs.Preferences
+	 * @model instanceClass="org.osgi.service.prefs.Preferences"
+	 * @generated
+	 */
+	EDataType getPreferences();
+
+	/**
+	 * Returns the factory that creates the instances of the model. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the factory that creates the instances of the model.
+	 * @generated
+	 */
+	PreferencesFactory getPreferencesFactory();
+
+	/**
+	 * <!-- begin-user-doc --> Defines literals for the meta objects that
+	 * represent
+	 * <ul>
+	 * <li>each class,</li>
+	 * <li>each feature of each class,</li>
+	 * <li>each operation of each class,</li>
+	 * <li>each enum,</li>
+	 * <li>and each data type</li>
+	 * </ul>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	interface Literals {
+		/**
+		 * The meta object literal for the '
+		 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesCategoryImpl
+		 * <em>Category</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc
+		 * -->
+		 * 
+		 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesCategoryImpl
+		 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPackageImpl#getPreferencesCategory()
+		 * @generated
+		 */
+		EClass PREFERENCES_CATEGORY = eINSTANCE.getPreferencesCategory();
+
+		/**
+		 * The meta object literal for the '<em><b>Name</b></em>' attribute
+		 * feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EAttribute PREFERENCES_CATEGORY__NAME = eINSTANCE
+				.getPreferencesCategory_Name();
+
+		/**
+		 * The meta object literal for the '<em><b>Child Categories</b></em>'
+		 * containment reference list feature. <!-- begin-user-doc --> <!--
+		 * end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EReference PREFERENCES_CATEGORY__CHILD_CATEGORIES = eINSTANCE
+				.getPreferencesCategory_ChildCategories();
+
+		/**
+		 * The meta object literal for the '<em><b>Parent Category</b></em>'
+		 * container reference feature. <!-- begin-user-doc --> <!--
+		 * end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EReference PREFERENCES_CATEGORY__PARENT_CATEGORY = eINSTANCE
+				.getPreferencesCategory_ParentCategory();
+
+		/**
+		 * The meta object literal for the '<em><b>Page</b></em>' containment
+		 * reference feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EReference PREFERENCES_CATEGORY__PAGE = eINSTANCE
+				.getPreferencesCategory_Page();
+
+		/**
+		 * The meta object literal for the '<em><b>Id</b></em>' attribute
+		 * feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EAttribute PREFERENCES_CATEGORY__ID = eINSTANCE
+				.getPreferencesCategory_Id();
+
+		/**
+		 * The meta object literal for the '
+		 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPageImpl
+		 * <em>Page</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPageImpl
+		 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPackageImpl#getPreferencesPage()
+		 * @generated
+		 */
+		EClass PREFERENCES_PAGE = eINSTANCE.getPreferencesPage();
+
+		/**
+		 * The meta object literal for the '<em><b>Category</b></em>' container
+		 * reference feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EReference PREFERENCES_PAGE__CATEGORY = eINSTANCE
+				.getPreferencesPage_Category();
+
+		/**
+		 * The meta object literal for the '<em><b>Description</b></em>'
+		 * attribute feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EAttribute PREFERENCES_PAGE__DESCRIPTION = eINSTANCE
+				.getPreferencesPage_Description();
+
+		/**
+		 * The meta object literal for the '
+		 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.FieldEditorImpl
+		 * <em>Field Editor</em>}' class. <!-- begin-user-doc --> <!--
+		 * end-user-doc -->
+		 * 
+		 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.FieldEditorImpl
+		 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPackageImpl#getFieldEditor()
+		 * @generated
+		 */
+		EClass FIELD_EDITOR = eINSTANCE.getFieldEditor();
+
+		/**
+		 * The meta object literal for the '<em><b>Label</b></em>' attribute
+		 * feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EAttribute FIELD_EDITOR__LABEL = eINSTANCE.getFieldEditor_Label();
+
+		/**
+		 * The meta object literal for the '<em><b>Preference Name</b></em>'
+		 * attribute feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EAttribute FIELD_EDITOR__PREFERENCE_NAME = eINSTANCE
+				.getFieldEditor_PreferenceName();
+
+		/**
+		 * The meta object literal for the '<em><b>Default Value</b></em>'
+		 * attribute feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EAttribute FIELD_EDITOR__DEFAULT_VALUE = eINSTANCE
+				.getFieldEditor_DefaultValue();
+
+		/**
+		 * The meta object literal for the '<em><b>Default Value Typed</b></em>'
+		 * attribute feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EAttribute FIELD_EDITOR__DEFAULT_VALUE_TYPED = eINSTANCE
+				.getFieldEditor_DefaultValueTyped();
+
+		/**
+		 * The meta object literal for the '<em><b>Bundle</b></em>' attribute
+		 * feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EAttribute FIELD_EDITOR__BUNDLE = eINSTANCE.getFieldEditor_Bundle();
+
+		/**
+		 * The meta object literal for the '<em><b>Preferences</b></em>'
+		 * attribute feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EAttribute FIELD_EDITOR__PREFERENCES = eINSTANCE
+				.getFieldEditor_Preferences();
+
+		/**
+		 * The meta object literal for the '<em><b>Equinox Path</b></em>'
+		 * attribute feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EAttribute FIELD_EDITOR__EQUINOX_PATH = eINSTANCE
+				.getFieldEditor_EquinoxPath();
+
+		/**
+		 * The meta object literal for the '
+		 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.BooleanFieldEditorImpl
+		 * <em>Boolean Field Editor</em>}' class. <!-- begin-user-doc --> <!--
+		 * end-user-doc -->
+		 * 
+		 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.BooleanFieldEditorImpl
+		 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPackageImpl#getBooleanFieldEditor()
+		 * @generated
+		 */
+		EClass BOOLEAN_FIELD_EDITOR = eINSTANCE.getBooleanFieldEditor();
+
+		/**
+		 * The meta object literal for the '<em><b>Style</b></em>' attribute
+		 * feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EAttribute BOOLEAN_FIELD_EDITOR__STYLE = eINSTANCE
+				.getBooleanFieldEditor_Style();
+
+		/**
+		 * The meta object literal for the '
+		 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.ListFieldEditorImpl
+		 * <em>List Field Editor</em>}' class. <!-- begin-user-doc --> <!--
+		 * end-user-doc -->
+		 * 
+		 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.ListFieldEditorImpl
+		 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPackageImpl#getListFieldEditor()
+		 * @generated
+		 */
+		EClass LIST_FIELD_EDITOR = eINSTANCE.getListFieldEditor();
+
+		/**
+		 * The meta object literal for the '<em><b>Entries</b></em>' reference
+		 * list feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EReference LIST_FIELD_EDITOR__ENTRIES = eINSTANCE
+				.getListFieldEditor_Entries();
+
+		/**
+		 * The meta object literal for the '
+		 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.EntryImpl
+		 * <em>Entry</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.EntryImpl
+		 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPackageImpl#getEntry()
+		 * @generated
+		 */
+		EClass ENTRY = eINSTANCE.getEntry();
+
+		/**
+		 * The meta object literal for the '<em><b>Name</b></em>' attribute
+		 * feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EAttribute ENTRY__NAME = eINSTANCE.getEntry_Name();
+
+		/**
+		 * The meta object literal for the '<em><b>Value</b></em>' attribute
+		 * feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EAttribute ENTRY__VALUE = eINSTANCE.getEntry_Value();
+
+		/**
+		 * The meta object literal for the '
+		 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.ComboFieldEditorImpl
+		 * <em>Combo Field Editor</em>}' class. <!-- begin-user-doc --> <!--
+		 * end-user-doc -->
+		 * 
+		 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.ComboFieldEditorImpl
+		 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPackageImpl#getComboFieldEditor()
+		 * @generated
+		 */
+		EClass COMBO_FIELD_EDITOR = eINSTANCE.getComboFieldEditor();
+
+		/**
+		 * The meta object literal for the '
+		 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.ListEditorImpl
+		 * <em>List Editor</em>}' class. <!-- begin-user-doc --> <!--
+		 * end-user-doc -->
+		 * 
+		 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.ListEditorImpl
+		 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPackageImpl#getListEditor()
+		 * @generated
+		 */
+		EClass LIST_EDITOR = eINSTANCE.getListEditor();
+
+		/**
+		 * The meta object literal for the '<em><b>List Crud</b></em>' reference
+		 * feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EReference LIST_EDITOR__LIST_CRUD = eINSTANCE.getListEditor_ListCrud();
+
+		/**
+		 * The meta object literal for the '<em><b>List Fold</b></em>' reference
+		 * feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EReference LIST_EDITOR__LIST_FOLD = eINSTANCE.getListEditor_ListFold();
+
+		/**
+		 * The meta object literal for the '
+		 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.RadioGroupFieldEditorImpl
+		 * <em>Radio Group Field Editor</em>}' class. <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * 
+		 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.RadioGroupFieldEditorImpl
+		 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPackageImpl#getRadioGroupFieldEditor()
+		 * @generated
+		 */
+		EClass RADIO_GROUP_FIELD_EDITOR = eINSTANCE.getRadioGroupFieldEditor();
+
+		/**
+		 * The meta object literal for the '
+		 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.ScaleFieldEditorImpl
+		 * <em>Scale Field Editor</em>}' class. <!-- begin-user-doc --> <!--
+		 * end-user-doc -->
+		 * 
+		 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.ScaleFieldEditorImpl
+		 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPackageImpl#getScaleFieldEditor()
+		 * @generated
+		 */
+		EClass SCALE_FIELD_EDITOR = eINSTANCE.getScaleFieldEditor();
+
+		/**
+		 * The meta object literal for the '<em><b>Min Value</b></em>' attribute
+		 * feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EAttribute SCALE_FIELD_EDITOR__MIN_VALUE = eINSTANCE
+				.getScaleFieldEditor_MinValue();
+
+		/**
+		 * The meta object literal for the '<em><b>Max Value</b></em>' attribute
+		 * feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EAttribute SCALE_FIELD_EDITOR__MAX_VALUE = eINSTANCE
+				.getScaleFieldEditor_MaxValue();
+
+		/**
+		 * The meta object literal for the '<em><b>Increment Value</b></em>'
+		 * attribute feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EAttribute SCALE_FIELD_EDITOR__INCREMENT_VALUE = eINSTANCE
+				.getScaleFieldEditor_IncrementValue();
+
+		/**
+		 * The meta object literal for the '
+		 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.StringFieldEditorImpl
+		 * <em>String Field Editor</em>}' class. <!-- begin-user-doc --> <!--
+		 * end-user-doc -->
+		 * 
+		 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.StringFieldEditorImpl
+		 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPackageImpl#getStringFieldEditor()
+		 * @generated
+		 */
+		EClass STRING_FIELD_EDITOR = eINSTANCE.getStringFieldEditor();
+
+		/**
+		 * The meta object literal for the '<em><b>Max Length</b></em>'
+		 * attribute feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EAttribute STRING_FIELD_EDITOR__MAX_LENGTH = eINSTANCE
+				.getStringFieldEditor_MaxLength();
+
+		/**
+		 * The meta object literal for the '
+		 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.IntegerFieldEditorImpl
+		 * <em>Integer Field Editor</em>}' class. <!-- begin-user-doc --> <!--
+		 * end-user-doc -->
+		 * 
+		 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.IntegerFieldEditorImpl
+		 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPackageImpl#getIntegerFieldEditor()
+		 * @generated
+		 */
+		EClass INTEGER_FIELD_EDITOR = eINSTANCE.getIntegerFieldEditor();
+
+		/**
+		 * The meta object literal for the '<em><b>Min Valid Value</b></em>'
+		 * attribute feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EAttribute INTEGER_FIELD_EDITOR__MIN_VALID_VALUE = eINSTANCE
+				.getIntegerFieldEditor_MinValidValue();
+
+		/**
+		 * The meta object literal for the '<em><b>Max Valid Value</b></em>'
+		 * attribute feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EAttribute INTEGER_FIELD_EDITOR__MAX_VALID_VALUE = eINSTANCE
+				.getIntegerFieldEditor_MaxValidValue();
+
+		/**
+		 * The meta object literal for the '
+		 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.FileFieldEditorImpl
+		 * <em>File Field Editor</em>}' class. <!-- begin-user-doc --> <!--
+		 * end-user-doc -->
+		 * 
+		 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.FileFieldEditorImpl
+		 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPackageImpl#getFileFieldEditor()
+		 * @generated
+		 */
+		EClass FILE_FIELD_EDITOR = eINSTANCE.getFileFieldEditor();
+
+		/**
+		 * The meta object literal for the '
+		 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.DirectoryFieldEditorImpl
+		 * <em>Directory Field Editor</em>}' class. <!-- begin-user-doc --> <!--
+		 * end-user-doc -->
+		 * 
+		 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.DirectoryFieldEditorImpl
+		 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPackageImpl#getDirectoryFieldEditor()
+		 * @generated
+		 */
+		EClass DIRECTORY_FIELD_EDITOR = eINSTANCE.getDirectoryFieldEditor();
+
+		/**
+		 * The meta object literal for the '
+		 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.ListCrud
+		 * <em>List Crud</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc
+		 * -->
+		 * 
+		 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.ListCrud
+		 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPackageImpl#getListCrud()
+		 * @generated
+		 */
+		EClass LIST_CRUD = eINSTANCE.getListCrud();
+
+		/**
+		 * The meta object literal for the '
+		 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.ListFoldImpl
+		 * <em>List Fold</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc
+		 * -->
+		 * 
+		 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.ListFoldImpl
+		 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPackageImpl#getListFold()
+		 * @generated
+		 */
+		EClass LIST_FOLD = eINSTANCE.getListFold();
+
+		/**
+		 * The meta object literal for the '
+		 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.BooleanFieldStyle
+		 * <em>Boolean Field Style</em>}' enum. <!-- begin-user-doc --> <!--
+		 * end-user-doc -->
+		 * 
+		 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.BooleanFieldStyle
+		 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPackageImpl#getBooleanFieldStyle()
+		 * @generated
+		 */
+		EEnum BOOLEAN_FIELD_STYLE = eINSTANCE.getBooleanFieldStyle();
+
+		/**
+		 * The meta object literal for the '<em>String Buffer</em>' data type.
+		 * <!-- begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @see java.lang.StringBuffer
+		 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPackageImpl#getStringBuffer()
+		 * @generated
+		 */
+		EDataType STRING_BUFFER = eINSTANCE.getStringBuffer();
+
+		/**
+		 * The meta object literal for the '<em>Preferences</em>' data type.
+		 * <!-- begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @see org.osgi.service.prefs.Preferences
+		 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPackageImpl#getPreferences()
+		 * @generated
+		 */
+		EDataType PREFERENCES = eINSTANCE.getPreferences();
+
+	}
+
+} // PreferencesPackage
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/util/PreferencesAdapterFactory.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/util/PreferencesAdapterFactory.java
new file mode 100644
index 0000000..0e8196d
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/util/PreferencesAdapterFactory.java
@@ -0,0 +1,558 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model.util;
+
+import org.eclipse.e4.ui.model.application.MApplicationElement;
+import org.eclipse.e4.ui.model.application.MContribution;
+
+import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+import org.eclipse.e4.ui.model.application.ui.MLocalizable;
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.*;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage;
+
+/**
+ * <!-- begin-user-doc --> The <b>Adapter Factory</b> for the model. It provides
+ * an adapter <code>createXXX</code> method for each class of the model. <!--
+ * end-user-doc -->
+ * 
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage
+ * @generated
+ */
+public class PreferencesAdapterFactory extends AdapterFactoryImpl {
+	/**
+	 * The cached model package. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected static PreferencesPackage modelPackage;
+
+	/**
+	 * Creates an instance of the adapter factory. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public PreferencesAdapterFactory() {
+		if (modelPackage == null) {
+			modelPackage = PreferencesPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Returns whether this factory is applicable for the type of the object.
+	 * <!-- begin-user-doc --> This implementation returns <code>true</code> if
+	 * the object is either the model's package or is an instance object of the
+	 * model. <!-- end-user-doc -->
+	 * 
+	 * @return whether this factory is applicable for the type of the object.
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object object) {
+		if (object == modelPackage) {
+			return true;
+		}
+		if (object instanceof EObject) {
+			return ((EObject) object).eClass().getEPackage() == modelPackage;
+		}
+		return false;
+	}
+
+	/**
+	 * The switch that delegates to the <code>createXXX</code> methods. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected PreferencesSwitch<Adapter> modelSwitch = new PreferencesSwitch<Adapter>() {
+		@Override
+		public Adapter casePreferencesCategory(PreferencesCategory object) {
+			return createPreferencesCategoryAdapter();
+		}
+
+		@Override
+		public Adapter casePreferencesPage(PreferencesPage object) {
+			return createPreferencesPageAdapter();
+		}
+
+		@Override
+		public <T> Adapter caseFieldEditor(FieldEditor<T> object) {
+			return createFieldEditorAdapter();
+		}
+
+		@Override
+		public Adapter caseBooleanFieldEditor(BooleanFieldEditor object) {
+			return createBooleanFieldEditorAdapter();
+		}
+
+		@Override
+		public Adapter caseListFieldEditor(ListFieldEditor object) {
+			return createListFieldEditorAdapter();
+		}
+
+		@Override
+		public Adapter caseEntry(Entry object) {
+			return createEntryAdapter();
+		}
+
+		@Override
+		public Adapter caseComboFieldEditor(ComboFieldEditor object) {
+			return createComboFieldEditorAdapter();
+		}
+
+		@Override
+		public Adapter caseListEditor(ListEditor object) {
+			return createListEditorAdapter();
+		}
+
+		@Override
+		public Adapter caseRadioGroupFieldEditor(RadioGroupFieldEditor object) {
+			return createRadioGroupFieldEditorAdapter();
+		}
+
+		@Override
+		public Adapter caseScaleFieldEditor(ScaleFieldEditor object) {
+			return createScaleFieldEditorAdapter();
+		}
+
+		@Override
+		public Adapter caseStringFieldEditor(StringFieldEditor object) {
+			return createStringFieldEditorAdapter();
+		}
+
+		@Override
+		public Adapter caseIntegerFieldEditor(IntegerFieldEditor object) {
+			return createIntegerFieldEditorAdapter();
+		}
+
+		@Override
+		public Adapter caseFileFieldEditor(FileFieldEditor object) {
+			return createFileFieldEditorAdapter();
+		}
+
+		@Override
+		public Adapter caseDirectoryFieldEditor(DirectoryFieldEditor object) {
+			return createDirectoryFieldEditorAdapter();
+		}
+
+		@Override
+		public Adapter caseListCrud(ListCrud object) {
+			return createListCrudAdapter();
+		}
+
+		@Override
+		public Adapter caseListFold(ListFold object) {
+			return createListFoldAdapter();
+		}
+
+		@Override
+		public Adapter caseApplicationElement(MApplicationElement object) {
+			return createApplicationElementAdapter();
+		}
+
+		@Override
+		public Adapter caseLocalizable(MLocalizable object) {
+			return createLocalizableAdapter();
+		}
+
+		@Override
+		public Adapter caseUIElement(MUIElement object) {
+			return createUIElementAdapter();
+		}
+
+		@Override
+		public <T extends MUIElement> Adapter caseElementContainer(
+				MElementContainer<T> object) {
+			return createElementContainerAdapter();
+		}
+
+		@Override
+		public Adapter caseContribution(MContribution object) {
+			return createContributionAdapter();
+		}
+
+		@Override
+		public Adapter defaultCase(EObject object) {
+			return createEObjectAdapter();
+		}
+	};
+
+	/**
+	 * Creates an adapter for the <code>target</code>. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @param target
+	 *            the object to adapt.
+	 * @return the adapter for the <code>target</code>.
+	 * @generated
+	 */
+	@Override
+	public Adapter createAdapter(Notifier target) {
+		return modelSwitch.doSwitch((EObject) target);
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory
+	 * <em>Category</em>}'. <!-- begin-user-doc --> This default implementation
+	 * returns null so that we can easily ignore cases; it's useful to ignore a
+	 * case when inheritance will catch all the cases anyway. <!-- end-user-doc
+	 * -->
+	 * 
+	 * @return the new adapter.
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory
+	 * @generated
+	 */
+	public Adapter createPreferencesCategoryAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesPage
+	 * <em>Page</em>}'. <!-- begin-user-doc --> This default implementation
+	 * returns null so that we can easily ignore cases; it's useful to ignore a
+	 * case when inheritance will catch all the cases anyway. <!-- end-user-doc
+	 * -->
+	 * 
+	 * @return the new adapter.
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesPage
+	 * @generated
+	 */
+	public Adapter createPreferencesPageAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor
+	 * <em>Field Editor</em>}'. <!-- begin-user-doc --> This default
+	 * implementation returns null so that we can easily ignore cases; it's
+	 * useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the new adapter.
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor
+	 * @generated
+	 */
+	public Adapter createFieldEditorAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.BooleanFieldEditor
+	 * <em>Boolean Field Editor</em>}'. <!-- begin-user-doc --> This default
+	 * implementation returns null so that we can easily ignore cases; it's
+	 * useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the new adapter.
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.BooleanFieldEditor
+	 * @generated
+	 */
+	public Adapter createBooleanFieldEditorAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.ListFieldEditor
+	 * <em>List Field Editor</em>}'. <!-- begin-user-doc --> This default
+	 * implementation returns null so that we can easily ignore cases; it's
+	 * useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the new adapter.
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.ListFieldEditor
+	 * @generated
+	 */
+	public Adapter createListFieldEditorAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.Entry <em>Entry</em>}
+	 * '. <!-- begin-user-doc --> This default implementation returns null so
+	 * that we can easily ignore cases; it's useful to ignore a case when
+	 * inheritance will catch all the cases anyway. <!-- end-user-doc -->
+	 * 
+	 * @return the new adapter.
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.Entry
+	 * @generated
+	 */
+	public Adapter createEntryAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.ComboFieldEditor
+	 * <em>Combo Field Editor</em>}'. <!-- begin-user-doc --> This default
+	 * implementation returns null so that we can easily ignore cases; it's
+	 * useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the new adapter.
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.ComboFieldEditor
+	 * @generated
+	 */
+	public Adapter createComboFieldEditorAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.ListEditor
+	 * <em>List Editor</em>}'. <!-- begin-user-doc --> This default
+	 * implementation returns null so that we can easily ignore cases; it's
+	 * useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the new adapter.
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.ListEditor
+	 * @generated
+	 */
+	public Adapter createListEditorAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.RadioGroupFieldEditor
+	 * <em>Radio Group Field Editor</em>}'. <!-- begin-user-doc --> This default
+	 * implementation returns null so that we can easily ignore cases; it's
+	 * useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the new adapter.
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.RadioGroupFieldEditor
+	 * @generated
+	 */
+	public Adapter createRadioGroupFieldEditorAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.ScaleFieldEditor
+	 * <em>Scale Field Editor</em>}'. <!-- begin-user-doc --> This default
+	 * implementation returns null so that we can easily ignore cases; it's
+	 * useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the new adapter.
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.ScaleFieldEditor
+	 * @generated
+	 */
+	public Adapter createScaleFieldEditorAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.StringFieldEditor
+	 * <em>String Field Editor</em>}'. <!-- begin-user-doc --> This default
+	 * implementation returns null so that we can easily ignore cases; it's
+	 * useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the new adapter.
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.StringFieldEditor
+	 * @generated
+	 */
+	public Adapter createStringFieldEditorAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.IntegerFieldEditor
+	 * <em>Integer Field Editor</em>}'. <!-- begin-user-doc --> This default
+	 * implementation returns null so that we can easily ignore cases; it's
+	 * useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the new adapter.
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.IntegerFieldEditor
+	 * @generated
+	 */
+	public Adapter createIntegerFieldEditorAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.FileFieldEditor
+	 * <em>File Field Editor</em>}'. <!-- begin-user-doc --> This default
+	 * implementation returns null so that we can easily ignore cases; it's
+	 * useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the new adapter.
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.FileFieldEditor
+	 * @generated
+	 */
+	public Adapter createFileFieldEditorAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.DirectoryFieldEditor
+	 * <em>Directory Field Editor</em>}'. <!-- begin-user-doc --> This default
+	 * implementation returns null so that we can easily ignore cases; it's
+	 * useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the new adapter.
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.DirectoryFieldEditor
+	 * @generated
+	 */
+	public Adapter createDirectoryFieldEditorAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.ListCrud
+	 * <em>List Crud</em>}'. <!-- begin-user-doc --> This default implementation
+	 * returns null so that we can easily ignore cases; it's useful to ignore a
+	 * case when inheritance will catch all the cases anyway. <!-- end-user-doc
+	 * -->
+	 * 
+	 * @return the new adapter.
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.ListCrud
+	 * @generated
+	 */
+	public Adapter createListCrudAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '
+	 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.ListFold
+	 * <em>List Fold</em>}'. <!-- begin-user-doc --> This default implementation
+	 * returns null so that we can easily ignore cases; it's useful to ignore a
+	 * case when inheritance will catch all the cases anyway. <!-- end-user-doc
+	 * -->
+	 * 
+	 * @return the new adapter.
+	 * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.ListFold
+	 * @generated
+	 */
+	public Adapter createListFoldAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '
+	 * {@link org.eclipse.e4.ui.model.application.MApplicationElement
+	 * <em>Element</em>}'. <!-- begin-user-doc --> This default implementation
+	 * returns null so that we can easily ignore cases; it's useful to ignore a
+	 * case when inheritance will catch all the cases anyway. <!-- end-user-doc
+	 * -->
+	 * 
+	 * @return the new adapter.
+	 * @see org.eclipse.e4.ui.model.application.MApplicationElement
+	 * @generated
+	 */
+	public Adapter createApplicationElementAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '
+	 * {@link org.eclipse.e4.ui.model.application.ui.MLocalizable
+	 * <em>Localizable</em>}'. <!-- begin-user-doc --> This default
+	 * implementation returns null so that we can easily ignore cases; it's
+	 * useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the new adapter.
+	 * @see org.eclipse.e4.ui.model.application.ui.MLocalizable
+	 * @generated
+	 */
+	public Adapter createLocalizableAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '
+	 * {@link org.eclipse.e4.ui.model.application.ui.MUIElement
+	 * <em>UI Element</em>}'. <!-- begin-user-doc --> This default
+	 * implementation returns null so that we can easily ignore cases; it's
+	 * useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the new adapter.
+	 * @see org.eclipse.e4.ui.model.application.ui.MUIElement
+	 * @generated
+	 */
+	public Adapter createUIElementAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '
+	 * {@link org.eclipse.e4.ui.model.application.ui.MElementContainer
+	 * <em>Element Container</em>}'. <!-- begin-user-doc --> This default
+	 * implementation returns null so that we can easily ignore cases; it's
+	 * useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the new adapter.
+	 * @see org.eclipse.e4.ui.model.application.ui.MElementContainer
+	 * @generated
+	 */
+	public Adapter createElementContainerAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '
+	 * {@link org.eclipse.e4.ui.model.application.MContribution
+	 * <em>Contribution</em>}'. <!-- begin-user-doc --> This default
+	 * implementation returns null so that we can easily ignore cases; it's
+	 * useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the new adapter.
+	 * @see org.eclipse.e4.ui.model.application.MContribution
+	 * @generated
+	 */
+	public Adapter createContributionAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for the default case. <!-- begin-user-doc --> This
+	 * default implementation returns null. <!-- end-user-doc -->
+	 * 
+	 * @return the new adapter.
+	 * @generated
+	 */
+	public Adapter createEObjectAdapter() {
+		return null;
+	}
+
+} // PreferencesAdapterFactory
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/util/PreferencesSwitch.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/util/PreferencesSwitch.java
new file mode 100644
index 0000000..b92a367
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/util/PreferencesSwitch.java
@@ -0,0 +1,692 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model.util;
+
+import org.eclipse.e4.ui.model.application.MApplicationElement;
+import org.eclipse.e4.ui.model.application.MContribution;
+
+import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+import org.eclipse.e4.ui.model.application.ui.MLocalizable;
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.util.Switch;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.*;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage;
+
+/**
+ * <!-- begin-user-doc --> The <b>Switch</b> for the model's inheritance
+ * hierarchy. It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object and proceeding up the
+ * inheritance hierarchy until a non-null result is returned, which is the
+ * result of the switch. <!-- end-user-doc -->
+ * 
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage
+ * @generated
+ */
+public class PreferencesSwitch<T1> extends Switch<T1> {
+	/**
+	 * The cached model package <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected static PreferencesPackage modelPackage;
+
+	/**
+	 * Creates an instance of the switch. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public PreferencesSwitch() {
+		if (modelPackage == null) {
+			modelPackage = PreferencesPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Checks whether this is a switch for the given package. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @parameter ePackage the package in question.
+	 * @return whether this is a switch for the given package.
+	 * @generated
+	 */
+	@Override
+	protected boolean isSwitchFor(EPackage ePackage) {
+		return ePackage == modelPackage;
+	}
+
+	/**
+	 * Calls <code>caseXXX</code> for each class of the model until one returns
+	 * a non null result; it yields that result. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @return the first non-null result returned by a <code>caseXXX</code>
+	 *         call.
+	 * @generated
+	 */
+	@Override
+	protected T1 doSwitch(int classifierID, EObject theEObject) {
+		switch (classifierID) {
+		case PreferencesPackage.PREFERENCES_CATEGORY: {
+			PreferencesCategory preferencesCategory = (PreferencesCategory) theEObject;
+			T1 result = casePreferencesCategory(preferencesCategory);
+			if (result == null)
+				result = caseApplicationElement(preferencesCategory);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
+		case PreferencesPackage.PREFERENCES_PAGE: {
+			PreferencesPage preferencesPage = (PreferencesPage) theEObject;
+			T1 result = casePreferencesPage(preferencesPage);
+			if (result == null)
+				result = caseElementContainer(preferencesPage);
+			if (result == null)
+				result = caseContribution(preferencesPage);
+			if (result == null)
+				result = caseUIElement(preferencesPage);
+			if (result == null)
+				result = caseApplicationElement(preferencesPage);
+			if (result == null)
+				result = caseLocalizable(preferencesPage);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
+		case PreferencesPackage.FIELD_EDITOR: {
+			FieldEditor<?> fieldEditor = (FieldEditor<?>) theEObject;
+			T1 result = caseFieldEditor(fieldEditor);
+			if (result == null)
+				result = caseUIElement(fieldEditor);
+			if (result == null)
+				result = caseApplicationElement(fieldEditor);
+			if (result == null)
+				result = caseLocalizable(fieldEditor);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
+		case PreferencesPackage.BOOLEAN_FIELD_EDITOR: {
+			BooleanFieldEditor booleanFieldEditor = (BooleanFieldEditor) theEObject;
+			T1 result = caseBooleanFieldEditor(booleanFieldEditor);
+			if (result == null)
+				result = caseFieldEditor(booleanFieldEditor);
+			if (result == null)
+				result = caseUIElement(booleanFieldEditor);
+			if (result == null)
+				result = caseApplicationElement(booleanFieldEditor);
+			if (result == null)
+				result = caseLocalizable(booleanFieldEditor);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
+		case PreferencesPackage.LIST_FIELD_EDITOR: {
+			ListFieldEditor listFieldEditor = (ListFieldEditor) theEObject;
+			T1 result = caseListFieldEditor(listFieldEditor);
+			if (result == null)
+				result = caseFieldEditor(listFieldEditor);
+			if (result == null)
+				result = caseContribution(listFieldEditor);
+			if (result == null)
+				result = caseUIElement(listFieldEditor);
+			if (result == null)
+				result = caseApplicationElement(listFieldEditor);
+			if (result == null)
+				result = caseLocalizable(listFieldEditor);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
+		case PreferencesPackage.ENTRY: {
+			Entry entry = (Entry) theEObject;
+			T1 result = caseEntry(entry);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
+		case PreferencesPackage.COMBO_FIELD_EDITOR: {
+			ComboFieldEditor comboFieldEditor = (ComboFieldEditor) theEObject;
+			T1 result = caseComboFieldEditor(comboFieldEditor);
+			if (result == null)
+				result = caseListFieldEditor(comboFieldEditor);
+			if (result == null)
+				result = caseFieldEditor(comboFieldEditor);
+			if (result == null)
+				result = caseContribution(comboFieldEditor);
+			if (result == null)
+				result = caseUIElement(comboFieldEditor);
+			if (result == null)
+				result = caseApplicationElement(comboFieldEditor);
+			if (result == null)
+				result = caseLocalizable(comboFieldEditor);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
+		case PreferencesPackage.LIST_EDITOR: {
+			ListEditor listEditor = (ListEditor) theEObject;
+			T1 result = caseListEditor(listEditor);
+			if (result == null)
+				result = caseFieldEditor(listEditor);
+			if (result == null)
+				result = caseContribution(listEditor);
+			if (result == null)
+				result = caseUIElement(listEditor);
+			if (result == null)
+				result = caseApplicationElement(listEditor);
+			if (result == null)
+				result = caseLocalizable(listEditor);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
+		case PreferencesPackage.RADIO_GROUP_FIELD_EDITOR: {
+			RadioGroupFieldEditor radioGroupFieldEditor = (RadioGroupFieldEditor) theEObject;
+			T1 result = caseRadioGroupFieldEditor(radioGroupFieldEditor);
+			if (result == null)
+				result = caseListFieldEditor(radioGroupFieldEditor);
+			if (result == null)
+				result = caseFieldEditor(radioGroupFieldEditor);
+			if (result == null)
+				result = caseContribution(radioGroupFieldEditor);
+			if (result == null)
+				result = caseUIElement(radioGroupFieldEditor);
+			if (result == null)
+				result = caseApplicationElement(radioGroupFieldEditor);
+			if (result == null)
+				result = caseLocalizable(radioGroupFieldEditor);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
+		case PreferencesPackage.SCALE_FIELD_EDITOR: {
+			ScaleFieldEditor scaleFieldEditor = (ScaleFieldEditor) theEObject;
+			T1 result = caseScaleFieldEditor(scaleFieldEditor);
+			if (result == null)
+				result = caseFieldEditor(scaleFieldEditor);
+			if (result == null)
+				result = caseUIElement(scaleFieldEditor);
+			if (result == null)
+				result = caseApplicationElement(scaleFieldEditor);
+			if (result == null)
+				result = caseLocalizable(scaleFieldEditor);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
+		case PreferencesPackage.STRING_FIELD_EDITOR: {
+			StringFieldEditor stringFieldEditor = (StringFieldEditor) theEObject;
+			T1 result = caseStringFieldEditor(stringFieldEditor);
+			if (result == null)
+				result = caseFieldEditor(stringFieldEditor);
+			if (result == null)
+				result = caseUIElement(stringFieldEditor);
+			if (result == null)
+				result = caseApplicationElement(stringFieldEditor);
+			if (result == null)
+				result = caseLocalizable(stringFieldEditor);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
+		case PreferencesPackage.INTEGER_FIELD_EDITOR: {
+			IntegerFieldEditor integerFieldEditor = (IntegerFieldEditor) theEObject;
+			T1 result = caseIntegerFieldEditor(integerFieldEditor);
+			if (result == null)
+				result = caseFieldEditor(integerFieldEditor);
+			if (result == null)
+				result = caseUIElement(integerFieldEditor);
+			if (result == null)
+				result = caseApplicationElement(integerFieldEditor);
+			if (result == null)
+				result = caseLocalizable(integerFieldEditor);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
+		case PreferencesPackage.FILE_FIELD_EDITOR: {
+			FileFieldEditor fileFieldEditor = (FileFieldEditor) theEObject;
+			T1 result = caseFileFieldEditor(fileFieldEditor);
+			if (result == null)
+				result = caseFieldEditor(fileFieldEditor);
+			if (result == null)
+				result = caseContribution(fileFieldEditor);
+			if (result == null)
+				result = caseUIElement(fileFieldEditor);
+			if (result == null)
+				result = caseApplicationElement(fileFieldEditor);
+			if (result == null)
+				result = caseLocalizable(fileFieldEditor);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
+		case PreferencesPackage.DIRECTORY_FIELD_EDITOR: {
+			DirectoryFieldEditor directoryFieldEditor = (DirectoryFieldEditor) theEObject;
+			T1 result = caseDirectoryFieldEditor(directoryFieldEditor);
+			if (result == null)
+				result = caseFieldEditor(directoryFieldEditor);
+			if (result == null)
+				result = caseContribution(directoryFieldEditor);
+			if (result == null)
+				result = caseUIElement(directoryFieldEditor);
+			if (result == null)
+				result = caseApplicationElement(directoryFieldEditor);
+			if (result == null)
+				result = caseLocalizable(directoryFieldEditor);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
+		case PreferencesPackage.LIST_CRUD: {
+			ListCrud listCrud = (ListCrud) theEObject;
+			T1 result = caseListCrud(listCrud);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
+		case PreferencesPackage.LIST_FOLD: {
+			ListFold listFold = (ListFold) theEObject;
+			T1 result = caseListFold(listFold);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
+		default:
+			return defaultCase(theEObject);
+		}
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '
+	 * <em>Category</em>'. <!-- begin-user-doc --> This implementation returns
+	 * null; returning a non-null result will terminate the switch. <!--
+	 * end-user-doc -->
+	 * 
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '
+	 *         <em>Category</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 casePreferencesCategory(PreferencesCategory object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '
+	 * <em>Page</em>'. <!-- begin-user-doc --> This implementation returns null;
+	 * returning a non-null result will terminate the switch. <!-- end-user-doc
+	 * -->
+	 * 
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '
+	 *         <em>Page</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 casePreferencesPage(PreferencesPage object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '
+	 * <em>Field Editor</em>'. <!-- begin-user-doc --> This implementation
+	 * returns null; returning a non-null result will terminate the switch. <!--
+	 * end-user-doc -->
+	 * 
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '
+	 *         <em>Field Editor</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public <T> T1 caseFieldEditor(FieldEditor<T> object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '
+	 * <em>Boolean Field Editor</em>'. <!-- begin-user-doc --> This
+	 * implementation returns null; returning a non-null result will terminate
+	 * the switch. <!-- end-user-doc -->
+	 * 
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '
+	 *         <em>Boolean Field Editor</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseBooleanFieldEditor(BooleanFieldEditor object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '
+	 * <em>List Field Editor</em>'. <!-- begin-user-doc --> This implementation
+	 * returns null; returning a non-null result will terminate the switch. <!--
+	 * end-user-doc -->
+	 * 
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '
+	 *         <em>List Field Editor</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseListFieldEditor(ListFieldEditor object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '
+	 * <em>Entry</em>'. <!-- begin-user-doc --> This implementation returns
+	 * null; returning a non-null result will terminate the switch. <!--
+	 * end-user-doc -->
+	 * 
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '
+	 *         <em>Entry</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseEntry(Entry object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '
+	 * <em>Combo Field Editor</em>'. <!-- begin-user-doc --> This implementation
+	 * returns null; returning a non-null result will terminate the switch. <!--
+	 * end-user-doc -->
+	 * 
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '
+	 *         <em>Combo Field Editor</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseComboFieldEditor(ComboFieldEditor object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '
+	 * <em>List Editor</em>'. <!-- begin-user-doc --> This implementation
+	 * returns null; returning a non-null result will terminate the switch. <!--
+	 * end-user-doc -->
+	 * 
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '
+	 *         <em>List Editor</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseListEditor(ListEditor object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '
+	 * <em>Radio Group Field Editor</em>'. <!-- begin-user-doc --> This
+	 * implementation returns null; returning a non-null result will terminate
+	 * the switch. <!-- end-user-doc -->
+	 * 
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '
+	 *         <em>Radio Group Field Editor</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseRadioGroupFieldEditor(RadioGroupFieldEditor object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '
+	 * <em>Scale Field Editor</em>'. <!-- begin-user-doc --> This implementation
+	 * returns null; returning a non-null result will terminate the switch. <!--
+	 * end-user-doc -->
+	 * 
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '
+	 *         <em>Scale Field Editor</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseScaleFieldEditor(ScaleFieldEditor object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '
+	 * <em>String Field Editor</em>'. <!-- begin-user-doc --> This
+	 * implementation returns null; returning a non-null result will terminate
+	 * the switch. <!-- end-user-doc -->
+	 * 
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '
+	 *         <em>String Field Editor</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseStringFieldEditor(StringFieldEditor object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '
+	 * <em>Integer Field Editor</em>'. <!-- begin-user-doc --> This
+	 * implementation returns null; returning a non-null result will terminate
+	 * the switch. <!-- end-user-doc -->
+	 * 
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '
+	 *         <em>Integer Field Editor</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseIntegerFieldEditor(IntegerFieldEditor object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '
+	 * <em>File Field Editor</em>'. <!-- begin-user-doc --> This implementation
+	 * returns null; returning a non-null result will terminate the switch. <!--
+	 * end-user-doc -->
+	 * 
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '
+	 *         <em>File Field Editor</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseFileFieldEditor(FileFieldEditor object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '
+	 * <em>Directory Field Editor</em>'. <!-- begin-user-doc --> This
+	 * implementation returns null; returning a non-null result will terminate
+	 * the switch. <!-- end-user-doc -->
+	 * 
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '
+	 *         <em>Directory Field Editor</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseDirectoryFieldEditor(DirectoryFieldEditor object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '
+	 * <em>List Crud</em>'. <!-- begin-user-doc --> This implementation returns
+	 * null; returning a non-null result will terminate the switch. <!--
+	 * end-user-doc -->
+	 * 
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '
+	 *         <em>List Crud</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseListCrud(ListCrud object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '
+	 * <em>List Fold</em>'. <!-- begin-user-doc --> This implementation returns
+	 * null; returning a non-null result will terminate the switch. <!--
+	 * end-user-doc -->
+	 * 
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '
+	 *         <em>List Fold</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseListFold(ListFold object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '
+	 * <em>Element</em>'. <!-- begin-user-doc --> This implementation returns
+	 * null; returning a non-null result will terminate the switch. <!--
+	 * end-user-doc -->
+	 * 
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '
+	 *         <em>Element</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseApplicationElement(MApplicationElement object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '
+	 * <em>Localizable</em>'. <!-- begin-user-doc --> This implementation
+	 * returns null; returning a non-null result will terminate the switch. <!--
+	 * end-user-doc -->
+	 * 
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '
+	 *         <em>Localizable</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseLocalizable(MLocalizable object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '
+	 * <em>UI Element</em>'. <!-- begin-user-doc --> This implementation returns
+	 * null; returning a non-null result will terminate the switch. <!--
+	 * end-user-doc -->
+	 * 
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '
+	 *         <em>UI Element</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseUIElement(MUIElement object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '
+	 * <em>Element Container</em>'. <!-- begin-user-doc --> This implementation
+	 * returns null; returning a non-null result will terminate the switch. <!--
+	 * end-user-doc -->
+	 * 
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '
+	 *         <em>Element Container</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public <T extends MUIElement> T1 caseElementContainer(
+			MElementContainer<T> object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '
+	 * <em>Contribution</em>'. <!-- begin-user-doc --> This implementation
+	 * returns null; returning a non-null result will terminate the switch. <!--
+	 * end-user-doc -->
+	 * 
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '
+	 *         <em>Contribution</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T1 caseContribution(MContribution object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '
+	 * <em>EObject</em>'. <!-- begin-user-doc --> This implementation returns
+	 * null; returning a non-null result will terminate the switch, but this is
+	 * the last case anyway. <!-- end-user-doc -->
+	 * 
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '
+	 *         <em>EObject</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+	 * @generated
+	 */
+	@Override
+	public T1 defaultCase(EObject object) {
+		return null;
+	}
+
+} // PreferencesSwitch
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/BooleanFieldEditorValidator.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/BooleanFieldEditorValidator.java
new file mode 100644
index 0000000..4f3b8ff
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/BooleanFieldEditorValidator.java
@@ -0,0 +1,27 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model.validation;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.BooleanFieldStyle;
+
+/**
+ * A sample validator interface for
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.BooleanFieldEditor}. This
+ * doesn't really do anything, and it's not a real EMF artifact. It was
+ * generated by the org.eclipse.emf.examples.generator.validator plug-in to
+ * illustrate how EMF's code generator can be extended. This can be disabled
+ * with -vmargs -Dorg.eclipse.emf.examples.generator.validator=false.
+ */
+public interface BooleanFieldEditorValidator {
+	boolean validate();
+
+	boolean validateStyle(BooleanFieldStyle value);
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/ComboFieldEditorValidator.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/ComboFieldEditorValidator.java
new file mode 100644
index 0000000..0a67cd1
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/ComboFieldEditorValidator.java
@@ -0,0 +1,24 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model.validation;
+
+/**
+ * A sample validator interface for
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.ComboFieldEditor}. This
+ * doesn't really do anything, and it's not a real EMF artifact. It was
+ * generated by the org.eclipse.emf.examples.generator.validator plug-in to
+ * illustrate how EMF's code generator can be extended. This can be disabled
+ * with -vmargs -Dorg.eclipse.emf.examples.generator.validator=false.
+ */
+public interface ComboFieldEditorValidator {
+	boolean validate();
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/DirectoryFieldEditorValidator.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/DirectoryFieldEditorValidator.java
new file mode 100644
index 0000000..ec6060e
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/DirectoryFieldEditorValidator.java
@@ -0,0 +1,24 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model.validation;
+
+/**
+ * A sample validator interface for
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.DirectoryFieldEditor}.
+ * This doesn't really do anything, and it's not a real EMF artifact. It was
+ * generated by the org.eclipse.emf.examples.generator.validator plug-in to
+ * illustrate how EMF's code generator can be extended. This can be disabled
+ * with -vmargs -Dorg.eclipse.emf.examples.generator.validator=false.
+ */
+public interface DirectoryFieldEditorValidator {
+	boolean validate();
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/EntryValidator.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/EntryValidator.java
new file mode 100644
index 0000000..e3dceb4
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/EntryValidator.java
@@ -0,0 +1,27 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model.validation;
+
+/**
+ * A sample validator interface for
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.Entry}. This doesn't
+ * really do anything, and it's not a real EMF artifact. It was generated by the
+ * org.eclipse.emf.examples.generator.validator plug-in to illustrate how EMF's
+ * code generator can be extended. This can be disabled with -vmargs
+ * -Dorg.eclipse.emf.examples.generator.validator=false.
+ */
+public interface EntryValidator {
+	boolean validate();
+
+	boolean validateName(String value);
+
+	boolean validateValue(String value);
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/FieldEditorValidator.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/FieldEditorValidator.java
new file mode 100644
index 0000000..59a0fff
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/FieldEditorValidator.java
@@ -0,0 +1,39 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model.validation;
+
+import org.osgi.service.prefs.Preferences;
+
+/**
+ * A sample validator interface for
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor}. This doesn't
+ * really do anything, and it's not a real EMF artifact. It was generated by the
+ * org.eclipse.emf.examples.generator.validator plug-in to illustrate how EMF's
+ * code generator can be extended. This can be disabled with -vmargs
+ * -Dorg.eclipse.emf.examples.generator.validator=false.
+ */
+public interface FieldEditorValidator {
+	boolean validate();
+
+	boolean validateLabel(String value);
+
+	boolean validatePreferenceName(String value);
+
+	boolean validateDefaultValue(String value);
+
+	boolean validateDefaultValueTyped(Object value);
+
+	boolean validateBundle(String value);
+
+	boolean validatePreferences(Preferences value);
+
+	boolean validateEquinoxPath(String value);
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/FileFieldEditorValidator.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/FileFieldEditorValidator.java
new file mode 100644
index 0000000..1ece9c7
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/FileFieldEditorValidator.java
@@ -0,0 +1,24 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model.validation;
+
+/**
+ * A sample validator interface for
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.FileFieldEditor}. This
+ * doesn't really do anything, and it's not a real EMF artifact. It was
+ * generated by the org.eclipse.emf.examples.generator.validator plug-in to
+ * illustrate how EMF's code generator can be extended. This can be disabled
+ * with -vmargs -Dorg.eclipse.emf.examples.generator.validator=false.
+ */
+public interface FileFieldEditorValidator {
+	boolean validate();
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/IntegerFieldEditorValidator.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/IntegerFieldEditorValidator.java
new file mode 100644
index 0000000..9151793
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/IntegerFieldEditorValidator.java
@@ -0,0 +1,27 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model.validation;
+
+/**
+ * A sample validator interface for
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.IntegerFieldEditor}. This
+ * doesn't really do anything, and it's not a real EMF artifact. It was
+ * generated by the org.eclipse.emf.examples.generator.validator plug-in to
+ * illustrate how EMF's code generator can be extended. This can be disabled
+ * with -vmargs -Dorg.eclipse.emf.examples.generator.validator=false.
+ */
+public interface IntegerFieldEditorValidator {
+	boolean validate();
+
+	boolean validateMinValidValue(Integer value);
+
+	boolean validateMaxValidValue(Integer value);
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/ListCrudValidator.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/ListCrudValidator.java
new file mode 100644
index 0000000..e49b3b7
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/ListCrudValidator.java
@@ -0,0 +1,24 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model.validation;
+
+/**
+ * A sample validator interface for
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.ListCrud}. This doesn't
+ * really do anything, and it's not a real EMF artifact. It was generated by the
+ * org.eclipse.emf.examples.generator.validator plug-in to illustrate how EMF's
+ * code generator can be extended. This can be disabled with -vmargs
+ * -Dorg.eclipse.emf.examples.generator.validator=false.
+ */
+public interface ListCrudValidator {
+	boolean validate();
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/ListEditorValidator.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/ListEditorValidator.java
new file mode 100644
index 0000000..c5fedfa
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/ListEditorValidator.java
@@ -0,0 +1,30 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model.validation;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.ListCrud;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.ListFold;
+
+/**
+ * A sample validator interface for
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.ListEditor}. This doesn't
+ * really do anything, and it's not a real EMF artifact. It was generated by the
+ * org.eclipse.emf.examples.generator.validator plug-in to illustrate how EMF's
+ * code generator can be extended. This can be disabled with -vmargs
+ * -Dorg.eclipse.emf.examples.generator.validator=false.
+ */
+public interface ListEditorValidator {
+	boolean validate();
+
+	boolean validateListCrud(ListCrud value);
+
+	boolean validateListFold(ListFold value);
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/ListFieldEditorValidator.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/ListFieldEditorValidator.java
new file mode 100644
index 0000000..374244c
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/ListFieldEditorValidator.java
@@ -0,0 +1,29 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model.validation;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.Entry;
+
+/**
+ * A sample validator interface for
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.ListFieldEditor}. This
+ * doesn't really do anything, and it's not a real EMF artifact. It was
+ * generated by the org.eclipse.emf.examples.generator.validator plug-in to
+ * illustrate how EMF's code generator can be extended. This can be disabled
+ * with -vmargs -Dorg.eclipse.emf.examples.generator.validator=false.
+ */
+public interface ListFieldEditorValidator {
+	boolean validate();
+
+	boolean validateEntries(EList<Entry> value);
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/ListFoldValidator.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/ListFoldValidator.java
new file mode 100644
index 0000000..6ec8d20
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/ListFoldValidator.java
@@ -0,0 +1,24 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model.validation;
+
+/**
+ * A sample validator interface for
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.ListFold}. This doesn't
+ * really do anything, and it's not a real EMF artifact. It was generated by the
+ * org.eclipse.emf.examples.generator.validator plug-in to illustrate how EMF's
+ * code generator can be extended. This can be disabled with -vmargs
+ * -Dorg.eclipse.emf.examples.generator.validator=false.
+ */
+public interface ListFoldValidator {
+	boolean validate();
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/PreferencesCategoryValidator.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/PreferencesCategoryValidator.java
new file mode 100644
index 0000000..9099310
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/PreferencesCategoryValidator.java
@@ -0,0 +1,38 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model.validation;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesPage;
+
+/**
+ * A sample validator interface for
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory}. This
+ * doesn't really do anything, and it's not a real EMF artifact. It was
+ * generated by the org.eclipse.emf.examples.generator.validator plug-in to
+ * illustrate how EMF's code generator can be extended. This can be disabled
+ * with -vmargs -Dorg.eclipse.emf.examples.generator.validator=false.
+ */
+public interface PreferencesCategoryValidator {
+	boolean validate();
+
+	boolean validateName(String value);
+
+	boolean validateChildCategories(EList<PreferencesCategory> value);
+
+	boolean validateParentCategory(PreferencesCategory value);
+
+	boolean validatePage(PreferencesPage value);
+
+	boolean validateId(String value);
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/PreferencesPageValidator.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/PreferencesPageValidator.java
new file mode 100644
index 0000000..8ebc98f
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/PreferencesPageValidator.java
@@ -0,0 +1,29 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model.validation;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory;
+
+/**
+ * A sample validator interface for
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesPage}. This
+ * doesn't really do anything, and it's not a real EMF artifact. It was
+ * generated by the org.eclipse.emf.examples.generator.validator plug-in to
+ * illustrate how EMF's code generator can be extended. This can be disabled
+ * with -vmargs -Dorg.eclipse.emf.examples.generator.validator=false.
+ */
+public interface PreferencesPageValidator {
+	boolean validate();
+
+	boolean validateCategory(PreferencesCategory value);
+
+	boolean validateDescription(String value);
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/RadioGroupFieldEditorValidator.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/RadioGroupFieldEditorValidator.java
new file mode 100644
index 0000000..0961d2d
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/RadioGroupFieldEditorValidator.java
@@ -0,0 +1,24 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model.validation;
+
+/**
+ * A sample validator interface for
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.RadioGroupFieldEditor}.
+ * This doesn't really do anything, and it's not a real EMF artifact. It was
+ * generated by the org.eclipse.emf.examples.generator.validator plug-in to
+ * illustrate how EMF's code generator can be extended. This can be disabled
+ * with -vmargs -Dorg.eclipse.emf.examples.generator.validator=false.
+ */
+public interface RadioGroupFieldEditorValidator {
+	boolean validate();
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/ScaleFieldEditorValidator.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/ScaleFieldEditorValidator.java
new file mode 100644
index 0000000..fdbd6a9
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/ScaleFieldEditorValidator.java
@@ -0,0 +1,29 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model.validation;
+
+/**
+ * A sample validator interface for
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.ScaleFieldEditor}. This
+ * doesn't really do anything, and it's not a real EMF artifact. It was
+ * generated by the org.eclipse.emf.examples.generator.validator plug-in to
+ * illustrate how EMF's code generator can be extended. This can be disabled
+ * with -vmargs -Dorg.eclipse.emf.examples.generator.validator=false.
+ */
+public interface ScaleFieldEditorValidator {
+	boolean validate();
+
+	boolean validateMinValue(Integer value);
+
+	boolean validateMaxValue(Integer value);
+
+	boolean validateIncrementValue(Integer value);
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/StringFieldEditorValidator.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/StringFieldEditorValidator.java
new file mode 100644
index 0000000..5308b3b
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/StringFieldEditorValidator.java
@@ -0,0 +1,25 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model.validation;
+
+/**
+ * A sample validator interface for
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.StringFieldEditor}. This
+ * doesn't really do anything, and it's not a real EMF artifact. It was
+ * generated by the org.eclipse.emf.examples.generator.validator plug-in to
+ * illustrate how EMF's code generator can be extended. This can be disabled
+ * with -vmargs -Dorg.eclipse.emf.examples.generator.validator=false.
+ */
+public interface StringFieldEditorValidator {
+	boolean validate();
+
+	boolean validateMaxLength(Integer value);
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/text/description.txt b/org.eclipse.osbp.vaaclipse.ui.preferences.model/text/description.txt
new file mode 100644
index 0000000..e250c09
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/text/description.txt
@@ -0,0 +1,76 @@
+Model Preferences
+
+This model description is not a real EMF artifact. It was generated by the
+org.eclipse.emf.examples.generator.validator plug-in to illustrate how EMF's
+code generator can be extended.
+This can be disabled with -vmargs -Dorg.eclipse.emf.examples.generator.validator=false.
+
+Package preferences <http://www.lunifera.org/vaaclipse/ui/preferences>
+
+  Class PreferencesCategory -> ApplicationElement
+    Attribute name : EString
+    Reference childCategories : PreferencesCategory<<0..*>>
+    Reference parentCategory : PreferencesCategory
+    Reference page : PreferencesPage
+    Attribute id : EString
+
+  Class PreferencesPage -> ElementContainer, Contribution
+    Reference category : PreferencesCategory
+    Attribute description : EString
+
+  Class FieldEditor -> UIElement
+    Attribute label : EString
+    Attribute preferenceName : EString
+    Attribute defaultValue : EString
+    Attribute defaultValueTyped : EJavaObject
+    Attribute bundle : EString
+    Attribute preferences : Preferences
+    Attribute equinoxPath : EString
+
+  Class BooleanFieldEditor -> FieldEditor
+    Attribute style : BooleanFieldStyle
+
+  Class ListFieldEditor -> FieldEditor, Contribution
+    Reference entries : Entry<<0..*>>
+
+  Class Entry
+    Attribute name : EString
+    Attribute value : EString
+
+  Class ComboFieldEditor -> ListFieldEditor
+
+  Class ListEditor -> FieldEditor, Contribution
+    Reference listCrud : ListCrud
+    Reference listFold : ListFold
+
+  Class RadioGroupFieldEditor -> ListFieldEditor
+
+  Class ScaleFieldEditor -> FieldEditor
+    Attribute minValue : EIntegerObject
+    Attribute maxValue : EIntegerObject
+    Attribute incrementValue : EIntegerObject
+
+  Class StringFieldEditor -> FieldEditor
+    Attribute maxLength : EIntegerObject
+
+  Class IntegerFieldEditor -> FieldEditor
+    Attribute minValidValue : EIntegerObject
+    Attribute maxValidValue : EIntegerObject
+
+  Class FileFieldEditor -> FieldEditor, Contribution
+
+  Class DirectoryFieldEditor -> FieldEditor, Contribution
+
+  Class ListCrud
+    Operation addNewValue(EString) : EString
+
+  Class ListFold
+    Operation apply(EString, StringBuffer) : void
+
+  Enum BooleanFieldStyle
+    Literal DEFAULT = 0
+    Literal SEPARATE_LABEL = 1
+
+  DataType StringBuffer <java.lang.StringBuffer>
+
+  DataType Preferences <org.osgi.service.prefs.Preferences>
diff --git a/org.eclipse.osbp.vaaclipse.util/.project b/org.eclipse.osbp.vaaclipse.util/.project
new file mode 100644
index 0000000..eaf2f3d
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.util/.project
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.vaaclipse.util</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.babel.editor.rbeBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.babel.editor.rbeNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.vaaclipse.util/META-INF/MANIFEST.MF b/org.eclipse.osbp.vaaclipse.util/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..8f6eac1
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.util/META-INF/MANIFEST.MF
@@ -0,0 +1,11 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.vaaclipse.util
+Bundle-SymbolicName: org.eclipse.osbp.vaaclipse.util
+Bundle-Version: 0.9.0.qualifier
+Bundle-Vendor: Eclipse OSBP
+Bundle-RequiredExecutionEnvironment: JavaSE-1.7
+Require-Bundle: org.eclipse.emf.common;bundle-version="2.8.0",
+ org.eclipse.osbp.commons;bundle-version="[0.9.0,0.10.0)"
+Export-Package: org.eclipse.osbp.vaaclipse.util;version="0.9.0"
+Import-Package: javax.annotation
diff --git a/org.eclipse.osbp.vaaclipse.util/about.html b/org.eclipse.osbp.vaaclipse.util/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.util/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 1, 2016</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.util/about.ini b/org.eclipse.osbp.vaaclipse.util/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.util/about.ini
@@ -0,0 +1,17 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%featureText
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=
+
+# Property "appName" contains name of the application (translated)
+appName=%featureName
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+welcomePage=
diff --git a/org.eclipse.osbp.vaaclipse.util/about.mappings b/org.eclipse.osbp.vaaclipse.util/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.util/about.mappings
@@ -0,0 +1,6 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+0=qualifier
diff --git a/org.eclipse.osbp.vaaclipse.util/about.properties b/org.eclipse.osbp.vaaclipse.util/about.properties
new file mode 100644
index 0000000..bdd9e29
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.util/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2012, 2016 - Loetz GmbH&Co.KG (Heidelberg)
+# 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:
+#    Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.vaaclipse.util
+
+################ blurb property ####################################
+featureText=\
+Copyright (c) 2012-2016 - Loetz GmbH&Co.KG \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+Contributors:\n\
+    Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.vaaclipse.util/build.properties b/org.eclipse.osbp.vaaclipse.util/build.properties
new file mode 100644
index 0000000..ebe504b
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.util/build.properties
@@ -0,0 +1,8 @@
+source.. = src/
+output.. = target/classes/
+bin.includes = about.properties,  about.mappings,  about.ini,  about.html,  META-INF/,\
+               .,\
+               license.html,\
+               epl-v10.html
+src.includes = about.properties,  about.mappings,  about.ini,  about.html,  license.html,\
+               epl-v10.html
diff --git a/org.eclipse.osbp.vaaclipse.util/epl-v10.html b/org.eclipse.osbp.vaaclipse.util/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.util/epl-v10.html
@@ -0,0 +1,259 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+  body {
+    size: 8.5in 11.0in;
+    margin: 0.25in 0.5in 0.25in 0.5in;
+    tab-interval: 0.5in;
+    }
+  p {  	
+    margin-left: auto;
+    margin-top:  0.5em;
+    margin-bottom: 0.5em;
+    }
+  p.list {
+  	margin-left: 0.5in;
+    margin-top:  0.05em;
+    margin-bottom: 0.05em;
+    }
+  </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">where such changes and/or additions to the Program
+originate from and are distributed by that particular Contributor. A
+Contribution 'originates' from a Contributor if it was added to the
+Program by such Contributor itself or anyone acting on such
+Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii)
+are not derivative works of the Program.</p>
+
+<p>"Contributor" means any person or entity that distributes
+the Program.</p>
+
+<p>"Licensed Patents" mean patent claims licensable by a
+Contributor which are necessarily infringed by the use or sale of its
+Contribution alone or when combined with the Program.</p>
+
+<p>"Program" means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>"Recipient" means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works
+of, publicly display, publicly perform, distribute and sublicense the
+Contribution of such Contributor, if any, and such derivative works, in
+source code and object code form.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell,
+offer to sell, import and otherwise transfer the Contribution of such
+Contributor, if any, in source code and object code form. This patent
+license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor,
+such addition of the Contribution causes such combination to be covered
+by the Licensed Patents. The patent license shall not apply to any other
+combinations which include the Contribution. No hardware per se is
+licensed hereunder.</p>
+
+<p class="list">c) Recipient understands that although each Contributor
+grants the licenses to its Contributions set forth herein, no assurances
+are provided by any Contributor that the Program does not infringe the
+patent or other intellectual property rights of any other entity. Each
+Contributor disclaims any liability to Recipient for claims brought by
+any other entity based on infringement of intellectual property rights
+or otherwise. As a condition to exercising the rights and licenses
+granted hereunder, each Recipient hereby assumes sole responsibility to
+secure any other intellectual property rights needed, if any. For
+example, if a third party patent license is required to allow Recipient
+to distribute the Program, it is Recipient's responsibility to acquire
+that license before distributing the Program.</p>
+
+<p class="list">d) Each Contributor represents that to its knowledge it
+has sufficient copyright rights in its Contribution, if any, to grant
+the copyright license set forth in this Agreement.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">i) effectively disclaims on behalf of all Contributors
+all warranties and conditions, express and implied, including warranties
+or conditions of title and non-infringement, and implied warranties or
+conditions of merchantability and fitness for a particular purpose;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">iv) states that source code for the Program is available
+from such Contributor, and informs licensees how to obtain it in a
+reasonable manner on or through a medium customarily used for software
+exchange.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>Commercial distributors of software may accept certain
+responsibilities with respect to end users, business partners and the
+like. While this license is intended to facilitate the commercial use of
+the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create
+potential liability for other Contributors. Therefore, if a Contributor
+includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and
+indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses")
+arising from claims, lawsuits and other legal actions brought by a third
+party against the Indemnified Contributor to the extent caused by the
+acts or omissions of such Commercial Contributor in connection with its
+distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In
+order to qualify, an Indemnified Contributor must: a) promptly notify
+the Commercial Contributor in writing of such claim, and b) allow the
+Commercial Contributor to control, and cooperate with the Commercial
+Contributor in, the defense and any related settlement negotiations. The
+Indemnified Contributor may participate in any such claim at its own
+expense.</p>
+
+<p>For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor's responsibility
+alone. Under this section, the Commercial Contributor would have to
+defend claims against the other Contributors related to those
+performance claims and warranties, and if a court requires any other
+Contributor to pay any damages as a result, the Commercial Contributor
+must pay those damages.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
+OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
+ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to
+the risks and costs of program errors, compliance with applicable laws,
+damage to or loss of data, programs or equipment, and unavailability or
+interruption of operations.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
+NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of
+the remainder of the terms of this Agreement, and without further action
+by the parties hereto, such provision shall be reformed to the minimum
+extent necessary to make such provision valid and enforceable.</p>
+
+<p>If Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that the
+Program itself (excluding combinations of the Program with other
+software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the
+date such litigation is filed.</p>
+
+<p>All Recipient's rights under this Agreement shall terminate if it
+fails to comply with any of the material terms or conditions of this
+Agreement and does not cure such failure in a reasonable period of time
+after becoming aware of such noncompliance. If all Recipient's rights
+under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive.</p>
+
+<p>Everyone is permitted to copy and distribute copies of this
+Agreement, but in order to avoid inconsistency the Agreement is
+copyrighted and may only be modified in the following manner. The
+Agreement Steward reserves the right to publish new versions (including
+revisions) of this Agreement from time to time. No one other than the
+Agreement Steward has the right to modify this Agreement. The Eclipse
+Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a
+suitable separate entity. Each new version of the Agreement will be
+given a distinguishing version number. The Program (including
+Contributions) may always be distributed subject to the version of the
+Agreement under which it was received. In addition, after a new version
+of the Agreement is published, Contributor may elect to distribute the
+Program (including its Contributions) under the new version. Except as
+expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
+rights or licenses to the intellectual property of any Contributor under
+this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this
+Agreement are reserved.</p>
+
+<p>This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No party
+to this Agreement will bring a legal action under this Agreement more
+than one year after the cause of action arose. Each party waives its
+rights to a jury trial in any resulting litigation.</p>
+
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.util/license.html b/org.eclipse.osbp.vaaclipse.util/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.util/license.html
@@ -0,0 +1,164 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!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>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>February 1, 2011</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+   (COLLECTIVELY "CONTENT").  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse
+ Foundation is provided to you under the terms and conditions of the 
+Eclipse Public License Version 1.0
+   ("EPL").  A copy of the EPL is provided with this Content and is also
+ 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, "Program" will mean the Content.</p>
+
+<p>Content includes, but is not limited to, source code, object code, 
+documentation and other files maintained in the Eclipse Foundation 
+source code
+   repository ("Repository") in software modules ("Modules") and made 
+available as downloadable archives ("Downloads").</p>
+
+<ul>
+       <li>Content may be structured and packaged into modules to 
+facilitate delivering, extending, and upgrading the Content.  Typical 
+modules may include plug-ins ("Plug-ins"), plug-in fragments 
+("Fragments"), and features ("Features").</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&#8482; ARchive) in a directory named "plugins".</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or 
+Fragments and associated material.  Each Feature may be packaged as a 
+sub-directory in a directory named "features".  Within a Feature, files 
+named "feature.xml" may contain a list of the names and version numbers 
+of the Plug-ins
+      and/or Fragments associated with that Feature.</li>
+       <li>Features may also include other Features ("Included 
+Features"). Within a Feature, files named "feature.xml" may contain a 
+list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be 
+contained in files named "about.html" ("Abouts"). The terms and 
+conditions governing Features and
+Included Features should be contained in files named "license.html" 
+("Feature Licenses").  Abouts and Feature Licenses may be located in any
+ directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named "src" of certain Plug-ins</li>
+       <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is 
+installed using the Provisioning Technology (as defined below), you must
+ agree to a license ("Feature Update License") during the
+installation process.  If the Feature contains Included Features, the 
+Feature Update License should either provide you with the terms and 
+conditions governing the Included Features or
+inform you where you can locate them.  Feature Update Licenses may be 
+found in the "license" property of files named "feature.properties" 
+found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the 
+terms and conditions (or references to such terms and conditions) that 
+govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER 
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.
+  SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND 
+CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, 
+or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions 
+govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, 
+examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager ("Provisioning Technology") for the purpose of 
+allowing users to install software, documentation, information and/or
+   other materials (collectively "Installable Software"). This 
+capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about 
+packaging Installable Software is available at <a href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   ("Specification").</p>
+
+<p>You may use Provisioning Technology to allow other parties to install
+ Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to
+ be presented to, and accepted by, the users of the Provisioning 
+Technology
+   in accordance with the Specification. By using Provisioning 
+Technology in such a manner and making it available in accordance with 
+the
+   Specification, you further acknowledge your agreement to, and the 
+acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur ("Provisioning Process") in 
+which a user may execute the Provisioning Technology
+       on a machine ("Target Machine") with the intent of installing, 
+extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology 
+may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user 
+the terms and conditions that govern the use of the Installable
+       Software ("Installable Software Agreement") and such Installable 
+Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable 
+Software Agreement must inform the user of the terms and conditions that
+ govern
+       the Installable Software and must solicit acceptance by the end 
+user in the manner prescribed in such Installable Software Agreement. 
+Upon such
+       indication of agreement by the user, the provisioning Technology 
+will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are
+ currently may have restrictions on the import, possession, and use, 
+and/or re-export to
+   another country, of encryption software. BEFORE using any encryption 
+software, please check the country's laws, regulations and policies 
+concerning the import,
+   possession, or use, and re-export of encryption software, to see if 
+this is permitted.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.util/pom.xml b/org.eclipse.osbp.vaaclipse.util/pom.xml
new file mode 100644
index 0000000..abd85bc
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.util/pom.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <artifactId>org.eclipse.osbp.vaaclipse.util</artifactId>
+    <packaging>eclipse-plugin</packaging>
+    <parent>
+        <groupId>org.eclipse.osbp.vaaclipse</groupId>
+        <artifactId>org.eclipse.osbp.vaaclipse</artifactId>
+        <version>0.9.0-SNAPSHOT</version>
+        <relativePath>..</relativePath>
+    </parent>
+</project>
diff --git a/org.eclipse.osbp.vaaclipse.util/src/org/eclipse/osbp/vaaclipse/test/ConvertTest.java b/org.eclipse.osbp.vaaclipse.util/src/org/eclipse/osbp/vaaclipse/test/ConvertTest.java
new file mode 100644
index 0000000..8a0e66c
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.util/src/org/eclipse/osbp/vaaclipse/test/ConvertTest.java
@@ -0,0 +1,38 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ //package org.eclipse.osbp.vaaclipse.test;
+//
+//import org.eclipse.osbp.vaaclipse.util.Utils;
+//
+///**
+// * @author rushan
+// *
+// */
+//public class ConvertTest
+//{
+//	final static String uri1 = "platform:/plugin/org.somebundle/img/blabla.png";
+//	
+//	static final String url1 = "/VAADIN/themes/generated_theme/org.somebundle/img/blabla.png";
+//	static final String url2 = "/VAADIN/themes/reindeer/img/blabla.png";
+//	
+//	public static void main(String[] args)
+//	{
+//		System.out.println(Utils.restorePath("/VAADIN/themes/reindeer/styles.css", "generated_theme", "path to css"));
+//		System.out.println(Utils.restorePath("/VAADIN/themes/generated_theme/styles.css", "generated_theme", "path to css"));
+//		System.out.println(Utils.restorePath(url1, "generated_theme", "path to css"));
+//		System.out.println(Utils.restorePath(url2, "generated_theme", "path to css"));
+//		
+//		
+//		System.out.println(Utils.convertPath(uri1));
+//		
+//		System.out.println(Utils.restorePath("/VAADIN/themes/generated_theme/" + Utils.convertPath(uri1), "generated_theme", "path to css").equals(uri1));
+//	}
+// }
diff --git a/org.eclipse.osbp.vaaclipse.util/src/org/eclipse/osbp/vaaclipse/util/Utils.java b/org.eclipse.osbp.vaaclipse.util/src/org/eclipse/osbp/vaaclipse/util/Utils.java
new file mode 100644
index 0000000..e940ecb
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.util/src/org/eclipse/osbp/vaaclipse/util/Utils.java
@@ -0,0 +1,16 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.util;
+
+public class Utils {
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.widgets/.project b/org.eclipse.osbp.vaaclipse.widgets/.project
new file mode 100644
index 0000000..cfd90bd
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgets/.project
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.vaaclipse.widgets</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.babel.editor.rbeBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>com.vaadin.integration.eclipse.addonStylesBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.babel.editor.rbeNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.vaaclipse.widgets/META-INF/MANIFEST.MF b/org.eclipse.osbp.vaaclipse.widgets/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..582d4f8
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgets/META-INF/MANIFEST.MF
@@ -0,0 +1,15 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.vaaclipse.widgets
+Bundle-SymbolicName: org.eclipse.osbp.vaaclipse.widgets
+Bundle-Vendor: Eclipse OSBP
+Bundle-Version: 0.9.0.qualifier
+Require-Bundle: com.vaadin.client;bundle-version="[7.5.7,7.7.0)",
+ com.vaadin.server;bundle-version="[7.5.7,7.7.0)",
+ com.vaadin.shared;bundle-version="[7.5.7,7.7.0)",
+ com.vaadin.themes;bundle-version="[7.5.7,7.7.0)",
+ org.jsoup;bundle-version="1.7.2",
+ dragdroplayouts.osgi;bundle-version="1.1.3"
+Bundle-RequiredExecutionEnvironment: JavaSE-1.7
+Export-Package: org.eclipse.osbp.vaaclipse.widgets;version="0.9.0",
+ org.eclipse.osbp.vaaclipse.widgets.common;version="0.9.0"
diff --git a/org.eclipse.osbp.vaaclipse.widgets/WebContent/META-INF/MANIFEST.MF b/org.eclipse.osbp.vaaclipse.widgets/WebContent/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..679b4d6
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgets/WebContent/META-INF/MANIFEST.MF
@@ -0,0 +1,7 @@
+Manifest-Version: 1.0
+Implementation-Title: org.eclipse.osbp.vaaclipse.widgets
+Implementation-Version: 1.0.0
+Vaadin-Package-Version: 1
+Class-Path: 
+Vaadin-Widgetsets: org.eclipse.osbp.vaaclipse.widgets.Org_semanticsoft_vaaclipse_widgetsWidgetset
+
diff --git a/org.eclipse.osbp.vaaclipse.widgets/about.html b/org.eclipse.osbp.vaaclipse.widgets/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgets/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 1, 2016</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.widgets/about.ini b/org.eclipse.osbp.vaaclipse.widgets/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgets/about.ini
@@ -0,0 +1,17 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%featureText
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=
+
+# Property "appName" contains name of the application (translated)
+appName=%featureName
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+welcomePage=
diff --git a/org.eclipse.osbp.vaaclipse.widgets/about.mappings b/org.eclipse.osbp.vaaclipse.widgets/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgets/about.mappings
@@ -0,0 +1,6 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+0=qualifier
diff --git a/org.eclipse.osbp.vaaclipse.widgets/about.properties b/org.eclipse.osbp.vaaclipse.widgets/about.properties
new file mode 100644
index 0000000..087da41
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgets/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2012, 2016 - Loetz GmbH&Co.KG (Heidelberg)
+# 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:
+#    Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.vaaclipse.widgets
+
+################ blurb property ####################################
+featureText=\
+Copyright (c) 2012-2016 - Loetz GmbH&Co.KG \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+Contributors:\n\
+    Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.vaaclipse.widgets/build.properties b/org.eclipse.osbp.vaaclipse.widgets/build.properties
new file mode 100644
index 0000000..d1750a9
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgets/build.properties
@@ -0,0 +1,8 @@
+source.. = src/
+output.. = target/classes/
+bin.includes = about.properties,  about.mappings,  about.ini,  about.html,  META-INF/,\
+               epl-v10.html,\
+               license.html,\
+               .
+src.includes = about.properties,  about.mappings,  about.ini,  about.html,  license.html,\
+               epl-v10.html
diff --git a/org.eclipse.osbp.vaaclipse.widgets/epl-v10.html b/org.eclipse.osbp.vaaclipse.widgets/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgets/epl-v10.html
@@ -0,0 +1,259 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+  body {
+    size: 8.5in 11.0in;
+    margin: 0.25in 0.5in 0.25in 0.5in;
+    tab-interval: 0.5in;
+    }
+  p {  	
+    margin-left: auto;
+    margin-top:  0.5em;
+    margin-bottom: 0.5em;
+    }
+  p.list {
+  	margin-left: 0.5in;
+    margin-top:  0.05em;
+    margin-bottom: 0.05em;
+    }
+  </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">where such changes and/or additions to the Program
+originate from and are distributed by that particular Contributor. A
+Contribution 'originates' from a Contributor if it was added to the
+Program by such Contributor itself or anyone acting on such
+Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii)
+are not derivative works of the Program.</p>
+
+<p>"Contributor" means any person or entity that distributes
+the Program.</p>
+
+<p>"Licensed Patents" mean patent claims licensable by a
+Contributor which are necessarily infringed by the use or sale of its
+Contribution alone or when combined with the Program.</p>
+
+<p>"Program" means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>"Recipient" means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works
+of, publicly display, publicly perform, distribute and sublicense the
+Contribution of such Contributor, if any, and such derivative works, in
+source code and object code form.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell,
+offer to sell, import and otherwise transfer the Contribution of such
+Contributor, if any, in source code and object code form. This patent
+license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor,
+such addition of the Contribution causes such combination to be covered
+by the Licensed Patents. The patent license shall not apply to any other
+combinations which include the Contribution. No hardware per se is
+licensed hereunder.</p>
+
+<p class="list">c) Recipient understands that although each Contributor
+grants the licenses to its Contributions set forth herein, no assurances
+are provided by any Contributor that the Program does not infringe the
+patent or other intellectual property rights of any other entity. Each
+Contributor disclaims any liability to Recipient for claims brought by
+any other entity based on infringement of intellectual property rights
+or otherwise. As a condition to exercising the rights and licenses
+granted hereunder, each Recipient hereby assumes sole responsibility to
+secure any other intellectual property rights needed, if any. For
+example, if a third party patent license is required to allow Recipient
+to distribute the Program, it is Recipient's responsibility to acquire
+that license before distributing the Program.</p>
+
+<p class="list">d) Each Contributor represents that to its knowledge it
+has sufficient copyright rights in its Contribution, if any, to grant
+the copyright license set forth in this Agreement.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">i) effectively disclaims on behalf of all Contributors
+all warranties and conditions, express and implied, including warranties
+or conditions of title and non-infringement, and implied warranties or
+conditions of merchantability and fitness for a particular purpose;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">iv) states that source code for the Program is available
+from such Contributor, and informs licensees how to obtain it in a
+reasonable manner on or through a medium customarily used for software
+exchange.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>Commercial distributors of software may accept certain
+responsibilities with respect to end users, business partners and the
+like. While this license is intended to facilitate the commercial use of
+the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create
+potential liability for other Contributors. Therefore, if a Contributor
+includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and
+indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses")
+arising from claims, lawsuits and other legal actions brought by a third
+party against the Indemnified Contributor to the extent caused by the
+acts or omissions of such Commercial Contributor in connection with its
+distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In
+order to qualify, an Indemnified Contributor must: a) promptly notify
+the Commercial Contributor in writing of such claim, and b) allow the
+Commercial Contributor to control, and cooperate with the Commercial
+Contributor in, the defense and any related settlement negotiations. The
+Indemnified Contributor may participate in any such claim at its own
+expense.</p>
+
+<p>For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor's responsibility
+alone. Under this section, the Commercial Contributor would have to
+defend claims against the other Contributors related to those
+performance claims and warranties, and if a court requires any other
+Contributor to pay any damages as a result, the Commercial Contributor
+must pay those damages.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
+OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
+ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to
+the risks and costs of program errors, compliance with applicable laws,
+damage to or loss of data, programs or equipment, and unavailability or
+interruption of operations.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
+NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of
+the remainder of the terms of this Agreement, and without further action
+by the parties hereto, such provision shall be reformed to the minimum
+extent necessary to make such provision valid and enforceable.</p>
+
+<p>If Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that the
+Program itself (excluding combinations of the Program with other
+software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the
+date such litigation is filed.</p>
+
+<p>All Recipient's rights under this Agreement shall terminate if it
+fails to comply with any of the material terms or conditions of this
+Agreement and does not cure such failure in a reasonable period of time
+after becoming aware of such noncompliance. If all Recipient's rights
+under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive.</p>
+
+<p>Everyone is permitted to copy and distribute copies of this
+Agreement, but in order to avoid inconsistency the Agreement is
+copyrighted and may only be modified in the following manner. The
+Agreement Steward reserves the right to publish new versions (including
+revisions) of this Agreement from time to time. No one other than the
+Agreement Steward has the right to modify this Agreement. The Eclipse
+Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a
+suitable separate entity. Each new version of the Agreement will be
+given a distinguishing version number. The Program (including
+Contributions) may always be distributed subject to the version of the
+Agreement under which it was received. In addition, after a new version
+of the Agreement is published, Contributor may elect to distribute the
+Program (including its Contributions) under the new version. Except as
+expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
+rights or licenses to the intellectual property of any Contributor under
+this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this
+Agreement are reserved.</p>
+
+<p>This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No party
+to this Agreement will bring a legal action under this Agreement more
+than one year after the cause of action arose. Each party waives its
+rights to a jury trial in any resulting litigation.</p>
+
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.widgets/ivy.xml b/org.eclipse.osbp.vaaclipse.widgets/ivy.xml
new file mode 100644
index 0000000..e470b04
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgets/ivy.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<!DOCTYPE ivy-module [
+	<!ENTITY vaadin.version "7.3.+">
+]>
+<ivy-module version="2.0"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd">
+	<info organisation="com.example" module="v7proj" />
+	<configurations>
+		<!-- The default configuration, which should be deployed to the server -->
+		<conf name="default" />
+		<!-- A configuration only needed when compiling the widget set. Should 
+			not be deployed to the server -->
+		<conf name="widgetset-compile" />
+	</configurations>
+	<dependencies>
+		<!-- The core server part of Vaadin -->
+		<dependency org="com.vaadin" name="vaadin-server" rev="&vaadin.version;"
+			conf="default->default" />
+
+		<!-- Vaadin themes -->
+		<dependency org="com.vaadin" name="vaadin-themes" rev="&vaadin.version;" />
+
+		<!-- Precompiled DefaultWidgetSet -->
+		<dependency org="com.vaadin" name="vaadin-client-compiled"
+			rev="&vaadin.version;" />
+
+		<!-- Vaadin client side, needed for widget set compilation -->
+		<dependency org="com.vaadin" name="vaadin-client" rev="&vaadin.version;" />
+
+		<!-- Compiler for custom widget sets. Should not be deployed -->
+		<dependency org="com.vaadin" name="vaadin-client-compiler"
+			rev="&vaadin.version;" conf="widgetset-compile->default" />
+	</dependencies>
+</ivy-module>
+    
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.widgets/ivysettings.xml b/org.eclipse.osbp.vaaclipse.widgets/ivysettings.xml
new file mode 100644
index 0000000..9c0f653
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgets/ivysettings.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ivysettings>
+	<settings defaultResolver="default" />
+	<resolvers>
+		<chain name="default">
+			<!-- Public Maven repository -->
+			<ibiblio name="public" m2compatible="true" />
+
+			<!-- Vaadin Add-on repository -->
+			<ibiblio name="vaadin-addons" usepoms="true" m2compatible="true"
+				root="http://maven.vaadin.com/vaadin-addons" />
+
+			<!-- Vaadin snapshots repository -->
+			<ibiblio name="vaadin-snapshots" usepoms="true" m2compatible="true"
+				root="https://oss.sonatype.org/content/repositories/vaadin-snapshots" />
+			<!-- Repository used for Vaadin modified smartsprites library -->
+			<dual name="custom-smartsprites">
+				<filesystem name="smartsprites-ivy">
+					<ivy pattern="${basedir}/ivymodule/[module]-ivy-[revision].xml" />
+				</filesystem>
+				<url name="smartsprites-artifact">
+					<artifact
+						pattern="http://dev.vaadin.com/svn/versions/6.8/build/smartsprites/lib/[artifact](-[revision]).[ext]" />
+				</url>
+			</dual>
+		</chain>
+	</resolvers>
+	<modules>
+		<!-- Vaadin patched SmartSprites -->
+		<module organisation="com.carrotsearch" name="smartsprites"
+			revision="0.2.3-itmill" resolver="custom-smartsprites" />
+	</modules>
+
+
+</ivysettings>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.widgets/license.html b/org.eclipse.osbp.vaaclipse.widgets/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgets/license.html
@@ -0,0 +1,164 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!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>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>February 1, 2011</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+   (COLLECTIVELY "CONTENT").  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse
+ Foundation is provided to you under the terms and conditions of the 
+Eclipse Public License Version 1.0
+   ("EPL").  A copy of the EPL is provided with this Content and is also
+ 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, "Program" will mean the Content.</p>
+
+<p>Content includes, but is not limited to, source code, object code, 
+documentation and other files maintained in the Eclipse Foundation 
+source code
+   repository ("Repository") in software modules ("Modules") and made 
+available as downloadable archives ("Downloads").</p>
+
+<ul>
+       <li>Content may be structured and packaged into modules to 
+facilitate delivering, extending, and upgrading the Content.  Typical 
+modules may include plug-ins ("Plug-ins"), plug-in fragments 
+("Fragments"), and features ("Features").</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&#8482; ARchive) in a directory named "plugins".</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or 
+Fragments and associated material.  Each Feature may be packaged as a 
+sub-directory in a directory named "features".  Within a Feature, files 
+named "feature.xml" may contain a list of the names and version numbers 
+of the Plug-ins
+      and/or Fragments associated with that Feature.</li>
+       <li>Features may also include other Features ("Included 
+Features"). Within a Feature, files named "feature.xml" may contain a 
+list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be 
+contained in files named "about.html" ("Abouts"). The terms and 
+conditions governing Features and
+Included Features should be contained in files named "license.html" 
+("Feature Licenses").  Abouts and Feature Licenses may be located in any
+ directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named "src" of certain Plug-ins</li>
+       <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is 
+installed using the Provisioning Technology (as defined below), you must
+ agree to a license ("Feature Update License") during the
+installation process.  If the Feature contains Included Features, the 
+Feature Update License should either provide you with the terms and 
+conditions governing the Included Features or
+inform you where you can locate them.  Feature Update Licenses may be 
+found in the "license" property of files named "feature.properties" 
+found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the 
+terms and conditions (or references to such terms and conditions) that 
+govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER 
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.
+  SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND 
+CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, 
+or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions 
+govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, 
+examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager ("Provisioning Technology") for the purpose of 
+allowing users to install software, documentation, information and/or
+   other materials (collectively "Installable Software"). This 
+capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about 
+packaging Installable Software is available at <a href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   ("Specification").</p>
+
+<p>You may use Provisioning Technology to allow other parties to install
+ Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to
+ be presented to, and accepted by, the users of the Provisioning 
+Technology
+   in accordance with the Specification. By using Provisioning 
+Technology in such a manner and making it available in accordance with 
+the
+   Specification, you further acknowledge your agreement to, and the 
+acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur ("Provisioning Process") in 
+which a user may execute the Provisioning Technology
+       on a machine ("Target Machine") with the intent of installing, 
+extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology 
+may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user 
+the terms and conditions that govern the use of the Installable
+       Software ("Installable Software Agreement") and such Installable 
+Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable 
+Software Agreement must inform the user of the terms and conditions that
+ govern
+       the Installable Software and must solicit acceptance by the end 
+user in the manner prescribed in such Installable Software Agreement. 
+Upon such
+       indication of agreement by the user, the provisioning Technology 
+will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are
+ currently may have restrictions on the import, possession, and use, 
+and/or re-export to
+   another country, of encryption software. BEFORE using any encryption 
+software, please check the country's laws, regulations and policies 
+concerning the import,
+   possession, or use, and re-export of encryption software, to see if 
+this is permitted.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.widgets/pom-compileWidgetset.xml b/org.eclipse.osbp.vaaclipse.widgets/pom-compileWidgetset.xml
new file mode 100644
index 0000000..e4a2044
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgets/pom-compileWidgetset.xml
@@ -0,0 +1,211 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	<groupId>org.eclipse.osbp</groupId>
+	<artifactId>org.eclipse.osbp.vaaclipse.widgets</artifactId>
+	<version>2.7.3-SNAPSHOT</version>
+
+	<properties>
+		<vaaclipse-version>2.7.3-SNAPSHOT</vaaclipse-version>
+		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+		<vaadin.version>7.5.7</vaadin.version>
+	</properties>
+
+	<dependencies>
+		<dependency>
+			<groupId>org.eclipse.osbp</groupId>
+			<artifactId>org.eclipse.osbp.vaaclipse.widgets</artifactId>
+			<version>${vaaclipse-version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.vaadin.addons</groupId>
+			<artifactId>contextmenu</artifactId>
+			<version>4.2.1</version>
+		</dependency>
+		<dependency>
+			<groupId>org.vaadin.addons</groupId>
+			<artifactId>dragdroplayouts</artifactId>
+			<version>1.1.3</version>
+		</dependency>
+		<dependency>
+			<groupId>org.vaadin.addon</groupId>
+			<artifactId>easyuploads</artifactId>
+			<version>7.0.1</version>
+		</dependency>
+		<dependency>
+			<groupId>com.vaadin</groupId>
+			<artifactId>vaadin-server</artifactId>
+			<version>${vaadin.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>com.vaadin</groupId>
+			<artifactId>vaadin-client</artifactId>
+			<version>${vaadin.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>com.vaadin</groupId>
+			<artifactId>vaadin-client-compiled</artifactId>
+			<version>${vaadin.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>com.vaadin</groupId>
+			<artifactId>vaadin-shared</artifactId>
+			<version>${vaadin.version}</version>
+		</dependency>
+<!-- 		<dependency> -->
+<!-- 			<groupId>com.vaadin</groupId> -->
+<!-- 			<artifactId>vaadin-shared-deps</artifactId> -->
+<!-- 			<scope>provided</scope> -->
+<!-- 			<version>1.0.2</version> -->
+<!-- 		</dependency> -->
+		<dependency>
+			<groupId>com.vaadin</groupId>
+			<artifactId>vaadin-client-compiler</artifactId>
+			<version>${vaadin.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>com.vaadin</groupId>
+			<artifactId>vaadin-themes</artifactId>
+			<version>${vaadin.version}</version>
+		</dependency>
+<!-- 		<dependency> -->
+<!-- 			<groupId>commons-io</groupId> -->
+<!-- 			<artifactId>commons-io</artifactId> -->
+<!-- 			<version>2.4</version> -->
+<!-- 		</dependency> -->
+		<!-- <dependency> -->
+		<!-- <groupId>com.vaadin</groupId> -->
+		<!-- <artifactId>vaadin-testbench</artifactId> -->
+		<!-- <version>3.0.4</version> -->
+		<!-- <scope>test</scope> -->
+		<!-- </dependency> -->
+<!-- 		<dependency> -->
+<!-- 			<groupId>javax.servlet</groupId> -->
+<!-- 			<artifactId>servlet-api</artifactId> -->
+<!-- 			<version>2.5</version> -->
+<!-- 			<scope>provided</scope> -->
+<!-- 		</dependency> -->
+		<!-- <dependency> -->
+		<!-- <groupId>junit</groupId> -->
+		<!-- <artifactId>junit</artifactId> -->
+		<!-- <version>LATEST</version> -->
+		<!-- <scope>test</scope> -->
+		<!-- </dependency> -->
+	</dependencies>
+
+	<build>
+		<resources>
+			<resource>
+				<!-- This add sources, .gwt.xml files etc to jar from source directory. 
+					Not quite maven convention byt easiest to setup this way. -->
+				<directory>src</directory>
+			</resource>
+			<resource>
+				<directory>src</directory>
+			</resource>
+		</resources>
+		<sourceDirectory>src</sourceDirectory>
+
+		<plugins>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-compiler-plugin</artifactId>
+				<version>2.5</version>
+				<configuration>
+					<source>1.8</source>
+					<target>1.8</target>
+				</configuration>
+			</plugin>
+			<plugin>
+				<groupId>com.vaadin</groupId>
+				<artifactId>vaadin-maven-plugin</artifactId>
+				<version>${vaadin.plugin.version}</version>
+				<configuration>
+					<extraJvmArgs>-Xmx1024M -Xss1024k</extraJvmArgs>
+					<!-- <runTarget>mobilemail</runTarget> -->
+					<!-- We are doing "inplace" but into subdir VAADIN/widgetsets. This 
+						way compatible with Vaadin eclipse plugin. -->
+					<webappDirectory>${basedir}/VAADIN/widgetsets
+					</webappDirectory>
+					<hostedWebapp>${basedir}/VAADIN/widgetsets
+					</hostedWebapp>
+					<noServer>true</noServer>
+					<!-- Remove draftCompile when project is ready -->
+					<draftCompile>true</draftCompile>
+					<strict>true</strict>
+					<compileReport>false</compileReport>
+					<style>PRETTY</style>
+					<logLevel>DEBUG</logLevel>
+					<runTarget>http://localhost:8080/</runTarget>
+
+					<!-- Remove these when going to release dependencies -->
+					<force>true</force>
+				</configuration>
+				<executions>
+					<execution>
+						<goals>
+							<goal>resources</goal>
+							<goal>compile</goal>
+						</goals>
+					</execution>
+				</executions>
+			</plugin>
+			<!-- As we are doing "inplace" GWT compilation, ensure the widgetset -->
+			<!-- directory is cleaned properly -->
+			<plugin>
+				<artifactId>maven-clean-plugin</artifactId>
+				<configuration>
+					<filesets>
+						<fileset>
+							<directory>${basedir}/VAADIN/widgetsets</directory>
+						</fileset>
+					</filesets>
+				</configuration>
+			</plugin>
+		</plugins>
+		<pluginManagement>
+			<plugins>
+				<!--This plugin's configuration is used to store Eclipse m2e settings 
+					only. It has no influence on the Maven build itself. -->
+				<plugin>
+					<groupId>org.eclipse.m2e</groupId>
+					<artifactId>lifecycle-mapping</artifactId>
+					<version>1.0.0</version>
+					<configuration>
+						<lifecycleMappingMetadata>
+							<pluginExecutions>
+								<pluginExecution>
+									<pluginExecutionFilter>
+										<groupId>com.vaadin</groupId>
+										<artifactId>vaadin-maven-plugin</artifactId>
+										<versionRange>[2.3.0-1,)</versionRange>
+										<goals>
+											<goal>resources</goal>
+										</goals>
+									</pluginExecutionFilter>
+									<action>
+										<ignore></ignore>
+									</action>
+								</pluginExecution>
+								<pluginExecution>
+									<pluginExecutionFilter>
+										<groupId>com.vaadin</groupId>
+										<artifactId>vaadin-maven-plugin</artifactId>
+										<versionRange>[1.0.2,)</versionRange>
+										<goals>
+											<goal>update-widgetset</goal>
+										</goals>
+									</pluginExecutionFilter>
+									<action>
+										<ignore></ignore>
+									</action>
+								</pluginExecution>
+							</pluginExecutions>
+						</lifecycleMappingMetadata>
+					</configuration>
+				</plugin>
+			</plugins>
+		</pluginManagement>
+	</build>
+</project>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.widgets/pom.xml b/org.eclipse.osbp.vaaclipse.widgets/pom.xml
new file mode 100644
index 0000000..ef20a23
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgets/pom.xml
@@ -0,0 +1,194 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <artifactId>org.eclipse.osbp.vaaclipse.widgets</artifactId>
+    <packaging>eclipse-plugin</packaging>
+    <parent>
+        <groupId>org.eclipse.osbp.vaaclipse</groupId>
+        <artifactId>org.eclipse.osbp.vaaclipse</artifactId>
+        <version>0.9.0-SNAPSHOT</version>
+        <relativePath>..</relativePath>
+    </parent>
+
+	<properties>
+		<vaaclipse-version>0.9.0-SNAPSHOT</vaaclipse-version>
+		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+		<vaadin.version>7.5.7</vaadin.version>
+	</properties>
+
+	<dependencies>
+		<dependency>
+			<groupId>org.vaadin.addons</groupId>
+			<artifactId>contextmenu</artifactId>
+			<version>4.2.1</version>
+		</dependency>
+		<dependency>
+			<groupId>org.vaadin.addons</groupId>
+			<artifactId>dragdroplayouts</artifactId>
+			<version>1.1.3</version>
+		</dependency>
+        <dependency>
+              <groupId>org.vaadin.addon</groupId>
+              <artifactId>easyuploads</artifactId>
+              <version>7.4.2</version>
+        </dependency>
+		<dependency>
+			<groupId>com.vaadin</groupId>
+			<artifactId>vaadin-server</artifactId>
+			<version>${vaadin.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>com.vaadin</groupId>
+			<artifactId>vaadin-client</artifactId>
+			<version>${vaadin.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>com.vaadin</groupId>
+			<artifactId>vaadin-client-compiled</artifactId>
+			<version>${vaadin.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>com.vaadin</groupId>
+			<artifactId>vaadin-shared</artifactId>
+			<version>${vaadin.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>com.vaadin</groupId>
+			<artifactId>vaadin-client-compiler</artifactId>
+			<version>${vaadin.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>com.vaadin</groupId>
+			<artifactId>vaadin-themes</artifactId>
+			<version>${vaadin.version}</version>
+		</dependency>
+	</dependencies>
+
+	<build>
+		<resources>
+			<resource>
+				<!-- This add sources, .gwt.xml files etc to jar from source directory. 
+					Not quite maven convention byt easiest to setup this way. -->
+				<directory>src</directory>
+			</resource>
+			<resource>
+				<directory>src</directory>
+			</resource>
+		</resources>
+		<sourceDirectory>src</sourceDirectory>
+
+		<plugins>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-compiler-plugin</artifactId>
+				<version>2.5</version>
+				<configuration>
+					<source>1.8</source>
+					<target>1.8</target>
+				</configuration>
+			</plugin>
+			<plugin>
+				<groupId>com.vaadin</groupId>
+				<artifactId>vaadin-maven-plugin</artifactId>
+				<version>${vaadin.plugin.version}</version>
+				<configuration>
+					<extraJvmArgs>-Xmx1024M -Xss1024k</extraJvmArgs>
+					<!-- <runTarget>mobilemail</runTarget> -->
+					<!-- We are doing "inplace" but into subdir VAADIN/widgetsets. This 
+						way compatible with Vaadin eclipse plugin. -->
+					<webappDirectory>${basedir}/VAADIN/widgetsets
+					</webappDirectory>
+					<hostedWebapp>${basedir}/VAADIN/widgetsets
+					</hostedWebapp>
+					<noServer>true</noServer>
+					<!-- Remove draftCompile when project is ready -->
+					<draftCompile>true</draftCompile>
+					<strict>true</strict>
+					<compileReport>false</compileReport>
+					<style>PRETTY</style>
+					<logLevel>DEBUG</logLevel>
+					<runTarget>http://localhost:8080/</runTarget>
+
+					<!-- Remove these when going to release dependencies -->
+					<force>true</force>
+				</configuration>
+				<executions>
+					<execution>
+						<goals>
+							<goal>resources</goal>
+							<goal>compile</goal>
+						</goals>
+					</execution>
+				</executions>
+			</plugin>
+			<!-- As we are doing "inplace" GWT compilation, ensure the widgetset -->
+			<!-- directory is cleaned properly -->
+			<plugin>
+				<artifactId>maven-clean-plugin</artifactId>
+				<configuration>
+					<filesets>
+						<fileset>
+							<directory>${basedir}/VAADIN/widgetsets</directory>
+						</fileset>
+					</filesets>
+				</configuration>
+			</plugin>
+		</plugins>
+		<pluginManagement>
+			<plugins>
+				<!--This plugin's configuration is used to store Eclipse m2e settings 
+					only. It has no influence on the Maven build itself. -->
+				<plugin>
+					<groupId>org.eclipse.m2e</groupId>
+					<artifactId>lifecycle-mapping</artifactId>
+					<version>1.0.0</version>
+					<configuration>
+						<lifecycleMappingMetadata>
+							<pluginExecutions>
+								<pluginExecution>
+									<pluginExecutionFilter>
+										<groupId>com.vaadin</groupId>
+										<artifactId>vaadin-maven-plugin</artifactId>
+										<versionRange>[2.3.0-1,)</versionRange>
+										<goals>
+											<goal>resources</goal>
+										</goals>
+									</pluginExecutionFilter>
+									<action>
+										<ignore/>
+									</action>
+								</pluginExecution>
+								<pluginExecution>
+									<pluginExecutionFilter>
+										<groupId>com.vaadin</groupId>
+										<artifactId>vaadin-maven-plugin</artifactId>
+										<versionRange>[1.0.2,)</versionRange>
+										<goals>
+											<goal>update-widgetset</goal>
+										</goals>
+									</pluginExecutionFilter>
+									<action>
+										<ignore/>
+									</action>
+								</pluginExecution>
+							</pluginExecutions>
+						</lifecycleMappingMetadata>
+					</configuration>
+				</plugin>
+			</plugins>
+		</pluginManagement>
+    </build>
+</project>
diff --git a/org.eclipse.osbp.vaaclipse.widgets/src/com/vaadin/client/ui/dd/VaaclipseDragAndDropManager.java b/org.eclipse.osbp.vaaclipse.widgets/src/com/vaadin/client/ui/dd/VaaclipseDragAndDropManager.java
new file mode 100644
index 0000000..272838f
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgets/src/com/vaadin/client/ui/dd/VaaclipseDragAndDropManager.java
@@ -0,0 +1,823 @@
+/*
+ * Copyright 2000-2013 Vaadin Ltd.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.vaadin.client.ui.dd;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import com.google.gwt.core.client.GWT;
+import com.google.gwt.core.client.Scheduler;
+import com.google.gwt.core.client.Scheduler.RepeatingCommand;
+import com.google.gwt.dom.client.Element;
+import com.google.gwt.dom.client.EventTarget;
+import com.google.gwt.dom.client.NativeEvent;
+import com.google.gwt.dom.client.Node;
+import com.google.gwt.dom.client.Style;
+import com.google.gwt.dom.client.Style.Display;
+import com.google.gwt.dom.client.Style.Unit;
+import com.google.gwt.event.dom.client.KeyCodes;
+import com.google.gwt.event.shared.HandlerRegistration;
+import com.google.gwt.user.client.Command;
+import com.google.gwt.user.client.Event;
+import com.google.gwt.user.client.Event.NativePreviewEvent;
+import com.google.gwt.user.client.Event.NativePreviewHandler;
+import com.google.gwt.user.client.Timer;
+import com.google.gwt.user.client.ui.RootPanel;
+import com.google.gwt.user.client.ui.Widget;
+import com.vaadin.client.ApplicationConnection;
+import com.vaadin.client.ComponentConnector;
+import com.vaadin.client.MouseEventDetailsBuilder;
+import com.vaadin.client.Profiler;
+import com.vaadin.client.UIDL;
+import com.vaadin.client.Util;
+import com.vaadin.client.ValueMap;
+import com.vaadin.client.ui.VOverlay;
+import com.vaadin.shared.ApplicationConstants;
+import com.vaadin.shared.MouseEventDetails;
+import com.vaadin.shared.ui.dd.DragEventType;
+
+import fi.jasoft.dragdroplayouts.client.ui.tabsheet.VDDTabSheet;
+
+/**
+ * Helper class to manage the state of drag and drop event on Vaadin client
+ * side. Can be used to implement most of the drag and drop operation
+ * automatically via cross-browser event preview method or just as a helper when
+ * implementing own low level drag and drop operation (like with HTML5 api).
+ * <p>
+ * Singleton. Only one drag and drop operation can be active anyways. Use
+ * {@link #get()} to get instance.
+ * 
+ * TODO cancel drag and drop if more than one touches !?
+ */
+public class VaaclipseDragAndDropManager extends VDragAndDropManager {
+
+	public static final String ACTIVE_DRAG_SOURCE_STYLENAME = "v-active-drag-source";
+
+	Logger logger = Logger.getLogger(VaaclipseDragAndDropManager.class
+			.getName());
+
+	private final class DefaultDragAndDropEventHandler implements
+			NativePreviewHandler {
+
+		@Override
+		public void onPreviewNativeEvent(NativePreviewEvent event) {
+			NativeEvent nativeEvent = event.getNativeEvent();
+
+			int typeInt = event.getTypeInt();
+			if (typeInt == Event.ONKEYDOWN) {
+				int keyCode = event.getNativeEvent().getKeyCode();
+				if (keyCode == KeyCodes.KEY_ESCAPE) {
+					// end drag if ESC is hit
+					interruptDrag();
+					event.cancel();
+					event.getNativeEvent().preventDefault();
+				}
+				// no use for handling for any key down event
+				return;
+			}
+
+			currentDrag.setCurrentGwtEvent(nativeEvent);
+			updateDragImagePosition();
+
+			Node targetNode = Node.as(nativeEvent.getEventTarget());
+			Element targetElement;
+			if (Element.is(targetNode)) {
+				targetElement = Element.as(targetNode);
+			} else {
+				targetElement = targetNode.getParentElement();
+			}
+
+			// VConsole.log("Target Element is: " + targetElement);
+			if (targetElement == null)
+				return;
+
+			if (Util.isTouchEvent(nativeEvent)
+					|| (dragElement != null && dragElement
+							.isOrHasChild(targetElement))) {
+				// to detect the "real" target, hide dragelement temporary and
+				// use elementFromPoint
+				String display = dragElement.getStyle().getDisplay();
+				dragElement.getStyle().setDisplay(Display.NONE);
+				try {
+					int x = Util.getTouchOrMouseClientX(nativeEvent);
+					int y = Util.getTouchOrMouseClientY(nativeEvent);
+					// Util.browserDebugger();
+					targetElement = Util.getElementFromPoint(x, y);
+					if (targetElement == null) {
+						// ApplicationConnection.getConsole().log(
+						// "Event on dragImage, ignored");
+						event.cancel();
+						nativeEvent.stopPropagation();
+						return;
+
+					} else {
+						// ApplicationConnection.getConsole().log(
+						// "Event on dragImage, target changed");
+						// special handling for events over dragImage
+						// pretty much all events are mousemove althout below
+						// kind of happens mouseover
+						switch (typeInt) {
+						case Event.ONMOUSEOVER:
+						case Event.ONMOUSEOUT:
+							// ApplicationConnection
+							// .getConsole()
+							// .log(
+							// "IGNORING proxy image event, fired because of hack or not significant");
+							return;
+						case Event.ONMOUSEMOVE:
+						case Event.ONTOUCHMOVE:
+							VDropHandler findDragTarget = findDragTarget(targetElement);
+							if (findDragTarget != currentDropHandler) {
+								// dragleave on old
+								if (currentDropHandler != null) {
+									currentDropHandler.dragLeave(currentDrag);
+									currentDrag.getDropDetails().clear();
+									serverCallback = null;
+								}
+								// dragenter on new
+								currentDropHandler = findDragTarget;
+								if (findDragTarget != null) {
+									// ApplicationConnection.getConsole().log(
+									// "DropHandler now"
+									// + currentDropHandler
+									// .getPaintable());
+								}
+
+								if (currentDropHandler != null) {
+									currentDrag
+											.setElementOver((com.google.gwt.user.client.Element) targetElement);
+									currentDropHandler.dragEnter(currentDrag);
+								}
+							} else if (findDragTarget != null) {
+								currentDrag
+										.setElementOver((com.google.gwt.user.client.Element) targetElement);
+								currentDropHandler.dragOver(currentDrag);
+							}
+							// prevent text selection on IE
+							nativeEvent.preventDefault();
+							return;
+						default:
+							// just update element over and let the actual
+							// handling code do the thing
+							// ApplicationConnection.getConsole().log(
+							// "Target just modified on "
+							// + event.getType());
+							currentDrag
+									.setElementOver((com.google.gwt.user.client.Element) targetElement);
+							break;
+						}
+
+					}
+				} catch (RuntimeException e) {
+					// ApplicationConnection.getConsole().log(
+					// "ERROR during elementFromPoint hack.");
+					throw e;
+				} finally {
+					dragElement.getStyle().setProperty("display", display);
+				}
+			}
+
+			switch (typeInt) {
+			case Event.ONMOUSEOVER:
+				VDropHandler target = findDragTarget(targetElement);
+
+				if (target != null && target != currentDropHandler) {
+					if (currentDropHandler != null) {
+						currentDropHandler.dragLeave(currentDrag);
+						currentDrag.getDropDetails().clear();
+					}
+
+					currentDropHandler = target;
+					// ApplicationConnection.getConsole().log(
+					// "DropHandler now"
+					// + currentDropHandler.getPaintable());
+					currentDrag
+							.setElementOver((com.google.gwt.user.client.Element) targetElement);
+					target.dragEnter(currentDrag);
+				} else if (target == null && currentDropHandler != null) {
+					// ApplicationConnection.getConsole().log("Invalid state!?");
+					currentDropHandler.dragLeave(currentDrag);
+					currentDrag.getDropDetails().clear();
+					currentDropHandler = null;
+				}
+				break;
+			case Event.ONMOUSEOUT:
+				Element relatedTarget = Element.as(nativeEvent
+						.getRelatedEventTarget());
+				VDropHandler newDragHanler = findDragTarget(relatedTarget);
+				// VConsole.log("Related Target is: " + relatedTarget);
+				if (dragElement != null
+						&& dragElement.isOrHasChild(relatedTarget)) {
+					// ApplicationConnection.getConsole().log(
+					// "Mouse out of dragImage, ignored");
+					return;
+				}
+
+				if (currentDropHandler != null
+						&& currentDropHandler != newDragHanler) {
+					currentDropHandler.dragLeave(currentDrag);
+					currentDrag.getDropDetails().clear();
+					currentDropHandler = null;
+					serverCallback = null;
+				}
+				break;
+			case Event.ONMOUSEMOVE:
+			case Event.ONTOUCHMOVE:
+				if (currentDropHandler != null) {
+					currentDrag
+							.setElementOver((com.google.gwt.user.client.Element) targetElement);
+					currentDropHandler.dragOver(currentDrag);
+				}
+				nativeEvent.preventDefault();
+
+				break;
+
+			case Event.ONTOUCHEND:
+				/* Avoid simulated event on drag end */
+				event.getNativeEvent().preventDefault();
+			case Event.ONMOUSEUP:
+				endDrag();
+				break;
+
+			default:
+				break;
+			}
+
+		}
+
+	}
+
+	private static VaaclipseDragAndDropManager instance;
+	private HandlerRegistration handlerRegistration;
+	private VDragEvent currentDrag;
+
+	/**
+	 * If dragging is currently on a drophandler, this field has reference to it
+	 */
+	private VDropHandler currentDropHandler;
+
+	public VDropHandler getCurrentDropHandler() {
+		return currentDropHandler;
+	}
+
+	/**
+	 * If drag and drop operation is not handled by
+	 * {@link VaaclipseDragAndDropManager}s internal handler, this can be used
+	 * to update current {@link VDropHandler} .
+	 * 
+	 * @param currentDropHandler
+	 */
+	public void setCurrentDropHandler(VDropHandler currentDropHandler) {
+		this.currentDropHandler = currentDropHandler;
+	}
+
+	private VDragEventServerCallback serverCallback;
+
+	private HandlerRegistration deferredStartRegistration;
+	private String version = "2";
+
+	public static VaaclipseDragAndDropManager get() {
+		if (instance == null) {
+			instance = GWT.create(VaaclipseDragAndDropManager.class);
+		}
+		return instance;
+	}
+
+	/* Singleton */
+	protected VaaclipseDragAndDropManager() {
+
+		logger.info("VaaclipseDragAndDropManager - version " + version);
+
+	}
+
+	private NativePreviewHandler defaultDragAndDropEventHandler = new DefaultDragAndDropEventHandler();
+
+	/**
+	 * Flag to indicate if drag operation has really started or not. Null check
+	 * of currentDrag field is not enough as a lazy start may be pending.
+	 */
+	private boolean isStarted;
+
+	/**
+	 * This method is used to start Vaadin client side drag and drop operation.
+	 * Operation may be started by virtually any Widget.
+	 * <p>
+	 * Cancels possible existing drag. TODO figure out if this is always a bug
+	 * if one is active. Maybe a good and cheap lifesaver thought.
+	 * <p>
+	 * If possible, method automatically detects current {@link VDropHandler}
+	 * and fires {@link VDropHandler#dragEnter(VDragEvent)} event on it.
+	 * <p>
+	 * May also be used to control the drag and drop operation. If this option
+	 * is used, {@link VDropHandler} is searched on mouse events and appropriate
+	 * methods on it called automatically.
+	 * 
+	 * @param transferable
+	 * @param nativeEvent
+	 * @param handleDragEvents
+	 *            if true, {@link VaaclipseDragAndDropManager} handles the drag
+	 *            and drop operation GWT event preview.
+	 * @return
+	 */
+	public VDragEvent startDrag(VTransferable transferable,
+			final NativeEvent startEvent, final boolean handleDragEvents) {
+
+		interruptDrag();
+		isStarted = false;
+
+		currentDrag = new VDragEvent(transferable, startEvent);
+		currentDrag.setCurrentGwtEvent(startEvent);
+
+		final Command startDrag = new Command() {
+
+			@Override
+			public void execute() {
+				isStarted = true;
+				addActiveDragSourceStyleName();
+				VDropHandler dh = null;
+				if (startEvent != null) {
+					dh = findDragTarget(Element.as(currentDrag
+							.getCurrentGwtEvent().getEventTarget()));
+				}
+				if (dh != null) {
+					// drag has started on a DropHandler, kind of drag over
+					// happens
+					currentDropHandler = dh;
+					dh.dragEnter(currentDrag);
+				}
+
+				if (handleDragEvents) {
+					handlerRegistration = Event
+							.addNativePreviewHandler(defaultDragAndDropEventHandler);
+					if (dragElement != null
+							&& dragElement.getParentElement() == null) {
+						// deferred attaching drag image is on going, we can
+						// hurry with it now
+						lazyAttachDragElement.cancel();
+						lazyAttachDragElement.run();
+					}
+				}
+				// just capture something to prevent text selection in IE
+				Event.setCapture(RootPanel.getBodyElement());
+			}
+
+			private void addActiveDragSourceStyleName() {
+				ComponentConnector dragSource = currentDrag.getTransferable()
+						.getDragSource();
+				dragSource.getWidget().addStyleName(
+						ACTIVE_DRAG_SOURCE_STYLENAME);
+			}
+		};
+
+		final int eventType = Event.as(startEvent).getTypeInt();
+		if (handleDragEvents
+				&& (eventType == Event.ONMOUSEDOWN || eventType == Event.ONTOUCHSTART)) {
+			// only really start drag event on mousemove
+			deferredStartRegistration = Event
+					.addNativePreviewHandler(new NativePreviewHandler() {
+
+						@Override
+						public void onPreviewNativeEvent(
+								NativePreviewEvent event) {
+							int typeInt = event.getTypeInt();
+							switch (typeInt) {
+							case Event.ONMOUSEOVER:
+								if (dragElement == null) {
+									break;
+								}
+								EventTarget currentEventTarget = event
+										.getNativeEvent()
+										.getCurrentEventTarget();
+								if (Node.is(currentEventTarget)
+										&& !dragElement.isOrHasChild(Node
+												.as(currentEventTarget))) {
+									// drag image appeared below, ignore
+									break;
+								}
+							case Event.ONKEYDOWN:
+							case Event.ONKEYPRESS:
+							case Event.ONKEYUP:
+							case Event.ONBLUR:
+							case Event.ONFOCUS:
+								// don't cancel possible drag start
+								break;
+							case Event.ONMOUSEOUT:
+
+								if (dragElement == null) {
+									break;
+								}
+								EventTarget relatedEventTarget = event
+										.getNativeEvent()
+										.getRelatedEventTarget();
+								if (Node.is(relatedEventTarget)
+										&& !dragElement.isOrHasChild(Node
+												.as(relatedEventTarget))) {
+									// drag image appeared below, ignore
+									break;
+								}
+							case Event.ONMOUSEMOVE:
+							case Event.ONTOUCHMOVE:
+								if (deferredStartRegistration != null) {
+									deferredStartRegistration.removeHandler();
+									deferredStartRegistration = null;
+								}
+								currentDrag.setCurrentGwtEvent(event
+										.getNativeEvent());
+								startDrag.execute();
+								break;
+							default:
+								// on any other events, clean up the
+								// deferred drag start
+								if (deferredStartRegistration != null) {
+									deferredStartRegistration.removeHandler();
+									deferredStartRegistration = null;
+								}
+								currentDrag = null;
+								clearDragElement();
+								break;
+							}
+						}
+
+					});
+
+		} else {
+			startDrag.execute();
+		}
+
+		return currentDrag;
+	}
+
+	private void updateDragImagePosition() {
+		if (currentDrag.getCurrentGwtEvent() != null && dragElement != null) {
+			Style style = dragElement.getStyle();
+			int clientY = Util.getTouchOrMouseClientY(currentDrag
+					.getCurrentGwtEvent());
+			int clientX = Util.getTouchOrMouseClientX(currentDrag
+					.getCurrentGwtEvent());
+			style.setTop(clientY, Unit.PX);
+			style.setLeft(clientX, Unit.PX);
+		}
+	}
+
+	public VDropHandler findDragTarget(com.google.gwt.dom.client.Element element) {
+
+		// VConsole.log("findDragTarget: version " + version);
+
+		try {
+			Widget w = Util.findWidget(
+					(com.google.gwt.user.client.Element) element, null);
+			if (w == null) {
+				return null;
+			}
+
+			ComponentConnector dragSource = currentDrag.getTransferable()
+					.getDragSource();
+
+			if (dragSource != null
+					&& dragSource.getWidget() instanceof VDDTabSheet) {
+				while (!(w instanceof VDDTabSheet)) {
+					w = w.getParent();
+					if (w == null) {
+						break;
+					}
+				}
+			} else {
+				while (!(w instanceof VHasDropHandler)
+						|| !isDropEnabled((VHasDropHandler) w)) {
+					w = w.getParent();
+					if (w == null) {
+						break;
+					}
+				}
+			}
+
+			if (w == null) {
+				return null;
+			} else {
+				VDropHandler dh = ((VHasDropHandler) w).getDropHandler();
+				return dh;
+			}
+		} catch (Exception e) {
+			return null;
+		}
+
+	}
+
+	/**
+	 * Checks if the given {@link VHasDropHandler} really is able to accept
+	 * drops.
+	 */
+	private static boolean isDropEnabled(VHasDropHandler target) {
+		VDropHandler dh = target.getDropHandler();
+		return dh != null && dh.getConnector().isEnabled();
+	}
+
+	/**
+	 * Drag is ended (drop happened) on current drop handler. Calls drop method
+	 * on current drop handler and does appropriate cleanup.
+	 */
+	public void endDrag() {
+		endDrag(true);
+	}
+
+	/**
+	 * The drag and drop operation is ended, but drop did not happen. If
+	 * operation is currently on a drop handler, its dragLeave method is called
+	 * and appropriate cleanup happens.
+	 */
+	public void interruptDrag() {
+		endDrag(false);
+	}
+
+	private void endDrag(boolean doDrop) {
+		if (handlerRegistration != null) {
+			handlerRegistration.removeHandler();
+			handlerRegistration = null;
+		}
+		boolean sendTransferableToServer = false;
+		if (currentDropHandler != null) {
+			if (doDrop) {
+				// we have dropped on a drop target
+				sendTransferableToServer = currentDropHandler.drop(currentDrag);
+				if (sendTransferableToServer) {
+					doRequest(DragEventType.DROP);
+					/*
+					 * Clean active source class name deferred until response is
+					 * handled. E.g. hidden on start, removed in drophandler ->
+					 * would flicker in case removed eagerly.
+					 */
+					final ComponentConnector dragSource = currentDrag
+							.getTransferable().getDragSource();
+					final ApplicationConnection client = currentDropHandler
+							.getApplicationConnection();
+					Scheduler.get().scheduleFixedDelay(new RepeatingCommand() {
+						@Override
+						public boolean execute() {
+							if (!client.hasActiveRequest()) {
+								removeActiveDragSourceStyleName(dragSource);
+								return false;
+							}
+							return true;
+						}
+
+					}, 30);
+
+				}
+			} else {
+				currentDrag.setCurrentGwtEvent(null);
+				currentDropHandler.dragLeave(currentDrag);
+			}
+			currentDropHandler = null;
+			serverCallback = null;
+			visitId = 0; // reset to ignore ongoing server check
+		}
+
+		/*
+		 * Remove class name indicating drag source when server visit is done
+		 * iff server visit was not initiated. Otherwise it will be removed once
+		 * the server visit is done.
+		 */
+		if (!sendTransferableToServer && currentDrag != null) {
+			removeActiveDragSourceStyleName(currentDrag.getTransferable()
+					.getDragSource());
+		}
+
+		currentDrag = null;
+
+		clearDragElement();
+
+		// release the capture (set to prevent text selection in IE)
+		Event.releaseCapture(RootPanel.getBodyElement());
+
+	}
+
+	private void removeActiveDragSourceStyleName(ComponentConnector dragSource) {
+		dragSource.getWidget().removeStyleName(ACTIVE_DRAG_SOURCE_STYLENAME);
+	}
+
+	private void clearDragElement() {
+		if (dragElement != null) {
+			if (dragElement.getParentElement() != null) {
+				dragElement.removeFromParent();
+			}
+			dragElement = null;
+		}
+	}
+
+	private int visitId = 0;
+	private Element dragElement;
+
+	/**
+	 * Visits server during drag and drop procedure. Transferable and event type
+	 * is given to server side counterpart of DropHandler.
+	 * 
+	 * If another server visit is started before the current is received, the
+	 * current is just dropped. TODO consider if callback should have
+	 * interrupted() method for cleanup.
+	 * 
+	 * @param acceptCallback
+	 */
+	public void visitServer(VDragEventServerCallback acceptCallback) {
+		doRequest(DragEventType.ENTER);
+		serverCallback = acceptCallback;
+	}
+
+	private void doRequest(DragEventType drop) {
+		if (currentDropHandler == null) {
+			return;
+		}
+		ComponentConnector paintable = currentDropHandler.getConnector();
+		ApplicationConnection client = currentDropHandler
+				.getApplicationConnection();
+		/*
+		 * For drag events we are using special id that are routed to
+		 * "drag service" which then again finds the corresponding DropHandler
+		 * on server side.
+		 * 
+		 * TODO add rest of the data in Transferable
+		 * 
+		 * TODO implement partial updates to Transferable (currently the whole
+		 * Transferable is sent on each request)
+		 */
+		visitId++;
+		client.updateVariable(ApplicationConstants.DRAG_AND_DROP_CONNECTOR_ID,
+				"visitId", visitId, false);
+		client.updateVariable(ApplicationConstants.DRAG_AND_DROP_CONNECTOR_ID,
+				"eventId", currentDrag.getEventId(), false);
+		client.updateVariable(ApplicationConstants.DRAG_AND_DROP_CONNECTOR_ID,
+				"dhowner", paintable, false);
+
+		VTransferable transferable = currentDrag.getTransferable();
+
+		client.updateVariable(ApplicationConstants.DRAG_AND_DROP_CONNECTOR_ID,
+				"component", transferable.getDragSource(), false);
+
+		client.updateVariable(ApplicationConstants.DRAG_AND_DROP_CONNECTOR_ID,
+				"type", drop.ordinal(), false);
+
+		if (currentDrag.getCurrentGwtEvent() != null) {
+			try {
+				MouseEventDetails mouseEventDetails = MouseEventDetailsBuilder
+						.buildMouseEventDetails(currentDrag
+								.getCurrentGwtEvent());
+				currentDrag.getDropDetails().put("mouseEvent",
+						mouseEventDetails.serialize());
+			} catch (Exception e) {
+				// NOP, (at least oophm on Safari) can't serialize html dd event
+				// to mouseevent
+			}
+		} else {
+			currentDrag.getDropDetails().put("mouseEvent", null);
+		}
+		client.updateVariable(ApplicationConstants.DRAG_AND_DROP_CONNECTOR_ID,
+				"evt", currentDrag.getDropDetails(), false);
+
+		client.updateVariable(ApplicationConstants.DRAG_AND_DROP_CONNECTOR_ID,
+				"tra", transferable.getVariableMap(), true);
+
+	}
+
+	public void handleServerResponse(ValueMap valueMap) {
+		if (serverCallback == null) {
+			return;
+		}
+		Profiler.enter("VDragAndDropManager.handleServerResponse");
+
+		UIDL uidl = (UIDL) valueMap.cast();
+		int visitId = uidl.getIntAttribute("visitId");
+
+		if (this.visitId == visitId) {
+			serverCallback.handleResponse(uidl.getBooleanAttribute("accepted"),
+					uidl);
+			serverCallback = null;
+		}
+		runDeferredCommands();
+
+		Profiler.leave("VDragAndDropManager.handleServerResponse");
+	}
+
+	private void runDeferredCommands() {
+		if (deferredCommand != null) {
+			Command command = deferredCommand;
+			deferredCommand = null;
+			command.execute();
+			if (!isBusy()) {
+				runDeferredCommands();
+			}
+		}
+	}
+
+	void setDragElement(Element node) {
+		if (currentDrag != null) {
+			if (dragElement != null && dragElement != node) {
+				clearDragElement();
+			} else if (node == dragElement) {
+				return;
+			}
+
+			dragElement = node;
+			dragElement.addClassName("v-drag-element");
+			updateDragImagePosition();
+
+			if (isStarted) {
+				lazyAttachDragElement.run();
+			} else {
+				/*
+				 * To make our default dnd handler as compatible as possible, we
+				 * need to defer the appearance of dragElement. Otherwise events
+				 * that are derived from sequences of other events might not
+				 * fire as domchanged will fire between them or mouse up might
+				 * happen on dragElement.
+				 */
+				lazyAttachDragElement.schedule(300);
+			}
+		}
+	}
+
+	Element getDragElement() {
+		return dragElement;
+	}
+
+	private final Timer lazyAttachDragElement = new Timer() {
+
+		@Override
+		public void run() {
+			if (dragElement != null && dragElement.getParentElement() == null) {
+				ApplicationConnection connection = getCurrentDragApplicationConnection();
+				Element dragImageParent;
+				if (connection == null) {
+					logger.log(
+							Level.SEVERE,
+							"Could not determine ApplicationConnection for current drag operation. The drag image will likely look broken");
+					dragImageParent = RootPanel.getBodyElement();
+				} else {
+					dragImageParent = VOverlay.getOverlayContainer(connection);
+				}
+				dragImageParent.appendChild(dragElement);
+			}
+
+		}
+	};
+
+	private Command deferredCommand;
+
+	private boolean isBusy() {
+		return serverCallback != null;
+	}
+
+	protected ApplicationConnection getCurrentDragApplicationConnection() {
+		if (currentDrag == null) {
+			return null;
+		}
+
+		final ComponentConnector dragSource = currentDrag.getTransferable()
+				.getDragSource();
+		if (dragSource == null) {
+			return null;
+		}
+		return dragSource.getConnection();
+	}
+
+	/**
+	 * Method to que tasks until all dd related server visits are done
+	 * 
+	 * @param command
+	 */
+	private void defer(Command command) {
+		deferredCommand = command;
+	}
+
+	/**
+	 * Method to execute commands when all existing dd related tasks are
+	 * completed (some may require server visit).
+	 * <p>
+	 * Using this method may be handy if criterion that uses lazy initialization
+	 * are used. Check
+	 * <p>
+	 * TODO Optimization: consider if we actually only need to keep the last
+	 * command in queue here.
+	 * 
+	 * @param command
+	 */
+	public void executeWhenReady(Command command) {
+		if (isBusy()) {
+			defer(command);
+		} else {
+			command.execute();
+		}
+	}
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/FastView.java b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/FastView.java
new file mode 100644
index 0000000..c66cd2a
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/FastView.java
@@ -0,0 +1,36 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.widgets;
+
+import org.eclipse.osbp.vaaclipse.widgets.client.ui.fastview.FastViewState;
+
+import com.vaadin.ui.Component;
+import com.vaadin.ui.Window;
+
+/**
+ * @author rushan
+ *
+ */
+public class FastView extends Window {
+	@Override
+	protected FastViewState getState() {
+		return (FastViewState) super.getState();
+	}
+
+	public void setSide(Integer side) {
+		this.getState().side = side;
+	}
+
+	public void setTrimmedWindowClientArea(Component component) {
+		this.getState().trimmedWindowClientArea = component;
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/StackWidget.java b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/StackWidget.java
new file mode 100644
index 0000000..d211832
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/StackWidget.java
@@ -0,0 +1,117 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.widgets;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+
+import com.vaadin.server.PaintException;
+import com.vaadin.server.PaintTarget;
+
+import fi.jasoft.dragdroplayouts.DDTabSheet;
+import fi.jasoft.dragdroplayouts.client.ui.LayoutDragMode;
+
+/**
+ * @author rushan
+ *
+ */
+public class StackWidget extends DDTabSheet {
+	public interface StateListener {
+		void stateChanged(int newState, int oldState);
+	}
+
+	private boolean minMaxEnabled = true;
+	private int state = 0;
+	private List<StateListener> stateListeners = new ArrayList<StateListener>();
+
+	public StackWidget() {
+		this.addStyleName("stackwidget");
+		this.setDragMode(LayoutDragMode.CLONE);
+	}
+
+	/**
+	 * The hack that allow avoid bug in DDTabSheet when sometimes draggable tabs
+	 * become non draggable
+	 */
+	// @Override
+	// public void beforeClientResponse(boolean initial) {
+	// super.beforeClientResponse(initial);
+	//
+	// Iterator<Component> componentIterator = getComponentIterator();
+	// getState().draggable = new ArrayList<Connector>();
+	// while (componentIterator.hasNext()) {
+	// Component c = componentIterator.next();
+	// getState().draggable.add(c);
+	// }
+	// }
+
+	@Override
+	public void changeVariables(Object source, Map<String, Object> variables) {
+		// TODO luna - may cause problems
+		// super.changeVariables(source, variables);
+
+		if (variables.containsKey("vaadock_tabsheet_state")) {
+			int newState = (Integer) variables.get("vaadock_tabsheet_state");
+			int oldState = state;
+			state = newState;
+			fireStateChangedEvent(state, oldState);
+		}
+	}
+
+	public void setState(int state) {
+		this.state = state;
+		this.markAsDirty();
+	}
+
+	@Override
+	public void paintContent(PaintTarget target) throws PaintException {
+		super.paintContent(target);
+
+		target.addAttribute("vaadock_tabsheet_state", state);
+		target.addAttribute("minmax_enabled", this.minMaxEnabled);
+		target.addAttribute("svoi", 5);
+	}
+
+	public boolean isMinMaxEnabled() {
+		return minMaxEnabled;
+	}
+
+	public void setMinMaxEnabled(boolean minMaxEnabled) {
+		this.minMaxEnabled = minMaxEnabled;
+		this.requestRepaint();
+	}
+
+	public List<StateListener> getStateListeners() {
+		return Collections.unmodifiableList(stateListeners);
+	}
+
+	public void addStateListener(StateListener stateListener) {
+		this.stateListeners.add(stateListener);
+	}
+
+	public void removeStateListener(StateListener stateListener) {
+		this.stateListeners.remove(stateListener);
+	}
+
+	public void removeAllStateListeners() {
+		this.stateListeners.clear();
+	}
+
+	private void fireStateChangedEvent(int newState, int oldState) {
+		for (StateListener stateListener : new ArrayList<StateListener>(
+				this.stateListeners)) {
+			stateListener.stateChanged(newState, oldState);
+		}
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/client/ui/fastview/FastViewConnector.java b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/client/ui/fastview/FastViewConnector.java
new file mode 100644
index 0000000..27914e4
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/client/ui/fastview/FastViewConnector.java
@@ -0,0 +1,82 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.widgets.client.ui.fastview;
+
+import java.util.Set;
+
+import org.eclipse.osbp.vaaclipse.widgets.FastView;
+import org.eclipse.osbp.vaaclipse.widgets.common.Side;
+
+import com.google.gwt.user.client.ui.Widget;
+import com.vaadin.client.ComponentConnector;
+import com.vaadin.client.communication.StateChangeEvent;
+import com.vaadin.client.ui.window.WindowConnector;
+import com.vaadin.shared.ui.Connect;
+
+/**
+ * @author rushan
+ *
+ */
+@Connect(FastView.class)
+public class FastViewConnector extends WindowConnector {
+	@Override
+	public VFastView getWidget() {
+		return (VFastView) super.getWidget();
+	}
+
+	@Override
+	public void onStateChanged(StateChangeEvent stateChangeEvent) {
+		super.onStateChanged(stateChangeEvent);
+
+		Set<String> changedProperties = stateChangeEvent.getChangedProperties();
+		if (changedProperties.contains("side")) {
+			getWidget().side = getState().side;
+			getWidget().trimmedWindowClientArea = ((ComponentConnector) getState().trimmedWindowClientArea)
+					.getWidget();
+			setPaneLocation();
+		}
+	}
+
+	@Override
+	public FastViewState getState() {
+		return (FastViewState) super.getState();
+	}
+
+	public void setPaneLocation() {
+		VFastView fastView = getWidget();
+
+		if (fastView.side == null)
+			return;
+
+		// VExtendedVerticalLayout trimmedWindowClientArea =
+		// findTrimmedWindowClientArea(RootPanel.get());
+		Widget trimmedWindowClientArea = fastView.trimmedWindowClientArea;
+
+		if (trimmedWindowClientArea != null) {
+			int x, y;
+			int w = 600, h = 400;
+			if (Side.LEFT.equals(fastView.side)) {
+				x = trimmedWindowClientArea.getAbsoluteLeft();
+				y = trimmedWindowClientArea.getAbsoluteTop();
+			} else if (Side.RIGHT.equals(fastView.side)) {
+				x = trimmedWindowClientArea.getAbsoluteLeft()
+						+ trimmedWindowClientArea.getOffsetWidth() - w;
+				y = trimmedWindowClientArea.getAbsoluteTop();
+			} else
+				return;
+
+			fastView.setPopupPosition(x, y);
+			fastView.setWidth(w + "px");
+			fastView.setHeight(h + "px");
+		}
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/client/ui/fastview/FastViewState.java b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/client/ui/fastview/FastViewState.java
new file mode 100644
index 0000000..4f45812
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/client/ui/fastview/FastViewState.java
@@ -0,0 +1,23 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.widgets.client.ui.fastview;
+
+import com.vaadin.shared.Connector;
+import com.vaadin.shared.ui.window.WindowState;
+
+/**
+ * @author rushan
+ *
+ */
+public class FastViewState extends WindowState {
+	public Integer side;
+	public Connector trimmedWindowClientArea;
+}
diff --git a/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/client/ui/fastview/VFastView.java b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/client/ui/fastview/VFastView.java
new file mode 100644
index 0000000..7dfb4e6
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/client/ui/fastview/VFastView.java
@@ -0,0 +1,20 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.widgets.client.ui.fastview;
+
+import com.google.gwt.user.client.ui.Widget;
+import com.vaadin.client.ui.VWindow;
+
+public class VFastView extends VWindow {
+	Integer side;
+	Widget trimmedWindowClientArea;
+}
diff --git a/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/client/ui/stackwidget/StackWidgetConnector.java b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/client/ui/stackwidget/StackWidgetConnector.java
new file mode 100644
index 0000000..a0d04d5
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/client/ui/stackwidget/StackWidgetConnector.java
@@ -0,0 +1,97 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.widgets.client.ui.stackwidget;
+
+import java.util.logging.Logger;
+
+import org.eclipse.osbp.vaaclipse.widgets.StackWidget;
+
+import com.google.gwt.core.client.GWT;
+import com.google.gwt.user.client.ui.Widget;
+import com.vaadin.client.ApplicationConnection;
+import com.vaadin.client.UIDL;
+import com.vaadin.client.communication.StateChangeEvent;
+import com.vaadin.shared.ui.Connect;
+
+import fi.jasoft.dragdroplayouts.client.VDragFilter;
+import fi.jasoft.dragdroplayouts.client.ui.interfaces.DDLayoutState;
+import fi.jasoft.dragdroplayouts.client.ui.tabsheet.DDTabsheetConnector;
+
+/**
+ * @author rushan
+ * 
+ */
+@Connect(StackWidget.class)
+public class StackWidgetConnector extends DDTabsheetConnector {
+	Logger logger = Logger.getLogger(StackWidgetConnector.class.getName());
+
+	@Override
+	protected Widget createWidget() {
+		return GWT.create(VStackWidget.class);
+	}
+
+	@Override
+	public VStackWidget getWidget() {
+		return (VStackWidget) super.getWidget();
+	}
+
+	/**
+	 * Called whenever an update is received from the server
+	 */
+	public void updateFromUIDL(UIDL uidl, ApplicationConnection client) {
+		VStackWidget stackWidget = getWidget();
+
+		stackWidget.id = uidl.getId();
+		stackWidget.client = client;
+
+		if (uidl.getIntAttribute("svoi") == 5) {
+			int state = uidl.getIntAttribute("vaadock_tabsheet_state");
+			stackWidget.setState(state);
+			stackWidget.setMinmaxEnabled(uidl
+					.getBooleanAttribute("minmax_enabled"));
+		}
+
+		if (isRealUpdate(uidl) && !uidl.hasAttribute("hidden")) {
+			UIDL acceptCrit = uidl.getChildByTagName("-ac");
+			if (acceptCrit == null) {
+				getWidget().setDropHandler(null);
+			} else {
+				if (getWidget().getDropHandler() == null) {
+					getWidget().setDropHandler(
+							new VStackWidgetDropHandler(getWidget(), this));
+					logger.info("updateFromUIDL: VStackWidgetDropHandler installed");
+				}
+				getWidget().getDropHandler().updateAcceptRules(acceptCrit);
+			}
+		}
+
+		super.updateFromUIDL(uidl, client);
+	}
+
+	@Override
+	public void onStateChanged(StateChangeEvent stateChangeEvent) {
+		super.onStateChanged(stateChangeEvent);
+		getWidget().setDragFilter(new VSWDragFilter(getState().ddState));
+	}
+
+	private class VSWDragFilter extends VDragFilter {
+
+		public VSWDragFilter(DDLayoutState state) {
+			super(state);
+		}
+
+		@Override
+		public boolean isDraggable(Widget widget) {
+			return true;
+		}
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/client/ui/stackwidget/VStackWidget.java b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/client/ui/stackwidget/VStackWidget.java
new file mode 100644
index 0000000..acee73f
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/client/ui/stackwidget/VStackWidget.java
@@ -0,0 +1,792 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.widgets.client.ui.stackwidget;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.osbp.vaaclipse.widgets.common.GeomUtils;
+import org.eclipse.osbp.vaaclipse.widgets.common.Side;
+import org.eclipse.osbp.vaaclipse.widgets.common.Vector;
+
+import com.google.gwt.core.client.GWT;
+import com.google.gwt.dom.client.Node;
+import com.google.gwt.user.client.DOM;
+import com.google.gwt.user.client.Element;
+import com.google.gwt.user.client.Event;
+import com.google.gwt.user.client.ui.ComplexPanel;
+import com.google.gwt.user.client.ui.RootPanel;
+import com.google.gwt.user.client.ui.Widget;
+import com.vaadin.client.ApplicationConnection;
+import com.vaadin.client.MouseEventDetailsBuilder;
+import com.vaadin.client.Util;
+import com.vaadin.client.ui.dd.VDragEvent;
+import com.vaadin.client.ui.orderedlayout.VAbstractOrderedLayout;
+import com.vaadin.shared.MouseEventDetails;
+import com.vaadin.shared.ui.dd.HorizontalDropLocation;
+
+import fi.jasoft.dragdroplayouts.client.ui.Constants;
+import fi.jasoft.dragdroplayouts.client.ui.VDragDropUtil;
+import fi.jasoft.dragdroplayouts.client.ui.tabsheet.VDDTabSheet;
+
+/**
+ * Client side widget which communicates with the server. Messages from the
+ * server are shown as HTML and mouse clicks are sent to the server.
+ */
+public class VStackWidget extends VDDTabSheet
+// ,DragHandlerFinder
+{
+
+	/** Set the CSS class name to allow styling. */
+	public static final String CLASSNAME = "v-stackwidget";
+
+	public static final String CLICK_EVENT_IDENTIFIER = "click";
+
+	ApplicationConnection client;
+	String id;
+
+	// Minmax button support
+	Element tabs;
+	Element scroller;
+	String originalScrollerMarginLeftAttribute;
+	Element buttonPanel;
+
+	// Docking support
+	ComplexPanel tabBar;
+
+	Integer dockSide;
+
+	Element dockZone1;
+	Element dockZone2;
+	Element dockZone3;
+	Element dockZone4;
+
+	Element dockZoneContainer;
+
+	final String E4_ELEMENT_TYPE = "e4ElementType";
+
+	Element maximizeButton;
+	Element minimizeButton;
+	int state;
+
+	private static final int MINIMIZED = -1;
+	private static final int NORMAL = 0;
+	private static final int MAXIMIZED = 1;
+
+	private boolean minmaxEnabled = true;
+
+	private String baseURL;
+
+	// Relocate of part toolbar support
+	// private boolean toolbarRelocated = false;
+	private Element toolbarElement;
+	private Map<Element, String> overflowRewritedElements;
+
+	/**
+	 * The constructor should first call super() to initialize the component and
+	 * then handle any initialization relevant to Vaadin.
+	 */
+	public VStackWidget() {
+		super();
+
+		this.baseURL = GWT.getHostPageBaseURL();
+
+		// Get the tabBar
+		tabBar = (ComplexPanel) getChildren().get(0);
+
+		tabs = (Element) getElement().getChild(0);
+
+		scroller = DOM.getChild(tabs, 1);
+		for (int i = 0; i < DOM.getChildCount(scroller); i++) {
+			Element child = DOM.getChild(scroller, i);
+			DOM.setStyleAttribute(child, "float", "left");
+		}
+
+		buttonPanel = DOM.createDiv();
+		setStyleName(buttonPanel, "vaadock-tabsheet-button-panel");
+		DOM.appendChild(tabs, buttonPanel);
+
+		maximizeButton = DOM.createButton();
+		setStyleName(maximizeButton, "v-vaadock-tabsheet-maximize-button");
+		DOM.sinkEvents(maximizeButton, Event.ONCLICK);
+		DOM.appendChild(buttonPanel, maximizeButton);
+
+		minimizeButton = DOM.createButton();
+		DOM.sinkEvents(minimizeButton, Event.ONCLICK);
+		setStyleName(minimizeButton, "v-vaadock-tabsheet-minimize-button");
+		DOM.appendChild(buttonPanel, minimizeButton);
+
+		setMinmaxEnabled(true);
+	}
+
+	public boolean isMinmaxEnabled() {
+		return minmaxEnabled;
+	}
+
+	public void setMinmaxEnabled(boolean minmaxEnabled) {
+		this.minmaxEnabled = minmaxEnabled;
+
+		if (this.minmaxEnabled) {
+			DOM.setStyleAttribute(buttonPanel, "display", "");
+			// DOM.setStyleAttribute(scroller, "marginRight", "45px");
+		} else {
+			DOM.setStyleAttribute(buttonPanel, "display", "none");
+			// DOM.setStyleAttribute(scroller, "marginRight", "0px");
+		}
+	}
+
+	@Override
+	public void iLayout() {
+		super.iLayout();
+
+		processPartToolbar();
+	}
+
+	public void processPartToolbar() {
+		updateLocationOfButtonPanel();
+		updateLocationOfPartToolbar();
+	}
+
+	private void updateLocationOfButtonPanel() {
+		if (isMinmaxEnabled()) {
+			int buttonPanelHeight = tabs.getOffsetHeight();
+			int buttonPanelMarginTop = -buttonPanelHeight;
+			// DOM.setStyleAttribute(buttonPanel, "height", buttonPanelHeight
+			// + "px");
+			// DOM.setStyleAttribute(buttonPanel, "marginTop", "0px");
+		}
+	}
+
+	public int getState() {
+		return state;
+	}
+
+	public void setState(int state) {
+		if (!this.isMinmaxEnabled() && state != MINIMIZED && state != NORMAL
+				&& state != MAXIMIZED)
+			return;
+
+		this.state = state;
+		// VConsole.log("VStackWidget: state = " + this.state);
+
+		if (this.state == NORMAL) {
+			this.state = NORMAL;
+			setStyleName(maximizeButton, "v-vaadock-tabsheet-maximize-button");
+			setStyleName(minimizeButton, "v-vaadock-tabsheet-minimize-button");
+			maximizeButton.setAttribute("style", "");
+			minimizeButton.setAttribute("style", "");
+		} else if (this.state == MAXIMIZED) {
+			this.state = MAXIMIZED;
+			setStyleName(maximizeButton, "v-vaadock-tabsheet-restore-button");
+			setStyleName(minimizeButton, "v-vaadock-tabsheet-minimize-button");
+			maximizeButton.setAttribute("style", "");
+			minimizeButton.setAttribute("style", "");
+		} else if (this.state == MINIMIZED) {
+			this.state = MINIMIZED;
+			setStyleName(maximizeButton, "v-vaadock-tabsheet-maximize-button");
+			setStyleName(minimizeButton, "v-vaadock-tabsheet-restore-button");
+			maximizeButton.setAttribute("style", "display: none;");
+			minimizeButton.setAttribute("style", "");
+		}
+	}
+
+	@Override
+	public void onBrowserEvent(Event event) {
+		if (event.getTypeInt() == Event.ONCLICK) {
+			if (DOM.eventGetTarget(event) == maximizeButton) {
+				// VConsole.log(event.getType());
+				synchronized (this) {
+					event.stopPropagation();
+
+					if (this.state == MAXIMIZED) {
+						setState(NORMAL);
+					} else if (this.state == NORMAL) {
+						setState(MAXIMIZED);
+					}
+
+					client.updateVariable(this.id, "vaadock_tabsheet_state",
+							new Integer(this.state), true);
+				}
+			} else if (DOM.eventGetTarget(event) == minimizeButton) {
+				// VConsole.log(event.getType());
+				synchronized (this) {
+					event.stopPropagation();
+
+					if (this.state == NORMAL) {
+						setState(MINIMIZED);
+					} else if (this.state == MINIMIZED) {
+						setState(NORMAL);
+					} else if (this.state == MAXIMIZED) {
+						setState(MINIMIZED);
+					}
+
+					client.updateVariable(this.id, "vaadock_tabsheet_state",
+							new Integer(this.state), true);
+				}
+			}
+		}
+
+		super.onBrowserEvent(event);
+
+	}
+
+	// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+	// Drag-and-drop support
+	// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+	@Override
+	public void deEmphasis() {
+		super.deEmphasis();
+	}
+
+	@Override
+	public void emphasis(com.google.gwt.dom.client.Element element,
+			VDragEvent event) {
+		super.emphasis(element, event);
+	}
+
+	@Override
+	public boolean postDropHook(VDragEvent drag) {
+		removeDockZone();
+		return super.postDropHook(drag);
+	}
+
+	@Override
+	protected void postOverHook(VDragEvent drag) {
+		super.postOverHook(drag);
+	}
+
+	@Override
+	public void postLeaveHook(VDragEvent drag) {
+		super.postLeaveHook(drag);
+	}
+
+	// public VDropHandler findDragTarget(com.google.gwt.dom.client.Element
+	// element) {
+	//
+	// try {
+	// Widget w = Util.findWidget(
+	// (com.google.gwt.user.client.Element) element, null);
+	// if (w == null) {
+	// return null;
+	// }
+	//
+	// VDragEvent event = VDragAndDropManager.get().getDragEvent();
+	// Widget sourceWidget = (Widget) event.getTransferable().getDragSource();
+	// if (sourceWidget != null && sourceWidget instanceof VDDTabSheet)
+	// {
+	// while (!(w instanceof VDDTabSheet) ) {
+	// w = w.getParent();
+	// if (w == null) {
+	// break;
+	// }
+	// }
+	// }
+	// else
+	// {
+	// while (!(w instanceof VHasDropHandler) ) {
+	// w = w.getParent();
+	// if (w == null) {
+	// break;
+	// }
+	// }
+	// }
+	//
+	// if (w == null) {
+	// return null;
+	// } else {
+	// VDropHandler dh = ((VHasDropHandler) w).getDropHandler();
+	// return dh;
+	// }
+	// } catch (Exception e) {
+	// return null;
+	// }
+	//
+	// }
+
+	protected boolean isDockZoneExists() {
+		return dockZone1 != null && dockZoneContainer != null;
+	}
+
+	protected void removeDockZone() {
+		if (isDockZoneExists()) {
+			dockSide = null;
+			DOM.removeChild(dockZoneContainer, dockZone1);
+			DOM.removeChild(dockZoneContainer, dockZone2);
+			DOM.removeChild(dockZoneContainer, dockZone3);
+			DOM.removeChild(dockZoneContainer, dockZone4);
+			dockZone1 = null;
+			dockZone2 = null;
+			dockZone3 = null;
+			dockZone4 = null;
+			dockZoneContainer = null;
+
+			// VConsole.log("removeDockZone: dock zone removed");
+		}
+	}
+
+	public boolean updateRegion(VDragEvent event) {
+		// VConsole.log("updateDropDetails: start");
+		Element element = event.getElementOver();
+		Widget targetWidget = Util.findWidget(element, null);
+
+		if (targetWidget == null) {
+			// VConsole.log("updateDropDetails: targetWidget is null. return.");
+			return false;
+		}
+
+		if (targetWidget != this) {
+			// VConsole.log("updateDropDetails: targetWidget != this");
+			Widget parent = targetWidget.getParent();
+			while (parent != null && parent != this) {
+				parent = parent.getParent();
+			}
+
+			if (parent == null) {
+				// VConsole.log("updateDropDetails: parent not finded");
+				return false;
+			}
+			targetWidget = parent;
+			// VConsole.log("updateDropDetails: parent finded");
+		}
+
+		MouseEventDetails details1 = MouseEventDetailsBuilder
+				.buildMouseEventDetails(event.getCurrentGwtEvent(),
+						getElement());
+
+		int mouseX = details1.getClientX();
+		int mouseY = details1.getClientY();
+
+		int barLeft = tabBar.getAbsoluteLeft();
+		int barTop = tabBar.getAbsoluteTop();
+		int barWidth = tabBar.getOffsetWidth();
+		int barHeight = tabBar.getOffsetHeight();
+
+		boolean overBar = mouseX > barLeft && mouseX < barLeft + barWidth
+				&& mouseY > barTop && mouseY < barTop + barHeight;
+
+		if (overBar) {
+			// VConsole.log("updateDropDetails: over bar");
+			removeDockZone();
+
+			event.getDropDetails().put("targetWidgetClassName",
+					targetWidget.getClass().getName());
+			event.getDropDetails().put("dropType", "DropToTabsheetBar");
+			event.getDropDetails().put("targetWidgetAbsoluteLeft",
+					targetWidget.getAbsoluteLeft());
+			event.getDropDetails().put("targetWidgetAbsoluteTop",
+					targetWidget.getAbsoluteTop());
+			event.getDropDetails().put("targetWidgetOffsetWidth",
+					targetWidget.getOffsetWidth());
+			event.getDropDetails().put("targetWidgetOffsetHeight",
+					targetWidget.getOffsetHeight());
+		} else {
+			// VConsole.log("updateDropDetails: not over bar");
+			Object sourceWidget = event.getTransferable().getDragSource();
+			if (!(sourceWidget instanceof VStackWidget)
+					&& !(sourceWidget instanceof StackWidgetConnector)) {
+				// VConsole.log("updateDropDetails: return, because the sourceWidget is "
+				// + sourceWidget.getClass().getName());
+				return false;
+			}
+
+			if (sourceWidget instanceof StackWidgetConnector)
+				sourceWidget = ((StackWidgetConnector) sourceWidget)
+						.getWidget();
+
+			// VConsole.log("updateDropDetails: sourceWidget is VStackWidget or StackWidgetConnector");
+
+			VStackWidget targetTabSheet = this;
+
+			if (targetTabSheet == sourceWidget
+					&& targetTabSheet.getTabCount() <= 1) {
+				// VConsole.log("updateDropDetails: return, because target is match to source and has only one (current draggable) tab");
+				return false;
+			}
+
+			VAbstractOrderedLayout outerArea = findOuterArea(targetTabSheet);
+
+			Widget boundingWidget = null;
+
+			if (outerArea != null) {
+				// VConsole.log("updateDropDetails: outer area is finded");
+				if (outerArea.getStyleName().contains(
+						"org_eclipse_osbp_vaaclipse_area"))
+					boundingWidget = outerArea;
+			} else {
+				boundingWidget = targetTabSheet;
+				// VConsole.log("updateDropDetails: outer area not finded, boundingWidget = targetTabSheet");
+			}
+
+			if (boundingWidget == null) {
+				// VConsole.log("updateDropDetails: return, because boundingWidget not founded");
+				return false;
+			}
+
+			event.getDropDetails().put("targetWidgetClassName",
+					boundingWidget.getClass().getName());
+			event.getDropDetails().put("dropType", "DropToTabsheetBody");
+			event.getDropDetails().put("targetWidgetAbsoluteLeft",
+					boundingWidget.getAbsoluteLeft());
+			event.getDropDetails().put("targetWidgetAbsoluteTop",
+					boundingWidget.getAbsoluteTop());
+			event.getDropDetails().put("targetWidgetOffsetWidth",
+					boundingWidget.getOffsetWidth());
+			event.getDropDetails().put("targetWidgetOffsetHeight",
+					boundingWidget.getOffsetHeight());
+
+			int x0 = boundingWidget.getAbsoluteLeft();
+			int y0 = boundingWidget.getAbsoluteTop();
+			int dx = boundingWidget.getOffsetWidth();
+			int dy = boundingWidget.getOffsetHeight();
+
+			int docPrcnt = 30;
+			double docX = dx * docPrcnt / 100;
+			double docY = dy * docPrcnt / 100;
+			double d = 1;
+
+			Vector mousePos = Vector.valueOf(mouseX, mouseY);
+
+			Integer side = GeomUtils.findDockSide(x0, y0, dx, dy, docX, docY,
+					mousePos);
+			// VConsole.log("updateDropDetails: finded dock side = " + side +
+			// ", old dock side = " + dockSide);
+			if (side != null) {
+				double _x = 0, _y = 0, _w = 0, _h = 0;
+
+				if (side == Side.LEFT) {
+					_x = d;
+					_y = d;
+					_w = docX - d;
+					_h = dy - 2 * d;
+				} else if (side == Side.TOP) {
+					_x = d;
+					_y = d;
+					_w = dx - 2 * d;
+					_h = docY - d;
+				} else if (side == Side.RIGHT) {
+					_x = dx - docX;
+					_y = d;
+					_w = docX - d;
+					_h = dy - 2 * d;
+				} else if (side == Side.BOTTOM) {
+					_x = d;
+					_y = dy - docY;
+					_w = dx - 2 * d;
+					_h = docY - d;
+				} else if (side == Side.CENTER) {
+					_x = d;
+					_y = d;
+					_w = dx - 2 * d;
+					_h = dy - 2 * d;
+				} else
+					return false;
+
+				_x = x0 + _x;
+				_y = y0 + _y;
+
+				if (dockZone1 == null) {
+					dockZone1 = DOM.createDiv();
+					dockZone2 = DOM.createDiv();
+					dockZone3 = DOM.createDiv();
+					dockZone4 = DOM.createDiv();
+				}
+
+				// VConsole.log("updateDropDetails: x=" + _x + "; y=" + _y +
+				// "; w=" + _w + "; h=" + _h);
+
+				if (side != dockSide) {
+					// VConsole.log("updateDropDetails: dock side will be updated");
+					int l = 3;
+					String style1 = "position: absolute; left: "
+							+ _x
+							+ "px; top: "
+							+ _y
+							+ "px; width: "
+							+ _w
+							+ "px; height: "
+							+ l
+							+ "px; background-image: url("
+							+ baseURL
+							+ "VAADIN/themes/dragdrop/vaadock/img/dockzone.png); z-index: 20000;";
+					dockZone1.setAttribute("style", style1);
+
+					String style2 = "position: absolute; left: "
+							+ _x
+							+ "px; top: "
+							+ (_y + _h - l)
+							+ "px; width: "
+							+ _w
+							+ "px; height: "
+							+ l
+							+ "px; background-image: url("
+							+ baseURL
+							+ "VAADIN/themes/dragdrop/vaadock/img/dockzone.png); z-index: 20000;";
+					dockZone2.setAttribute("style", style2);
+
+					String style3 = "position: absolute; left: "
+							+ _x
+							+ "px; top: "
+							+ _y
+							+ "px; width: "
+							+ l
+							+ "px; height: "
+							+ _h
+							+ "px; background-image: url("
+							+ baseURL
+							+ "VAADIN/themes/dragdrop/vaadock/img/dockzone.png); z-index: 20000;";
+					dockZone3.setAttribute("style", style3);
+
+					String style4 = "position: absolute; left: "
+							+ (_x + _w - l)
+							+ "px; top: "
+							+ _y
+							+ "px; width: "
+							+ l
+							+ "px; height: "
+							+ _h
+							+ "px; background-image: url("
+							+ baseURL
+							+ "VAADIN/themes/dragdrop/vaadock/img/dockzone.png); z-index: 20000;";
+					dockZone4.setAttribute("style", style4);
+
+					// setStyleName(dockZone, "v-etot-sukin-syn");
+					// dockZoneContainer = boundingWidget.getElement();
+					dockZoneContainer = RootPanel.get().getElement();
+					DOM.appendChild(dockZoneContainer, dockZone1);
+					DOM.appendChild(dockZoneContainer, dockZone2);
+					DOM.appendChild(dockZoneContainer, dockZone3);
+					DOM.appendChild(dockZoneContainer, dockZone4);
+
+					dockSide = side;
+				}
+			}
+		}
+
+		return true;
+	}
+
+	/**
+	 * Updates the drop details while dragging. This is needed to ensure client
+	 * side criterias can validate the drop location.
+	 * 
+	 * @param widget
+	 *            The container which we are hovering over
+	 * @param event
+	 *            The drag event
+	 */
+	@Override
+	public void updateDragDetails(VDragEvent event) {
+		if (!updateRegion(event))
+			return;
+
+		Element element = event.getElementOver();
+		Widget targetWidget = Util.findWidget(element, null);
+
+		// --
+		if (tabBar.getElement().isOrHasChild(element)) {
+
+			if (targetWidget == tabBar) {
+				// Ove3r the spacer
+
+				// Add index
+				event.getDropDetails().put(Constants.DROP_DETAIL_TO,
+						tabBar.getWidgetCount() - 1);
+
+				// Add drop location
+				event.getDropDetails().put(
+						Constants.DROP_DETAIL_HORIZONTAL_DROP_LOCATION,
+						HorizontalDropLocation.RIGHT);
+
+			} else {
+
+				// Add index
+				event.getDropDetails().put(Constants.DROP_DETAIL_TO,
+						getTabPosition(targetWidget));
+
+				// Add drop location
+				HorizontalDropLocation location = VDragDropUtil
+						.getHorizontalDropLocation(element, Util
+								.getTouchOrMouseClientX(event
+										.getCurrentGwtEvent()),
+								getTabLeftRightDropRatio());
+				event.getDropDetails().put(
+						Constants.DROP_DETAIL_HORIZONTAL_DROP_LOCATION,
+						location);
+			}
+		}
+
+		// Add mouse event details
+		MouseEventDetails details = MouseEventDetailsBuilder
+				.buildMouseEventDetails(event.getCurrentGwtEvent(),
+						getElement());
+		event.getDropDetails().put(Constants.DROP_DETAIL_MOUSE_EVENT,
+				details.serialize());
+	}
+
+	private VAbstractOrderedLayout findOuterArea(Widget w) {
+		if (w instanceof VAbstractOrderedLayout) {
+			VAbstractOrderedLayout bl = (VAbstractOrderedLayout) w;
+			String styleName = bl.getStyleName();
+			if (styleName != null
+					&& !styleName.isEmpty()
+					&& (styleName.contains("org_eclipse_osbp_vaaclipse_area")
+							|| styleName
+									.contains("org_eclipse_osbp_vaaclipse_perspective") || styleName
+								.contains("org_eclipse_osbp_vaaclipse_window"))) {
+				return bl;
+			}
+		}
+
+		if (w.getParent() != null)
+			return findOuterArea(w.getParent());
+		else
+			return null;
+	}
+
+	// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+	// Part toolbar relocate support
+	// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+	private void updateLocationOfPartToolbar() {
+		// if (!getWidgetIterator().hasNext())
+		// return;
+		//
+		// Widget selectedWidget = getCurrentlyDisplayedWidget();
+		//
+		// if (selectedWidget == null || selectedWidget.getElement() == null)
+		// return;
+		//
+		// List pathToToolbar = findToolbarElement(selectedWidget.getElement(),
+		// 12);
+		// if (pathToToolbar.isEmpty())
+		// return;
+		//
+		// toolbarElement = (Element) pathToToolbar.get(pathToToolbar.size() -
+		// 1);
+		//
+		// if (toolbarElement == null)
+		// return;
+
+		// String mR, mT;
+		// try {
+		// mR = DOM.getStyleAttribute(toolbarElement, "marginRight");
+		// mT = DOM.getStyleAttribute(toolbarElement, "marginTop");
+		// } catch (Exception e) {
+		// return;
+		// }
+		//
+		// if (mR != null && mT != null && !mR.trim().isEmpty()
+		// && !mT.trim().isEmpty()) {// toolbar is relocated, check is
+		// // there are space in tabs panel and
+		// // if no, restore location of
+		// // toolbar
+		// if (!hasSpace(toolbarElement)) {
+		// restoreLocationOfPartToolbar();
+		// }
+		// } else {// toolbar is not relocated, check is there are space in tabs
+		// // panel and if yes, move toolbar to tabs panel
+		// if (hasSpace(toolbarElement)) {
+		// if (activeTabIndex >= 0 && this.getParent() != null)
+		// changeLocationOfPartToolbar(selectedWidget, pathToToolbar);
+		// }
+		// }
+	}
+
+	private boolean hasSpace(Element toolbarElement) {
+		Element tb = (Element) tabs.getChild(0);
+		Element spacertd = (Element) tb.getChild(0).getChild(0).getLastChild();
+
+		return tb.getOffsetWidth()
+				- DOM.getElementPropertyInt((Element) spacertd.cast(),
+						"offsetWidth") < getOffsetWidth()
+				- (isMinmaxEnabled() ? buttonPanel.getOffsetWidth() : 0)
+				- toolbarElement.getOffsetWidth() - 10;
+	}
+
+	private void changeLocationOfPartToolbar(Widget selectedWidget,
+			List pathToToolbar) {
+		// overflowRewritedElements = new HashMap<Element, String>();
+		// Element selectedElementParent =
+		// selectedWidget.getParent().getElement();
+		// // Two DOM-elements of selectedWidget.getParent() should be included
+		// to
+		// // overflow rewrite
+		// pathToToolbar.add(0, selectedElementParent.getChild(0));
+		// pathToToolbar.add(0, selectedElementParent);
+		// for (int i = 0; i < pathToToolbar.size(); i++) {
+		// Element element = (Element) pathToToolbar.get(i);
+		// String overflow = DOM.getElementProperty((Element) element,
+		// "overflow");
+		// if (!"".equals(overflow) && !"visible".equals(overflow)
+		// && !"".equals("inherit")) {
+		// DOM.setStyleAttribute(element, "overflow", "visible");
+		// overflowRewritedElements.put(element, overflow);
+		// }
+		// }
+		//
+		// updateGeometry();
+	}
+
+	private void updateGeometry() {
+		// int marginRight = (isMinmaxEnabled() ? buttonPanel.getOffsetWidth() :
+		// 0) + 5;
+		// int marginTop = tabs.getAbsoluteTop() -
+		// toolbarElement.getAbsoluteTop();
+		//
+		// DOM.setStyleAttribute(toolbarElement, "marginRight", marginRight +
+		// "px");
+		// DOM.setStyleAttribute(toolbarElement, "marginTop", marginTop + "px");
+	}
+
+	void restoreLocationOfPartToolbar() {
+		// if (toolbarElement == null)
+		// return;
+		//
+		// DOM.setStyleAttribute(toolbarElement, "marginRight", "");
+		// DOM.setStyleAttribute(toolbarElement, "marginTop", "");
+		//
+		// toolbarElement = null;
+		// overflowRewritedElements = null;
+	}
+
+	/**
+	 * Find the toolbar element in rootElement. Searching in first elements
+	 * throw first n element Return the path to toolbar element in order from
+	 * rootElement to toolbar including rootElement and toolbar
+	 * 
+	 * @return
+	 */
+	private List findToolbarElement(Element rootElement, int n) {
+		List pathToParent = new ArrayList();
+		pathToParent.add(rootElement);
+		Element element = rootElement;
+		int depth = 0;
+		while (element.getChildCount() > 0 && ++depth < n) {
+			Node node = element.getChild(0);
+			if (node instanceof Element) {
+				element = (Element) node;
+				pathToParent.add(element);
+				String className = element.getClassName();
+				if (className != null
+						&& !className.contains("mparttoolbararea")
+						&& className.contains("mparttoolbar"))
+					break;
+			} else
+				return new ArrayList();
+		}
+
+		if (element == null)
+			pathToParent.clear();
+
+		return pathToParent;
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/client/ui/stackwidget/VStackWidgetDropHandler.java b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/client/ui/stackwidget/VStackWidgetDropHandler.java
new file mode 100644
index 0000000..1bf2f5d
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/client/ui/stackwidget/VStackWidgetDropHandler.java
@@ -0,0 +1,79 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.widgets.client.ui.stackwidget;
+
+import com.vaadin.client.ComponentConnector;
+import com.vaadin.client.ui.dd.VAcceptCallback;
+import com.vaadin.client.ui.dd.VDragEvent;
+
+import fi.jasoft.dragdroplayouts.client.ui.Constants;
+import fi.jasoft.dragdroplayouts.client.ui.tabsheet.VDDTabsheetDropHandler;
+
+public class VStackWidgetDropHandler extends VDDTabsheetDropHandler {
+
+	private final VStackWidget stackWidget;
+
+	public VStackWidgetDropHandler(VStackWidget stackWidget,
+			ComponentConnector connector) {
+		super(connector);
+		this.stackWidget = stackWidget;
+	}
+
+	@Override
+	public void dragOver(VDragEvent drag) {
+
+		// VConsole.log("Drag Over");
+
+		stackWidget.deEmphasis();
+
+		stackWidget.updateDragDetails(drag);
+
+		stackWidget.postOverHook(drag);
+
+		// Check if we are dropping on our self
+		if (stackWidget.equals(drag.getTransferable().getData(
+				Constants.TRANSFERABLE_DETAIL_COMPONENT))) {
+			return;
+		}
+
+		// Validate the drop
+		validate(new VAcceptCallback() {
+			public void accepted(VDragEvent event) {
+				stackWidget.emphasis(event.getElementOver(), event);
+			}
+		}, drag);
+	};
+
+	@Override
+	public void dragLeave(VDragEvent drag) {
+		// VConsole.log("Drag Leave");
+		stackWidget.deEmphasis();
+		stackWidget.updateDragDetails(drag);
+		stackWidget.postLeaveHook(drag);
+
+		stackWidget.removeDockZone();
+	};
+
+	@Override
+	public boolean drop(VDragEvent event) {
+		if (!stackWidget.updateRegion(event))
+			return false;
+
+		Object sourceWidget = event.getTransferable().getDragSource();
+		if (sourceWidget instanceof StackWidgetConnector) {
+			sourceWidget = ((StackWidgetConnector) sourceWidget).getWidget();
+			VStackWidget stackWidget = (VStackWidget) sourceWidget;
+			stackWidget.restoreLocationOfPartToolbar();
+		}
+
+		return super.drop(event);
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/common/Bounds.java b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/common/Bounds.java
new file mode 100644
index 0000000..271ecfa
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/common/Bounds.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.widgets.common;
+
+/**
+ * @author rushan
+ *
+ */
+public class Bounds {
+	public int x, y, w, h;
+
+	public Bounds(int x, int y, int w, int h) {
+		this.x = x;
+		this.y = y;
+		this.w = w;
+		this.h = h;
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/common/Constants.java b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/common/Constants.java
new file mode 100644
index 0000000..5e7080e
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/common/Constants.java
@@ -0,0 +1,19 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.widgets.common;
+
+/**
+ * @author rushan
+ *
+ */
+public class Constants {
+	public static final String E4_ELEMENT_TYPE = "e4ElementType";
+}
diff --git a/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/common/GeomUtils.java b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/common/GeomUtils.java
new file mode 100644
index 0000000..82269ad
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/common/GeomUtils.java
@@ -0,0 +1,67 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osbp.vaaclipse.widgets.common;
+
+/**
+ * @author rushan
+ *
+ */
+public class GeomUtils {
+
+	public static Integer findDockSide(int x0, int y0, int dx, int dy,
+			double docX, double docY, Vector mousePos) {
+		if (GeometryHelper.containsInRectangle(
+				Vector.valueOf(x0 + docX, y0 + docY),
+				Vector.valueOf(dx - 2 * docX, dy - 2 * docY), mousePos))
+			return Side.CENTER;
+		else if (GeometryHelper.containsInRectangle(
+				Vector.valueOf(x0 + docX, y0 + dy - docY),
+				Vector.valueOf(dx - 2 * docX, docY), mousePos)
+				|| GeometryHelper.containsInRightTriangle(
+						Vector.valueOf(x0 + docX, y0 + dy), -docX, -docY,
+						mousePos)
+				|| GeometryHelper.containsInRightTriangle(
+						Vector.valueOf(x0 + dx - docX, y0 + dy), docX, -docY,
+						mousePos)) {
+			return Side.BOTTOM;
+		} else if (GeometryHelper.containsInRectangle(
+				Vector.valueOf(x0, y0 + docY), new Vector(docX, dy - 2 * docY),
+				mousePos)
+				|| GeometryHelper.containsInRightTriangle(
+						Vector.valueOf(x0, y0 + docY), docX, -docY, mousePos)
+				|| GeometryHelper.containsInRightTriangle(
+						Vector.valueOf(x0, y0 + dy - docY), docX, docY,
+						mousePos)) {
+			return Side.LEFT;
+		} else if (GeometryHelper.containsInRectangle(
+				Vector.valueOf(x0 + dx - docX, y0 + docY), new Vector(docX, dy
+						- 2 * docY), mousePos)
+				|| GeometryHelper.containsInRightTriangle(
+						Vector.valueOf(x0 + dx, y0 + docY), -docX, -docY,
+						mousePos)
+				|| GeometryHelper.containsInRightTriangle(
+						Vector.valueOf(x0 + dx, y0 + dy - docY), -docX, docY,
+						mousePos)) {
+			return Side.RIGHT;
+		} else if (GeometryHelper.containsInRectangle(
+				Vector.valueOf(x0 + docX, y0), new Vector(dy - 2 * docY, docY),
+				mousePos)
+				|| GeometryHelper.containsInRightTriangle(
+						Vector.valueOf(x0 + docX, y0), -docX, docY, mousePos)
+				|| GeometryHelper.containsInRightTriangle(
+						Vector.valueOf(x0 + dx - docX, y0), docX, docY,
+						mousePos)) {
+			return Side.TOP;
+		} else
+			return null;
+	}
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/common/GeometryHelper.java b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/common/GeometryHelper.java
new file mode 100644
index 0000000..cfe2c95
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/common/GeometryHelper.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osbp.vaaclipse.widgets.common;
+
+/**
+ * @author rushan
+ *
+ */
+public class GeometryHelper {
+	// public static boolean containsInRectangle(Rectangle rect, Vector point)
+	// {
+	// return point.getX() >= rect.getCorner1().getX() && point.getX() <=
+	// rect.getCorner4().getX() &&
+	// point.getY() >= rect.getCorner1().getY() && point.getX() <=
+	// rect.getCorner2().getY();
+	// }
+
+	public static boolean containsInRectangle(Vector start, Vector sides,
+			Vector point) {
+		// return containsInRectangle(new Rectangle(start, sides), point);
+		return point.getX() >= start.getX()
+				&& point.getX() <= start.getX() + sides.getX()
+				&& point.getY() >= start.getY()
+				&& point.getY() <= start.getY() + sides.getY();
+	}
+
+	public static boolean containsInRightTriangle(Vector triangleRigthAngle,
+			double catetX, double catetY, Vector point) {
+		if (catetX < 0) {
+			// coordinate translation
+			catetX = -catetX;
+			triangleRigthAngle = new Vector(-triangleRigthAngle.getX(),
+					triangleRigthAngle.getY());
+			point = new Vector(-point.getX(), point.getY());
+		}
+
+		if (catetY < 0) {
+			// coordinate translation
+			catetY = -catetY;
+			triangleRigthAngle = new Vector(triangleRigthAngle.getX(),
+					-triangleRigthAngle.getY());
+			point = new Vector(point.getX(), -point.getY());
+		}
+
+		return point.getX() >= triangleRigthAngle.getX()
+				&& point.getX() <= triangleRigthAngle.getX() + catetX
+				&& Math.abs(triangleRigthAngle.getY() - point.getY()) <= (catetY / catetX)
+						* Math.abs(triangleRigthAngle.getX() + catetX
+								- point.getX());
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/common/Rectangle.java b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/common/Rectangle.java
new file mode 100644
index 0000000..b8707ec
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/common/Rectangle.java
@@ -0,0 +1,48 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osbp.vaaclipse.widgets.common;
+
+/**
+ * @author rushan
+ *
+ */
+public class Rectangle {
+	private Vector start, sides;
+
+	public Rectangle(double x, double y, double w, double h) {
+		this.start = new Vector(x, y);
+		this.sides = new Vector(w, h);
+	}
+
+	public Vector getStart() {
+		return start;
+	}
+
+	public Vector getSides() {
+		return sides;
+	}
+
+	public Vector getCorner1() {
+		return start;
+	}
+
+	public Vector getCorner2() {
+		return start.plus(sides.getYProectionVector());
+	}
+
+	public Vector getCorner3() {
+		return start.plus(sides);
+	}
+
+	public Vector getCorner4() {
+		return start.plus(sides.getXProectionVector());
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/common/Side.java b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/common/Side.java
new file mode 100644
index 0000000..d6bbc60
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/common/Side.java
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.widgets.common;
+
+/**
+ * Side values from eclipse model's SideValue for using in client and server
+ * 
+ * @author rushan
+ *
+ */
+public class Side {
+	public static final Integer TOP = 0;
+
+	public static final Integer BOTTOM = 1;
+
+	public static final Integer LEFT = 2;
+
+	public static final Integer RIGHT = 3;
+
+	public static final Integer CENTER = 100;
+}
diff --git a/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/common/Vector.java b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/common/Vector.java
new file mode 100644
index 0000000..0f52d3a
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/common/Vector.java
@@ -0,0 +1,194 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osbp.vaaclipse.widgets.common;
+
+/**
+ * @author rushan
+ *
+ */
+public class Vector {
+	private double x;
+	private double y;
+
+	public static Vector ortX = new Vector(1, 0);
+	public static Vector ortY = new Vector(0, 1);
+	public static Vector ZERO = new Vector(0, 0);
+
+	public static Vector vectorX(double x) {
+		return new Vector(x, 0);
+	}
+
+	public static Vector vectorY(double y) {
+		return new Vector(0, y);
+	}
+
+	/**
+	 * shortcut for vectorX
+	 */
+	public static Vector vX(double x) {
+		return vectorX(x);
+	}
+
+	/**
+	 * shortcut for vectorY
+	 */
+	public static Vector vY(double y) {
+		return vectorY(y);
+	}
+
+	public Vector(double x, double y) {
+		this.x = x;
+		this.y = y;
+	}
+
+	public static Vector valueOf(double x, double y) {
+		return new Vector(x, y);
+	}
+
+	public double getX() {
+		return x;
+	}
+
+	public void setX(double x) {
+		this.x = x;
+	}
+
+	public double getY() {
+		return y;
+	}
+
+	public void setY(double y) {
+		this.y = y;
+	}
+
+	public void setXY(double x, double y) {
+		setX(x);
+		setY(y);
+	}
+
+	public Vector getXProectionVector() {
+		return Vector.vectorX(this.x);
+	}
+
+	public Vector getYProectionVector() {
+		return Vector.vectorY(this.y);
+	}
+
+	public double getLength() {
+		return Math.sqrt(getX() * getX() + getY() * getY());
+	}
+
+	public Vector opposite() {
+		return new Vector(-this.getX(), -this.getY());
+	}
+
+	public Vector normalize() {
+		double len = getLength();
+		return new Vector(getX() / len, getY() / len);
+	}
+
+	public boolean isNull() {
+		return getX() == 0.0 && getY() == 0.0;
+	}
+
+	public Vector scale(double n) {
+		return new Vector(this.getX() * n, this.getY() * n);
+	}
+
+	public Vector div(double n) {
+		return scale(1 / n);
+	}
+
+	public Vector scaleX(double n) {
+		return new Vector(this.getX() * n, this.getY());
+	}
+
+	public Vector scaleY(double n) {
+		return new Vector(this.getX(), this.getY() * n);
+	}
+
+	public Vector plus(Vector v) {
+		return new Vector(this.getX() + v.getX(), this.getY() + v.getY());
+	}
+
+	public Vector minus(Vector v) {
+		return new Vector(this.getX() - v.getX(), this.getY() - v.getY());
+	}
+
+	public static double dotProduct(Vector v1, Vector v2) {
+		return v1.getX() * v2.getX() + v1.getY() * v2.getY();
+	}
+
+	public static double getAngle(Vector v1, Vector v2) {
+		// косинус угла между векторами
+		double cos = dotProduct(v1, v2) / (v1.getLength() * v2.getLength());
+		return Math.acos(cos);
+	}
+
+	public static Vector[] getOrtogonalOrts(Vector v) {
+		double len = v.getLength();
+		Vector ort1 = new Vector(v.getY() / len, -v.getX() / len);
+		Vector ort2 = new Vector(-v.getY() / len, v.getX() / len);
+		return new Vector[] { ort1, ort2 };
+	}
+
+	@Override
+	public String toString() {
+		return "(" + this.getX() + ", " + this.getY() + ")";
+	}
+
+	private static boolean sameSign(double val1, double val2) {
+		if (val1 == 0 && val2 == 0)
+			return true;
+		if (val1 == 0 && val2 != 0 || val2 == 0 && val1 != 0)
+			return false;
+		return (val1 > 0 && val2 > 0) || (val1 < 0 && val2 < 0);
+	}
+
+	public static boolean isEqual(Vector v1, Vector v2, double E) {
+		return Math.abs(v1.getX() - v2.getX()) < E
+				&& Math.abs(v1.getY() - v2.getY()) < E;
+	}
+
+	public static boolean isEqual(Vector v1, Vector v2) {
+		return v1.getX() == v2.getX() && v1.getY() == v2.getY();
+	}
+
+	public static boolean isSameDirection(Vector v1, Vector v2, double E) {
+		if (v1.isNull() || v2.isNull())
+			return false;
+
+		double s = v2.getX() != 0 ? v1.getX() / v2.getX() : v1.getY()
+				/ v2.getY();
+		Vector test2 = v2.scale(s);
+		if (isEqual(v1, test2, E)) {
+			// Проверка, что вектора направлены в одну и ту же сторону
+			return sameSign(v1.getX(), v2.getX())
+					&& sameSign(v1.getY(), v2.getY());
+		} else
+			return false;
+	}
+
+	public static boolean nonStrictCompare(Vector v1, Vector v2, double E) {
+		if (Math.abs(v1.getX() - v2.getX()) < E)
+			if (Math.abs(v1.getY() - v2.getY()) < E)
+				return true;
+		return false;
+	}
+
+	public static Vector maximum(Vector v1, Vector v2) {
+		return v1.getLength() > v2.getLength() ? v1.getCopy() : v2.getCopy();
+	}
+
+	public Vector getCopy() {
+		return new Vector(getX(), getY());
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/org_eclipse_osbp_vaaclipse_widgetsWidgetset.gwt.xml b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/org_eclipse_osbp_vaaclipse_widgetsWidgetset.gwt.xml
new file mode 100644
index 0000000..23ea5dd
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/org_eclipse_osbp_vaaclipse_widgetsWidgetset.gwt.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 1.7.0//EN" "http://google-web-toolkit.googlecode.com/svn/tags/1.7.0/distro-source/core/src/gwt-module.dtd">
+<module>
+	<inherits name="com.vaadin.terminal.gwt.DefaultWidgetSet" />
+	<inherits name="fi.jasoft.dragdroplayouts.DragDropLayoutsWidgetSet" />
+	<stylesheet src="org_eclipse_osbp_vaaclipse/vaaclipse.css" />
+
+	<source path="client" />
+	<source path="common" />
+	<source path="../../../../" />
+
+	<!-- replace-with class="org.eclipse.osbp.vaaclipse.widgets.client.ui.stackwidget.VStackWidgetDragDropMouseHandler">
+		<when-type-is class="fi.jasoft.dragdroplayouts.client.ui.VLayoutDragDropMouseHandler" />
+	</replace-with-->
+	
+	<replace-with
+        class="com.vaadin.client.ui.dd.VaaclipseDragAndDropManager">
+        <when-type-is
+            class="com.vaadin.client.ui.dd.VDragAndDropManager" />
+    </replace-with>
+
+</module>
diff --git a/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/public/org_eclipse_osbp_vaaclipse/img/button_panel_bgcolor.png b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/public/org_eclipse_osbp_vaaclipse/img/button_panel_bgcolor.png
new file mode 100644
index 0000000..ba6ce2d
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/public/org_eclipse_osbp_vaaclipse/img/button_panel_bgcolor.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/public/org_eclipse_osbp_vaaclipse/img/dockzone.png b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/public/org_eclipse_osbp_vaaclipse/img/dockzone.png
new file mode 100644
index 0000000..c3028fb
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/public/org_eclipse_osbp_vaaclipse/img/dockzone.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/public/org_eclipse_osbp_vaaclipse/img/save_workbench_btn.png b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/public/org_eclipse_osbp_vaaclipse/img/save_workbench_btn.png
new file mode 100644
index 0000000..9b645ec
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/public/org_eclipse_osbp_vaaclipse/img/save_workbench_btn.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/public/org_eclipse_osbp_vaaclipse/img/tab-bg.png b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/public/org_eclipse_osbp_vaaclipse/img/tab-bg.png
new file mode 100644
index 0000000..ba6ce2d
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/public/org_eclipse_osbp_vaaclipse/img/tab-bg.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/public/org_eclipse_osbp_vaaclipse/img/vaadock_sprites.png b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/public/org_eclipse_osbp_vaaclipse/img/vaadock_sprites.png
new file mode 100644
index 0000000..b2517e8
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/public/org_eclipse_osbp_vaaclipse/img/vaadock_sprites.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/public/org_eclipse_osbp_vaaclipse/vaaclipse.css b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/public/org_eclipse_osbp_vaaclipse/vaaclipse.css
new file mode 100644
index 0000000..bb2c3da
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/public/org_eclipse_osbp_vaaclipse/vaaclipse.css
@@ -0,0 +1,141 @@
+.v-app .stackwidget .v-tabsheet-tabitemcell,
+.stackwidget .v-tabsheet-spacertd {
+	height: 32px;
+}
+
+.v-app .stackwidget .v-tabsheet-tabitemcell {
+	padding-left: 0px;
+}
+
+.v-app .stackwidget .v-tabsheet-tabitemcell-first {
+	padding-left: 0px;
+}
+
+.v-app .stackwidget .v-tabsheet-tabitem,
+.v-app .stackwidget .v-tabsheet-spacertd div {
+	height: 32px;
+	padding: 0;
+}
+
+.v-app .stackwidget .v-tabsheet-tabitem .v-caption {
+	height: 23px;
+	padding: 9px 8px 0 6px;
+}
+
+.v-app .stackwidget .v-tabsheet-tabitem .v-caption-closable {
+	padding-right: 0;
+	padding-left: 17px;
+}
+.v-app .stackwidget .v-tabsheet-tabitem .v-captiontext {
+	height: 16px;
+}
+
+.v-app .stackwidget .v-caption .v-icon,
+.v-app .stackwidget .v-caption-closable .v-icon {
+	float: left;
+	margin: 0px;
+	padding: 0px;
+}
+
+.v-app .stackwidget .v-caption .v-captiontext,
+.v-app .stackwidget .v-caption-closable .v-captiontext {
+	float: left;
+	margin: 0px;
+	padding: 0px;
+}
+
+.v-app .stackwidget .v-tabsheet-caption-close {
+	float: right;
+	width: 19px;
+	height: 18px;
+	margin: -1px -1px 0;
+	padding-left: 2px;
+}
+
+.v-ie6 .stackwidget .v-tabsheet-caption-close {
+	float: none;
+}
+
+.v-app .stackwidget .v-tabsheet-spacertd div {
+	margin-right: 0px;
+}
+
+/*
+*/
+.v-app .vaadock-tabsheet-button-panel {
+//	background-color: transparent;
+//    float: right;
+//    position: relative;
+//    padding: 0 0 0 4px;
+//    width: 44px;
+		height: 31px;
+		margin-top: -31px;
+		padding: 0 3px 0 4px;
+		position: relative;
+		float: right;
+		background: transparent url(tabsheet/img/tab-bg.png) repeat-x left -1px;
+		width: 44px;
+		white-space: nowrap;
+		text-align: right;
+}
+
+.reindeer .vaadock-tabsheet-button-panel {
+	background: url("../../../themes/reindeer/common/img/vertical-sprites.png") repeat-x scroll left -1127px transparent;	
+}
+
+.v-app .v-vaadock-tabsheet-maximize-button {
+	width: 18px;
+    height: 18px;
+	position: relative;
+	float: right;
+	margin-top: 5px;
+    border : none;
+    background: url(img/vaadock_sprites.png) no-repeat 0 0;
+}
+
+.v-app .v-vaadock-tabsheet-maximize-button:hover { 
+	background-position: 0 -18px;
+}
+
+.v-app .v-vaadock-tabsheet-maximize-button:active { 
+	background-position: 0 -36px;
+}
+
+.v-app .v-vaadock-tabsheet-minimize-button {
+	width: 18px;
+    height: 18px;
+	position: relative;
+	float: right;
+	margin-right: 20px;
+	margin-top: -18px;
+    border : none;
+    background: url(img/vaadock_sprites.png) no-repeat 0 0;
+    background-position: 0 -54px;
+}
+
+.v-app .v-vaadock-tabsheet-minimize-button:hover { 
+	background-position: 0 -72px;
+}
+
+.v-app .v-vaadock-tabsheet-minimize-button:active { 
+	background-position: 0 -90px;
+}
+
+.v-app .v-vaadock-tabsheet-restore-button {
+	width: 18px;
+    height: 18px;
+	position: relative;
+	float: right;
+	margin-top: 5px;
+    border : none;
+    background: url(img/vaadock_sprites.png) no-repeat 0 0;
+    background-position: 0 -108px;
+}
+
+.v-app .v-vaadock-tabsheet-restore-button:hover { 
+	background-position: 0 -126px;
+}
+
+.v-app .v-vaadock-tabsheet-restore-button:active { 
+	background-position: 0 -144px;
+}
diff --git a/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/public/org_semanticsoft_vaaclipse/img/button_panel_bgcolor.png b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/public/org_semanticsoft_vaaclipse/img/button_panel_bgcolor.png
new file mode 100644
index 0000000..ba6ce2d
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/public/org_semanticsoft_vaaclipse/img/button_panel_bgcolor.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/public/org_semanticsoft_vaaclipse/img/dockzone.png b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/public/org_semanticsoft_vaaclipse/img/dockzone.png
new file mode 100644
index 0000000..c3028fb
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/public/org_semanticsoft_vaaclipse/img/dockzone.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/public/org_semanticsoft_vaaclipse/img/save_workbench_btn.png b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/public/org_semanticsoft_vaaclipse/img/save_workbench_btn.png
new file mode 100644
index 0000000..9b645ec
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/public/org_semanticsoft_vaaclipse/img/save_workbench_btn.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/public/org_semanticsoft_vaaclipse/img/tab-bg.png b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/public/org_semanticsoft_vaaclipse/img/tab-bg.png
new file mode 100644
index 0000000..ba6ce2d
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/public/org_semanticsoft_vaaclipse/img/tab-bg.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/public/org_semanticsoft_vaaclipse/img/vaadock_sprites.png b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/public/org_semanticsoft_vaaclipse/img/vaadock_sprites.png
new file mode 100644
index 0000000..b2517e8
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/public/org_semanticsoft_vaaclipse/img/vaadock_sprites.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/public/org_semanticsoft_vaaclipse/vaaclipse.css b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/public/org_semanticsoft_vaaclipse/vaaclipse.css
new file mode 100644
index 0000000..bb2c3da
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/public/org_semanticsoft_vaaclipse/vaaclipse.css
@@ -0,0 +1,141 @@
+.v-app .stackwidget .v-tabsheet-tabitemcell,
+.stackwidget .v-tabsheet-spacertd {
+	height: 32px;
+}
+
+.v-app .stackwidget .v-tabsheet-tabitemcell {
+	padding-left: 0px;
+}
+
+.v-app .stackwidget .v-tabsheet-tabitemcell-first {
+	padding-left: 0px;
+}
+
+.v-app .stackwidget .v-tabsheet-tabitem,
+.v-app .stackwidget .v-tabsheet-spacertd div {
+	height: 32px;
+	padding: 0;
+}
+
+.v-app .stackwidget .v-tabsheet-tabitem .v-caption {
+	height: 23px;
+	padding: 9px 8px 0 6px;
+}
+
+.v-app .stackwidget .v-tabsheet-tabitem .v-caption-closable {
+	padding-right: 0;
+	padding-left: 17px;
+}
+.v-app .stackwidget .v-tabsheet-tabitem .v-captiontext {
+	height: 16px;
+}
+
+.v-app .stackwidget .v-caption .v-icon,
+.v-app .stackwidget .v-caption-closable .v-icon {
+	float: left;
+	margin: 0px;
+	padding: 0px;
+}
+
+.v-app .stackwidget .v-caption .v-captiontext,
+.v-app .stackwidget .v-caption-closable .v-captiontext {
+	float: left;
+	margin: 0px;
+	padding: 0px;
+}
+
+.v-app .stackwidget .v-tabsheet-caption-close {
+	float: right;
+	width: 19px;
+	height: 18px;
+	margin: -1px -1px 0;
+	padding-left: 2px;
+}
+
+.v-ie6 .stackwidget .v-tabsheet-caption-close {
+	float: none;
+}
+
+.v-app .stackwidget .v-tabsheet-spacertd div {
+	margin-right: 0px;
+}
+
+/*
+*/
+.v-app .vaadock-tabsheet-button-panel {
+//	background-color: transparent;
+//    float: right;
+//    position: relative;
+//    padding: 0 0 0 4px;
+//    width: 44px;
+		height: 31px;
+		margin-top: -31px;
+		padding: 0 3px 0 4px;
+		position: relative;
+		float: right;
+		background: transparent url(tabsheet/img/tab-bg.png) repeat-x left -1px;
+		width: 44px;
+		white-space: nowrap;
+		text-align: right;
+}
+
+.reindeer .vaadock-tabsheet-button-panel {
+	background: url("../../../themes/reindeer/common/img/vertical-sprites.png") repeat-x scroll left -1127px transparent;	
+}
+
+.v-app .v-vaadock-tabsheet-maximize-button {
+	width: 18px;
+    height: 18px;
+	position: relative;
+	float: right;
+	margin-top: 5px;
+    border : none;
+    background: url(img/vaadock_sprites.png) no-repeat 0 0;
+}
+
+.v-app .v-vaadock-tabsheet-maximize-button:hover { 
+	background-position: 0 -18px;
+}
+
+.v-app .v-vaadock-tabsheet-maximize-button:active { 
+	background-position: 0 -36px;
+}
+
+.v-app .v-vaadock-tabsheet-minimize-button {
+	width: 18px;
+    height: 18px;
+	position: relative;
+	float: right;
+	margin-right: 20px;
+	margin-top: -18px;
+    border : none;
+    background: url(img/vaadock_sprites.png) no-repeat 0 0;
+    background-position: 0 -54px;
+}
+
+.v-app .v-vaadock-tabsheet-minimize-button:hover { 
+	background-position: 0 -72px;
+}
+
+.v-app .v-vaadock-tabsheet-minimize-button:active { 
+	background-position: 0 -90px;
+}
+
+.v-app .v-vaadock-tabsheet-restore-button {
+	width: 18px;
+    height: 18px;
+	position: relative;
+	float: right;
+	margin-top: 5px;
+    border : none;
+    background: url(img/vaadock_sprites.png) no-repeat 0 0;
+    background-position: 0 -108px;
+}
+
+.v-app .v-vaadock-tabsheet-restore-button:hover { 
+	background-position: 0 -126px;
+}
+
+.v-app .v-vaadock-tabsheet-restore-button:active { 
+	background-position: 0 -144px;
+}
diff --git a/org.eclipse.osbp.vaaclipse.widgetset.default/.project b/org.eclipse.osbp.vaaclipse.widgetset.default/.project
new file mode 100644
index 0000000..e19f3d3
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgetset.default/.project
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.vaaclipse.widgetset.default</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.babel.editor.rbeBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>com.vaadin.integration.eclipse.addonStylesBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.babel.editor.rbeNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.vaaclipse.widgetset.default/DebugClient.txt b/org.eclipse.osbp.vaaclipse.widgetset.default/DebugClient.txt
new file mode 100644
index 0000000..64848b7
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgetset.default/DebugClient.txt
@@ -0,0 +1,35 @@
+How to enable superDev-Mode:
+
+1) Enable following options in Widgetset:
+	<set-configuration-property name="devModeRedirectEnabled"
+		value="true" />
+
+	<add-linker name="xsiframe" />
+	
+	
+2) Call pom-compileWidgetset.xml to compile widgetset under resources
+
+3) Call pom-superdev.xml - It will download all required depedencies for superDev-Mode under target/superDev-lib
+
+4) Open launchconfig for superDev-Mode and add all jars from target/superDev-lib to classpath
+
+5) Add org.semanticsoft.vaaclipse.widgets and its source folder to class path
+
+6) Add source folder from org.semanticsoft.vaaclipse.widgetset.default to classpath
+
+7) Ensure, that 5) and 6) are located at the beginning of the classpath
+
+8) Start superDev-LaunchConfig
+
+9) Start Vaaclipse Application
+
+10) Open Vaaclipse with {URL}/?superdevmode
+
+11) Open http://localhost:9876/
+	a) Bookmark "Dev Mode on" and "Dev Mode off" in Browser
+	
+12) To reload widgetsets in 10) click on Bookmark "Dev Mode on"
+
+13) To debug java code in browser ensure, that Chrome -> Developertools -> Properties -> Sources -> xyz SourceMaps are checked
+
+14) Open Sources Tab in Chrome and find your java sources there
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.widgetset.default/META-INF/MANIFEST.MF b/org.eclipse.osbp.vaaclipse.widgetset.default/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..1f294b4
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgetset.default/META-INF/MANIFEST.MF
@@ -0,0 +1,12 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.vaaclipse.widgetset.default
+Bundle-SymbolicName: org.eclipse.osbp.vaaclipse.widgetset.default
+Bundle-Vendor: Eclipse OSBP
+Bundle-Version: 0.9.0.qualifier
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Vaadin-Resources: resources
+Require-Bundle: com.vaadin.server;bundle-version="[7.5.7,7.7.0)",
+ com.vaadin.client;bundle-version="[7.5.7,7.7.0)",
+ com.vaadin.shared;bundle-version="[7.5.7,7.7.0)",
+ org.jsoup;bundle-version="1.7.2"
diff --git a/org.eclipse.osbp.vaaclipse.widgetset.default/SuperDevMode-BpmnIO-default-widgetset.launch b/org.eclipse.osbp.vaaclipse.widgetset.default/SuperDevMode-BpmnIO-default-widgetset.launch
new file mode 100644
index 0000000..dd7e565
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgetset.default/SuperDevMode-BpmnIO-default-widgetset.launch
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/org.eclipse.osbp.bpm.vaadin.bpmnio"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="4"/>
+</listAttribute>
+<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="false"/>
+<listAttribute key="org.eclipse.jdt.launching.CLASSPATH">
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry containerPath=&quot;org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7&quot; path=&quot;1&quot; type=&quot;4&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry path=&quot;3&quot; projectName=&quot;org.eclipse.osbp.bpm.vaadin.bpmnio&quot; type=&quot;1&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.bpm.vaadin.bpmnio/src/main/java&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.bpm.vaadin.bpmnio/src/main/resources&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/ant-1.6.5.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/ant-launcher-1.6.5.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/apache-mime4j-0.6.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/commons-codec-1.8.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/commons-collections-3.1.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/commons-io-2.4.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/commons-lang3-3.1.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/commons-logging-1.1.3.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/cssparser-0.9.11.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/flute-1.3.0.gg2.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/guava-16.0.1.vaadin1.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/httpclient-4.3.1.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/httpcore-4.3.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/httpmime-4.3.1.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/icu4j-50.1.1.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/javax.activation-1.1.0.v201105071233.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/javax.annotation-1.1.0.v201108011116.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/javax.mail.glassfish-1.4.1.v201005082020.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/javax.servlet-3.0.0.v201112011016.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/javax.transaction-1.1.1.v201105210645.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/jetty-annotations-8.1.12.v20130726.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/jetty-client-8.1.12.v20130726.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/jetty-continuation-8.1.12.v20130726.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/jetty-http-8.1.12.v20130726.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/jetty-io-8.1.12.v20130726.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/jetty-jndi-8.1.12.v20130726.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/jetty-plus-8.1.12.v20130726.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/jetty-security-8.1.12.v20130726.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/jetty-server-8.1.12.v20130726.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/jetty-servlet-8.1.12.v20130726.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/jetty-servlets-8.1.12.v20130726.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/jetty-util-8.1.12.v20130726.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/jetty-webapp-8.1.12.v20130726.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/jetty-xml-8.1.12.v20130726.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/json-0.0.20080701.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/jsoup-1.6.3.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/nekohtml-1.9.19.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/org.objectweb.asm-3.1.0.v200803061910.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/sac-1.3.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/serializer-2.7.1.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/servlet-api-2.5.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/streamhtmlparser-jsilver-0.0.10.vaadin1.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/swing-worker-1.1.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/vaadin-client-7.3.8.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/vaadin-client-compiled-7.3.8.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/vaadin-client-compiler-7.3.8.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/vaadin-client-compiler-deps-1.1.0.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/vaadin-sass-compiler-0.9.10.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/vaadin-server-7.3.8.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/vaadin-shared-7.3.8.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/vaadin-shared-deps-1.0.2.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/vaadin-themes-7.3.8.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/validation-api-1.0.0.GA-sources.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/validation-api-1.0.0.GA.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/xercesImpl-2.11.0.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/xml-apis-1.4.01.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+</listAttribute>
+<booleanAttribute key="org.eclipse.jdt.launching.DEFAULT_CLASSPATH" value="false"/>
+<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="com.google.gwt.dev.codeserver.CodeServer"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-logLevel DEBUG org.eclipse.osbp.bpmn.vaadin.bpmnio.BpmnModelerWidgetset"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.osbp.bpm.vaadin.bpmnio"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xss8M -Xmx512M -XX:MaxPermSize=512M"/>
+</launchConfiguration>
diff --git a/org.eclipse.osbp.vaaclipse.widgetset.default/SuperDevMode-Vaaclipse-default-widgetset.launch b/org.eclipse.osbp.vaaclipse.widgetset.default/SuperDevMode-Vaaclipse-default-widgetset.launch
new file mode 100644
index 0000000..e8fecb8
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgetset.default/SuperDevMode-Vaaclipse-default-widgetset.launch
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/org.eclipse.osbp.vaaclipse.widgetset.default"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="4"/>
+</listAttribute>
+<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="false"/>
+<listAttribute key="org.eclipse.jdt.launching.CLASSPATH">
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry containerPath=&quot;org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7&quot; path=&quot;1&quot; type=&quot;4&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry path=&quot;3&quot; projectName=&quot;org.eclipse.osbp.vaaclipse.widgetset.default&quot; type=&quot;1&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.vaaclipse.widgets/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.vaaclipse.widgetset.default/src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry path=&quot;3&quot; projectName=&quot;org.eclipse.osbp.vaaclipse.widgets&quot; type=&quot;1&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/ant-1.6.5.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/ant-launcher-1.6.5.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/apache-mime4j-0.6.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/commons-codec-1.8.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/commons-collections-3.1.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/commons-io-2.4.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/commons-lang3-3.1.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/commons-logging-1.1.3.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/contextmenu-4.2.1.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/cssparser-0.9.11.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/dragdroplayouts-1.1.1.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/easyuploads-7.0.1.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/flute-1.3.0.gg2.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/guava-16.0.1.vaadin1.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/httpclient-4.3.1.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/httpcore-4.3.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/httpmime-4.3.1.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/icu4j-50.1.1.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/javax.activation-1.1.0.v201105071233.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/javax.annotation-1.1.0.v201108011116.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/javax.mail.glassfish-1.4.1.v201005082020.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/javax.servlet-3.0.0.v201112011016.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/javax.transaction-1.1.1.v201105210645.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/jetty-annotations-8.1.12.v20130726.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/jetty-client-8.1.12.v20130726.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/jetty-continuation-8.1.12.v20130726.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/jetty-http-8.1.12.v20130726.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/jetty-io-8.1.12.v20130726.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/jetty-jndi-8.1.12.v20130726.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/jetty-plus-8.1.12.v20130726.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/jetty-security-8.1.12.v20130726.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/jetty-server-8.1.12.v20130726.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/jetty-servlet-8.1.12.v20130726.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/jetty-servlets-8.1.12.v20130726.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/jetty-util-8.1.12.v20130726.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/jetty-webapp-8.1.12.v20130726.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/jetty-xml-8.1.12.v20130726.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/json-0.0.20080701.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/jsoup-1.6.3.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/nekohtml-1.9.19.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/org.objectweb.asm-3.1.0.v200803061910.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/sac-1.3.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/serializer-2.7.1.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/servlet-api-2.5.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/streamhtmlparser-jsilver-0.0.10.vaadin1.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/swing-worker-1.1.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/vaadin-client-7.3.8.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/vaadin-client-compiled-7.3.8.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/vaadin-client-compiler-7.3.8.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/vaadin-client-compiler-deps-1.1.0.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/vaadin-sass-compiler-0.9.10.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/vaadin-server-7.3.8.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/vaadin-shared-7.3.8.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/vaadin-shared-deps-1.0.2.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/vaadin-themes-7.3.8.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/validation-api-1.0.0.GA-sources.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/validation-api-1.0.0.GA.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/xercesImpl-2.11.0.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/xml-apis-1.4.01.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.m2e.launchconfig.classpathProvider"/>
+<booleanAttribute key="org.eclipse.jdt.launching.DEFAULT_CLASSPATH" value="false"/>
+<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="com.google.gwt.dev.codeserver.CodeServer"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-logLevel DEBUG org.eclipse.osbp.vaaclipse.widgetset.DefaultWidgetset"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.osbp.vaaclipse.widgetset.default"/>
+<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.m2e.launchconfig.sourcepathProvider"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xss8M -Xmx512M -XX:MaxPermSize=512M"/>
+<stringAttribute key="org.eclipse.jdt.launching.WORKING_DIRECTORY" value="/Users/admin/git/vaaclipse/org.eclipse.osbp.vaaclipse.widgetset.default"/>
+</launchConfiguration>
diff --git a/org.eclipse.osbp.vaaclipse.widgetset.default/about.html b/org.eclipse.osbp.vaaclipse.widgetset.default/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgetset.default/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 1, 2016</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.widgetset.default/about.ini b/org.eclipse.osbp.vaaclipse.widgetset.default/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgetset.default/about.ini
@@ -0,0 +1,17 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%featureText
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=
+
+# Property "appName" contains name of the application (translated)
+appName=%featureName
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+welcomePage=
diff --git a/org.eclipse.osbp.vaaclipse.widgetset.default/about.mappings b/org.eclipse.osbp.vaaclipse.widgetset.default/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgetset.default/about.mappings
@@ -0,0 +1,6 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+0=qualifier
diff --git a/org.eclipse.osbp.vaaclipse.widgetset.default/about.properties b/org.eclipse.osbp.vaaclipse.widgetset.default/about.properties
new file mode 100644
index 0000000..665d2ce
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgetset.default/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2012, 2016 - Loetz GmbH&Co.KG (Heidelberg)
+# 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:
+#    Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.vaaclipse.widgetset.default
+
+################ blurb property ####################################
+featureText=\
+Copyright (c) 2012-2016 - Loetz GmbH&Co.KG \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+Contributors:\n\
+    Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.vaaclipse.widgetset.default/build.properties b/org.eclipse.osbp.vaaclipse.widgetset.default/build.properties
new file mode 100644
index 0000000..2ebdb20
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgetset.default/build.properties
@@ -0,0 +1,11 @@
+source.. = src/
+bin.includes = about.properties,  about.mappings,  about.ini,  about.html,  META-INF/,\
+               .,\
+               resources/,\
+               pom.xml,\
+               src/,\
+               build.properties,\
+               epl-v10.html,\
+               license.html
+src.includes = about.properties,  about.mappings,  about.ini,  about.html,  epl-v10.html,\
+               license.html
diff --git a/org.eclipse.osbp.vaaclipse.widgetset.default/epl-v10.html b/org.eclipse.osbp.vaaclipse.widgetset.default/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgetset.default/epl-v10.html
@@ -0,0 +1,259 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+  body {
+    size: 8.5in 11.0in;
+    margin: 0.25in 0.5in 0.25in 0.5in;
+    tab-interval: 0.5in;
+    }
+  p {  	
+    margin-left: auto;
+    margin-top:  0.5em;
+    margin-bottom: 0.5em;
+    }
+  p.list {
+  	margin-left: 0.5in;
+    margin-top:  0.05em;
+    margin-bottom: 0.05em;
+    }
+  </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">where such changes and/or additions to the Program
+originate from and are distributed by that particular Contributor. A
+Contribution 'originates' from a Contributor if it was added to the
+Program by such Contributor itself or anyone acting on such
+Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii)
+are not derivative works of the Program.</p>
+
+<p>"Contributor" means any person or entity that distributes
+the Program.</p>
+
+<p>"Licensed Patents" mean patent claims licensable by a
+Contributor which are necessarily infringed by the use or sale of its
+Contribution alone or when combined with the Program.</p>
+
+<p>"Program" means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>"Recipient" means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works
+of, publicly display, publicly perform, distribute and sublicense the
+Contribution of such Contributor, if any, and such derivative works, in
+source code and object code form.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell,
+offer to sell, import and otherwise transfer the Contribution of such
+Contributor, if any, in source code and object code form. This patent
+license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor,
+such addition of the Contribution causes such combination to be covered
+by the Licensed Patents. The patent license shall not apply to any other
+combinations which include the Contribution. No hardware per se is
+licensed hereunder.</p>
+
+<p class="list">c) Recipient understands that although each Contributor
+grants the licenses to its Contributions set forth herein, no assurances
+are provided by any Contributor that the Program does not infringe the
+patent or other intellectual property rights of any other entity. Each
+Contributor disclaims any liability to Recipient for claims brought by
+any other entity based on infringement of intellectual property rights
+or otherwise. As a condition to exercising the rights and licenses
+granted hereunder, each Recipient hereby assumes sole responsibility to
+secure any other intellectual property rights needed, if any. For
+example, if a third party patent license is required to allow Recipient
+to distribute the Program, it is Recipient's responsibility to acquire
+that license before distributing the Program.</p>
+
+<p class="list">d) Each Contributor represents that to its knowledge it
+has sufficient copyright rights in its Contribution, if any, to grant
+the copyright license set forth in this Agreement.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">i) effectively disclaims on behalf of all Contributors
+all warranties and conditions, express and implied, including warranties
+or conditions of title and non-infringement, and implied warranties or
+conditions of merchantability and fitness for a particular purpose;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">iv) states that source code for the Program is available
+from such Contributor, and informs licensees how to obtain it in a
+reasonable manner on or through a medium customarily used for software
+exchange.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>Commercial distributors of software may accept certain
+responsibilities with respect to end users, business partners and the
+like. While this license is intended to facilitate the commercial use of
+the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create
+potential liability for other Contributors. Therefore, if a Contributor
+includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and
+indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses")
+arising from claims, lawsuits and other legal actions brought by a third
+party against the Indemnified Contributor to the extent caused by the
+acts or omissions of such Commercial Contributor in connection with its
+distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In
+order to qualify, an Indemnified Contributor must: a) promptly notify
+the Commercial Contributor in writing of such claim, and b) allow the
+Commercial Contributor to control, and cooperate with the Commercial
+Contributor in, the defense and any related settlement negotiations. The
+Indemnified Contributor may participate in any such claim at its own
+expense.</p>
+
+<p>For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor's responsibility
+alone. Under this section, the Commercial Contributor would have to
+defend claims against the other Contributors related to those
+performance claims and warranties, and if a court requires any other
+Contributor to pay any damages as a result, the Commercial Contributor
+must pay those damages.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
+OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
+ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to
+the risks and costs of program errors, compliance with applicable laws,
+damage to or loss of data, programs or equipment, and unavailability or
+interruption of operations.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
+NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of
+the remainder of the terms of this Agreement, and without further action
+by the parties hereto, such provision shall be reformed to the minimum
+extent necessary to make such provision valid and enforceable.</p>
+
+<p>If Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that the
+Program itself (excluding combinations of the Program with other
+software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the
+date such litigation is filed.</p>
+
+<p>All Recipient's rights under this Agreement shall terminate if it
+fails to comply with any of the material terms or conditions of this
+Agreement and does not cure such failure in a reasonable period of time
+after becoming aware of such noncompliance. If all Recipient's rights
+under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive.</p>
+
+<p>Everyone is permitted to copy and distribute copies of this
+Agreement, but in order to avoid inconsistency the Agreement is
+copyrighted and may only be modified in the following manner. The
+Agreement Steward reserves the right to publish new versions (including
+revisions) of this Agreement from time to time. No one other than the
+Agreement Steward has the right to modify this Agreement. The Eclipse
+Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a
+suitable separate entity. Each new version of the Agreement will be
+given a distinguishing version number. The Program (including
+Contributions) may always be distributed subject to the version of the
+Agreement under which it was received. In addition, after a new version
+of the Agreement is published, Contributor may elect to distribute the
+Program (including its Contributions) under the new version. Except as
+expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
+rights or licenses to the intellectual property of any Contributor under
+this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this
+Agreement are reserved.</p>
+
+<p>This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No party
+to this Agreement will bring a legal action under this Agreement more
+than one year after the cause of action arose. Each party waives its
+rights to a jury trial in any resulting litigation.</p>
+
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.widgetset.default/license.html b/org.eclipse.osbp.vaaclipse.widgetset.default/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgetset.default/license.html
@@ -0,0 +1,164 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!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>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>February 1, 2011</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+   (COLLECTIVELY "CONTENT").  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse
+ Foundation is provided to you under the terms and conditions of the 
+Eclipse Public License Version 1.0
+   ("EPL").  A copy of the EPL is provided with this Content and is also
+ 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, "Program" will mean the Content.</p>
+
+<p>Content includes, but is not limited to, source code, object code, 
+documentation and other files maintained in the Eclipse Foundation 
+source code
+   repository ("Repository") in software modules ("Modules") and made 
+available as downloadable archives ("Downloads").</p>
+
+<ul>
+       <li>Content may be structured and packaged into modules to 
+facilitate delivering, extending, and upgrading the Content.  Typical 
+modules may include plug-ins ("Plug-ins"), plug-in fragments 
+("Fragments"), and features ("Features").</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&#8482; ARchive) in a directory named "plugins".</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or 
+Fragments and associated material.  Each Feature may be packaged as a 
+sub-directory in a directory named "features".  Within a Feature, files 
+named "feature.xml" may contain a list of the names and version numbers 
+of the Plug-ins
+      and/or Fragments associated with that Feature.</li>
+       <li>Features may also include other Features ("Included 
+Features"). Within a Feature, files named "feature.xml" may contain a 
+list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be 
+contained in files named "about.html" ("Abouts"). The terms and 
+conditions governing Features and
+Included Features should be contained in files named "license.html" 
+("Feature Licenses").  Abouts and Feature Licenses may be located in any
+ directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named "src" of certain Plug-ins</li>
+       <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is 
+installed using the Provisioning Technology (as defined below), you must
+ agree to a license ("Feature Update License") during the
+installation process.  If the Feature contains Included Features, the 
+Feature Update License should either provide you with the terms and 
+conditions governing the Included Features or
+inform you where you can locate them.  Feature Update Licenses may be 
+found in the "license" property of files named "feature.properties" 
+found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the 
+terms and conditions (or references to such terms and conditions) that 
+govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER 
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.
+  SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND 
+CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, 
+or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions 
+govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, 
+examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager ("Provisioning Technology") for the purpose of 
+allowing users to install software, documentation, information and/or
+   other materials (collectively "Installable Software"). This 
+capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about 
+packaging Installable Software is available at <a href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   ("Specification").</p>
+
+<p>You may use Provisioning Technology to allow other parties to install
+ Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to
+ be presented to, and accepted by, the users of the Provisioning 
+Technology
+   in accordance with the Specification. By using Provisioning 
+Technology in such a manner and making it available in accordance with 
+the
+   Specification, you further acknowledge your agreement to, and the 
+acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur ("Provisioning Process") in 
+which a user may execute the Provisioning Technology
+       on a machine ("Target Machine") with the intent of installing, 
+extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology 
+may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user 
+the terms and conditions that govern the use of the Installable
+       Software ("Installable Software Agreement") and such Installable 
+Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable 
+Software Agreement must inform the user of the terms and conditions that
+ govern
+       the Installable Software and must solicit acceptance by the end 
+user in the manner prescribed in such Installable Software Agreement. 
+Upon such
+       indication of agreement by the user, the provisioning Technology 
+will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are
+ currently may have restrictions on the import, possession, and use, 
+and/or re-export to
+   another country, of encryption software. BEFORE using any encryption 
+software, please check the country's laws, regulations and policies 
+concerning the import,
+   possession, or use, and re-export of encryption software, to see if 
+this is permitted.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.widgetset.default/pom-compileWidgetset.xml b/org.eclipse.osbp.vaaclipse.widgetset.default/pom-compileWidgetset.xml
new file mode 100644
index 0000000..1591eca
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgetset.default/pom-compileWidgetset.xml
@@ -0,0 +1,219 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	<groupId>org.semanticsoft</groupId>
+	<artifactId>org.semanticsoft.vaaclipse.widgetset.default</artifactId>
+	<version>2.7.3-SNAPSHOT</version>
+
+	<properties>
+		<vaaclipse-version>2.7.3-SNAPSHOT</vaaclipse-version>
+		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+		<vaadin.version>7.5.7</vaadin.version>
+	</properties>
+
+	<dependencies>
+		<dependency>
+			<groupId>org.semanticsoft</groupId>
+			<artifactId>org.semanticsoft.vaaclipse.widgets</artifactId>
+			<version>${vaaclipse-version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.vaadin.addons</groupId>
+			<artifactId>contextmenu</artifactId>
+			<version>4.2.1</version>
+		</dependency>
+		<dependency>
+			<groupId>org.vaadin.addons</groupId>
+			<artifactId>dragdroplayouts</artifactId>
+			<version>1.1.3</version>
+		</dependency>
+		<dependency>
+			<groupId>org.vaadin.addon</groupId>
+			<artifactId>easyuploads</artifactId>
+			<version>7.0.1</version>
+		</dependency>
+		<dependency>
+			<groupId>com.vaadin</groupId>
+			<artifactId>vaadin-server</artifactId>
+			<scope>provided</scope>
+			<version>${vaadin.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>com.vaadin</groupId>
+			<artifactId>vaadin-client</artifactId>
+			<scope>provided</scope>
+			<version>${vaadin.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>com.vaadin</groupId>
+			<artifactId>vaadin-client-compiled</artifactId>
+			<scope>provided</scope>
+			<version>${vaadin.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>com.vaadin</groupId>
+			<artifactId>vaadin-shared</artifactId>
+			<scope>provided</scope>
+			<version>${vaadin.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>com.vaadin</groupId>
+			<artifactId>vaadin-shared-deps</artifactId>
+			<scope>provided</scope>
+			<version>1.0.2</version>
+		</dependency>
+		<dependency>
+			<groupId>com.vaadin</groupId>
+			<artifactId>vaadin-client-compiler</artifactId>
+			<scope>provided</scope>
+			<version>${vaadin.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>com.vaadin</groupId>
+			<artifactId>vaadin-themes</artifactId>
+			<version>${vaadin.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>commons-io</groupId>
+			<artifactId>commons-io</artifactId>
+			<version>2.4</version>
+		</dependency>
+		<!-- <dependency> -->
+		<!-- <groupId>com.vaadin</groupId> -->
+		<!-- <artifactId>vaadin-testbench</artifactId> -->
+		<!-- <version>3.0.4</version> -->
+		<!-- <scope>test</scope> -->
+		<!-- </dependency> -->
+		<dependency>
+			<groupId>javax.servlet</groupId>
+			<artifactId>servlet-api</artifactId>
+			<version>2.5</version>
+			<scope>provided</scope>
+		</dependency>
+		<!-- <dependency> -->
+		<!-- <groupId>junit</groupId> -->
+		<!-- <artifactId>junit</artifactId> -->
+		<!-- <version>LATEST</version> -->
+		<!-- <scope>test</scope> -->
+		<!-- </dependency> -->
+	</dependencies>
+
+	<build>
+		<sourceDirectory>src</sourceDirectory>
+		<plugins>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-compiler-plugin</artifactId>
+				<version>2.5</version>
+				<configuration>
+					<source>1.7</source>
+					<target>1.7</target>
+				</configuration>
+			</plugin>
+			<plugin>
+				<groupId>com.vaadin</groupId>
+				<artifactId>vaadin-maven-plugin</artifactId>
+				<version>${vaadin.plugin.version}</version>
+				<configuration>
+					<extraJvmArgs>-Xmx1024M -Xss1024k</extraJvmArgs>
+					<!-- <runTarget>mobilemail</runTarget> -->
+					<!-- We are doing "inplace" but into subdir VAADIN/widgetsets. This 
+						way compatible with Vaadin eclipse plugin. -->
+					<webappDirectory>${basedir}/resources
+					</webappDirectory>
+					<hostedWebapp>${basedir}/resources
+					</hostedWebapp>
+					<noServer>true</noServer>
+					<!-- Remove draftCompile when project is ready -->
+					<draftCompile>true</draftCompile>
+					<strict>true</strict>
+					<compileReport>false</compileReport>
+<!-- 					<style>PRETTY</style> -->
+					<runTarget>http://localhost:8080/</runTarget>
+
+					<!-- Remove these when going to release dependencies -->
+					<force>true</force>
+				</configuration>
+				<executions>
+					<execution>
+						<goals>
+							<goal>resources</goal>
+							<goal>compile</goal>
+						</goals>
+					</execution>
+				</executions>
+			</plugin>
+			<!-- As we are doing "inplace" GWT compilation, ensure the widgetset -->
+			<!-- directory is cleaned properly -->
+			<plugin>
+				<artifactId>maven-clean-plugin</artifactId>
+				<configuration>
+					<filesets>
+						<fileset>
+							<directory>/resources</directory>
+						</fileset>
+					</filesets>
+				</configuration>
+			</plugin>
+
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-failsafe-plugin</artifactId>
+				<version>2.12</version>
+				<executions>
+					<execution>
+						<goals>
+							<goal>integration-test</goal>
+							<goal>verify</goal>
+						</goals>
+					</execution>
+				</executions>
+			</plugin>
+
+		</plugins>
+		<pluginManagement>
+			<plugins>
+				<!--This plugin's configuration is used to store Eclipse m2e settings 
+					only. It has no influence on the Maven build itself. -->
+				<plugin>
+					<groupId>org.eclipse.m2e</groupId>
+					<artifactId>lifecycle-mapping</artifactId>
+					<version>1.0.0</version>
+					<configuration>
+						<lifecycleMappingMetadata>
+							<pluginExecutions>
+								<pluginExecution>
+									<pluginExecutionFilter>
+										<groupId>com.vaadin</groupId>
+										<artifactId>vaadin-maven-plugin</artifactId>
+										<versionRange>[2.3.0-1,)</versionRange>
+										<goals>
+											<goal>resources</goal>
+										</goals>
+									</pluginExecutionFilter>
+									<action>
+										<ignore></ignore>
+									</action>
+								</pluginExecution>
+								<pluginExecution>
+									<pluginExecutionFilter>
+										<groupId>com.vaadin</groupId>
+										<artifactId>vaadin-maven-plugin</artifactId>
+										<versionRange>[1.0.2,)</versionRange>
+										<goals>
+											<goal>update-widgetset</goal>
+										</goals>
+									</pluginExecutionFilter>
+									<action>
+										<ignore></ignore>
+									</action>
+								</pluginExecution>
+							</pluginExecutions>
+						</lifecycleMappingMetadata>
+					</configuration>
+				</plugin>
+			</plugins>
+		</pluginManagement>
+	</build>
+</project>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.widgetset.default/pom-superdev.xml b/org.eclipse.osbp.vaaclipse.widgetset.default/pom-superdev.xml
new file mode 100644
index 0000000..eb4ee6c
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgetset.default/pom-superdev.xml
@@ -0,0 +1,129 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+
+	<groupId>org.semanticsoft</groupId>
+	<artifactId>org.semanticsoft.vaaclipse.widgetset.default.superdev</artifactId>
+	<version>2.7.3-SNAPSHOT</version>
+
+	<properties>
+		<vaaclipse-version>2.7.3-SNAPSHOT</vaaclipse-version>
+		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+		<vaadin.version>7.5.7</vaadin.version>
+	</properties>
+
+	<dependencies>
+		<dependency>
+			<groupId>org.semanticsoft</groupId>
+			<artifactId>org.semanticsoft.vaaclipse.widgets</artifactId>
+			<version>${vaaclipse-version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.vaadin.addons</groupId>
+			<artifactId>contextmenu</artifactId>
+			<version>4.2.1</version>
+		</dependency>
+		<dependency>
+			<groupId>org.vaadin.addons</groupId>
+			<artifactId>dragdroplayouts</artifactId>
+			<version>1.1.1</version>
+		</dependency>
+		<dependency>
+			<groupId>org.vaadin.addon</groupId>
+			<artifactId>easyuploads</artifactId>
+			<version>7.0.1</version>
+		</dependency>
+		<dependency>
+			<groupId>com.vaadin</groupId>
+			<artifactId>vaadin-server</artifactId>
+			<scope>provided</scope>
+			<version>${vaadin.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>com.vaadin</groupId>
+			<artifactId>vaadin-client</artifactId>
+			<scope>provided</scope>
+			<version>${vaadin.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>com.vaadin</groupId>
+			<artifactId>vaadin-client-compiled</artifactId>
+			<scope>provided</scope>
+			<version>${vaadin.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>com.vaadin</groupId>
+			<artifactId>vaadin-shared</artifactId>
+			<scope>provided</scope>
+			<version>${vaadin.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>com.vaadin</groupId>
+			<artifactId>vaadin-shared-deps</artifactId>
+			<scope>provided</scope>
+			<version>1.0.2</version>
+		</dependency>
+		<dependency>
+			<groupId>com.vaadin</groupId>
+			<artifactId>vaadin-client-compiler</artifactId>
+			<scope>provided</scope>
+			<version>${vaadin.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>com.vaadin</groupId>
+			<artifactId>vaadin-themes</artifactId>
+			<version>${vaadin.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>commons-io</groupId>
+			<artifactId>commons-io</artifactId>
+			<version>2.4</version>
+		</dependency>
+		<!-- <dependency> -->
+		<!-- <groupId>com.vaadin</groupId> -->
+		<!-- <artifactId>vaadin-testbench</artifactId> -->
+		<!-- <version>3.0.4</version> -->
+		<!-- <scope>test</scope> -->
+		<!-- </dependency> -->
+		<dependency>
+			<groupId>javax.servlet</groupId>
+			<artifactId>servlet-api</artifactId>
+			<version>2.5</version>
+			<scope>provided</scope>
+		</dependency>
+		<!-- <dependency> -->
+		<!-- <groupId>junit</groupId> -->
+		<!-- <artifactId>junit</artifactId> -->
+		<!-- <version>LATEST</version> -->
+		<!-- <scope>test</scope> -->
+		<!-- </dependency> -->
+	</dependencies>
+
+	<build>
+		<defaultGoal>clean dependency:copy-dependencies</defaultGoal>
+		<plugins>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-dependency-plugin</artifactId>
+				<version>2.8</version>
+				<configuration>
+					<outputDirectory>${project.build.directory}/superDev-lib</outputDirectory>
+					<actTransitively>true</actTransitively>
+					<transitive>true</transitive>
+					<includeClassifiers></includeClassifiers>
+					<excludeTransitive>false</excludeTransitive>
+				</configuration>
+				<executions>
+					<execution>
+						<id>copy-dependencies</id>
+						<phase>package</phase>
+						<goals>
+							<goal>copy-dependencies</goal>
+						</goals>
+					</execution>
+				</executions>
+			</plugin>
+		</plugins>
+	</build>
+</project>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.widgetset.default/pom.xml b/org.eclipse.osbp.vaaclipse.widgetset.default/pom.xml
new file mode 100644
index 0000000..ca7d7b7
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgetset.default/pom.xml
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.eclipse.osbp.vaaclipse</groupId>
+        <artifactId>org.eclipse.osbp.vaaclipse</artifactId>
+        <version>0.9.0-SNAPSHOT</version>
+    </parent>
+    <artifactId>org.eclipse.osbp.vaaclipse.widgetset.default</artifactId>
+    <packaging>eclipse-plugin</packaging>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.eclipse.osbp.vaaclipse</groupId>
+            <artifactId>org.eclipse.osbp.vaaclipse.widgets</artifactId>
+            <version>0.9.0-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>org.vaadin.addons</groupId>
+            <artifactId>contextmenu</artifactId>
+            <version>4.2.1</version>
+        </dependency>
+        <dependency>
+            <groupId>org.vaadin.addons</groupId>
+            <artifactId>dragdroplayouts</artifactId>
+            <version>1.1.3</version>
+        </dependency>
+        <dependency>
+            <groupId>org.vaadin.addon</groupId>
+            <artifactId>easyuploads</artifactId>
+            <version>7.4.2</version>
+        </dependency>
+        <dependency>
+            <groupId>com.vaadin</groupId>
+            <artifactId>vaadin-server</artifactId>
+            <scope>provided</scope>
+            <version>${vaadin.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>com.vaadin</groupId>
+            <artifactId>vaadin-client</artifactId>
+            <scope>provided</scope>
+            <version>${vaadin.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>com.vaadin</groupId>
+            <artifactId>vaadin-client-compiled</artifactId>
+            <scope>provided</scope>
+            <version>${vaadin.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>com.vaadin</groupId>
+            <artifactId>vaadin-shared</artifactId>
+            <scope>provided</scope>
+            <version>${vaadin.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>com.vaadin</groupId>
+            <artifactId>vaadin-client-compiler</artifactId>
+            <scope>provided</scope>
+            <version>${vaadin.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>com.vaadin</groupId>
+            <artifactId>vaadin-themes</artifactId>
+            <version>${vaadin.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>commons-io</groupId>
+            <artifactId>commons-io</artifactId>
+            <version>2.4</version>
+        </dependency>
+        <dependency>
+            <groupId>javax.servlet</groupId>
+            <artifactId>servlet-api</artifactId>
+            <version>2.5</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>2.5</version>
+                <configuration>
+                    <source>1.7</source>
+                    <target>1.7</target>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>com.vaadin</groupId>
+                <artifactId>vaadin-maven-plugin</artifactId>
+                <version>${vaadin.plugin.version}</version>
+                <configuration>
+                    <extraJvmArgs>-Xmx1024M -Xss1024k</extraJvmArgs>
+                    <!-- <runTarget>mobilemail</runTarget> -->
+                    <!-- We are doing "inplace" but into subdir VAADIN/widgetsets. This 
+						way compatible with Vaadin eclipse plugin. -->
+                    <webappDirectory>${basedir}/resources
+                    </webappDirectory>
+                    <hostedWebapp>${basedir}/resources
+                    </hostedWebapp>
+                    <noServer>true</noServer>
+                    <!-- Remove draftCompile when project is ready -->
+                    <draftCompile>true</draftCompile>
+                    <strict>true</strict>
+                    <compileReport>false</compileReport>
+                    <style>PRETTY</style>
+                    <runTarget>http://localhost:8080/</runTarget>
+                
+                    <!-- Remove these when going to release dependencies -->
+                    <force>true</force>
+                </configuration>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>resources</goal>
+                            <goal>compile</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <!-- As we are doing "inplace" GWT compilation, ensure the widgetset -->
+            <!-- directory is cleaned properly -->
+            <plugin>
+                <artifactId>maven-clean-plugin</artifactId>
+                <configuration>
+                    <filesets>
+                        <fileset>
+                            <directory>/resources</directory>
+                        </fileset>
+                    </filesets>
+                </configuration>
+            </plugin>
+        
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-failsafe-plugin</artifactId>
+                <version>2.12</version>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>integration-test</goal>
+                            <goal>verify</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        
+        </plugins>
+        <pluginManagement>
+            <plugins>
+                <!--This plugin's configuration is used to store Eclipse m2e settings 
+					only. It has no influence on the Maven build itself. -->
+                <plugin>
+                    <groupId>org.eclipse.m2e</groupId>
+                    <artifactId>lifecycle-mapping</artifactId>
+                    <version>1.0.0</version>
+                    <configuration>
+                        <lifecycleMappingMetadata>
+                            <pluginExecutions>
+                                <pluginExecution>
+                                    <pluginExecutionFilter>
+                                        <groupId>com.vaadin</groupId>
+                                        <artifactId>vaadin-maven-plugin</artifactId>
+                                        <versionRange>[2.3.0-1,)</versionRange>
+                                        <goals>
+                                            <goal>resources</goal>
+                                        </goals>
+                                    </pluginExecutionFilter>
+                                    <action>
+                                        <ignore/>
+                                    </action>
+                                </pluginExecution>
+                                <pluginExecution>
+                                    <pluginExecutionFilter>
+                                        <groupId>com.vaadin</groupId>
+                                        <artifactId>vaadin-maven-plugin</artifactId>
+                                        <versionRange>[1.0.2,)</versionRange>
+                                        <goals>
+                                            <goal>update-widgetset</goal>
+                                        </goals>
+                                    </pluginExecutionFilter>
+                                    <action>
+                                        <ignore/>
+                                    </action>
+                                </pluginExecution>
+                            </pluginExecutions>
+                        </lifecycleMappingMetadata>
+                    </configuration>
+                </plugin>
+            </plugins>
+        </pluginManagement>
+    </build>
+</project>
diff --git a/org.eclipse.osbp.vaaclipse.widgetset.default/src/org/eclipse/osbp/vaaclipse/widgetset/DefaultWidgetset.gwt.xml b/org.eclipse.osbp.vaaclipse.widgetset.default/src/org/eclipse/osbp/vaaclipse/widgetset/DefaultWidgetset.gwt.xml
new file mode 100644
index 0000000..251d981
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgetset.default/src/org/eclipse/osbp/vaaclipse/widgetset/DefaultWidgetset.gwt.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 1.7.0//EN" "http://google-web-toolkit.googlecode.com/svn/tags/1.7.0/distro-source/core/src/gwt-module.dtd">
+<module>
+	<inherits name="com.vaadin.DefaultWidgetSet" />
+
+	<inherits name="org.vaadin.peter.contextmenu.ContextmenuWidgetset" />
+<!-- 	<inherits name="fi.jasoft.dragdroplayouts.DragDropLayoutsWidgetSet" /> -->
+	<inherits
+		name="org.eclipse.osbp.vaaclipse.widgets.org_eclipse_osbp_vaaclipse_widgetsWidgetset" />
+
+<!-- 	// Enable for super dev mode -->
+<!-- 	<set-configuration-property name="devModeRedirectEnabled" -->
+<!-- 		value="true" /> -->
+
+<!-- 	<add-linker name="xsiframe" /> -->
+</module>
diff --git a/org.eclipse.osbp.vaaclipse.widgetset.default/src/org/eclipse/osbp/vaaclipse/widgetset/WidgetsetUI.java b/org.eclipse.osbp.vaaclipse.widgetset.default/src/org/eclipse/osbp/vaaclipse/widgetset/WidgetsetUI.java
new file mode 100644
index 0000000..56d72d6
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgetset.default/src/org/eclipse/osbp/vaaclipse/widgetset/WidgetsetUI.java
@@ -0,0 +1,25 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.widgetset;
+
+import com.vaadin.server.VaadinRequest;
+import com.vaadin.ui.Label;
+import com.vaadin.ui.UI;
+
+@SuppressWarnings("serial")
+public class WidgetsetUI extends UI {
+	@Override
+	public void init(VaadinRequest request) {
+		Label label = new Label("Hello Vaadin user");
+		setContent(label);
+	}
+
+}
diff --git a/org.eclipse.osbp.vaadin/.project b/org.eclipse.osbp.vaadin/.project
new file mode 100644
index 0000000..20f7fbe
--- /dev/null
+++ b/org.eclipse.osbp.vaadin/.project
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.vaadin</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.babel.editor.rbeBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>com.vaadin.integration.eclipse.addonStylesBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.babel.editor.rbeNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.vaadin/META-INF/MANIFEST.MF b/org.eclipse.osbp.vaadin/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..e4b9b7a
--- /dev/null
+++ b/org.eclipse.osbp.vaadin/META-INF/MANIFEST.MF
@@ -0,0 +1,11 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.vaadin
+Bundle-SymbolicName: org.eclipse.osbp.vaadin
+Bundle-Version: 0.9.0.qualifier
+Bundle-Vendor: Eclipse OSBP
+Bundle-RequiredExecutionEnvironment: JavaSE-1.7
+Require-Bundle: com.vaadin.server;bundle-version="[7.5.7,7.7.0)",
+ com.vaadin.shared;bundle-version="[7.5.7,7.7.0)",
+ org.jsoup;bundle-version="1.7.2"
+Export-Package: org.eclipse.osbp.vaadin.optiondialog;version="0.9.0"
diff --git a/org.eclipse.osbp.vaadin/about.html b/org.eclipse.osbp.vaadin/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.vaadin/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 1, 2016</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaadin/about.ini b/org.eclipse.osbp.vaadin/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.vaadin/about.ini
@@ -0,0 +1,17 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%featureText
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=
+
+# Property "appName" contains name of the application (translated)
+appName=%featureName
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+welcomePage=
diff --git a/org.eclipse.osbp.vaadin/about.mappings b/org.eclipse.osbp.vaadin/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.vaadin/about.mappings
@@ -0,0 +1,6 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+0=qualifier
diff --git a/org.eclipse.osbp.vaadin/about.properties b/org.eclipse.osbp.vaadin/about.properties
new file mode 100644
index 0000000..fc6a85b
--- /dev/null
+++ b/org.eclipse.osbp.vaadin/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2012, 2016 - Loetz GmbH&Co.KG (Heidelberg)
+# 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:
+#    Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.vaadin
+
+################ blurb property ####################################
+featureText=\
+Copyright (c) 2012-2016 - Loetz GmbH&Co.KG \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+Contributors:\n\
+    Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.vaadin/build.properties b/org.eclipse.osbp.vaadin/build.properties
new file mode 100644
index 0000000..a138bbd
--- /dev/null
+++ b/org.eclipse.osbp.vaadin/build.properties
@@ -0,0 +1,8 @@
+source.. = src/
+output.. = target/classes/
+bin.includes = about.properties,  about.mappings,  about.ini,  about.html,  META-INF/,\
+               .,\
+               epl-v10.html,\
+               license.html
+src.includes = about.properties,  about.mappings,  about.ini,  about.html,  epl-v10.html,\
+               license.html
diff --git a/org.eclipse.osbp.vaadin/epl-v10.html b/org.eclipse.osbp.vaadin/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.vaadin/epl-v10.html
@@ -0,0 +1,259 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+  body {
+    size: 8.5in 11.0in;
+    margin: 0.25in 0.5in 0.25in 0.5in;
+    tab-interval: 0.5in;
+    }
+  p {  	
+    margin-left: auto;
+    margin-top:  0.5em;
+    margin-bottom: 0.5em;
+    }
+  p.list {
+  	margin-left: 0.5in;
+    margin-top:  0.05em;
+    margin-bottom: 0.05em;
+    }
+  </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">where such changes and/or additions to the Program
+originate from and are distributed by that particular Contributor. A
+Contribution 'originates' from a Contributor if it was added to the
+Program by such Contributor itself or anyone acting on such
+Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii)
+are not derivative works of the Program.</p>
+
+<p>"Contributor" means any person or entity that distributes
+the Program.</p>
+
+<p>"Licensed Patents" mean patent claims licensable by a
+Contributor which are necessarily infringed by the use or sale of its
+Contribution alone or when combined with the Program.</p>
+
+<p>"Program" means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>"Recipient" means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works
+of, publicly display, publicly perform, distribute and sublicense the
+Contribution of such Contributor, if any, and such derivative works, in
+source code and object code form.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell,
+offer to sell, import and otherwise transfer the Contribution of such
+Contributor, if any, in source code and object code form. This patent
+license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor,
+such addition of the Contribution causes such combination to be covered
+by the Licensed Patents. The patent license shall not apply to any other
+combinations which include the Contribution. No hardware per se is
+licensed hereunder.</p>
+
+<p class="list">c) Recipient understands that although each Contributor
+grants the licenses to its Contributions set forth herein, no assurances
+are provided by any Contributor that the Program does not infringe the
+patent or other intellectual property rights of any other entity. Each
+Contributor disclaims any liability to Recipient for claims brought by
+any other entity based on infringement of intellectual property rights
+or otherwise. As a condition to exercising the rights and licenses
+granted hereunder, each Recipient hereby assumes sole responsibility to
+secure any other intellectual property rights needed, if any. For
+example, if a third party patent license is required to allow Recipient
+to distribute the Program, it is Recipient's responsibility to acquire
+that license before distributing the Program.</p>
+
+<p class="list">d) Each Contributor represents that to its knowledge it
+has sufficient copyright rights in its Contribution, if any, to grant
+the copyright license set forth in this Agreement.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">i) effectively disclaims on behalf of all Contributors
+all warranties and conditions, express and implied, including warranties
+or conditions of title and non-infringement, and implied warranties or
+conditions of merchantability and fitness for a particular purpose;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">iv) states that source code for the Program is available
+from such Contributor, and informs licensees how to obtain it in a
+reasonable manner on or through a medium customarily used for software
+exchange.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>Commercial distributors of software may accept certain
+responsibilities with respect to end users, business partners and the
+like. While this license is intended to facilitate the commercial use of
+the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create
+potential liability for other Contributors. Therefore, if a Contributor
+includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and
+indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses")
+arising from claims, lawsuits and other legal actions brought by a third
+party against the Indemnified Contributor to the extent caused by the
+acts or omissions of such Commercial Contributor in connection with its
+distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In
+order to qualify, an Indemnified Contributor must: a) promptly notify
+the Commercial Contributor in writing of such claim, and b) allow the
+Commercial Contributor to control, and cooperate with the Commercial
+Contributor in, the defense and any related settlement negotiations. The
+Indemnified Contributor may participate in any such claim at its own
+expense.</p>
+
+<p>For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor's responsibility
+alone. Under this section, the Commercial Contributor would have to
+defend claims against the other Contributors related to those
+performance claims and warranties, and if a court requires any other
+Contributor to pay any damages as a result, the Commercial Contributor
+must pay those damages.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
+OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
+ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to
+the risks and costs of program errors, compliance with applicable laws,
+damage to or loss of data, programs or equipment, and unavailability or
+interruption of operations.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
+NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of
+the remainder of the terms of this Agreement, and without further action
+by the parties hereto, such provision shall be reformed to the minimum
+extent necessary to make such provision valid and enforceable.</p>
+
+<p>If Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that the
+Program itself (excluding combinations of the Program with other
+software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the
+date such litigation is filed.</p>
+
+<p>All Recipient's rights under this Agreement shall terminate if it
+fails to comply with any of the material terms or conditions of this
+Agreement and does not cure such failure in a reasonable period of time
+after becoming aware of such noncompliance. If all Recipient's rights
+under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive.</p>
+
+<p>Everyone is permitted to copy and distribute copies of this
+Agreement, but in order to avoid inconsistency the Agreement is
+copyrighted and may only be modified in the following manner. The
+Agreement Steward reserves the right to publish new versions (including
+revisions) of this Agreement from time to time. No one other than the
+Agreement Steward has the right to modify this Agreement. The Eclipse
+Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a
+suitable separate entity. Each new version of the Agreement will be
+given a distinguishing version number. The Program (including
+Contributions) may always be distributed subject to the version of the
+Agreement under which it was received. In addition, after a new version
+of the Agreement is published, Contributor may elect to distribute the
+Program (including its Contributions) under the new version. Except as
+expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
+rights or licenses to the intellectual property of any Contributor under
+this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this
+Agreement are reserved.</p>
+
+<p>This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No party
+to this Agreement will bring a legal action under this Agreement more
+than one year after the cause of action arose. Each party waives its
+rights to a jury trial in any resulting litigation.</p>
+
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaadin/license.html b/org.eclipse.osbp.vaadin/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.vaadin/license.html
@@ -0,0 +1,164 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!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>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>February 1, 2011</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+   (COLLECTIVELY "CONTENT").  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse
+ Foundation is provided to you under the terms and conditions of the 
+Eclipse Public License Version 1.0
+   ("EPL").  A copy of the EPL is provided with this Content and is also
+ 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, "Program" will mean the Content.</p>
+
+<p>Content includes, but is not limited to, source code, object code, 
+documentation and other files maintained in the Eclipse Foundation 
+source code
+   repository ("Repository") in software modules ("Modules") and made 
+available as downloadable archives ("Downloads").</p>
+
+<ul>
+       <li>Content may be structured and packaged into modules to 
+facilitate delivering, extending, and upgrading the Content.  Typical 
+modules may include plug-ins ("Plug-ins"), plug-in fragments 
+("Fragments"), and features ("Features").</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&#8482; ARchive) in a directory named "plugins".</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or 
+Fragments and associated material.  Each Feature may be packaged as a 
+sub-directory in a directory named "features".  Within a Feature, files 
+named "feature.xml" may contain a list of the names and version numbers 
+of the Plug-ins
+      and/or Fragments associated with that Feature.</li>
+       <li>Features may also include other Features ("Included 
+Features"). Within a Feature, files named "feature.xml" may contain a 
+list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be 
+contained in files named "about.html" ("Abouts"). The terms and 
+conditions governing Features and
+Included Features should be contained in files named "license.html" 
+("Feature Licenses").  Abouts and Feature Licenses may be located in any
+ directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named "src" of certain Plug-ins</li>
+       <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is 
+installed using the Provisioning Technology (as defined below), you must
+ agree to a license ("Feature Update License") during the
+installation process.  If the Feature contains Included Features, the 
+Feature Update License should either provide you with the terms and 
+conditions governing the Included Features or
+inform you where you can locate them.  Feature Update Licenses may be 
+found in the "license" property of files named "feature.properties" 
+found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the 
+terms and conditions (or references to such terms and conditions) that 
+govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER 
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.
+  SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND 
+CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, 
+or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions 
+govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, 
+examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager ("Provisioning Technology") for the purpose of 
+allowing users to install software, documentation, information and/or
+   other materials (collectively "Installable Software"). This 
+capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about 
+packaging Installable Software is available at <a href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   ("Specification").</p>
+
+<p>You may use Provisioning Technology to allow other parties to install
+ Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to
+ be presented to, and accepted by, the users of the Provisioning 
+Technology
+   in accordance with the Specification. By using Provisioning 
+Technology in such a manner and making it available in accordance with 
+the
+   Specification, you further acknowledge your agreement to, and the 
+acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur ("Provisioning Process") in 
+which a user may execute the Provisioning Technology
+       on a machine ("Target Machine") with the intent of installing, 
+extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology 
+may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user 
+the terms and conditions that govern the use of the Installable
+       Software ("Installable Software Agreement") and such Installable 
+Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable 
+Software Agreement must inform the user of the terms and conditions that
+ govern
+       the Installable Software and must solicit acceptance by the end 
+user in the manner prescribed in such Installable Software Agreement. 
+Upon such
+       indication of agreement by the user, the provisioning Technology 
+will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are
+ currently may have restrictions on the import, possession, and use, 
+and/or re-export to
+   another country, of encryption software. BEFORE using any encryption 
+software, please check the country's laws, regulations and policies 
+concerning the import,
+   possession, or use, and re-export of encryption software, to see if 
+this is permitted.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaadin/pom.xml b/org.eclipse.osbp.vaadin/pom.xml
new file mode 100644
index 0000000..407c03d
--- /dev/null
+++ b/org.eclipse.osbp.vaadin/pom.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <artifactId>org.eclipse.osbp.vaadin</artifactId>
+  <packaging>eclipse-plugin</packaging>
+  <parent>
+  	<groupId>org.eclipse.osbp.vaaclipse</groupId>
+  	<artifactId>org.eclipse.osbp.vaaclipse</artifactId>
+  	<version>0.9.0-SNAPSHOT</version>
+  	<relativePath>..</relativePath>
+  </parent>
+</project>
diff --git a/org.eclipse.osbp.vaadin/src/org/eclipse/osbp/vaadin/optiondialog/OptionDialog.java b/org.eclipse.osbp.vaadin/src/org/eclipse/osbp/vaadin/optiondialog/OptionDialog.java
new file mode 100644
index 0000000..55d36d0
--- /dev/null
+++ b/org.eclipse.osbp.vaadin/src/org/eclipse/osbp/vaadin/optiondialog/OptionDialog.java
@@ -0,0 +1,248 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/ package org.eclipse.osbp.vaadin.optiondialog;
+
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+import com.vaadin.data.util.ObjectProperty;
+import com.vaadin.shared.ui.MarginInfo;
+import com.vaadin.ui.Alignment;
+import com.vaadin.ui.Button;
+import com.vaadin.ui.Button.ClickEvent;
+import com.vaadin.ui.Component;
+import com.vaadin.ui.HorizontalLayout;
+import com.vaadin.ui.Label;
+import com.vaadin.ui.UI;
+import com.vaadin.ui.VerticalLayout;
+import com.vaadin.ui.Window;
+
+public class OptionDialog extends Window {
+
+	public enum OptionsAlign {
+		LEFT, RIGHT, CENTER
+	}
+
+	public static interface OptionListener {
+		void optionSelected(OptionDialog optionDialog, int optionId);
+	}
+
+	public static interface ComponentProvider extends OptionListener {
+		Component getComponent(OptionDialog optionDialog);
+
+		void setMessage(String message);
+	}
+
+	private OptionListener optionListener;
+	private String msg;
+	private boolean modal = true;
+
+	public static final OptionListener CLOSE_LISTENER = new OptionListener() {
+
+		@Override
+		public void optionSelected(OptionDialog optionDialog, int optionId) {
+			optionDialog.close();
+		}
+	};
+
+	private ComponentProvider componentProvider = new ComponentProvider() {
+
+		Label label = new Label();
+
+		@Override
+		public void setMessage(String message) {
+			label.setPropertyDataSource(new ObjectProperty<String>(message,
+					String.class));
+		}
+
+		@Override
+		public Component getComponent(OptionDialog optionDialog) {
+			return label;
+		}
+
+		@Override
+		public void optionSelected(OptionDialog optionDialog, int optionId) {
+
+		}
+	};
+
+	private VerticalLayout content;
+	private HorizontalLayout buttons = new HorizontalLayout();
+	private Map<Button, Integer> button2option = new HashMap<Button, Integer>();
+	private Map<Integer, Button> option2button = new HashMap<Integer, Button>();
+	private Float optionButtonWidth;
+	private Unit optionButtonWidthUnit;
+
+	public OptionDialog() {
+		// msgLabel.setWidth("100%");
+		// buttons.setWidth("100%");
+
+		buttons.setSpacing(true);
+		buttons.setMargin(new MarginInfo(false, true, false, true));
+		setOptionsPanelHeight(50, Unit.PIXELS);
+
+		content = new VerticalLayout();
+		content.setSizeFull();
+		this.setContent(content);
+		Component component = componentProvider.getComponent(this);
+		content.addComponent(component);
+		content.addComponent(buttons);
+		content.setComponentAlignment(component, Alignment.TOP_CENTER);
+		content.setComponentAlignment(buttons, Alignment.BOTTOM_CENTER);
+		content.setExpandRatio(component, 1);
+
+		this.center();
+		this.setWidth("500px");
+		this.setHeight("100px");
+	}
+
+	public String getMessage() {
+		return msg;
+	}
+
+	public void setMessage(String msg) {
+		this.msg = msg;
+		componentProvider.setMessage(this.msg);
+	}
+
+	public ComponentProvider getComponentProvider() {
+		return componentProvider;
+	}
+
+	public Component getComponent() {
+		return this.componentProvider.getComponent(this);
+	}
+
+	public void setComponentProvider(ComponentProvider componentProvider) {
+		if (componentProvider == null)
+			return;
+		Component newComponent = componentProvider.getComponent(this);
+		if (newComponent != null) {
+			Component oldComponent = this.componentProvider.getComponent(this);
+			this.content.removeComponent(oldComponent);
+			newComponent.setSizeFull();
+			this.content.addComponent(newComponent, 0);
+			this.content.setExpandRatio(newComponent, 1);
+			this.content.setComponentAlignment(newComponent,
+					Alignment.TOP_CENTER);
+			this.componentProvider = componentProvider;
+		}
+	}
+
+	public Alignment getOptionButtonsAlignment() {
+		return content.getComponentAlignment(buttons);
+	}
+
+	public void setOptionButtonsAlignment(OptionsAlign align) {
+		if (align == OptionsAlign.LEFT)
+			content.setComponentAlignment(buttons, Alignment.MIDDLE_LEFT);
+		else if (align == OptionsAlign.RIGHT)
+			content.setComponentAlignment(buttons, Alignment.MIDDLE_RIGHT);
+		else if (align == OptionsAlign.CENTER)
+			content.setComponentAlignment(buttons, Alignment.MIDDLE_CENTER);
+	}
+
+	public void setOptionsPanelHeight(float height, Unit unit) {
+		buttons.setHeight(height, unit);
+	}
+
+	public void setOptionButtonsWidth(float width, Unit unit) {
+		this.optionButtonWidth = width;
+		this.optionButtonWidthUnit = unit;
+		Iterator<Component> it = buttons.iterator();
+		while (it.hasNext()) {
+			Component c = it.next();
+			if (c instanceof Button) {
+				c.setWidth(width, unit);
+			}
+		}
+	}
+
+	public void open(UI parentWindow) {
+		parentWindow.addWindow(this);
+	}
+
+	public boolean isModal() {
+		return this.modal;
+	}
+
+	public void setModal(boolean modality) {
+		this.modal = modality;
+	}
+
+	public OptionListener getOptionListener() {
+		return optionListener;
+	}
+
+	public void setOptionListener(OptionListener optionListener) {
+		this.optionListener = optionListener;
+	}
+
+	public void addOption(int optionId, String optionText) {
+		Button button = new Button();
+		button.setCaption(optionText);
+		if (optionButtonWidth != null)
+			button.setWidth(optionButtonWidth, optionButtonWidthUnit);
+		buttons.addComponent(button);
+		buttons.setComponentAlignment(button, Alignment.MIDDLE_CENTER);
+		button2option.put(button, optionId);
+		option2button.put(optionId, button);
+		button.addClickListener(new Button.ClickListener() {
+
+			@Override
+			public void buttonClick(ClickEvent event) {
+				Integer optionId = button2option.get(event.getButton());
+
+				if (optionListener != null)
+					optionListener.optionSelected(OptionDialog.this, optionId);
+
+				getComponentProvider().optionSelected(OptionDialog.this,
+						optionId);
+			}
+		});
+	}
+
+	public void setOptionEnabled(int optionId, boolean enabled) {
+		Button button = option2button.get(optionId);
+		button.setEnabled(enabled);
+	}
+
+	public Button getOptionButton(int optionId) {
+		return option2button.get(optionId);
+	}
+
+	public static void show(UI parentWindow, String caption, String message,
+			String[] options, int w, int h, Unit units,
+			OptionListener optionListener) {
+		OptionDialog optionDialog = new OptionDialog();
+		if (w > 0 && h > 0) {
+			optionDialog.setWidth(w, units);
+			optionDialog.setHeight(h, units);
+		}
+
+		optionDialog.setModal(optionDialog.modal);
+		optionDialog.setCaption(caption);
+		optionDialog.setMessage(message);
+		optionDialog.setOptionListener(optionListener);
+
+		for (int i = 0; i < options.length; i++) {
+			optionDialog.addOption(i, options[i]);
+		}
+
+		parentWindow.addWindow(optionDialog);
+	}
+
+	public static void show(UI parentWindow, String caption, String message,
+			String[] options, OptionListener optionListener) {
+		show(parentWindow, caption, message, options, -1, -1, null,
+				optionListener);
+	}
+}
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..65d0df2
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.eclipse.osbp.releng.maven</groupId>
+        <artifactId>org.eclipse.osbp.releng.maven.parent.tycho</artifactId>
+        <version>0.9.0-SNAPSHOT</version>
+        <relativePath/>
+    </parent>
+
+    <groupId>org.eclipse.osbp.vaaclipse</groupId>
+    <artifactId>org.eclipse.osbp.vaaclipse</artifactId>
+    <packaging>pom</packaging>
+
+    <properties>
+        <osbp.deployment.p2.name>vaaclipse</osbp.deployment.p2.name>
+        <osbp.build.p2.project.name>org.eclipse.osbp.vaaclipse.p2</osbp.build.p2.project.name>
+        <vaaclipse-version>2.7.3-SNAPSHOT</vaaclipse-version>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+        <vaadin.version>7.5.7</vaadin.version>
+        <vaadin.plugin.version>7.5.7</vaadin.plugin.version>
+        <vaadin-icepush-version>0.5.4</vaadin-icepush-version>
+        <icepush-version>3.0.1</icepush-version>
+        <icepush-gwt-version>1.0.0</icepush-gwt-version>
+    </properties>
+
+    <modules>
+        <!-- Bundles -->
+        <module>org.eclipse.osbp.vaaclipse.target.luna</module>
+    
+        <module>org.eclipse.osbp.vaaclipse.ui.preferences.addon</module>
+        <module>org.eclipse.osbp.vaaclipse.ui.preferences.model</module>
+    
+        <module>org.eclipse.e4.ui.model.workbench.edit</module>
+        <module>org.eclipse.osbp.commons</module>
+        <module>org.eclipse.osbp.e4.injector.objectsuppliers</module>
+        <module>org.eclipse.osbp.e4extension</module>
+        <module>org.eclipse.osbp.e4modelextension</module>
+        <module>org.eclipse.osbp.vaaclipse.additions</module>
+        <module>org.eclipse.osbp.vaaclipse.api</module>
+        <!-- <module>org.eclipse.osbp.vaaclipse.app</module> -->
+        <module>org.eclipse.osbp.vaaclipse.behaviour</module>
+        <module>org.eclipse.osbp.vaaclipse.common.ecview.api</module>
+        <module>org.eclipse.osbp.vaaclipse.contributions</module>
+        <module>org.eclipse.osbp.vaaclipse.emf</module>
+        <module>org.eclipse.osbp.vaaclipse.emf.addon</module>
+        <module>org.eclipse.osbp.vaaclipse.emf.api</module>
+        <module>org.eclipse.osbp.vaaclipse.presentation</module>
+        <module>org.eclipse.osbp.vaaclipse.publicapi</module>
+        <module>org.eclipse.osbp.vaaclipse.resources</module>
+        <module>org.eclipse.osbp.vaaclipse.theme</module>
+        <module>org.eclipse.osbp.vaaclipse.util</module>
+        <module>org.eclipse.osbp.vaaclipse.widgets</module>
+        <module>org.eclipse.osbp.vaaclipse.widgetset.default</module>
+        <module>org.eclipse.osbp.vaadin</module>
+    
+        <!-- Features -->
+        <module>org.eclipse.osbp.vaaclipse.feature.core</module>
+        <module>org.eclipse.osbp.vaaclipse.feature.target.core</module>
+        <module>org.eclipse.osbp.vaaclipse.feature.runtime.core</module>
+    
+    </modules>
+
+</project>