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..ced1067
--- /dev/null
+++ b/.project
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>osbp-runtime-web</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..ff42ad4
--- /dev/null
+++ b/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/README.md b/README.md
new file mode 100644
index 0000000..692c4de
--- /dev/null
+++ b/README.md
@@ -0,0 +1,4 @@
+lunifera-web
+============
+
+Bundles for runtime web.
\ No newline at end of file
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/eclipse-launchers/lunifera-runtime-web - P2 Kepler - Build and Deploy Temp.launch b/eclipse-launchers/lunifera-runtime-web - P2 Kepler - Build and Deploy Temp.launch
new file mode 100644
index 0000000..1dabfc2
--- /dev/null
+++ b/eclipse-launchers/lunifera-runtime-web - P2 Kepler - Build and Deploy Temp.launch
@@ -0,0 +1,20 @@
+<?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 -Dlunifera.build.uses.local.composite.p2 -Dlunifera.build.uses.remote.composite.p2 -Dlunifera.deploy.to.local.composit"/>
+<booleanAttribute key="M2_NON_RECURSIVE" value="false"/>
+<booleanAttribute key="M2_OFFLINE" value="false"/>
+<stringAttribute key="M2_PROFILES" value="lunifera.build.p2"/>
+<listAttribute key="M2_PROPERTIES"/>
+<stringAttribute key="M2_RUNTIME" value="EMBEDDED"/>
+<booleanAttribute key="M2_SKIP_TESTS" value="false"/>
+<booleanAttribute key="M2_UPDATE_SNAPSHOTS" value="false"/>
+<booleanAttribute key="M2_WORKSPACE_RESOLUTION" value="false"/>
+<stringAttribute key="org.eclipse.debug.ui.ATTR_CONSOLE_ENCODING" value="UTF-8"/>
+<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
+<listEntry value="org.eclipse.debug.ui.launchGroup.run"/>
+</listAttribute>
+<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-XX:MaxPermSize=256m"/>
+<stringAttribute key="org.eclipse.jdt.launching.WORKING_DIRECTORY" value="${workspace_loc:/org.eclipse.osbp.runtime.web}"/>
+</launchConfiguration>
diff --git a/eclipse-launchers/lunifera-runtime-web - P2 Kepler - Build and Deploy.launch b/eclipse-launchers/lunifera-runtime-web - P2 Kepler - Build and Deploy.launch
new file mode 100644
index 0000000..bf264fb
--- /dev/null
+++ b/eclipse-launchers/lunifera-runtime-web - P2 Kepler - Build and Deploy.launch
@@ -0,0 +1,20 @@
+<?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 -Dlunifera.deploy.to.local.composite.p2"/>
+<booleanAttribute key="M2_NON_RECURSIVE" value="false"/>
+<booleanAttribute key="M2_OFFLINE" value="false"/>
+<stringAttribute key="M2_PROFILES" value="lunifera.build.p2"/>
+<listAttribute key="M2_PROPERTIES"/>
+<stringAttribute key="M2_RUNTIME" value="EMBEDDED"/>
+<booleanAttribute key="M2_SKIP_TESTS" value="false"/>
+<booleanAttribute key="M2_UPDATE_SNAPSHOTS" value="false"/>
+<booleanAttribute key="M2_WORKSPACE_RESOLUTION" value="false"/>
+<stringAttribute key="org.eclipse.debug.ui.ATTR_CONSOLE_ENCODING" value="UTF-8"/>
+<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
+<listEntry value="org.eclipse.debug.ui.launchGroup.run"/>
+</listAttribute>
+<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-XX:MaxPermSize=256m"/>
+<stringAttribute key="org.eclipse.jdt.launching.WORKING_DIRECTORY" value="${workspace_loc:/org.eclipse.osbp.runtime.web}"/>
+</launchConfiguration>
diff --git a/eclipse-launchers/lunifera-runtime-web - P2 Kepler - Build skiping tests.launch b/eclipse-launchers/lunifera-runtime-web - P2 Kepler - Build skiping tests.launch
new file mode 100644
index 0000000..cfc8a21
--- /dev/null
+++ b/eclipse-launchers/lunifera-runtime-web - P2 Kepler - Build skiping tests.launch
@@ -0,0 +1,21 @@
+<?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 -fn"/>
+<booleanAttribute key="M2_NON_RECURSIVE" value="false"/>
+<booleanAttribute key="M2_OFFLINE" value="false"/>
+<stringAttribute key="M2_PROFILES" value="lunifera.build.p2"/>
+<listAttribute key="M2_PROPERTIES"/>
+<stringAttribute key="M2_RUNTIME" value="EMBEDDED"/>
+<booleanAttribute key="M2_SKIP_TESTS" value="true"/>
+<booleanAttribute key="M2_UPDATE_SNAPSHOTS" value="false"/>
+<booleanAttribute key="M2_WORKSPACE_RESOLUTION" value="false"/>
+<stringAttribute key="org.eclipse.debug.core.ATTR_REFRESH_SCOPE" value="${workspace}"/>
+<stringAttribute key="org.eclipse.debug.ui.ATTR_CONSOLE_ENCODING" value="UTF-8"/>
+<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
+<listEntry value="org.eclipse.debug.ui.launchGroup.run"/>
+</listAttribute>
+<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-XX:MaxPermSize=256m"/>
+<stringAttribute key="org.eclipse.jdt.launching.WORKING_DIRECTORY" value="${workspace_loc:/org.eclipse.osbp.runtime.web}"/>
+</launchConfiguration>
diff --git a/eclipse-launchers/lunifera-runtime-web - P2 Kepler - Build.launch b/eclipse-launchers/lunifera-runtime-web - P2 Kepler - Build.launch
new file mode 100644
index 0000000..bf264fb
--- /dev/null
+++ b/eclipse-launchers/lunifera-runtime-web - P2 Kepler - Build.launch
@@ -0,0 +1,20 @@
+<?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 -Dlunifera.deploy.to.local.composite.p2"/>
+<booleanAttribute key="M2_NON_RECURSIVE" value="false"/>
+<booleanAttribute key="M2_OFFLINE" value="false"/>
+<stringAttribute key="M2_PROFILES" value="lunifera.build.p2"/>
+<listAttribute key="M2_PROPERTIES"/>
+<stringAttribute key="M2_RUNTIME" value="EMBEDDED"/>
+<booleanAttribute key="M2_SKIP_TESTS" value="false"/>
+<booleanAttribute key="M2_UPDATE_SNAPSHOTS" value="false"/>
+<booleanAttribute key="M2_WORKSPACE_RESOLUTION" value="false"/>
+<stringAttribute key="org.eclipse.debug.ui.ATTR_CONSOLE_ENCODING" value="UTF-8"/>
+<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
+<listEntry value="org.eclipse.debug.ui.launchGroup.run"/>
+</listAttribute>
+<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-XX:MaxPermSize=256m"/>
+<stringAttribute key="org.eclipse.jdt.launching.WORKING_DIRECTORY" value="${workspace_loc:/org.eclipse.osbp.runtime.web}"/>
+</launchConfiguration>
diff --git a/jenkins.build.config.xml b/jenkins.build.config.xml
new file mode 100644
index 0000000..02ff6a1
--- /dev/null
+++ b/jenkins.build.config.xml
@@ -0,0 +1,23 @@
+<?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.dependencies>
+</jenkins>
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.osbp.runtime.web.atmosphere.fragment/.project b/org.eclipse.osbp.runtime.web.atmosphere.fragment/.project
new file mode 100644
index 0000000..495303a
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.atmosphere.fragment/.project
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.runtime.web.atmosphere.fragment</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.runtime.web.atmosphere.fragment/LICENSE.txt b/org.eclipse.osbp.runtime.web.atmosphere.fragment/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.atmosphere.fragment/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.runtime.web.atmosphere.fragment/META-INF/MANIFEST.MF b/org.eclipse.osbp.runtime.web.atmosphere.fragment/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..ea7f799
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.atmosphere.fragment/META-INF/MANIFEST.MF
@@ -0,0 +1,14 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.runtime.web.atmosphere.fragment
+Bundle-SymbolicName: org.eclipse.osbp.runtime.web.atmosphere.fragment
+Bundle-Version: 0.9.0.qualifier
+Bundle-Vendor: Eclipse OSBP
+Fragment-Host: com.vaadin.external.atmosphere.runtime;bundle-version="2.2.7.vaadin1"
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Import-Package: javax.servlet;version="2.6.0",
+ javax.servlet.annotation;version="2.6.0",
+ javax.servlet.descriptor;version="2.6.0",
+ javax.servlet.http;version="2.6.0",
+ javax.servlet.resources;version="2.6.0"
+Require-Bundle: org.eclipse.jetty.websocket;bundle-version="8.1.16"
diff --git a/org.eclipse.osbp.runtime.web.atmosphere.fragment/about.html b/org.eclipse.osbp.runtime.web.atmosphere.fragment/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.atmosphere.fragment/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.runtime.web.atmosphere.fragment/about.ini b/org.eclipse.osbp.runtime.web.atmosphere.fragment/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.atmosphere.fragment/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.runtime.web.atmosphere.fragment/about.mappings b/org.eclipse.osbp.runtime.web.atmosphere.fragment/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.atmosphere.fragment/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.runtime.web.atmosphere.fragment/about.properties b/org.eclipse.osbp.runtime.web.atmosphere.fragment/about.properties
new file mode 100644
index 0000000..471d894
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.atmosphere.fragment/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.runtime.web.atmosphere.fragment
+
+################ 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.runtime.web.atmosphere.fragment/build.properties b/org.eclipse.osbp.runtime.web.atmosphere.fragment/build.properties
new file mode 100644
index 0000000..0e91489
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.atmosphere.fragment/build.properties
@@ -0,0 +1,11 @@
+source.. = src/
+output.. = target/classes/
+bin.includes = about.properties,  about.mappings,  about.ini,  about.html,  META-INF/,\
+               .,\
+               pom.xml,\
+               build.properties,\
+               .classpath,\
+               .project,\
+               .settings/,\
+               LICENSE.txt
+src.includes = about.properties,  about.mappings,  about.ini,  about.html,  LICENSE.txt
diff --git a/org.eclipse.osbp.runtime.web.atmosphere.fragment/pom.xml b/org.eclipse.osbp.runtime.web.atmosphere.fragment/pom.xml
new file mode 100644
index 0000000..79932fc
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.atmosphere.fragment/pom.xml
@@ -0,0 +1,24 @@
+<?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 -->
+<!--#======================================================================= -->
+
+<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.runtime.web</groupId>
+		<artifactId>org.eclipse.osbp.runtime.web.aggregator</artifactId>
+		<version>0.9.0-SNAPSHOT</version>
+		<relativePath>..</relativePath>
+	</parent>
+	<artifactId>org.eclipse.osbp.runtime.web.atmosphere.fragment</artifactId>
+	<packaging>eclipse-plugin</packaging>
+
+</project>
diff --git a/org.eclipse.osbp.runtime.web.atmosphere.fragment/src/NO-SOURCE b/org.eclipse.osbp.runtime.web.atmosphere.fragment/src/NO-SOURCE
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.atmosphere.fragment/src/NO-SOURCE
diff --git a/org.eclipse.osbp.runtime.web.common.tests/.project b/org.eclipse.osbp.runtime.web.common.tests/.project
new file mode 100644
index 0000000..f4d71a5
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.common.tests/.project
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.runtime.web.common.tests</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.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.babel.editor.rbeBuilder</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.runtime.web.common.tests/LICENSE.txt b/org.eclipse.osbp.runtime.web.common.tests/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.common.tests/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.runtime.web.common.tests/META-INF/MANIFEST.MF b/org.eclipse.osbp.runtime.web.common.tests/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..83b5abd
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.common.tests/META-INF/MANIFEST.MF
@@ -0,0 +1,17 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.runtime.web.common.tests
+Bundle-SymbolicName: org.eclipse.osbp.runtime.web.common.tests
+Bundle-Version: 0.9.0.qualifier
+Require-Bundle: org.eclipse.osbp.runtime.web.common;bundle-version="[0.9.0,0.10.0)",
+ org.junit;bundle-version="4.10.0",
+ org.eclipse.equinox.preferences;bundle-version="3.5.0",
+ org.eclipse.osbp.runtime.common;bundle-version="[0.9.0,0.10.0)"
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Bundle-Vendor: Eclipse OSBP
+Service-Component: OSGI-INF/*.xml
+Import-Package: org.eclipse.osgi.service.datalocation;version="1.3.0",
+ org.osgi.framework;version="1.7.0",
+ org.osgi.service.component;version="1.2.0"
+Bundle-ActivationPolicy: lazy
+Bundle-Activator: org.eclipse.osbp.runtime.web.common.tests.Activator
diff --git a/org.eclipse.osbp.runtime.web.common.tests/OSGI-INF/contextFactory.xml b/org.eclipse.osbp.runtime.web.common.tests/OSGI-INF/contextFactory.xml
new file mode 100644
index 0000000..57d5378
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.common.tests/OSGI-INF/contextFactory.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" factory="org.eclipse.osbp.runtime.web.common.contextfactory/test" immediate="false" name="org.eclipse.osbp.runtime.web.common.tests.contextfactory">
+   <implementation class="org.eclipse.osbp.runtime.web.common.tests.context.TestWebContext"/>
+   <service>
+      <provide interface="org.eclipse.osbp.runtime.web.common.IWebContext"/>
+   </service>
+   <reference bind="setPreferencesService" cardinality="0..1" interface="org.osgi.service.prefs.PreferencesService" name="preferencesService" policy="dynamic" unbind="unsetPreferencesService"/>
+</scr:component>
+ 
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.web.common.tests/OSGI-INF/contextRegistry.xml b/org.eclipse.osbp.runtime.web.common.tests/OSGI-INF/contextRegistry.xml
new file mode 100644
index 0000000..8a707d9
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.common.tests/OSGI-INF/contextRegistry.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="true" name="org.eclipse.osbp.runtime.web.common.tests.contextregistry">
+   <implementation class="org.eclipse.osbp.runtime.web.common.tests.context.TestWebContextRegistry"/>
+   <service>
+      <provide interface="org.eclipse.osbp.runtime.web.common.IWebContextRegistry"/>
+   </service>
+   <reference bind="setFactory" cardinality="0..1" interface="org.osgi.service.component.ComponentFactory" name="contextFactory" policy="dynamic" target="(component.factory=org.eclipse.osbp.runtime.web.common.contextfactory/test)" unbind="unsetFactory"/>
+   <property name="osbp.web.common.context.uikit" type="String" value="test"/>
+</scr:component>
diff --git a/org.eclipse.osbp.runtime.web.common.tests/OSGI-INF/contextRegistryHelper.xml b/org.eclipse.osbp.runtime.web.common.tests/OSGI-INF/contextRegistryHelper.xml
new file mode 100644
index 0000000..9255ebe
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.common.tests/OSGI-INF/contextRegistryHelper.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.eclipse.osbp.runtime.web.common.tests.contextregistryhelper">
+   <implementation class="org.eclipse.osbp.runtime.web.common.tests.context.ContextRegistryHelper"/>
+   <reference bind="setRegistry" cardinality="1..1" interface="org.eclipse.osbp.runtime.web.common.IWebContextRegistry" name="webContextRegistry" policy="static" target="(osbp.web.common.context.uikit=test)" unbind="unsetRegistry"/>
+</scr:component>
diff --git a/org.eclipse.osbp.runtime.web.common.tests/build.properties b/org.eclipse.osbp.runtime.web.common.tests/build.properties
new file mode 100644
index 0000000..255b1af
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.common.tests/build.properties
@@ -0,0 +1,5 @@
+output.. = target/classes/
+bin.includes = META-INF/,\
+               .,\
+               OSGI-INF/
+source.. = src/
diff --git a/org.eclipse.osbp.runtime.web.common.tests/pom.xml b/org.eclipse.osbp.runtime.web.common.tests/pom.xml
new file mode 100644
index 0000000..3d06db2
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.common.tests/pom.xml
@@ -0,0 +1,24 @@
+<?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 -->
+<!--#======================================================================= -->
+
+<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.runtime.web</groupId>
+		<artifactId>org.eclipse.osbp.runtime.web.aggregator</artifactId>
+		<version>0.9.0-SNAPSHOT</version>
+		<relativePath>..</relativePath>
+	</parent>
+	<artifactId>org.eclipse.osbp.runtime.web.common.tests</artifactId>
+	<packaging>eclipse-test-plugin</packaging>
+
+</project>
diff --git a/org.eclipse.osbp.runtime.web.common.tests/src/org/eclipse/osbp/runtime/web/common/tests/Activator.java b/org.eclipse.osbp.runtime.web.common.tests/src/org/eclipse/osbp/runtime/web/common/tests/Activator.java
new file mode 100644
index 0000000..05200d0
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.common.tests/src/org/eclipse/osbp/runtime/web/common/tests/Activator.java
@@ -0,0 +1,58 @@
+/**
+ * Copyright (c) 2011, 2014 - 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.runtime.web.common.tests;
+
+import java.io.IOException;
+import java.net.MalformedURLException;
+
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+
+public class Activator implements BundleActivator {
+
+	public static BundleContext context;
+
+	// private static boolean locationRegistered;
+
+	@Override
+	public void start(BundleContext context) throws Exception {
+		Activator.context = context;
+	}
+
+	/**
+	 * Registers the user area default location as an OSGi service.
+	 * 
+	 * @throws IOException
+	 * @throws MalformedURLException
+	 */
+	public static void registerUserLocation() throws IOException,
+			MalformedURLException {
+		// if (locationRegistered) {
+		// return;
+		// }
+		// BasicLocation location = new BasicLocation("", null, false, null);
+		// location.set(new File(System.getProperty("user.home"),
+		// "osbp_test")
+		// .toURL(), false);
+		// Hashtable<String, Object> properties = new Hashtable<String,
+		// Object>();
+		// properties.put("type", "osgi.user.area");
+		// context.registerService(Location.class, location, properties);
+		// locationRegistered = true;
+	}
+
+	@Override
+	public void stop(BundleContext context) throws Exception {
+		Activator.context = null;
+	}
+
+}
diff --git a/org.eclipse.osbp.runtime.web.common/.project b/org.eclipse.osbp.runtime.web.common/.project
new file mode 100644
index 0000000..200c586
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.common/.project
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.runtime.web.common</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.runtime.web.common/LICENSE.txt b/org.eclipse.osbp.runtime.web.common/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.common/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.runtime.web.common/META-INF/MANIFEST.MF b/org.eclipse.osbp.runtime.web.common/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..6263d80
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.common/META-INF/MANIFEST.MF
@@ -0,0 +1,21 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.runtime.web.common
+Bundle-SymbolicName: org.eclipse.osbp.runtime.web.common
+Bundle-Version: 0.9.0.qualifier
+Bundle-ActivationPolicy: lazy
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Bundle-Vendor: Eclipse OSBP
+Import-Package: org.osgi.service.component;version="1.2.0",
+ org.osgi.service.prefs;version="1.1.1"
+Export-Package: org.eclipse.osbp.runtime.web.common;
+  uses:="org.eclipse.osbp.runtime.common.user,
+   org.eclipse.osbp.runtime.common.dispose";version="0.9.0",
+ org.eclipse.osbp.runtime.web.common.context;
+  uses:="org.eclipse.osbp.runtime.common.user,
+   org.osgi.service.prefs,
+   org.eclipse.osbp.runtime.common.dispose,
+   org.osgi.service.component,
+   org.eclipse.osbp.runtime.web.common";version="0.9.0",
+ org.eclipse.osbp.runtime.web.common.context.preferences;x-internal:=true;version="0.9.0"
+Require-Bundle: org.eclipse.osbp.runtime.common;bundle-version="[0.9.0,0.10.0)"
diff --git a/org.eclipse.osbp.runtime.web.common/about.html b/org.eclipse.osbp.runtime.web.common/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.common/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.runtime.web.common/about.ini b/org.eclipse.osbp.runtime.web.common/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.common/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.runtime.web.common/about.mappings b/org.eclipse.osbp.runtime.web.common/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.common/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.runtime.web.common/about.properties b/org.eclipse.osbp.runtime.web.common/about.properties
new file mode 100644
index 0000000..fbde109
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.common/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.runtime.web.common
+
+################ 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.runtime.web.common/build.properties b/org.eclipse.osbp.runtime.web.common/build.properties
new file mode 100644
index 0000000..edc7aca
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.common/build.properties
@@ -0,0 +1,6 @@
+output.. = target/classes/
+bin.includes = about.properties,  about.mappings,  about.ini,  about.html,  META-INF/,\
+               .,\
+               LICENSE.txt
+source.. = src/
+src.includes = about.properties,  about.mappings,  about.ini,  about.html,  LICENSE.txt
diff --git a/org.eclipse.osbp.runtime.web.common/pom.xml b/org.eclipse.osbp.runtime.web.common/pom.xml
new file mode 100644
index 0000000..7b96121
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.common/pom.xml
@@ -0,0 +1,24 @@
+<?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 -->
+<!--#======================================================================= -->
+
+<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.runtime.web</groupId>
+		<artifactId>org.eclipse.osbp.runtime.web.aggregator</artifactId>
+		<version>0.9.0-SNAPSHOT</version>
+		<relativePath>..</relativePath>
+	</parent>
+	<artifactId>org.eclipse.osbp.runtime.web.common</artifactId>
+	<packaging>eclipse-plugin</packaging>
+
+</project>
diff --git a/org.eclipse.osbp.runtime.web.common/src/org/eclipse/osbp/runtime/web/common/ContextAccess.java b/org.eclipse.osbp.runtime.web.common/src/org/eclipse/osbp/runtime/web/common/ContextAccess.java
new file mode 100644
index 0000000..c966204
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.common/src/org/eclipse/osbp/runtime/web/common/ContextAccess.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.runtime.web.common;
+
+// TODO: Auto-generated Javadoc
+/**
+ * An accessor class that returns objects that are registered with the current
+ * thread.
+ */
+public class ContextAccess {
+
+	/** The Constant webContext. */
+	private static final ThreadLocal<IWebContext> webContext = new ThreadLocal<IWebContext>();
+
+	/**
+	 * Returns the context that was registered with the current thread. If no
+	 * context was registered then <code>null</code> will be returned.
+	 *
+	 * @return the context
+	 */
+	public static IWebContext getContext() {
+		return webContext.get();
+	}
+
+	/**
+	 * Registers the given web context with the current thread.
+	 *
+	 * @param session
+	 *            the new context
+	 */
+	public static void setContext(IWebContext session) {
+		webContext.set(session);
+	}
+
+}
diff --git a/org.eclipse.osbp.runtime.web.common/src/org/eclipse/osbp/runtime/web/common/IConstants.java b/org.eclipse.osbp.runtime.web.common/src/org/eclipse/osbp/runtime/web/common/IConstants.java
new file mode 100644
index 0000000..fd7155b
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.common/src/org/eclipse/osbp/runtime/web/common/IConstants.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.runtime.web.common;
+
+public interface IConstants {
+
+	/**
+	 * OSGi property used to define unique id of web context.
+	 */
+	public static final String OSGI_PROPERTY__WEB_CONTEXT__ID = "osbp.web.common.context.id";
+
+	/**
+	 * OSGi property to define user id of web context.
+	 */
+	public static final String OSGI_PROPERTY__WEB_CONTEXT__USER = "osbp.web.common.context.user";
+
+	/**
+	 * OSGi property to define the vendor of the ui kit.
+	 */
+	public static final String OSGI_PROPERTY__WEB_CONTEXT__VENDOR = "osbp.web.common.context.vendor";
+}
diff --git a/org.eclipse.osbp.runtime.web.common/src/org/eclipse/osbp/runtime/web/common/IWebContext.java b/org.eclipse.osbp.runtime.web.common/src/org/eclipse/osbp/runtime/web/common/IWebContext.java
new file mode 100644
index 0000000..d81a2cc
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.common/src/org/eclipse/osbp/runtime/web/common/IWebContext.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.runtime.web.common;
+
+import java.util.Locale;
+
+import org.eclipse.osbp.runtime.common.dispose.IDisposable;
+import org.eclipse.osbp.runtime.common.user.IUserInfo;
+
+// TODO: Auto-generated Javadoc
+/**
+ * A web context is an object that offers access to features that are related
+ * with a browser tab. One http sessoin may have many web contexts. The web
+ * context is attached to the current thread as far as a request is processed by
+ * the http servlet. For concurrent threads no web context is attached to them.
+ * So concurrent threads have to query the web context and use the sync-methods
+ * to run a runnable in a web context.
+ * <p>
+ * To dispose a web context call {@link #dispose()}.
+ */
+public interface IWebContext extends IDisposable {
+
+	/**
+	 * Returns the unique id of the web context.
+	 *
+	 * @return the id
+	 */
+	String getId();
+
+	/**
+	 * Returns the i18n service configured with the settings of that context.
+	 * For instance the locale of the context will be used to return the proper
+	 * i18n service.
+	 *
+	 */
+	// TODO: check the definition and the description - this returns nothing
+	void getI18nService();
+
+	/**
+	 * Returns the locale of that context.
+	 *
+	 * @return the locale
+	 */
+	Locale getLocale();
+
+	/**
+	 * Returns the user info this context is assigned to. Never
+	 * <code>null</code>.
+	 *
+	 * @return the user info
+	 */
+	IUserInfo getUserInfo();
+
+	/**
+	 * Returns the value for the given property or <code>null</code> if the
+	 * value is not available.
+	 *
+	 * @param property
+	 *            the property
+	 * @return the property
+	 */
+	Object getProperty(String property);
+
+	/**
+	 * Executes the given runnable in the context of that web context. Therefore
+	 * it will sync with the web environment before executing the runnable.
+	 *
+	 * @param runnable
+	 *            the runnable
+	 */
+	public void syncExec(Runnable runnable);
+
+	/**
+	 * Executes the given runnable in the context of that web context in an
+	 * async mode. Therefore it will sync with the web environment before
+	 * executing the runnable.
+	 *
+	 * @param runnable
+	 *            the runnable
+	 */
+	public void asyncExec(Runnable runnable);
+}
diff --git a/org.eclipse.osbp.runtime.web.common/src/org/eclipse/osbp/runtime/web/common/IWebContextRegistry.java b/org.eclipse.osbp.runtime.web.common/src/org/eclipse/osbp/runtime/web/common/IWebContextRegistry.java
new file mode 100644
index 0000000..9d1a740
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.common/src/org/eclipse/osbp/runtime/web/common/IWebContextRegistry.java
@@ -0,0 +1,50 @@
+/**
+ * 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.runtime.web.common;
+
+import java.util.Map;
+
+// TODO: Auto-generated Javadoc
+/**
+ * A registry for web contexts. Web contexts are created by that service. And it
+ * also observes the lifecycle of them.
+ */
+public interface IWebContextRegistry {
+
+	/**
+	 * Returns the count of the contained contexts.
+	 *
+	 * @return the int
+	 */
+	int size();
+
+	/**
+	 * Creates a webcontext for the given user.
+	 *
+	 * @param user
+	 *            The user id.
+	 * @param properties
+	 *            Will be passed to the context. Should only contain primitive
+	 *            types, their wrappers and java types.
+	 * @return the i web context
+	 */
+	IWebContext createContext(String user, Map<String, Object> properties);
+
+	/**
+	 * Returns the webcontext for the given id or <code>null</code> if no
+	 * context is available.
+	 *
+	 * @param id
+	 *            the id
+	 * @return the context
+	 */
+	IWebContext getContext(String id);
+}
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.web.common/src/org/eclipse/osbp/runtime/web/common/context/AbstractUserInfo.java b/org.eclipse.osbp.runtime.web.common/src/org/eclipse/osbp/runtime/web/common/context/AbstractUserInfo.java
new file mode 100644
index 0000000..928b835
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.common/src/org/eclipse/osbp/runtime/web/common/context/AbstractUserInfo.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.runtime.web.common.context;
+
+import org.eclipse.osbp.runtime.common.user.IUserInfo;
+
+
+public abstract class AbstractUserInfo implements IUserInfo {
+
+	private final String userId;
+
+	AbstractUserInfo(String userId) {
+		this.userId = userId;
+	}
+
+	@Override
+	public String getId() {
+		return userId;
+	}
+
+}
diff --git a/org.eclipse.osbp.runtime.web.common/src/org/eclipse/osbp/runtime/web/common/context/AbstractWebContext.java b/org.eclipse.osbp.runtime.web.common/src/org/eclipse/osbp/runtime/web/common/context/AbstractWebContext.java
new file mode 100644
index 0000000..b47384d
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.common/src/org/eclipse/osbp/runtime/web/common/context/AbstractWebContext.java
@@ -0,0 +1,193 @@
+/**
+ * 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.runtime.web.common.context;
+
+import java.util.Locale;
+import java.util.Map;
+
+import org.eclipse.osbp.runtime.common.dispose.AbstractDisposable;
+import org.eclipse.osbp.runtime.common.user.IUserInfo;
+import org.eclipse.osbp.runtime.web.common.IConstants;
+import org.eclipse.osbp.runtime.web.common.IWebContext;
+import org.osgi.service.component.ComponentContext;
+import org.osgi.service.component.ComponentInstance;
+import org.osgi.service.prefs.Preferences;
+import org.osgi.service.prefs.PreferencesService;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Class AbstractWebContext.
+ */
+public abstract class AbstractWebContext extends AbstractDisposable implements
+		IWebContext {
+
+	/** The user info. */
+	private IUserInfo userInfo = null;
+	
+	/** The id. */
+	private String id;
+
+	/** The preferences service. */
+	private PreferencesService preferencesService;
+	
+	/** The properties. */
+	// private Location userLocation;
+	private Map<String, Object> properties;
+
+	/** The instance. */
+	private ComponentInstance instance;
+
+	/**
+	 * Called by OSGi-DS.
+	 */
+	public AbstractWebContext() {
+
+	}
+
+	/**
+	 * Activate.
+	 *
+	 * @param context
+	 *            the context
+	 * @param properties
+	 *            the properties
+	 */
+	protected void activate(ComponentContext context,
+			Map<String, Object> properties) {
+		this.properties = properties;
+		this.instance = context.getComponentInstance();
+
+		id = (String) properties.get(IConstants.OSGI_PROPERTY__WEB_CONTEXT__ID);
+		// prepare the user info
+		userInfo = new AbstractUserInfo(
+				(String) properties
+						.get(IConstants.OSGI_PROPERTY__WEB_CONTEXT__USER)) {
+			@Override
+			public Preferences getPreferences(String qualifier) {
+				if (preferencesService == null || getId() == null) {
+					return null;
+				}
+				return preferencesService.getUserPreferences(getId());
+			}
+
+			// @Override
+			// public String getLocation() {
+			// return System.getProperty("user.home") + "/" + getId();
+			// }
+		};
+
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.osbp.runtime.web.common.IWebContext#getId()
+	 */
+	@Override
+	public String getId() {
+		return id;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.osbp.runtime.web.common.IWebContext#getUserInfo()
+	 */
+	@Override
+	public IUserInfo getUserInfo() {
+		return userInfo;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.osbp.runtime.web.common.IWebContext#getI18nService()
+	 */
+	@Override
+	public void getI18nService() {
+
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.osbp.runtime.web.common.IWebContext#getLocale()
+	 */
+	@Override
+	public Locale getLocale() {
+		return null;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.osbp.runtime.common.dispose.AbstractDisposable#internalDispose()
+	 */
+	@Override
+	protected void internalDispose() {
+		userInfo = null;
+
+		if (instance != null) {
+			instance.dispose();
+		}
+	}
+
+	/**
+	 * Called by OSGi-DS.
+	 */
+	protected void deactivate() {
+		instance = null;
+		if (canDispose()) {
+			// should not happen for normal. But if the context was deactivated
+			// by ComponentInstance.dispose() we ensure that WebContext.dispose
+			// is called too.
+			dispose();
+		}
+	}
+
+	/**
+	 * Called by OSGi-DS.
+	 *
+	 * @param service
+	 *            the new preferences service
+	 */
+	protected void setPreferencesService(PreferencesService service) {
+		this.preferencesService = service;
+	}
+
+	/**
+	 * Called by OSGi-DS.
+	 *
+	 * @param service
+	 *            the service
+	 */
+	protected void unsetPreferencesService(PreferencesService service) {
+		this.preferencesService = null;
+	}
+
+	// /**
+	// * Called by OSGi-DS
+	// *
+	// * @param service
+	// */
+	// public void setUserLocation(Location userLocation) {
+	// this.userLocation = userLocation;
+	// }
+	//
+	// /**
+	// * Called by OSGi-DS
+	// *
+	// * @param service
+	// */
+	// public void unsetUserLocation(Location userLocation) {
+	// this.userLocation = null;
+	// }
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.osbp.runtime.web.common.IWebContext#getProperty(java.lang.String)
+	 */
+	@Override
+	public Object getProperty(String property) {
+		return properties.get(property);
+	}
+
+}
diff --git a/org.eclipse.osbp.runtime.web.common/src/org/eclipse/osbp/runtime/web/common/context/AbstractWebContextRegistry.java b/org.eclipse.osbp.runtime.web.common/src/org/eclipse/osbp/runtime/web/common/context/AbstractWebContextRegistry.java
new file mode 100644
index 0000000..2fd4356
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.common/src/org/eclipse/osbp/runtime/web/common/context/AbstractWebContextRegistry.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.runtime.web.common.context;
+
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.osbp.runtime.common.dispose.IDisposable;
+import org.eclipse.osbp.runtime.web.common.IWebContext;
+import org.eclipse.osbp.runtime.web.common.IWebContextRegistry;
+import org.osgi.service.component.ComponentFactory;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Class AbstractWebContextRegistry.
+ */
+public abstract class AbstractWebContextRegistry implements
+		IDisposable.Listener, IWebContextRegistry {
+
+	/** The factory. */
+	private ComponentFactory factory;
+	
+	/** The contexts. */
+	private Map<String, IWebContext> contexts = Collections
+			.synchronizedMap(new HashMap<String, IWebContext>());
+
+	/**
+	 * Called by OSGi-DS. Sets the component factory that is used to create
+	 * instances of web context.
+	 *
+	 * @param factory
+	 *            the new factory
+	 */
+	protected void setFactory(ComponentFactory factory) {
+		this.factory = factory;
+	}
+
+	/**
+	 * Called by OSGi-DS. Unsets the component factory that is used to create
+	 * instances of web context.
+	 *
+	 * @param factory
+	 *            the factory
+	 */
+	protected void unsetFactory(ComponentFactory factory) {
+		this.factory = null;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.osbp.runtime.web.common.IWebContextRegistry#size()
+	 */
+	@Override
+	public int size() {
+		return contexts.size();
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.osbp.runtime.web.common.IWebContextRegistry#getContext(java.lang.String)
+	 */
+	@Override
+	public IWebContext getContext(String id) {
+		return (IWebContext) (contexts.containsKey(id) ? contexts.get(id)
+				: null);
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.osbp.runtime.web.common.IWebContextRegistry#createContext(java.lang.String, java.util.Map)
+	 */
+	@Override
+	public IWebContext createContext(String user, Map<String, Object> properties) {
+		IWebContext context = doCreateContext(factory, user, properties);
+		contexts.put(context.getId(), context);
+		return context;
+	}
+
+	/**
+	 * Delegates the creation of the context to the subclass.
+	 *
+	 * @param factory
+	 *            the factory
+	 * @param user
+	 *            the user
+	 * @param properties
+	 *            the properties
+	 * @return the i web context
+	 */
+	protected abstract IWebContext doCreateContext(ComponentFactory factory,
+			String user, Map<String, Object> properties);
+
+	/**
+	 * Notifies that a web context was disposed.
+	 *
+	 * @param notifier
+	 *            the notifier
+	 */
+	@Override
+	public void notifyDisposed(IDisposable notifier) {
+
+		// remove this as a dispose listener
+		//
+		notifier.removeDisposeListener(this);
+
+		// look for the context
+		//
+		String disposedId = null;
+		synchronized (contexts) {
+			for (Map.Entry<String, IWebContext> entry : contexts.entrySet()) {
+				if (notifier == entry.getValue()) {
+					disposedId = entry.getKey();
+					break;
+				}
+			}
+
+			if (disposedId != null) {
+				contexts.remove(disposedId);
+			}
+		}
+	}
+}
diff --git a/org.eclipse.osbp.runtime.web.common/src/org/eclipse/osbp/runtime/web/common/context/preferences/UserScope.java b/org.eclipse.osbp.runtime.web.common/src/org/eclipse/osbp/runtime/web/common/context/preferences/UserScope.java
new file mode 100644
index 0000000..5b16b11
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.common/src/org/eclipse/osbp/runtime/web/common/context/preferences/UserScope.java
@@ -0,0 +1,119 @@
+/**
+ * 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.runtime.web.common.context.preferences;
+
+import org.eclipse.osbp.runtime.common.user.IUserInfo;
+
+
+/**
+ * Object representing the project scope in the Eclipse preferences hierarchy.
+ * Can be used as a context for searching for preference values (in the
+ * <code>org.eclipse.core.runtime.IPreferencesService</code> APIs) or for
+ * determining the correct preference node to set values in the store.
+ * <p>
+ * User preferences are stored on a per user basis in the user's content area as
+ * specified by <code>IUserInfo</code>.
+ * 
+ * <p>
+ * The path for preferences defined in the user scope hierarchy is as follows:
+ * <code>/user/&lt;username&gt;/&lt;qualifier&gt;</code>
+ * 
+ * <p>
+ * This class is not intended to be subclassed. This class may be instantiated.
+ * 
+ * 
+ * @see IUserInfo
+ */
+public final class UserScope {
+
+	// implements IScopeContext {
+
+	// /**
+	// * String constant (value of <code>"user"</code>) used for the scope name
+	// * for this preference scope.
+	// */
+	//	public static final String SCOPE = "user"; //$NON-NLS-1$
+	//
+	// private final IPreferencesService preferencesService;
+	// private final String datalocation;
+	// private final String userId;
+	//
+	// /**
+	// * Create and return a new user scope for the given user info. The given
+	// * context must not be <code>null</code>.
+	// *
+	// * @param preferencesService
+	// * @param datalocation
+	// * the datalocation
+	// * @param userId
+	// * the userId
+	// * @exception IllegalArgumentException
+	// * if the the information is <code>null</code>
+	// */
+	// public UserScope(IPreferencesService preferencesService,
+	// String datalocation, String userId) {
+	// super();
+	// if (preferencesService == null || datalocation == null
+	// || datalocation.equals("") || userId == null)
+	// throw new IllegalArgumentException();
+	// this.preferencesService = preferencesService;
+	// this.datalocation = datalocation;
+	// this.userId = userId;
+	// }
+	//
+	// public IEclipsePreferences getNode(String qualifier) {
+	// if (qualifier == null)
+	// throw new IllegalArgumentException();
+	// return (IEclipsePreferences) preferencesService.getRootNode()
+	// .node(SCOPE).node(userId).node(qualifier);
+	// }
+	//
+	// public IPath getLocation() {
+	// return new Path(datalocation).append(".settings");
+	// }
+	//
+	// public String getName() {
+	// return SCOPE;
+	// }
+	//
+	// @Override
+	// public int hashCode() {
+	// final int prime = 31;
+	// int result = 1;
+	// result = prime * result
+	// + ((datalocation == null) ? 0 : datalocation.hashCode());
+	// result = prime * result + ((userId == null) ? 0 : userId.hashCode());
+	// return result;
+	// }
+	//
+	// @Override
+	// public boolean equals(Object obj) {
+	// if (this == obj)
+	// return true;
+	// if (obj == null)
+	// return false;
+	// if (getClass() != obj.getClass())
+	// return false;
+	// UserScope other = (UserScope) obj;
+	// if (datalocation == null) {
+	// if (other.datalocation != null)
+	// return false;
+	// } else if (!datalocation.equals(other.datalocation))
+	// return false;
+	// if (userId == null) {
+	// if (other.userId != null)
+	// return false;
+	// } else if (!userId.equals(other.userId))
+	// return false;
+	// return true;
+	// }
+
+}
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.tests/.project b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.tests/.project
new file mode 100644
index 0000000..979019c
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.tests/.project
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.tests</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.m2e.core.maven2Builder</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>
+	</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.runtime.web.ecview.presentation.vaadin.tests.ui.tests/LICENSE.txt b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.tests/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.tests/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.runtime.web.ecview.presentation.vaadin.tests.ui.tests/META-INF/MANIFEST.MF b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.tests/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..af5bf74
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.tests/META-INF/MANIFEST.MF
@@ -0,0 +1,33 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.tests
+Bundle-SymbolicName: org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.tests
+Bundle-Version: 0.9.0.qualifier
+Bundle-ClassPath: .
+Require-Bundle: com.vaadin.shared;bundle-version="[7.5.7,7.7.0)",
+ com.vaadin.server;bundle-version="[7.5.7,7.7.0)",
+ org.eclipse.osbp.runtime.web.vaadin.common;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.runtime.web.ecview.presentation.vaadin;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.runtime.web.vaadin.databinding;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.runtime.web.vaadin.components;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.emf.databinding;bundle-version="1.3.0",
+ org.eclipse.core.runtime,
+ org.eclipse.emf.ecore;visibility:=reexport,
+ org.eclipse.osbp.ecview.core.common;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.ecview.core.common.editparts.emf;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.ecview.core.common.model;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.ecview.core.databinding.beans;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.ecview.core.databinding.emf;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.ecview.core.extension.editparts.emf;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.ecview.core.ui.presentation.common;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.ecview.core.util.emf;bundle-version="[0.9.0,0.10.0)",
+ org.jsoup;bundle-version="1.7.2"
+Bundle-RequiredExecutionEnvironment: JavaSE-1.7
+Bundle-Vendor: Eclipse OSBP
+Import-Package: javax.servlet;version="2.6.0",
+ javax.servlet.http;version="2.6.0",
+ org.osgi.framework;version="1.7.0",
+ org.osgi.service.cm;version="1.4.0",
+ org.osgi.service.component;version="1.2.0",
+ org.osgi.service.http;version="1.2.1",
+ org.slf4j;version="1.6.1"
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.tests/build.properties b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.tests/build.properties
new file mode 100644
index 0000000..4465407
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.tests/build.properties
@@ -0,0 +1,10 @@
+#
+
+bin.includes = .,\
+               model/,\
+               META-INF/,\
+               plugin.xml,\
+               plugin.properties
+jars.compile.order = .
+source.. = src/
+output.. = bin/
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.tests/pom.xml b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.tests/pom.xml
new file mode 100644
index 0000000..4498fb7
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.tests/pom.xml
@@ -0,0 +1,448 @@
+<?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: -->
+<!--# Florian Pirchner - 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.runtime.web</groupId>
+		<artifactId>org.eclipse.osbp.runtime.web.aggregator</artifactId>
+		<version>0.9.0-SNAPSHOT</version>
+		<relativePath>..</relativePath>
+	</parent>
+	<artifactId>org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.tests</artifactId>
+	<packaging>eclipse-test-plugin</packaging>
+
+	<build>
+		<plugins>
+			<plugin>
+				<groupId>org.eclipse.tycho</groupId>
+				<artifactId>tycho-surefire-plugin</artifactId>
+				<configuration>
+					<includes>
+						<include>**/*IT.class</include>
+					</includes>
+					<failIfNoTests>false</failIfNoTests>
+					<showEclipseLog>true</showEclipseLog>
+					<argLine>-Dorg.osgi.service.http.port=8080</argLine>
+					
+					<bundleStartLevel>
+						<!-- WS -->
+						<bundle>
+							<id>org.eclipse.equinox.http.jetty</id>
+							<level>4</level>
+							<autoStart>true</autoStart>
+						</bundle>
+						<bundle>
+							<id>org.eclipse.equinox.http.servlet</id>
+							<level>4</level>
+							<autoStart>true</autoStart>
+						</bundle>
+						<bundle>
+							<id>org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui</id>
+							<level>4</level>
+							<autoStart>true</autoStart>
+						</bundle>
+						<bundle>
+							<id>ch.qos.logback.classic</id>
+							<level>4</level>
+							<autoStart>false</autoStart>
+						</bundle>
+						<bundle>
+							<id>ch.qos.logback.core</id>
+							<level>4</level>
+							<autoStart>false</autoStart>
+						</bundle>
+						<bundle>
+							<id>ch.qos.logback.slf4j</id>
+							<level>4</level>
+							<autoStart>false</autoStart>
+						</bundle>
+						<bundle>
+							<id>com.google.guava</id>
+							<level>4</level>
+							<autoStart>false</autoStart>
+						</bundle>
+						<bundle>
+							<id>com.google.gwt.thirdparty.guava</id>
+							<level>4</level>
+							<autoStart>false</autoStart>
+						</bundle>
+						<bundle>
+							<id>com.google.gwt.thirdparty.streamhtmlparser</id>
+							<level>4</level>
+							<autoStart>false</autoStart>
+						</bundle>
+						<bundle>
+							<id>com.ibm.icu</id>
+							<level>4</level>
+							<autoStart>false</autoStart>
+						</bundle>
+						<bundle>
+							<id>com.vaadin.client</id>
+							<level>4</level>
+							<autoStart>false</autoStart>
+						</bundle>
+						<bundle>
+							<id>com.vaadin.server</id>
+							<level>4</level>
+							<autoStart>false</autoStart>
+						</bundle>
+						<bundle>
+							<id>com.vaadin.shared</id>
+							<level>4</level>
+							<autoStart>false</autoStart>
+						</bundle>
+						<bundle>
+							<id>javax.annotation</id>
+							<level>4</level>
+							<autoStart>false</autoStart>
+						</bundle>
+						<bundle>
+							<id>javax.inject</id>
+							<level>4</level>
+							<autoStart>false</autoStart>
+						</bundle>
+						<bundle>
+							<id>javax.persistence</id>
+							<level>4</level>
+							<autoStart>false</autoStart>
+						</bundle>
+						<bundle>
+							<id>javax.servlet</id>
+							<level>4</level>
+							<autoStart>false</autoStart>
+						</bundle>
+						<bundle>
+							<id>javax.transaction</id>
+							<level>4</level>
+							<autoStart>false</autoStart>
+						</bundle>
+						<bundle>
+							<id>javax.validation</id>
+							<level>4</level>
+							<autoStart>false</autoStart>
+						</bundle>
+						<bundle>
+							<id>javax.xml</id>
+							<level>4</level>
+							<autoStart>false</autoStart>
+						</bundle>
+						<bundle>
+							<id>org.apache.batik.css</id>
+							<level>4</level>
+							<autoStart>false</autoStart>
+						</bundle>
+						<bundle>
+							<id>org.apache.batik.util</id>
+							<level>4</level>
+							<autoStart>false</autoStart>
+						</bundle>
+						<bundle>
+							<id>org.apache.batik.util.gui</id>
+							<level>4</level>
+							<autoStart>false</autoStart>
+						</bundle>
+						<bundle>
+							<id>org.apache.commons.collections</id>
+							<level>4</level>
+							<autoStart>false</autoStart>
+						</bundle>
+						<bundle>
+							<id>org.apache.commons.lang</id>
+							<level>4</level>
+							<autoStart>false</autoStart>
+						</bundle>
+						<bundle>
+							<id>org.apache.commons.logging</id>
+							<level>4</level>
+							<autoStart>false</autoStart>
+						</bundle>
+						<bundle>
+							<id>org.apache.xerces</id>
+							<level>4</level>
+							<autoStart>false</autoStart>
+						</bundle>
+						<bundle>
+							<id>org.apache.xml.resolver</id>
+							<level>4</level>
+							<autoStart>false</autoStart>
+						</bundle>
+						<bundle>
+							<id>org.apache.xml.serializer</id>
+							<level>4</level>
+							<autoStart>false</autoStart>
+						</bundle>
+						<bundle>
+							<id>org.eclipse.compare.core</id>
+							<level>4</level>
+							<autoStart>false</autoStart>
+						</bundle>
+						<bundle>
+							<id>org.eclipse.core.commands</id>
+							<level>4</level>
+							<autoStart>false</autoStart>
+						</bundle>
+						<bundle>
+							<id>org.eclipse.core.contenttype</id>
+							<level>4</level>
+							<autoStart>false</autoStart>
+						</bundle>
+						<bundle>
+							<id>org.eclipse.core.databinding.beans</id>
+							<level>4</level>
+							<autoStart>false</autoStart>
+						</bundle>
+						<bundle>
+							<id>org.eclipse.core.databinding.observable</id>
+							<level>4</level>
+							<autoStart>false</autoStart>
+						</bundle>
+						<bundle>
+							<id>org.eclipse.core.databinding.property</id>
+							<level>4</level>
+							<autoStart>false</autoStart>
+						</bundle>
+						<bundle>
+							<id>org.eclipse.core.databinding</id>
+							<level>4</level>
+							<autoStart>false</autoStart>
+						</bundle>
+						<bundle>
+							<id>org.eclipse.core.expressions</id>
+							<level>4</level>
+							<autoStart>false</autoStart>
+						</bundle>
+						<bundle>
+							<id>org.eclipse.core.filesystem.java7</id>
+							<level>4</level>
+							<autoStart>false</autoStart>
+						</bundle>
+						<bundle>
+							<id>org.eclipse.core.filesystem</id>
+							<level>4</level>
+							<autoStart>false</autoStart>
+						</bundle>
+						<bundle>
+							<id>org.eclipse.core.jobs</id>
+							<level>4</level>
+							<autoStart>false</autoStart>
+						</bundle>
+						<bundle>
+							<id>org.eclipse.core.resources</id>
+							<level>4</level>
+							<autoStart>false</autoStart>
+						</bundle>
+						<bundle>
+							<id>org.eclipse.core.runtime.compatibility.registry</id>
+							<level>4</level>
+							<autoStart>false</autoStart>
+						</bundle>
+						<bundle>
+							<id>org.eclipse.core.runtime</id>
+							<level>4</level>
+							<autoStart>true</autoStart>
+						</bundle>
+						<bundle>
+							<id>org.eclipse.core.variables</id>
+							<level>4</level>
+							<autoStart>false</autoStart>
+						</bundle>
+						<bundle>
+							<id>org.eclipse.emf.common</id>
+							<level>4</level>
+							<autoStart>false</autoStart>
+						</bundle>
+						<bundle>
+							<id>org.eclipse.emf.databinding</id>
+							<level>4</level>
+							<autoStart>false</autoStart>
+						</bundle>
+						<bundle>
+							<id>org.eclipse.emf.ecore.change</id>
+							<level>4</level>
+							<autoStart>false</autoStart>
+						</bundle>
+						<bundle>
+							<id>org.eclipse.emf.ecore.edit</id>
+							<level>4</level>
+							<autoStart>false</autoStart>
+						</bundle>
+						<bundle>
+							<id>org.eclipse.emf.ecore.xmi</id>
+							<level>4</level>
+							<autoStart>false</autoStart>
+						</bundle>
+						<bundle>
+							<id>org.eclipse.emf.ecore</id>
+							<level>4</level>
+							<autoStart>false</autoStart>
+						</bundle>
+						<bundle>
+							<id>org.eclipse.emf.edit</id>
+							<level>4</level>
+							<autoStart>false</autoStart>
+						</bundle>
+						<bundle>
+							<id>org.eclipse.equinox.app</id>
+							<level>4</level>
+							<autoStart>false</autoStart>
+						</bundle>
+						<bundle>
+							<id>org.eclipse.equinox.bidi</id>
+							<level>4</level>
+							<autoStart>false</autoStart>
+						</bundle>
+						<bundle>
+							<id>org.eclipse.equinox.common</id>
+							<level>2</level>
+							<autoStart>true</autoStart>
+						</bundle>
+						<bundle>
+							<id>org.eclipse.equinox.coordinator</id>
+							<level>4</level>
+							<autoStart>false</autoStart>
+						</bundle>
+						<bundle>
+							<id>org.eclipse.equinox.ds</id>
+							<level>1</level>
+							<autoStart>true</autoStart>
+						</bundle>
+						<bundle>
+							<id>org.eclipse.equinox.preferences</id>
+							<level>4</level>
+							<autoStart>false</autoStart>
+						</bundle>
+						<bundle>
+							<id>org.eclipse.equinox.region</id>
+							<level>4</level>
+							<autoStart>false</autoStart>
+						</bundle>
+						<bundle>
+							<id>org.eclipse.equinox.registry</id>
+							<level>4</level>
+							<autoStart>false</autoStart>
+						</bundle>
+						<bundle>
+							<id>org.eclipse.equinox.security</id>
+							<level>4</level>
+							<autoStart>false</autoStart>
+						</bundle>
+						<bundle>
+							<id>org.eclipse.equinox.transforms.hook</id>
+							<level>4</level>
+							<autoStart>false</autoStart>
+						</bundle>
+						<bundle>
+							<id>org.eclipse.equinox.util</id>
+							<level>4</level>
+							<autoStart>false</autoStart>
+						</bundle>
+						<bundle>
+							<id>org.eclipse.equinox.weaving.hook</id>
+							<level>4</level>
+							<autoStart>false</autoStart>
+						</bundle>
+						<bundle>
+							<id>org.eclipse.osgi.compatibility.state</id>
+							<level>4</level>
+							<autoStart>false</autoStart>
+						</bundle>
+						<bundle>
+							<id>org.eclipse.osgi.services</id>
+							<level>4</level>
+							<autoStart>false</autoStart>
+						</bundle>
+						<bundle>
+							<id>org.eclipse.osgi.util</id>
+							<level>4</level>
+							<autoStart>false</autoStart>
+						</bundle>
+						<bundle>
+							<id>org.eclipse.osgi</id>
+							<level>-1</level>
+							<autoStart>true</autoStart>
+						</bundle>
+						<bundle>
+							<id>org.eclipse.xsd</id>
+							<level>4</level>
+							<autoStart>false</autoStart>
+						</bundle>
+						<bundle>
+							<id>org.hamcrest.core</id>
+							<level>4</level>
+							<autoStart>false</autoStart>
+						</bundle>
+						<bundle>
+							<id>org.json</id>
+							<level>4</level>
+							<autoStart>false</autoStart>
+						</bundle>
+						<bundle>
+							<id>org.jsoup</id>
+							<level>4</level>
+							<autoStart>false</autoStart>
+						</bundle>
+						<bundle>
+							<id>org.junit</id>
+							<level>4</level>
+							<autoStart>false</autoStart>
+						</bundle>
+						<bundle>
+							<id>org.slf4j.api</id>
+							<level>4</level>
+							<autoStart>false</autoStart>
+						</bundle>
+						<bundle>
+							<id>org.w3c.css.sac</id>
+							<level>4</level>
+							<autoStart>false</autoStart>
+						</bundle>
+						<bundle>
+							<id>org.w3c.dom.events</id>
+							<level>4</level>
+							<autoStart>false</autoStart>
+						</bundle>
+						<bundle>
+							<id>org.w3c.dom.smil</id>
+							<level>4</level>
+							<autoStart>false</autoStart>
+						</bundle>
+						<bundle>
+							<id>org.w3c.dom.svg</id>
+							<level>4</level>
+							<autoStart>false</autoStart>
+						</bundle>
+						<bundle>
+							<id>org.w3c.flute</id>
+							<level>4</level>
+							<autoStart>false</autoStart>
+						</bundle>
+						<bundle>
+							<id>osgi.enterprise</id>
+							<level>4</level>
+							<autoStart>false</autoStart>
+						</bundle>
+						<bundle>
+							<id>slf4j.api</id>
+							<level>4</level>
+							<autoStart>false</autoStart>
+						</bundle>
+					</bundleStartLevel>
+
+					<useUIHarness>false</useUIHarness>
+					<useUIThread>false</useUIThread>
+				</configuration>
+			</plugin>
+		</plugins>
+	</build>
+
+
+</project>
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.tests/setup/user-target.target b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.tests/setup/user-target.target
new file mode 100644
index 0000000..099457c
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.tests/setup/user-target.target
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?pde version="3.8"?><target includeMode="feature" name="user-target" sequenceNumber="59">
+<locations>
+<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="false" type="InstallableUnit">
+<unit id="org.eclipse.jdt.feature.group" version="3.9.2.v20140221-1700"/>
+<repository location="http://download.eclipse.org/releases/kepler"/>
+</location>
+<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="false" type="InstallableUnit">
+<unit id="org.eclipse.equinox.sdk.feature.group" version="3.9.0.v20140221-1852"/>
+<unit id="org.eclipse.platform.sdk" version="4.3.2.M20140221-1700"/>
+<unit id="org.eclipse.emf.sdk.feature.group" version="2.9.2.v20140203-1126"/>
+<repository location="http://download.eclipse.org/releases/kepler"/>
+</location>
+<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="false" type="InstallableUnit">
+<unit id="org.apache.commons.math" version="2.1.0.v201105210652"/>
+<unit id="org.apache.commons.lang" version="2.6.0.v201205030909"/>
+<unit id="org.apache.commons.collections" version="3.2.0.v201005080500"/>
+<unit id="org.apache.commons.beanutils" version="1.8.0.v201205091237"/>
+<repository location="http://download.eclipse.org/tools/orbit/downloads/drops/R20120526062928/repository"/>
+</location>
+<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="false" type="InstallableUnit">
+<unit id="org.junit.source" version="4.10.0.v4_10_0_v20120426-0900"/>
+<unit id="org.junit" version="4.10.0.v4_10_0_v20120426-0900"/>
+<repository location="http://download.eclipse.org/tools/orbit/downloads/drops/R20120526062928/repository"/>
+</location>
+<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="false" type="InstallableUnit">
+<unit id="org.eclipse.persistence.sdk.feature.group" version="2.5.1.v20130913-5eaeb06"/>
+<repository location="http://download.eclipse.org/releases/kepler"/>
+</location>
+<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="false" type="InstallableUnit">
+<unit id="org.eclipse.osbp.runtime.web.feature.vaadin.databinding.feature.group" version="0.0.1.201406122143"/>
+<unit id="org.eclipse.osbp.runtime.web.feature.vaadin.common.feature.group" version="0.0.1.201406122143"/>
+<unit id="org.eclipse.osbp.runtime.web.feature.vaadin.components.source.feature.group" version="0.0.1.201406122143"/>
+<unit id="org.eclipse.osbp.runtime.web.feature.ecview.presentation.vaadin.feature.group" version="0.0.1.201406122143"/>
+<unit id="org.eclipse.osbp.runtime.web.feature.ecview.presentation.vaadin.source.feature.group" version="0.0.1.201406122143"/>
+<unit id="org.eclipse.osbp.runtime.web.feature.vaadin.components.feature.group" version="0.0.1.201406122143"/>
+<unit id="org.eclipse.osbp.runtime.web.feature.vaadin.common.source.feature.group" version="0.0.1.201406122143"/>
+<unit id="org.eclipse.osbp.runtime.web.feature.vaadin.databinding.source.feature.group" version="0.0.1.201406122143"/>
+<repository location="http://lun.lunifera.org/downloads/p2/lunifera/kepler/latest/"/>
+</location>
+<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="false" type="InstallableUnit">
+<unit id="org.apache.httpcomponents.httpclient" version="4.1.2.v201203221030"/>
+<unit id="org.apache.httpcomponents.httpclient.source" version="4.1.2.v201203221030"/>
+<repository location="http://download.eclipse.org/tools/orbit/downloads/drops/R20120526062928/repository"/>
+</location>
+<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="false" type="InstallableUnit">
+<unit id="org.eclipse.emf.ecp.ecview.feature.core.feature.group" version="0.0.1.201406122002"/>
+<unit id="org.eclipse.emf.ecp.ecview.feature.core.source.feature.group" version="0.0.1.201406122002"/>
+<repository location="http://lun.lunifera.org/downloads/p2/ecview/nightly/"/>
+</location>
+<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="false" type="InstallableUnit">
+<unit id="org.apache.httpcomponents.httpcore.source" version="4.1.4.v201203221030"/>
+<unit id="org.apache.httpcomponents.httpcore" version="4.1.4.v201203221030"/>
+<unit id="org.apache.httpcomponents.httpcore.nio" version="4.1.0.v201101201700"/>
+<unit id="org.apache.httpcomponents.httpcore.nio.source" version="4.1.0.v201101201700"/>
+<repository location="http://download.eclipse.org/tools/orbit/downloads/drops/R20120526062928/repository"/>
+</location>
+<location path="${project_loc}/setup/lib" type="Directory"/>
+<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="false" type="InstallableUnit">
+<unit id="org.eclipse.osbp.dependencies.feature.assert-utilities.feature.group" version="1.2.2"/>
+<unit id="org.eclipse.osbp.runtime.feature.common.source.feature.group" version="0.0.1.201405120903"/>
+<unit id="org.eclipse.osbp.runtime.feature.common.feature.group" version="0.0.1.201405120903"/>
+<repository location="http://lun.lunifera.org/downloads/p2/lunifera/kepler/latest/"/>
+</location>
+<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="false" type="InstallableUnit">
+<unit id="org.eclipse.osbp.dependencies.feature.vaadin.feature.group" version="7.1.9"/>
+<repository location="http://lun.lunifera.org/downloads/p2/lunifera/kepler/latest/"/>
+</location>
+</locations>
+</target>
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/Activator.java b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/Activator.java
new file mode 100644
index 0000000..3a709c2
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/Activator.java
@@ -0,0 +1,146 @@
+/**
+ * Copyright (c) 2011, 2014 - 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.runtime.web.ecview.presentation.vaadin.tests.ui;
+
+import javax.servlet.ServletException;
+
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.BundleEvent;
+import org.osgi.framework.BundleListener;
+import org.osgi.framework.ServiceReference;
+import org.osgi.service.http.HttpService;
+import org.osgi.service.http.NamespaceException;
+import org.osgi.util.tracker.ServiceTracker;
+import org.osgi.util.tracker.ServiceTrackerCustomizer;
+
+public class Activator implements BundleActivator,
+ServiceTrackerCustomizer<HttpService, HttpService>, BundleListener {
+
+	private static BundleContext context;
+	private static Activator plugin;
+
+	static BundleContext getContext() {
+		return context;
+	}
+	
+	private ServiceTracker<HttpService, HttpService> tracker;
+
+	// used to register servlets
+	private HttpService httpService;
+	private ResourceProvider resourceProvider;
+
+	/**
+	 * @return the plugin
+	 */
+	public static Activator getPlugin() {
+		return plugin;
+	}
+	
+	//
+	// Helper methods to get an instance of the http service
+	//
+	@Override
+	public HttpService addingService(ServiceReference<HttpService> reference) {
+		httpService = context.getService(reference);
+
+		try {
+			// register the servlet at the http service
+			httpService.registerServlet("/", new ECViewTestsServlet(), null,
+					resourceProvider);
+		} catch (ServletException e) {
+			e.printStackTrace();
+		} catch (NamespaceException e) {
+			e.printStackTrace();
+		}
+
+		return httpService;
+	}
+
+	@Override
+	public void removedService(ServiceReference<HttpService> reference,
+			HttpService service) {
+		// unregister the servlet from the http service
+		httpService.unregister("/");
+	}
+
+	@Override
+	public void modifiedService(ServiceReference<HttpService> reference,
+			HttpService service) {
+
+	}
+
+	public void start(BundleContext bundleContext) throws Exception {
+		Activator.context = bundleContext;
+		Activator.plugin = this;
+
+		resourceProvider = new ResourceProvider();
+
+		handleStartedBundles(context);
+
+		// register this instance as a bundle listener to an reference to all
+		// vaadin bundles. Used to find the static resources.
+		bundleContext.addBundleListener(this);
+
+		// Start a HttpService-Tracker to get an instance of HttpService
+				tracker = new ServiceTracker<>(bundleContext, HttpService.class, this);
+				tracker.open();
+	}
+
+	public void stop(BundleContext bundleContext) throws Exception {
+		// close the HttpService-tracker
+				tracker.close();
+				tracker = null;
+
+		
+		resourceProvider = null;
+
+		bundleContext.removeBundleListener(this);
+
+		Activator.context = null;
+		Activator.plugin = null;
+	}
+
+	/**
+	 * Tries to find proper started bundles and adds them to resource provider.
+	 * Since bundle changed listener will not find them.
+	 * 
+	 * @param context
+	 */
+	protected void handleStartedBundles(BundleContext context) {
+		for (Bundle bundle : context.getBundles()) {
+			String name = bundle.getSymbolicName();
+			if (bundle.getState() == Bundle.ACTIVE
+					&& (name.startsWith("com.vaadin") || name
+							.equals("org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui"))) {
+				resourceProvider.add(bundle);
+			}
+		}
+	}
+
+	@Override
+	public void bundleChanged(BundleEvent event) {
+		// tracks the starting and stopping of vaadin bundles. If a bundle is a
+		// vaadin bundle it will be added to the resource provider for lookups.
+		String name = event.getBundle().getSymbolicName();
+		if (name.startsWith("com.vaadin")
+				|| name.equals("org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui")) {
+			if (event.getType() == BundleEvent.STARTED) {
+				resourceProvider.add(event.getBundle());
+			} else if (event.getType() == BundleEvent.STOPPED) {
+				resourceProvider.remove(event.getBundle());
+			}
+		}
+	}
+
+}
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/DummyApplication.java b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/DummyApplication.java
new file mode 100644
index 0000000..ae16763
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/DummyApplication.java
@@ -0,0 +1,28 @@
+/**
+ * Copyright (c) 2011, 2014 - 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.runtime.web.ecview.presentation.vaadin.tests.ui;
+
+import org.eclipse.equinox.app.IApplication;
+import org.eclipse.equinox.app.IApplicationContext;
+
+public class DummyApplication implements IApplication {
+
+	@Override
+	public Object start(IApplicationContext context) throws Exception {
+		return null;
+	}
+
+	@Override
+	public void stop() {
+	}
+
+}
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/ECViewTestsServlet.java b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/ECViewTestsServlet.java
new file mode 100644
index 0000000..9fd4cf4
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/ECViewTestsServlet.java
@@ -0,0 +1,33 @@
+/**
+ * Copyright (c) 2011, 2014 - 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.runtime.web.ecview.presentation.vaadin.tests.ui;
+
+import com.vaadin.annotations.VaadinServletConfiguration;
+import com.vaadin.server.DeploymentConfiguration;
+import com.vaadin.server.ServiceException;
+import com.vaadin.server.VaadinServlet;
+import com.vaadin.server.VaadinServletService;
+
+/**
+ * An implementation of VaadinServlet that uses SimpleUI as its base UI.
+ */
+@SuppressWarnings("serial")
+@VaadinServletConfiguration(ui = ECViewTestsUI.class, productionMode = false)
+public class ECViewTestsServlet extends VaadinServlet {
+
+	@Override
+	protected VaadinServletService createServletService(
+			DeploymentConfiguration deploymentConfiguration)
+			throws ServiceException {
+		return new ECViewTestsServletService(this, deploymentConfiguration);
+	}
+
+}
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/ECViewTestsServletService.java b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/ECViewTestsServletService.java
new file mode 100644
index 0000000..9f45cc1
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/ECViewTestsServletService.java
@@ -0,0 +1,32 @@
+/**
+ * Copyright (c) 2011, 2014 - 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.runtime.web.ecview.presentation.vaadin.tests.ui;
+
+import com.vaadin.server.DeploymentConfiguration;
+import com.vaadin.server.ServiceException;
+import com.vaadin.server.VaadinServlet;
+import com.vaadin.server.VaadinServletService;
+
+@SuppressWarnings("serial")
+public class ECViewTestsServletService extends VaadinServletService {
+
+	public ECViewTestsServletService(VaadinServlet servlet,
+			DeploymentConfiguration deploymentConfiguration)
+			throws ServiceException {
+		super(servlet, deploymentConfiguration);
+	}
+
+	@Override
+	public ClassLoader getClassLoader() {
+		return getClass().getClassLoader();
+	}
+
+}
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/ECViewTestsUI.java b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/ECViewTestsUI.java
new file mode 100644
index 0000000..fd06653
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/ECViewTestsUI.java
@@ -0,0 +1,85 @@
+/**
+ * Copyright (c) 2011, 2014 - 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.runtime.web.ecview.presentation.vaadin.tests.ui;
+
+import org.eclipse.osbp.runtime.web.vaadin.databinding.VaadinObservables;
+
+import com.vaadin.annotations.Theme;
+import com.vaadin.server.Page;
+import com.vaadin.server.Page.UriFragmentChangedEvent;
+import com.vaadin.server.VaadinRequest;
+import com.vaadin.ui.Component;
+import com.vaadin.ui.Label;
+import com.vaadin.ui.UI;
+import com.vaadin.ui.VerticalLayout;
+import com.vaadin.ui.themes.Reindeer;
+
+@SuppressWarnings("serial")
+@Theme(Reindeer.THEME_NAME)
+public class ECViewTestsUI extends UI {
+
+	private static final String SAMPLE_PACKAGE = "org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.samples";
+	private VerticalLayout layout;
+
+	@Override
+	protected void init(VaadinRequest request) {
+		layout = new VerticalLayout();
+		layout.setSizeFull();
+		layout.setMargin(true);
+		layout.setSpacing(true);
+		setContent(layout);
+
+		layout.addComponent(new Label("Insert URL fragment to open testclass"));
+
+		getPage().addUriFragmentChangedListener(
+				new Page.UriFragmentChangedListener() {
+					@Override
+					public void uriFragmentChanged(final UriFragmentChangedEvent event) {
+						getUI().accessSynchronously(new Runnable() {
+							@Override
+							public void run() {
+								VaadinObservables.getRealm(getUI());
+								String fragment = event.getUriFragment();
+								handleFragment(SAMPLE_PACKAGE + "." + fragment);
+							}
+						});
+					}
+				});
+	}
+
+	protected void handleFragment(String className) {
+		try {
+			Class<?> clazz = Activator.getContext().getBundle()
+					.loadClass(className);
+			if (Component.class.isAssignableFrom(clazz)) {
+				layout.removeAllComponents();
+
+				Component component = (Component) clazz.newInstance();
+				component.setSizeFull();
+				layout.addComponent(component);
+			} else {
+				handleError(className);
+			}
+		} catch (ClassNotFoundException e) {
+			handleError(className);
+		} catch (InstantiationException e) {
+			handleError(className);
+		} catch (IllegalAccessException e) {
+			handleError(className);
+		}
+	}
+
+	private void handleError(String clazzname) {
+		layout.removeAllComponents();
+		layout.addComponent(new Label(clazzname
+				+ " is not a valid test sample!"));
+	}
+}
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/ResourceProvider.java b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/ResourceProvider.java
new file mode 100644
index 0000000..9dd2748
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/ResourceProvider.java
@@ -0,0 +1,76 @@
+ /**
+ * Copyright (c) 2011, 2014 - 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.runtime.web.ecview.presentation.vaadin.tests.ui;
+
+import java.io.IOException;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.osgi.framework.Bundle;
+import org.osgi.service.http.HttpContext;
+
+/**
+ * Resource provider is responsible to look for resources requested by the
+ * HttpService. Therefore it uses the classpath of registered bundles.
+ */
+public class ResourceProvider implements HttpContext {
+
+	private List<Bundle> resources = new ArrayList<Bundle>();
+
+	@Override
+	public URL getResource(String uri) {
+		URL resource = null;
+		// iterate over the vaadin bundles and try to find the requested
+		// resource
+		for (Bundle bundle : resources) {
+			resource = bundle.getResource(uri);
+			if (resource != null) {
+				break;
+			}
+		}
+		return resource;
+	}
+
+	/**
+	 * Adds a bundle that may potentially contain a requested resource.
+	 * 
+	 * @param bundle
+	 */
+	public void add(Bundle bundle) {
+		if(!resources.contains(bundle)){
+			resources.add(bundle);
+		}
+	}
+
+	/**
+	 * Removes a bundle that may potentially contain a requested resource.
+	 * 
+	 * @param bundle
+	 */
+	public void remove(Bundle bundle) {
+		resources.remove(bundle);
+	}
+	
+	@Override
+	public String getMimeType(String arg0) {
+		return null;
+	}
+	
+	@Override
+	public boolean handleSecurity(HttpServletRequest request,
+			HttpServletResponse response) throws IOException {
+		return true;
+	}
+}
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/AbstractBean.java b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/AbstractBean.java
new file mode 100644
index 0000000..ec4e364
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/AbstractBean.java
@@ -0,0 +1,95 @@
+/**
+ * Copyright (c) 2011, 2014 - 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.runtime.web.ecview.presentation.vaadin.tests.ui.samples;
+
+import java.beans.PropertyChangeListener;
+import java.beans.PropertyChangeSupport;
+
+/**
+ * Default implementation of value bean. Offerns {@link PropertyChangeSupport}.
+ */
+public class AbstractBean {
+	private final PropertyChangeSupport changeSupport = new PropertyChangeSupport(
+			this);
+
+	public AbstractBean() {
+	}
+
+	/**
+	 * Adds the given property change listener to the change support.
+	 * 
+	 * @param listener
+	 *            Listener to be added
+	 * @see java.beans.PropertyChangeSupport#addPropertyChangeListener(java.beans.PropertyChangeListener)
+	 */
+	public void addPropertyChangeListener(PropertyChangeListener listener) {
+		changeSupport.addPropertyChangeListener(listener);
+	}
+
+	/**
+	 * Adds the given property change listener to the change support.
+	 * 
+	 * @param property
+	 *            Name of the property
+	 * @param listener
+	 *            Listener to be added
+	 * @see java.beans.PropertyChangeSupport#addPropertyChangeListener(java.lang.String,
+	 *      java.beans.PropertyChangeListener)
+	 */
+	public void addPropertyChangeListener(String property,
+			PropertyChangeListener listener) {
+		changeSupport.addPropertyChangeListener(property, listener);
+	}
+
+	/**
+	 * Removes the given property change listener from the change support.
+	 * 
+	 * @param listener
+	 *            Listener to be removed
+	 * @see java.beans.PropertyChangeSupport#removePropertyChangeListener(java.beans.PropertyChangeListener)
+	 */
+	public void removePropertyChangeListener(PropertyChangeListener listener) {
+		changeSupport.removePropertyChangeListener(listener);
+	}
+
+	/**
+	 * Removes the given property change listener from the change support.
+	 * 
+	 * @param property
+	 *            Name of the property
+	 * @param listener
+	 *            Listener to be removed
+	 * @see java.beans.PropertyChangeSupport#removePropertyChangeListener(java.lang.String,
+	 *      java.beans.PropertyChangeListener)
+	 */
+	public void removePropertyChangeListener(String property,
+			PropertyChangeListener listener) {
+		changeSupport.removePropertyChangeListener(property, listener);
+	}
+
+	/**
+	 * Fires the property changed event.
+	 * 
+	 * @param property
+	 *            Name of the property
+	 * @param oldValue
+	 *            The old value
+	 * @param newValue
+	 *            The new value
+	 * @see java.beans.PropertyChangeSupport#firePropertyChange(String, Object,
+	 *      Object)
+	 */
+	protected void firePropertyChanged(String property, Object oldValue,
+			Object newValue) {
+		changeSupport.firePropertyChange(property, oldValue, newValue);
+	}
+
+}
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/CheckBoxSample.java b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/CheckBoxSample.java
new file mode 100644
index 0000000..f554b58
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/CheckBoxSample.java
@@ -0,0 +1,33 @@
+/**
+ * Copyright (c) 2011, 2014 - 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.runtime.web.ecview.presentation.vaadin.tests.ui.samples;
+
+import com.vaadin.ui.CheckBox;
+import com.vaadin.ui.CssLayout;
+import com.vaadin.ui.CustomComponent;
+
+public class CheckBoxSample extends CustomComponent {
+
+	private CssLayout layout;
+
+	public CheckBoxSample() {
+		layout = new CssLayout();
+		setCompositionRoot(layout);
+
+		init();
+	}
+
+	protected void init() {
+		CheckBox checkbox = new CheckBox();
+		layout.addComponent(checkbox);
+	}
+}
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/DatetimeFieldSample.java b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/DatetimeFieldSample.java
new file mode 100644
index 0000000..6ba3607
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/DatetimeFieldSample.java
@@ -0,0 +1,141 @@
+/**
+ * Copyright (c) 2011, 2014 - 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.runtime.web.ecview.presentation.vaadin.tests.ui.samples;
+
+import java.util.Locale;
+
+import org.eclipse.osbp.ecview.core.common.context.ContextException;
+import org.eclipse.osbp.ecview.core.common.context.IViewContext;
+import org.eclipse.osbp.ecview.core.common.model.binding.YBindingSet;
+import org.eclipse.osbp.ecview.core.common.model.core.YView;
+import org.eclipse.osbp.ecview.core.extension.model.datatypes.ExtDatatypesFactory;
+import org.eclipse.osbp.ecview.core.extension.model.datatypes.YDateTimeDatatype;
+import org.eclipse.osbp.ecview.core.extension.model.datatypes.YDateTimeFormat;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YButton;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YDateTime;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YHorizontalLayout;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YVerticalLayout;
+import org.eclipse.osbp.ecview.core.extension.model.extension.listener.YButtonClickListener;
+import org.eclipse.osbp.ecview.core.extension.model.extension.util.SimpleExtensionModelFactory;
+import org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.VaadinRenderer;
+
+import com.vaadin.ui.CssLayout;
+import com.vaadin.ui.CustomComponent;
+import com.vaadin.ui.Label;
+
+public class DatetimeFieldSample extends CustomComponent {
+
+	private final SimpleExtensionModelFactory factory = new SimpleExtensionModelFactory();
+
+	private CssLayout layout;
+
+	private YView yView;
+
+	private YBindingSet yBindingSet;
+
+	private YVerticalLayout yLayout;
+
+	private IViewContext context;
+
+	public DatetimeFieldSample() {
+		layout = new CssLayout();
+		setCompositionRoot(layout);
+
+		init();
+	}
+
+	protected void init() {
+
+		Locale.setDefault(Locale.GERMANY);
+
+		yView = factory.createView();
+		yLayout = factory.createVerticalLayout();
+		yView.setContent(yLayout);
+
+		yBindingSet = yView.getOrCreateBindingSet();
+
+		row1();
+
+		row2();
+
+		// render now, fill in values later
+		// to avoid overwriting values with bindings to empty fields
+		VaadinRenderer renderer = new VaadinRenderer();
+		try {
+			context = renderer.render(layout, yView, null);
+		} catch (ContextException e) {
+			layout.addComponent(new Label(e.toString()));
+		}
+	}
+
+	public void row2() {
+		// test row 2
+		YHorizontalLayout row2 = factory.createHorizontalLayout();
+		yLayout.addElement(row2);
+
+		YDateTime yText2_1 = factory.createDateTime();
+		yText2_1.setLabel("date");
+		row2.addElement(yText2_1);
+		YDateTimeDatatype yDt2_2 = createDateTimeDatatype();
+		yDt2_2.setFormat(YDateTimeFormat.DATE);
+		yText2_1.setDatatype(yDt2_2);
+
+		YDateTime yText2_2 = factory.createDateTime();
+		yText2_2.setLabel("time");
+		row2.addElement(yText2_2);
+		YDateTimeDatatype yDt2_1 = createDateTimeDatatype();
+		yDt2_1.setFormat(YDateTimeFormat.TIME);
+		yText2_2.setDatatype(yDt2_1);
+
+		YDateTime yText2_3 = factory.createDateTime();
+		yText2_3.setLabel("datetime");
+		row2.addElement(yText2_3);
+		YDateTimeDatatype yDt2_3 = createDateTimeDatatype();
+		yDt2_3.setFormat(YDateTimeFormat.DATE_TIME);
+		yText2_3.setDatatype(yDt2_3);
+
+		YButton yLocaleSwitcher = factory.createButton();
+		yLocaleSwitcher.setLabel("switchLocale");
+		row2.addElement(yLocaleSwitcher);
+		yLocaleSwitcher.addClickListener(new YButtonClickListener() {
+			@Override
+			public void clicked(YButton yButton) {
+				Locale locale = context.getLocale();
+				if (locale == Locale.GERMANY) {
+					context.setLocale(Locale.US);
+				} else {
+					context.setLocale(Locale.GERMANY);
+				}
+			}
+		});
+	}
+
+	public void row1() {
+		// test row 1
+		YHorizontalLayout row1 = factory.createHorizontalLayout();
+		yLayout.addElement(row1);
+		YDateTime yText1_1 = factory.createDateTime();
+		yText1_1.setLabel("Field1");
+		YDateTime yText1_2 = factory.createDateTime();
+		yText1_2.setLabel("Field2");
+		row1.addElement(yText1_1);
+		row1.addElement(yText1_2);
+
+		yBindingSet.addBinding(yText1_1.createValueEndpoint(),
+				yText1_2.createValueEndpoint());
+	}
+
+	protected YDateTimeDatatype createDateTimeDatatype() {
+		return ExtDatatypesFactory.eINSTANCE.createYDateTimeDatatype();
+	}
+
+}
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/DecimalFieldSample.java b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/DecimalFieldSample.java
new file mode 100644
index 0000000..8cf5dba
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/DecimalFieldSample.java
@@ -0,0 +1,143 @@
+/**
+ * Copyright (c) 2011, 2014 - 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.runtime.web.ecview.presentation.vaadin.tests.ui.samples;
+
+import java.util.Locale;
+
+import org.eclipse.osbp.ecview.core.common.context.ContextException;
+import org.eclipse.osbp.ecview.core.common.context.IViewContext;
+import org.eclipse.osbp.ecview.core.common.model.binding.YBindingSet;
+import org.eclipse.osbp.ecview.core.common.model.core.YView;
+import org.eclipse.osbp.ecview.core.extension.model.datatypes.YDecimalDatatype;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YButton;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YDecimalField;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YHorizontalLayout;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YVerticalLayout;
+import org.eclipse.osbp.ecview.core.extension.model.extension.listener.YButtonClickListener;
+import org.eclipse.osbp.ecview.core.extension.model.extension.util.SimpleExtensionModelFactory;
+import org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.VaadinRenderer;
+
+import com.vaadin.ui.CssLayout;
+import com.vaadin.ui.CustomComponent;
+import com.vaadin.ui.Label;
+
+public class DecimalFieldSample extends CustomComponent {
+
+	private final SimpleExtensionModelFactory factory = new SimpleExtensionModelFactory();
+
+	private CssLayout layout;
+
+	private YView yView;
+
+	private YBindingSet yBindingSet;
+
+	private YVerticalLayout yLayout;
+
+	private IViewContext context;
+
+	public DecimalFieldSample() {
+		layout = new CssLayout();
+		setCompositionRoot(layout);
+
+		init();
+	}
+
+	protected void init() {
+
+		Locale.setDefault(Locale.GERMANY);
+
+		yView = factory.createView();
+		yLayout = factory.createVerticalLayout();
+		yView.setContent(yLayout);
+
+		yBindingSet = yView.getOrCreateBindingSet();
+
+		row1();
+
+		row2();
+
+		// render now, fill in values later
+		// to avoid overwriting values with bindings to empty fields
+		VaadinRenderer renderer = new VaadinRenderer();
+		try {
+			context = renderer.render(layout, yView, null);
+		} catch (ContextException e) {
+			layout.addComponent(new Label(e.toString()));
+		}
+	}
+
+	public void row2() {
+		// test row 2
+		YHorizontalLayout row2 = factory.createHorizontalLayout();
+		yLayout.addElement(row2);
+
+		YDecimalField yText2_1 = factory.createDecimalField();
+		yText2_1.setLabel("grouping false");
+		row2.addElement(yText2_1);
+		YDecimalDatatype yDt2_2 = factory.createDecimalDatatype();
+		yDt2_2.setGrouping(false);
+		yText2_1.setDatatype(yDt2_2);
+
+		YDecimalField yText2_2 = factory.createDecimalField();
+		yText2_2.setLabel("grouping true");
+		row2.addElement(yText2_2);
+		YDecimalDatatype yDt2_1 = factory.createDecimalDatatype();
+		yDt2_1.setGrouping(true);
+		yText2_2.setDatatype(yDt2_1);
+
+		YDecimalField yText2_3 = factory.createDecimalField();
+		yText2_3.setLabel("mark negative");
+		row2.addElement(yText2_3);
+		YDecimalDatatype yDt2_3 = factory.createDecimalDatatype();
+		yDt2_3.setMarkNegative(true);
+		yText2_3.setDatatype(yDt2_3);
+
+		YDecimalField yText2_4 = factory.createDecimalField();
+		yText2_4.setLabel("digits6");
+		row2.addElement(yText2_4);
+		YDecimalDatatype yDt2_4 = factory.createDecimalDatatype();
+		yDt2_4.setMarkNegative(true);
+		yDt2_4.setPrecision(6);
+		yText2_4.setDatatype(yDt2_4);
+
+		YButton yLocaleSwitcher = factory.createButton();
+		yLocaleSwitcher.setLabel("switchLocale");
+		row2.addElement(yLocaleSwitcher);
+		yLocaleSwitcher.addClickListener(new YButtonClickListener() {
+			@Override
+			public void clicked(YButton yButton) {
+				Locale locale = context.getLocale();
+				if (locale == Locale.GERMANY) {
+					context.setLocale(Locale.US);
+				} else {
+					context.setLocale(Locale.GERMANY);
+				}
+			}
+		});
+
+	}
+
+	public void row1() {
+		// test row 1
+		YHorizontalLayout row1 = factory.createHorizontalLayout();
+		yLayout.addElement(row1);
+		YDecimalField yText1_1 = factory.createDecimalField();
+		yText1_1.setLabel("Field1");
+		YDecimalField yText1_2 = factory.createDecimalField();
+		yText1_2.setLabel("Field2");
+		row1.addElement(yText1_1);
+		row1.addElement(yText1_2);
+
+		yBindingSet.addBinding(yText1_1.createValueEndpoint(),
+				yText1_2.createValueEndpoint());
+	}
+}
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/EnabledSample.java b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/EnabledSample.java
new file mode 100644
index 0000000..6d19b0b
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/EnabledSample.java
@@ -0,0 +1,114 @@
+/**
+ * Copyright (c) 2011, 2014 - 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.runtime.web.ecview.presentation.vaadin.tests.ui.samples;
+
+import java.util.Date;
+import java.util.Locale;
+
+import org.eclipse.osbp.ecview.core.common.context.ContextException;
+import org.eclipse.osbp.ecview.core.common.context.IViewContext;
+import org.eclipse.osbp.ecview.core.common.model.binding.YBindingSet;
+import org.eclipse.osbp.ecview.core.common.model.core.YView;
+import org.eclipse.osbp.ecview.core.extension.model.datatypes.ExtDatatypesFactory;
+import org.eclipse.osbp.ecview.core.extension.model.datatypes.YDateTimeDatatype;
+import org.eclipse.osbp.ecview.core.extension.model.datatypes.YDateTimeFormat;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YButton;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YDateTime;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YHorizontalLayout;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YTextField;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YVerticalLayout;
+import org.eclipse.osbp.ecview.core.extension.model.extension.listener.YButtonClickListener;
+import org.eclipse.osbp.ecview.core.extension.model.extension.util.SimpleExtensionModelFactory;
+import org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.VaadinRenderer;
+
+import com.vaadin.ui.CssLayout;
+import com.vaadin.ui.CustomComponent;
+import com.vaadin.ui.Label;
+
+public class EnabledSample extends CustomComponent {
+
+	private final SimpleExtensionModelFactory factory = new SimpleExtensionModelFactory();
+
+	private CssLayout layout;
+
+	private YView yView;
+
+	private YBindingSet yBindingSet;
+
+	private YVerticalLayout yLayout;
+
+	private IViewContext context;
+
+	public EnabledSample() {
+		layout = new CssLayout();
+		setCompositionRoot(layout);
+
+		init();
+	}
+
+	protected void init() {
+
+		Locale.setDefault(Locale.GERMANY);
+
+		yView = factory.createView();
+		yLayout = factory.createVerticalLayout();
+		yView.setContent(yLayout);
+
+		yBindingSet = yView.getOrCreateBindingSet();
+
+		row2();
+
+		// render now, fill in values later
+		// to avoid overwriting values with bindings to empty fields
+		VaadinRenderer renderer = new VaadinRenderer();
+		try {
+			context = renderer.render(layout, yView, null);
+		} catch (ContextException e) {
+			layout.addComponent(new Label(e.toString()));
+		}
+	}
+
+	public void row2() {
+		// test row 2
+		YHorizontalLayout row2 = factory.createHorizontalLayout();
+		yLayout.addElement(row2);
+
+		final YTextField yText = factory.createTextField();
+		yText.setLabel("text");
+		yText.setValue("Huhu");
+		row2.addElement(yText);
+
+		final YDateTime yDate = factory.createDateTime();
+		yDate.setLabel("time");
+		yDate.setValue(new Date());
+		row2.addElement(yDate);
+		YDateTimeDatatype yDt2_1 = createDateTimeDatatype();
+		yDt2_1.setFormat(YDateTimeFormat.TIME);
+		yDate.setDatatype(yDt2_1);
+
+		YButton yLocaleSwitcher = factory.createButton();
+		yLocaleSwitcher.setLabel("enable");
+		row2.addElement(yLocaleSwitcher);
+		yLocaleSwitcher.addClickListener(new YButtonClickListener() {
+			@Override
+			public void clicked(YButton yButton) {
+				yText.setEnabled(!yText.isEnabled());
+				yDate.setEnabled(!yDate.isEnabled());
+			}
+		});
+	}
+
+	protected YDateTimeDatatype createDateTimeDatatype() {
+		return ExtDatatypesFactory.eINSTANCE.createYDateTimeDatatype();
+	}
+
+}
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/ExecutableSample.java b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/ExecutableSample.java
new file mode 100644
index 0000000..91d117f
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/ExecutableSample.java
@@ -0,0 +1,117 @@
+/**
+ * Copyright (c) 2011, 2014 - 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.runtime.web.ecview.presentation.vaadin.tests.ui.samples;
+
+import org.eclipse.osbp.ecview.core.common.context.ContextException;
+import org.eclipse.osbp.ecview.core.common.context.IViewContext;
+import org.eclipse.osbp.ecview.core.common.model.binding.YBindingSet;
+import org.eclipse.osbp.ecview.core.common.model.core.YView;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YButton;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YHorizontalLayout;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YTextField;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YVerticalLayout;
+import org.eclipse.osbp.ecview.core.extension.model.extension.listener.YButtonClickListener;
+import org.eclipse.osbp.ecview.core.extension.model.extension.util.SimpleExtensionModelFactory;
+import org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.VaadinRenderer;
+
+import com.vaadin.ui.CssLayout;
+import com.vaadin.ui.CustomComponent;
+import com.vaadin.ui.Label;
+
+public class ExecutableSample extends CustomComponent {
+
+	private final SimpleExtensionModelFactory factory = new SimpleExtensionModelFactory();
+
+	private CssLayout layout;
+
+	private YView yView;
+
+	private YBindingSet yBindingSet;
+
+	private YVerticalLayout yLayout;
+
+	private IViewContext context;
+
+	private YTextField yText;
+
+	public ExecutableSample() {
+		layout = new CssLayout();
+		setCompositionRoot(layout);
+
+		init();
+	}
+
+	protected void init() {
+
+		// TODO - fix me FP
+
+		yView = factory.createView();
+		yLayout = factory.createVerticalLayout();
+		yView.setContent(yLayout);
+
+		yBindingSet = yView.getOrCreateBindingSet();
+
+		row1();
+
+		// render now, fill in values later
+		// to avoid overwriting values with bindings to empty fields
+		VaadinRenderer renderer = new VaadinRenderer();
+		try {
+			context = renderer.render(layout, yView, null);
+		} catch (ContextException e) {
+			layout.addComponent(new Label(e.toString()));
+		}
+	}
+
+	public void row1() {
+		// test row 1
+		YHorizontalLayout row1 = factory.createHorizontalLayout();
+		yLayout.addElement(row1);
+		yText = factory.createTextField();
+		yText.setLabel("ExecType");
+		row1.addElement(yText);
+
+		YButton ySyncRunner = factory.createButton();
+		ySyncRunner.setLabel("exec");
+		row1.addElement(ySyncRunner);
+		ySyncRunner.addClickListener(new YButtonClickListener() {
+			@Override
+			public void clicked(YButton yButton) {
+				context.exec(new Runnable() {
+					@Override
+					public void run() {
+						yText.setValue("exec");
+					}
+				});
+			}
+		});
+
+		YButton yAsyncRunner = factory.createButton();
+		yAsyncRunner.setLabel("asyncexec");
+		row1.addElement(yAsyncRunner);
+		yAsyncRunner.addClickListener(new YButtonClickListener() {
+			@Override
+			public void clicked(YButton yButton) {
+				context.execAsync(new Runnable() {
+					@Override
+					public void run() {
+						try {
+							Thread.sleep(2500);
+						} catch (InterruptedException e) {
+						}
+						yText.setValue("asyncexec");
+					}
+				});
+			}
+		});
+	}
+}
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/ListSelectSample.java b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/ListSelectSample.java
new file mode 100644
index 0000000..6912e3f
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/ListSelectSample.java
@@ -0,0 +1,149 @@
+/**
+ * Copyright (c) 2011, 2014 - 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.runtime.web.ecview.presentation.vaadin.tests.ui.samples;
+
+import org.eclipse.osbp.ecview.core.common.context.ContextException;
+import org.eclipse.osbp.ecview.core.common.model.binding.YBindingSet;
+import org.eclipse.osbp.ecview.core.common.model.core.YView;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YHorizontalLayout;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YLabel;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YList;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YSelectionType;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YVerticalLayout;
+import org.eclipse.osbp.ecview.core.extension.model.extension.util.SimpleExtensionModelFactory;
+import org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.VaadinRenderer;
+
+import com.vaadin.ui.CssLayout;
+import com.vaadin.ui.CustomComponent;
+import com.vaadin.ui.Label;
+
+public class ListSelectSample extends CustomComponent {
+
+	private final SimpleExtensionModelFactory factory = new SimpleExtensionModelFactory();
+
+	private CssLayout layout;
+
+	private YView yView;
+
+	private YBindingSet yBindingSet;
+
+	private YVerticalLayout yLayout;
+
+	public ListSelectSample() {
+		layout = new CssLayout();
+		setCompositionRoot(layout);
+
+		init();
+	}
+
+	protected void init() {
+
+		// TODO - fix me FP
+
+		yView = factory.createView();
+		yLayout = factory.createVerticalLayout();
+		yView.setContent(yLayout);
+
+		yBindingSet = yView.getOrCreateBindingSet();
+
+		row1();
+
+		row2();
+
+		// render now, fill in values later
+		// to avoid overwriting values with bindings to empty fields
+		VaadinRenderer renderer = new VaadinRenderer();
+		try {
+			renderer.render(layout, yView, null);
+		} catch (ContextException e) {
+			layout.addComponent(new Label(e.toString()));
+		}
+	}
+
+	// public void row2() {
+	// // test row 2
+	// YHorizontalLayout row2 = factory.createHorizontalLayout();
+	// yLayout.addElement(row2);
+	//
+	// YList yList2_1 = factory.createList();
+	// yList2_1.setLabel("minLength 3");
+	// row2.addElement(yList2_1);
+	//
+	// YList yList2_2 = factory.createList();
+	// yList2_2.setLabel("maxLength 10:");
+	// row2.addElement(yList2_2);
+	//
+	// YList yList2_3 = factory.createList();
+	// yList2_3.setLabel("regexp: \\d+");
+	// row2.addElement(yList2_3);
+	// }
+
+	public void row1() {
+		// test row 1
+		YHorizontalLayout row1 = factory.createHorizontalLayout();
+		yLayout.addElement(row1);
+
+		YLabel label = factory.createLabel();
+		label.setLabel("SingleSelection");
+		row1.addElement(label);
+		YList yList1_1 = factory.createList();
+		yList1_1.setId("Field1");
+		yList1_1.setLabel("Field1");
+		yList1_1.setType(String.class);
+		YList yList1_2 = factory.createList();
+		yList1_2.setId("Field2");
+		yList1_2.setLabel("Field2");
+		yList1_2.setType(String.class);
+		row1.addElement(yList1_1);
+		row1.addElement(yList1_2);
+
+		yList1_2.getCollection().add("Sabrina");
+		yList1_2.getCollection().add("Klemens");
+		yList1_2.getCollection().add("Flo");
+
+		yBindingSet.addBinding(yList1_1.createCollectionEndpoint(),
+				yList1_2.createCollectionEndpoint());
+		yBindingSet.addBinding(yList1_1.createSelectionEndpoint(),
+				yList1_2.createSelectionEndpoint());
+	}
+
+	public void row2() {
+		// test row 2
+		YHorizontalLayout row1 = factory.createHorizontalLayout();
+		yLayout.addElement(row1);
+
+		YLabel label = factory.createLabel();
+		label.setLabel("Multi Selection");
+		row1.addElement(label);
+		YList yList1_1 = factory.createList();
+		yList1_1.setId("Field3");
+		yList1_1.setLabel("Field3");
+		yList1_1.setType(String.class);
+		yList1_1.setSelectionType(YSelectionType.MULTI);
+		YList yList1_2 = factory.createList();
+		yList1_2.setId("Field4");
+		yList1_2.setLabel("Field4");
+		yList1_2.setType(String.class);
+		yList1_2.setSelectionType(YSelectionType.MULTI);
+		row1.addElement(yList1_1);
+		row1.addElement(yList1_2);
+
+		yList1_2.getCollection().add("Sabrina");
+		yList1_2.getCollection().add("Klemens");
+		yList1_2.getCollection().add("Flo");
+
+		yBindingSet.addBinding(yList1_1.createCollectionEndpoint(),
+				yList1_2.createCollectionEndpoint());
+		yBindingSet.addBinding(yList1_1.createMultiSelectionEndpoint(),
+				yList1_2.createMultiSelectionEndpoint());
+	}
+}
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/MasterDetailSample.java b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/MasterDetailSample.java
new file mode 100644
index 0000000..b4b86ce
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/MasterDetailSample.java
@@ -0,0 +1,224 @@
+/**
+ * Copyright (c) 2011, 2014 - 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.runtime.web.ecview.presentation.vaadin.tests.ui.samples;
+
+import org.eclipse.osbp.ecview.core.common.context.ContextException;
+import org.eclipse.osbp.ecview.core.common.model.binding.BindingFactory;
+import org.eclipse.osbp.ecview.core.common.model.binding.YBindingSet;
+import org.eclipse.osbp.ecview.core.common.model.binding.YDetailValueBindingEndpoint;
+import org.eclipse.osbp.ecview.core.common.model.binding.YEnumListBindingEndpoint;
+import org.eclipse.osbp.ecview.core.common.model.core.YEmbeddableSelectionEndpoint;
+import org.eclipse.osbp.ecview.core.common.model.core.YView;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YCheckBox;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YComboBox;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YGridLayout;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YNumericField;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YTable;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YTextField;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YVerticalLayout;
+import org.eclipse.osbp.ecview.core.extension.model.extension.util.SimpleExtensionModelFactory;
+import org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.VaadinRenderer;
+
+import com.vaadin.ui.CssLayout;
+import com.vaadin.ui.CustomComponent;
+import com.vaadin.ui.Label;
+
+public class MasterDetailSample extends CustomComponent {
+
+	private final SimpleExtensionModelFactory factory = new SimpleExtensionModelFactory();
+
+	private CssLayout layout;
+
+	private YView yView;
+
+	private YBindingSet yBindingSet;
+
+	private YVerticalLayout yLayout;
+
+	public MasterDetailSample() {
+		layout = new CssLayout();
+		setCompositionRoot(layout);
+
+		init();
+	}
+
+	protected void init() {
+
+		// TODO - fix me FP
+
+		yView = factory.createView();
+		yLayout = factory.createVerticalLayout();
+		yView.setContent(yLayout);
+
+		yBindingSet = yView.getOrCreateBindingSet();
+
+		YVerticalLayout row1 = factory.createVerticalLayout();
+		yLayout.addElement(row1);
+
+		YTable yTable1_1 = factory.createTable();
+		yTable1_1.setLabel("Master");
+		yTable1_1.setType(Person.class);
+		row1.addElement(yTable1_1);
+
+		yTable1_1.getCollection().add(
+				new Person("Sabrina", 21, "1220", "Am Nordseeteich", false,
+						Gender.FEMALE));
+		yTable1_1.getCollection().add(
+				new Person("Klemens", 36, "1220", "Irgendwo hinterm Ort", true,
+						Gender.MALE));
+		yTable1_1.getCollection().add(
+				new Person("Flo", 35, "2301", "Hinterm Mond", false,
+						Gender.MALE));
+
+		YGridLayout yGrid = factory.createGridLayout();
+		yLayout.addElement(yGrid);
+
+		YTextField name = factory.createTextField();
+		name.setLabel("Name");
+		yGrid.addElement(name);
+
+		YNumericField age = factory.createNumericField();
+		age.setLabel("Age");
+		yGrid.addElement(age);
+
+		YTextField postalcode = factory.createTextField();
+		postalcode.setLabel("Postalcode");
+		yGrid.addElement(postalcode);
+
+		YTextField street = factory.createTextField();
+		street.setLabel("Street");
+		yGrid.addElement(street);
+
+		YCheckBox hasChild = factory.createCheckBox();
+		hasChild.setLabel("Has child");
+		yGrid.addElement(hasChild);
+
+		YComboBox gender = factory.createComboBox();
+		gender.setLabel("Gender");
+		gender.setType(Gender.class);
+		yGrid.addElement(gender);
+
+		// render now, fill in values later
+		// to avoid overwriting values with bindings to empty fields
+		VaadinRenderer renderer = new VaadinRenderer();
+		try {
+			renderer.render(layout, yView, null);
+		} catch (ContextException e) {
+			layout.addComponent(new Label(e.toString()));
+		}
+
+		yBindingSet.addBinding(name.createValueEndpoint(),
+				selectionEndpoint(yTable1_1, "name"));
+		yBindingSet.addBinding(age.createValueEndpoint(),
+				selectionEndpoint(yTable1_1, "age"));
+		yBindingSet.addBinding(postalcode.createValueEndpoint(),
+				selectionEndpoint(yTable1_1, "postalcode"));
+		yBindingSet.addBinding(street.createValueEndpoint(),
+				selectionEndpoint(yTable1_1, "street"));
+		yBindingSet.addBinding(hasChild.createValueEndpoint(),
+				selectionEndpoint(yTable1_1, "hasChild"));
+		yBindingSet.addBinding(gender.createSelectionEndpoint(),
+				selectionEndpoint(yTable1_1, "gender"));
+		YEnumListBindingEndpoint enumBinding = BindingFactory.eINSTANCE
+				.createYEnumListBindingEndpoint();
+		enumBinding.setEnum(Gender.class);
+		yBindingSet.addBinding(gender.createCollectionEndpoint(), enumBinding);
+	}
+
+	protected YDetailValueBindingEndpoint selectionEndpoint(YTable yTable1_1,
+			String path) {
+		YEmbeddableSelectionEndpoint result = yTable1_1
+				.createSelectionEndpoint();
+		YDetailValueBindingEndpoint detailBinding = BindingFactory.eINSTANCE
+				.createYDetailValueBindingEndpoint();
+		detailBinding.setMasterObservable(result);
+		detailBinding.setPropertyPath(path);
+		detailBinding.setType(Person.class);
+
+		return detailBinding;
+	}
+
+	public static class Person extends AbstractBean {
+
+		private String name;
+		private int age;
+		private String postalcode;
+		private String street;
+		private boolean hasChild;
+		private Gender gender;
+
+		public Person(String name, int age, String postalcode, String street,
+				boolean hasChild, Gender gender) {
+			super();
+			this.name = name;
+			this.age = age;
+			this.postalcode = postalcode;
+			this.street = street;
+			this.hasChild = hasChild;
+			this.gender = gender;
+		}
+
+		public String getName() {
+			return name;
+		}
+
+		public void setName(String name) {
+			firePropertyChanged("name", this.name, this.name = name);
+		}
+
+		public int getAge() {
+			return age;
+		}
+
+		public void setAge(int age) {
+			firePropertyChanged("age", this.age, this.age = age);
+		}
+
+		public String getPostalcode() {
+			return postalcode;
+		}
+
+		public void setPostalcode(String postalcode) {
+			firePropertyChanged("postalcode", this.postalcode,
+					this.postalcode = postalcode);
+		}
+
+		public String getStreet() {
+			return street;
+		}
+
+		public void setStreet(String street) {
+			firePropertyChanged("street", this.street, this.street = street);
+		}
+
+		public boolean isHasChild() {
+			return hasChild;
+		}
+
+		public void setHasChild(boolean hasChild) {
+			firePropertyChanged("hasChild", this.hasChild,
+					this.hasChild = hasChild);
+		}
+
+		public Gender getGender() {
+			return gender;
+		}
+
+		public void setGender(Gender gender) {
+			firePropertyChanged("gender", this.gender, this.gender = gender);
+		}
+	}
+
+	public static enum Gender {
+		MALE, FEMALE
+	}
+}
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/NumericFieldSample.java b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/NumericFieldSample.java
new file mode 100644
index 0000000..3a57b77
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/NumericFieldSample.java
@@ -0,0 +1,110 @@
+/**
+ * Copyright (c) 2011, 2014 - 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.runtime.web.ecview.presentation.vaadin.tests.ui.samples;
+
+import org.eclipse.osbp.ecview.core.common.context.ContextException;
+import org.eclipse.osbp.ecview.core.common.model.binding.YBindingSet;
+import org.eclipse.osbp.ecview.core.common.model.core.YView;
+import org.eclipse.osbp.ecview.core.extension.model.datatypes.YNumericDatatype;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YHorizontalLayout;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YNumericField;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YVerticalLayout;
+import org.eclipse.osbp.ecview.core.extension.model.extension.util.SimpleExtensionModelFactory;
+import org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.VaadinRenderer;
+
+import com.vaadin.ui.CssLayout;
+import com.vaadin.ui.CustomComponent;
+import com.vaadin.ui.Label;
+
+public class NumericFieldSample extends CustomComponent {
+
+	private final SimpleExtensionModelFactory factory = new SimpleExtensionModelFactory();
+
+	private CssLayout layout;
+
+	private YView yView;
+
+	private YBindingSet yBindingSet;
+
+	private YVerticalLayout yLayout;
+
+	public NumericFieldSample() {
+		layout = new CssLayout();
+		setCompositionRoot(layout);
+
+		init();
+	}
+
+	protected void init() {
+
+		yView = factory.createView();
+		yLayout = factory.createVerticalLayout();
+		yView.setContent(yLayout);
+
+		yBindingSet = yView.getOrCreateBindingSet();
+
+		row1();
+
+		row2();
+
+		// render now, fill in values later
+		// to avoid overwriting values with bindings to empty fields
+		VaadinRenderer renderer = new VaadinRenderer();
+		try {
+			renderer.render(layout, yView, null);
+		} catch (ContextException e) {
+			layout.addComponent(new Label(e.toString()));
+		}
+	}
+	
+	public void row2() {
+		// test row 2
+		YHorizontalLayout row2 = factory.createHorizontalLayout();
+		yLayout.addElement(row2);
+
+		YNumericField yText2_1 = factory.createNumericField();
+		yText2_1.setLabel("grouping false");
+		row2.addElement(yText2_1);
+		YNumericDatatype yDt2_2 = factory.createNumericDatatype();
+		yDt2_2.setGrouping(false);
+		yText2_1.setDatatype(yDt2_2);
+
+		YNumericField yText2_2 = factory.createNumericField();
+		yText2_2.setLabel("grouping true");
+		row2.addElement(yText2_2);
+		YNumericDatatype yDt2_1 = factory.createNumericDatatype();
+		yDt2_1.setGrouping(true);
+		yText2_2.setDatatype(yDt2_1);
+
+		YNumericField yText2_3 = factory.createNumericField();
+		yText2_3.setLabel("mark negative");
+		row2.addElement(yText2_3);
+		YNumericDatatype yDt2_3 = factory.createNumericDatatype();
+		yDt2_3.setMarkNegative(true);
+		yText2_3.setDatatype(yDt2_3);
+	}
+
+	public void row1() {
+		// test row 1
+		YHorizontalLayout row1 = factory.createHorizontalLayout();
+		yLayout.addElement(row1);
+		YNumericField yText1_1 = factory.createNumericField();
+		yText1_1.setLabel("Field1");
+		YNumericField yText1_2 = factory.createNumericField();
+		yText1_2.setLabel("Field2");
+		row1.addElement(yText1_1);
+		row1.addElement(yText1_2);
+
+		yBindingSet.addBinding(yText1_1.createValueEndpoint(),
+				yText1_2.createValueEndpoint());
+	}
+}
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/OptionsGroupSample.java b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/OptionsGroupSample.java
new file mode 100644
index 0000000..ac981dd
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/OptionsGroupSample.java
@@ -0,0 +1,149 @@
+/**
+ * Copyright (c) 2011, 2014 - 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.runtime.web.ecview.presentation.vaadin.tests.ui.samples;
+
+import org.eclipse.osbp.ecview.core.common.context.ContextException;
+import org.eclipse.osbp.ecview.core.common.model.binding.YBindingSet;
+import org.eclipse.osbp.ecview.core.common.model.core.YView;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YHorizontalLayout;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YLabel;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YOptionsGroup;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YSelectionType;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YVerticalLayout;
+import org.eclipse.osbp.ecview.core.extension.model.extension.util.SimpleExtensionModelFactory;
+import org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.VaadinRenderer;
+
+import com.vaadin.ui.CssLayout;
+import com.vaadin.ui.CustomComponent;
+import com.vaadin.ui.Label;
+
+public class OptionsGroupSample extends CustomComponent {
+
+	private final SimpleExtensionModelFactory factory = new SimpleExtensionModelFactory();
+
+	private CssLayout layout;
+
+	private YView yView;
+
+	private YBindingSet yBindingSet;
+
+	private YVerticalLayout yLayout;
+
+	public OptionsGroupSample() {
+		layout = new CssLayout();
+		setCompositionRoot(layout);
+
+		init();
+	}
+
+	protected void init() {
+
+		// TODO - fix me FP
+
+		yView = factory.createView();
+		yLayout = factory.createVerticalLayout();
+		yView.setContent(yLayout);
+
+		yBindingSet = yView.getOrCreateBindingSet();
+
+		row1();
+
+		row2();
+
+		// render now, fill in values later
+		// to avoid overwriting values with bindings to empty fields
+		VaadinRenderer renderer = new VaadinRenderer();
+		try {
+			renderer.render(layout, yView, null);
+		} catch (ContextException e) {
+			layout.addComponent(new Label(e.toString()));
+		}
+	}
+
+	// public void row2() {
+	// // test row 2
+	// YHorizontalLayout row2 = factory.createHorizontalLayout();
+	// yLayout.addElement(row2);
+	//
+	// YOptionsGroup yOptionsGroup2_1 = factory.createOptionsGroup();
+	// yOptionsGroup2_1.setLabel("minLength 3");
+	// row2.addElement(yOptionsGroup2_1);
+	//
+	// YOptionsGroup yOptionsGroup2_2 = factory.createOptionsGroup();
+	// yOptionsGroup2_2.setLabel("maxLength 10:");
+	// row2.addElement(yOptionsGroup2_2);
+	//
+	// YOptionsGroup yOptionsGroup2_3 = factory.createOptionsGroup();
+	// yOptionsGroup2_3.setLabel("regexp: \\d+");
+	// row2.addElement(yOptionsGroup2_3);
+	// }
+
+	public void row1() {
+		// test row 1
+		YHorizontalLayout row1 = factory.createHorizontalLayout();
+		yLayout.addElement(row1);
+
+		YLabel label = factory.createLabel();
+		label.setLabel("SingleSelection");
+		row1.addElement(label);
+		YOptionsGroup yOptionsGroup1_1 = factory.createOptionsGroup();
+		yOptionsGroup1_1.setId("Field1");
+		yOptionsGroup1_1.setLabel("Field1");
+		yOptionsGroup1_1.setType(String.class);
+		YOptionsGroup yOptionsGroup1_2 = factory.createOptionsGroup();
+		yOptionsGroup1_2.setId("Field2");
+		yOptionsGroup1_2.setLabel("Field2");
+		yOptionsGroup1_2.setType(String.class);
+		row1.addElement(yOptionsGroup1_1);
+		row1.addElement(yOptionsGroup1_2);
+
+		yOptionsGroup1_2.getCollection().add("Sabrina");
+		yOptionsGroup1_2.getCollection().add("Klemens");
+		yOptionsGroup1_2.getCollection().add("Flo");
+
+		yBindingSet.addBinding(yOptionsGroup1_1.createCollectionEndpoint(),
+				yOptionsGroup1_2.createCollectionEndpoint());
+		yBindingSet.addBinding(yOptionsGroup1_1.createSelectionEndpoint(),
+				yOptionsGroup1_2.createSelectionEndpoint());
+	}
+
+	public void row2() {
+		// test row 2
+		YHorizontalLayout row1 = factory.createHorizontalLayout();
+		yLayout.addElement(row1);
+
+		YLabel label = factory.createLabel();
+		label.setLabel("Multi Selection");
+		row1.addElement(label);
+		YOptionsGroup yOptionsGroup1_1 = factory.createOptionsGroup();
+		yOptionsGroup1_1.setId("Field3");
+		yOptionsGroup1_1.setLabel("Field3");
+		yOptionsGroup1_1.setType(String.class);
+		yOptionsGroup1_1.setSelectionType(YSelectionType.MULTI);
+		YOptionsGroup yOptionsGroup1_2 = factory.createOptionsGroup();
+		yOptionsGroup1_2.setId("Field4");
+		yOptionsGroup1_2.setLabel("Field4");
+		yOptionsGroup1_2.setType(String.class);
+		yOptionsGroup1_2.setSelectionType(YSelectionType.MULTI);
+		row1.addElement(yOptionsGroup1_1);
+		row1.addElement(yOptionsGroup1_2);
+
+		yOptionsGroup1_2.getCollection().add("Sabrina");
+		yOptionsGroup1_2.getCollection().add("Klemens");
+		yOptionsGroup1_2.getCollection().add("Flo");
+
+		yBindingSet.addBinding(yOptionsGroup1_1.createCollectionEndpoint(),
+				yOptionsGroup1_2.createCollectionEndpoint());
+		yBindingSet.addBinding(yOptionsGroup1_1.createMultiSelectionEndpoint(),
+				yOptionsGroup1_2.createMultiSelectionEndpoint());
+	}
+}
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/ReadonlySample.java b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/ReadonlySample.java
new file mode 100644
index 0000000..2d3ec9b
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/ReadonlySample.java
@@ -0,0 +1,114 @@
+/**
+ * Copyright (c) 2011, 2014 - 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.runtime.web.ecview.presentation.vaadin.tests.ui.samples;
+
+import java.util.Date;
+import java.util.Locale;
+
+import org.eclipse.osbp.ecview.core.common.context.ContextException;
+import org.eclipse.osbp.ecview.core.common.context.IViewContext;
+import org.eclipse.osbp.ecview.core.common.model.binding.YBindingSet;
+import org.eclipse.osbp.ecview.core.common.model.core.YView;
+import org.eclipse.osbp.ecview.core.extension.model.datatypes.ExtDatatypesFactory;
+import org.eclipse.osbp.ecview.core.extension.model.datatypes.YDateTimeDatatype;
+import org.eclipse.osbp.ecview.core.extension.model.datatypes.YDateTimeFormat;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YButton;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YDateTime;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YHorizontalLayout;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YTextField;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YVerticalLayout;
+import org.eclipse.osbp.ecview.core.extension.model.extension.listener.YButtonClickListener;
+import org.eclipse.osbp.ecview.core.extension.model.extension.util.SimpleExtensionModelFactory;
+import org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.VaadinRenderer;
+
+import com.vaadin.ui.CssLayout;
+import com.vaadin.ui.CustomComponent;
+import com.vaadin.ui.Label;
+
+public class ReadonlySample extends CustomComponent {
+
+	private final SimpleExtensionModelFactory factory = new SimpleExtensionModelFactory();
+
+	private CssLayout layout;
+
+	private YView yView;
+
+	private YBindingSet yBindingSet;
+
+	private YVerticalLayout yLayout;
+
+	private IViewContext context;
+
+	public ReadonlySample() {
+		layout = new CssLayout();
+		setCompositionRoot(layout);
+
+		init();
+	}
+
+	protected void init() {
+
+		Locale.setDefault(Locale.GERMANY);
+
+		yView = factory.createView();
+		yLayout = factory.createVerticalLayout();
+		yView.setContent(yLayout);
+
+		yBindingSet = yView.getOrCreateBindingSet();
+
+		row2();
+
+		// render now, fill in values later
+		// to avoid overwriting values with bindings to empty fields
+		VaadinRenderer renderer = new VaadinRenderer();
+		try {
+			context = renderer.render(layout, yView, null);
+		} catch (ContextException e) {
+			layout.addComponent(new Label(e.toString()));
+		}
+	}
+
+	public void row2() {
+		// test row 2
+		YHorizontalLayout row2 = factory.createHorizontalLayout();
+		yLayout.addElement(row2);
+
+		final YTextField yText = factory.createTextField();
+		yText.setLabel("text");
+		yText.setValue("Huhu");
+		row2.addElement(yText);
+
+		final YDateTime yDate = factory.createDateTime();
+		yDate.setLabel("time");
+		yDate.setValue(new Date());
+		row2.addElement(yDate);
+		YDateTimeDatatype yDt2_1 = createDateTimeDatatype();
+		yDt2_1.setFormat(YDateTimeFormat.TIME);
+		yDate.setDatatype(yDt2_1);
+
+		YButton yLocaleSwitcher = factory.createButton();
+		yLocaleSwitcher.setLabel("readonly");
+		row2.addElement(yLocaleSwitcher);
+		yLocaleSwitcher.addClickListener(new YButtonClickListener() {
+			@Override
+			public void clicked(YButton yButton) {
+				yText.setEditable(!yText.isEditable());
+				yDate.setEditable(!yDate.isEditable());
+			}
+		});
+	}
+
+	protected YDateTimeDatatype createDateTimeDatatype() {
+		return ExtDatatypesFactory.eINSTANCE.createYDateTimeDatatype();
+	}
+
+}
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/TableSample.java b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/TableSample.java
new file mode 100644
index 0000000..a291250
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/TableSample.java
@@ -0,0 +1,167 @@
+/**
+ * Copyright (c) 2011, 2014 - 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.runtime.web.ecview.presentation.vaadin.tests.ui.samples;
+
+import org.eclipse.osbp.ecview.core.common.context.ContextException;
+import org.eclipse.osbp.ecview.core.common.model.binding.YBindingSet;
+import org.eclipse.osbp.ecview.core.common.model.core.YView;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YHorizontalLayout;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YLabel;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YSelectionType;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YTable;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YVerticalLayout;
+import org.eclipse.osbp.ecview.core.extension.model.extension.util.SimpleExtensionModelFactory;
+import org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.VaadinRenderer;
+
+import com.vaadin.ui.CssLayout;
+import com.vaadin.ui.CustomComponent;
+import com.vaadin.ui.Label;
+
+public class TableSample extends CustomComponent {
+
+	private final SimpleExtensionModelFactory factory = new SimpleExtensionModelFactory();
+
+	private CssLayout layout;
+
+	private YView yView;
+
+	private YBindingSet yBindingSet;
+
+	private YVerticalLayout yLayout;
+
+	public TableSample() {
+		layout = new CssLayout();
+		setCompositionRoot(layout);
+
+		init();
+	}
+
+	protected void init() {
+
+		// TODO - fix me FP
+
+		yView = factory.createView();
+		yLayout = factory.createVerticalLayout();
+		yView.setContent(yLayout);
+
+		yBindingSet = yView.getOrCreateBindingSet();
+
+		row1();
+
+		row2();
+
+		// render now, fill in values later
+		// to avoid overwriting values with bindings to empty fields
+		VaadinRenderer renderer = new VaadinRenderer();
+		try {
+			renderer.render(layout, yView, null);
+		} catch (ContextException e) {
+			layout.addComponent(new Label(e.toString()));
+		}
+	}
+
+	// public void row2() {
+	// // test row 2
+	// YHorizontalLayout row2 = factory.createHorizontalLayout();
+	// yLayout.addElement(row2);
+	//
+	// YTable yTable2_1 = factory.createTable();
+	// yTable2_1.setLabel("minLength 3");
+	// row2.addElement(yTable2_1);
+	//
+	// YTable yTable2_2 = factory.createTable();
+	// yTable2_2.setLabel("maxLength 10:");
+	// row2.addElement(yTable2_2);
+	//
+	// YTable yTable2_3 = factory.createTable();
+	// yTable2_3.setLabel("regexp: \\d+");
+	// row2.addElement(yTable2_3);
+	// }
+
+	public void row1() {
+		// test row 1
+		YHorizontalLayout row1 = factory.createHorizontalLayout();
+		yLayout.addElement(row1);
+
+		YLabel label = factory.createLabel();
+		label.setLabel("SingleSelection");
+		row1.addElement(label);
+		YTable yTable1_1 = factory.createTable();
+		yTable1_1.setId("Field1");
+		yTable1_1.setLabel("Field1");
+		yTable1_1.setType(Bean.class);
+		YTable yTable1_2 = factory.createTable();
+		yTable1_2.setId("Field2");
+		yTable1_2.setLabel("Field2");
+		yTable1_2.setType(Bean.class);
+		row1.addElement(yTable1_1);
+		row1.addElement(yTable1_2);
+
+		yTable1_2.getCollection().add(new Bean("Sabrina"));
+		yTable1_2.getCollection().add(new Bean("Klemens"));
+		yTable1_2.getCollection().add(new Bean("Flo"));
+
+		yBindingSet.addBinding(yTable1_1.createCollectionEndpoint(),
+				yTable1_2.createCollectionEndpoint());
+		yBindingSet.addBinding(yTable1_1.createSelectionEndpoint(),
+				yTable1_2.createSelectionEndpoint());
+	}
+
+	public void row2() {
+		// test row 2
+		YHorizontalLayout row1 = factory.createHorizontalLayout();
+		yLayout.addElement(row1);
+
+		YLabel label = factory.createLabel();
+		label.setLabel("Multi Selection");
+		row1.addElement(label);
+		YTable yTable1_1 = factory.createTable();
+		yTable1_1.setId("Field3");
+		yTable1_1.setLabel("Field3");
+		yTable1_1.setType(Bean.class);
+		yTable1_1.setSelectionType(YSelectionType.MULTI);
+		YTable yTable1_2 = factory.createTable();
+		yTable1_2.setId("Field4");
+		yTable1_2.setLabel("Field4");
+		yTable1_2.setType(Bean.class);
+		yTable1_2.setSelectionType(YSelectionType.MULTI);
+		row1.addElement(yTable1_1);
+		row1.addElement(yTable1_2);
+
+		yTable1_2.getCollection().add(new Bean("Sabrina"));
+		yTable1_2.getCollection().add(new Bean("Klemens"));
+		yTable1_2.getCollection().add(new Bean("Flo"));
+
+		yBindingSet.addBinding(yTable1_1.createCollectionEndpoint(),
+				yTable1_2.createCollectionEndpoint());
+		yBindingSet.addBinding(yTable1_1.createMultiSelectionEndpoint(),
+				yTable1_2.createMultiSelectionEndpoint());
+	}
+
+	public static final class Bean {
+		private String name;
+
+		public Bean(String name) {
+			super();
+			this.name = name;
+		}
+
+		public String getName() {
+			return name;
+		}
+
+		public void setName(String name) {
+			this.name = name;
+		}
+
+	}
+}
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/TabsheetSample.java b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/TabsheetSample.java
new file mode 100644
index 0000000..919dec6
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/TabsheetSample.java
@@ -0,0 +1,100 @@
+/**
+ * Copyright (c) 2011, 2014 - 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.runtime.web.ecview.presentation.vaadin.tests.ui.samples;
+
+import org.eclipse.osbp.ecview.core.common.context.ContextException;
+import org.eclipse.osbp.ecview.core.common.model.binding.YBindingSet;
+import org.eclipse.osbp.ecview.core.common.model.core.YView;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YTab;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YTabSheet;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YTextField;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YVerticalLayout;
+import org.eclipse.osbp.ecview.core.extension.model.extension.util.SimpleExtensionModelFactory;
+import org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.VaadinRenderer;
+
+import com.vaadin.ui.CssLayout;
+import com.vaadin.ui.CustomComponent;
+import com.vaadin.ui.Label;
+
+public class TabsheetSample extends CustomComponent {
+
+	private final SimpleExtensionModelFactory factory = new SimpleExtensionModelFactory();
+
+	private CssLayout layout;
+
+	private YView yView;
+
+	private YBindingSet yBindingSet;
+
+	private YVerticalLayout yLayout;
+
+	public TabsheetSample() {
+		layout = new CssLayout();
+		setCompositionRoot(layout);
+
+		init();
+	}
+
+	protected void init() {
+
+		yView = factory.createView();
+		yLayout = factory.createVerticalLayout();
+		yView.setContent(yLayout);
+
+		YTabSheet yTabsheet = factory.createTabSheet();
+		yLayout.getElements().add(yTabsheet);
+		
+
+		tab1(yTabsheet);
+
+		tab2(yTabsheet);
+
+		// render now, fill in values later
+		// to avoid overwriting values with bindings to empty fields
+		VaadinRenderer renderer = new VaadinRenderer();
+		try {
+			renderer.render(layout, yView, null);
+		} catch (ContextException e) {
+			layout.addComponent(new Label(e.toString()));
+		}
+	}
+	
+	public void tab1(YTabSheet yTabsheet) {
+		YTab yTab1 = factory.createTab();
+		yTab1.setLabel("Tab 1");
+		
+		YVerticalLayout yTab1Content = factory.createVerticalLayout();
+		yTab1.setEmbeddable(yTab1Content);
+		
+		YTextField yTextfield1 = factory.createTextField();
+		yTextfield1.setLabel("Huhu");
+		yTextfield1.setValue("Huhu");
+		yTab1Content.addElement(yTextfield1);
+		
+		yTabsheet.getTabs().add(yTab1);
+	}
+
+	public void tab2(YTabSheet yTabsheet) {
+		YTab yTab2 = factory.createTab();
+		yTab2.setLabel("Tab 2");
+		
+		YVerticalLayout yTab2Content = factory.createVerticalLayout();
+		yTab2.setEmbeddable(yTab2Content);
+		
+		YTextField yTextfield2 = factory.createTextField();
+		yTextfield2.setLabel("Haha");
+		yTextfield2.setValue("Haha");
+		yTab2Content.addElement(yTextfield2);
+		
+		yTabsheet.getTabs().add(yTab2);
+	}
+}
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/TextAreaSample.java b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/TextAreaSample.java
new file mode 100644
index 0000000..c35663e
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/TextAreaSample.java
@@ -0,0 +1,112 @@
+/**
+ * Copyright (c) 2011, 2014 - 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.runtime.web.ecview.presentation.vaadin.tests.ui.samples;
+
+import org.eclipse.osbp.ecview.core.common.context.ContextException;
+import org.eclipse.osbp.ecview.core.common.model.binding.YBindingSet;
+import org.eclipse.osbp.ecview.core.common.model.core.YView;
+import org.eclipse.osbp.ecview.core.extension.model.datatypes.YTextAreaDatatype;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YHorizontalLayout;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YTextArea;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YVerticalLayout;
+import org.eclipse.osbp.ecview.core.extension.model.extension.util.SimpleExtensionModelFactory;
+import org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.VaadinRenderer;
+
+import com.vaadin.ui.CssLayout;
+import com.vaadin.ui.CustomComponent;
+import com.vaadin.ui.Label;
+
+public class TextAreaSample extends CustomComponent {
+
+	private final SimpleExtensionModelFactory factory = new SimpleExtensionModelFactory();
+
+	private CssLayout layout;
+
+	private YView yView;
+
+	private YBindingSet yBindingSet;
+
+	private YVerticalLayout yLayout;
+
+	public TextAreaSample() {
+		layout = new CssLayout();
+		setCompositionRoot(layout);
+
+		init();
+	}
+
+	protected void init() {
+		
+		// TODO - fix me FP
+
+		yView = factory.createView();
+		yLayout = factory.createVerticalLayout();
+		yView.setContent(yLayout);
+
+		yBindingSet = yView.getOrCreateBindingSet();
+
+		row1();
+
+		row2();
+
+		// render now, fill in values later
+		// to avoid overwriting values with bindings to empty fields
+		VaadinRenderer renderer = new VaadinRenderer();
+		try {
+			renderer.render(layout, yView, null);
+		} catch (ContextException e) {
+			layout.addComponent(new Label(e.toString()));
+		}
+	}
+
+	public void row2() {
+		// test row 2
+		YHorizontalLayout row2 = factory.createHorizontalLayout();
+		yLayout.addElement(row2);
+
+		YTextArea yText2_1 = factory.createTextArea();
+		yText2_1.setLabel("minLength 3");
+		row2.addElement(yText2_1);
+		YTextAreaDatatype yDt2_2 = factory.createTextAreaDatatype();
+		yDt2_2.setMinLength(3);
+		yText2_1.setDatatype(yDt2_2);
+
+		YTextArea yText2_2 = factory.createTextArea();
+		yText2_2.setLabel("maxLength 10:");
+		row2.addElement(yText2_2);
+		YTextAreaDatatype yDt2_1 = factory.createTextAreaDatatype();
+		yDt2_1.setMaxLength(10);
+		yText2_2.setDatatype(yDt2_1);
+
+		YTextArea yText2_3 = factory.createTextArea();
+		yText2_3.setLabel("regexp: \\d+");
+		row2.addElement(yText2_3);
+		YTextAreaDatatype yDt2_3 = factory.createTextAreaDatatype();
+		yDt2_3.setRegExpression("\\d+");
+		yText2_3.setDatatype(yDt2_3);
+	}
+
+	public void row1() {
+		// test row 1
+		YHorizontalLayout row1 = factory.createHorizontalLayout();
+		yLayout.addElement(row1);
+		YTextArea yText1_1 = factory.createTextArea();
+		yText1_1.setLabel("Field1");
+		YTextArea yText1_2 = factory.createTextArea();
+		yText1_2.setLabel("Field2");
+		row1.addElement(yText1_1);
+		row1.addElement(yText1_2);
+
+		yBindingSet.addBinding(yText1_1.createValueEndpoint(),
+				yText1_2.createValueEndpoint());
+	}
+}
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/TextFieldSample.java b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/TextFieldSample.java
new file mode 100644
index 0000000..d9479da
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/TextFieldSample.java
@@ -0,0 +1,128 @@
+/**
+ * Copyright (c) 2011, 2014 - 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.runtime.web.ecview.presentation.vaadin.tests.ui.samples;
+
+import org.eclipse.osbp.ecview.core.common.context.ContextException;
+import org.eclipse.osbp.ecview.core.common.model.binding.YBindingSet;
+import org.eclipse.osbp.ecview.core.common.model.core.YView;
+import org.eclipse.osbp.ecview.core.extension.model.datatypes.YTextDatatype;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YCheckBox;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YHorizontalLayout;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YTextField;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YVerticalLayout;
+import org.eclipse.osbp.ecview.core.extension.model.extension.util.SimpleExtensionModelFactory;
+import org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.VaadinRenderer;
+
+import com.vaadin.ui.CssLayout;
+import com.vaadin.ui.CustomComponent;
+import com.vaadin.ui.Label;
+
+public class TextFieldSample extends CustomComponent {
+
+	private final SimpleExtensionModelFactory factory = new SimpleExtensionModelFactory();
+
+	private CssLayout layout;
+
+	private YView yView;
+
+	private YBindingSet yBindingSet;
+
+	private YVerticalLayout yLayout;
+
+	public TextFieldSample() {
+		layout = new CssLayout();
+		setCompositionRoot(layout);
+
+		init();
+	}
+
+	protected void init() {
+
+		yView = factory.createView();
+		yLayout = factory.createVerticalLayout();
+		yView.setContent(yLayout);
+
+		yBindingSet = yView.getOrCreateBindingSet();
+
+		row1();
+
+		row2();
+
+		// render now, fill in values later
+		// to avoid overwriting values with bindings to empty fields
+		VaadinRenderer renderer = new VaadinRenderer();
+		try {
+			renderer.render(layout, yView, null);
+		} catch (ContextException e) {
+			layout.addComponent(new Label(e.toString()));
+		}
+	}
+	
+	public void row3() {
+		// test row 1
+		YHorizontalLayout row1 = factory.createHorizontalLayout();
+		yLayout.addElement(row1);
+		YCheckBox yCheckbox = factory.createCheckBox();
+		yCheckbox.setLabel("Click for readonly");
+		YTextField yText = factory.createTextField();
+		yText.setLabel("Becomes read only");
+		row1.addElement(yCheckbox);
+		row1.addElement(yText);
+
+//		yText.setEditable(value);
+		
+		yBindingSet.addBinding(yText.createValueEndpoint(),
+				yText.getValueBindingEndpoint());
+	}
+
+	public void row2() {
+		// test row 2
+		YHorizontalLayout row2 = factory.createHorizontalLayout();
+		yLayout.addElement(row2);
+
+		YTextField yText2_1 = factory.createTextField();
+		yText2_1.setLabel("minLength 3");
+		row2.addElement(yText2_1);
+		YTextDatatype yDt2_2 = factory.createTextDatatype();
+		yDt2_2.setMinLength(3);
+		yText2_1.setDatatype(yDt2_2);
+
+		YTextField yText2_2 = factory.createTextField();
+		yText2_2.setLabel("maxLength 10:");
+		row2.addElement(yText2_2);
+		YTextDatatype yDt2_1 = factory.createTextDatatype();
+		yDt2_1.setMaxLength(10);
+		yText2_2.setDatatype(yDt2_1);
+
+		YTextField yText2_3 = factory.createTextField();
+		yText2_3.setLabel("regexp: \\d+");
+		row2.addElement(yText2_3);
+		YTextDatatype yDt2_3 = factory.createTextDatatype();
+		yDt2_3.setRegExpression("\\d+");
+		yText2_3.setDatatype(yDt2_3);
+	}
+
+	public void row1() {
+		// test row 1
+		YHorizontalLayout row1 = factory.createHorizontalLayout();
+		yLayout.addElement(row1);
+		YTextField yText1_1 = factory.createTextField();
+		yText1_1.setLabel("A (binds to B):");
+		YTextField yText1_2 = factory.createTextField();
+		yText1_2.setLabel("B (binds to A):");
+		row1.addElement(yText1_1);
+		row1.addElement(yText1_2);
+
+		yBindingSet.addBinding(yText1_1.createValueEndpoint(),
+				yText1_2.getValueBindingEndpoint());
+	}
+}
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/VisibleSample.java b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/VisibleSample.java
new file mode 100644
index 0000000..7ef3228
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/VisibleSample.java
@@ -0,0 +1,114 @@
+/**
+ * Copyright (c) 2011, 2014 - 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.runtime.web.ecview.presentation.vaadin.tests.ui.samples;
+
+import java.util.Date;
+import java.util.Locale;
+
+import org.eclipse.osbp.ecview.core.common.context.ContextException;
+import org.eclipse.osbp.ecview.core.common.context.IViewContext;
+import org.eclipse.osbp.ecview.core.common.model.binding.YBindingSet;
+import org.eclipse.osbp.ecview.core.common.model.core.YView;
+import org.eclipse.osbp.ecview.core.extension.model.datatypes.ExtDatatypesFactory;
+import org.eclipse.osbp.ecview.core.extension.model.datatypes.YDateTimeDatatype;
+import org.eclipse.osbp.ecview.core.extension.model.datatypes.YDateTimeFormat;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YButton;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YDateTime;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YHorizontalLayout;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YTextField;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YVerticalLayout;
+import org.eclipse.osbp.ecview.core.extension.model.extension.listener.YButtonClickListener;
+import org.eclipse.osbp.ecview.core.extension.model.extension.util.SimpleExtensionModelFactory;
+import org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.VaadinRenderer;
+
+import com.vaadin.ui.CssLayout;
+import com.vaadin.ui.CustomComponent;
+import com.vaadin.ui.Label;
+
+public class VisibleSample extends CustomComponent {
+
+	private final SimpleExtensionModelFactory factory = new SimpleExtensionModelFactory();
+
+	private CssLayout layout;
+
+	private YView yView;
+
+	private YBindingSet yBindingSet;
+
+	private YVerticalLayout yLayout;
+
+	private IViewContext context;
+
+	public VisibleSample() {
+		layout = new CssLayout();
+		setCompositionRoot(layout);
+
+		init();
+	}
+
+	protected void init() {
+
+		Locale.setDefault(Locale.GERMANY);
+
+		yView = factory.createView();
+		yLayout = factory.createVerticalLayout();
+		yView.setContent(yLayout);
+
+		yBindingSet = yView.getOrCreateBindingSet();
+
+		row2();
+
+		// render now, fill in values later
+		// to avoid overwriting values with bindings to empty fields
+		VaadinRenderer renderer = new VaadinRenderer();
+		try {
+			context = renderer.render(layout, yView, null);
+		} catch (ContextException e) {
+			layout.addComponent(new Label(e.toString()));
+		}
+	}
+
+	public void row2() {
+		// test row 2
+		YHorizontalLayout row2 = factory.createHorizontalLayout();
+		yLayout.addElement(row2);
+
+		final YTextField yText = factory.createTextField();
+		yText.setLabel("text");
+		yText.setValue("Huhu");
+		row2.addElement(yText);
+
+		final YDateTime yDate = factory.createDateTime();
+		yDate.setLabel("time");
+		yDate.setValue(new Date());
+		row2.addElement(yDate);
+		YDateTimeDatatype yDt2_1 = createDateTimeDatatype();
+		yDt2_1.setFormat(YDateTimeFormat.TIME);
+		yDate.setDatatype(yDt2_1);
+
+		YButton yLocaleSwitcher = factory.createButton();
+		yLocaleSwitcher.setLabel("visible");
+		row2.addElement(yLocaleSwitcher);
+		yLocaleSwitcher.addClickListener(new YButtonClickListener() {
+			@Override
+			public void clicked(YButton yButton) {
+				yText.setVisible(!yText.isVisible());
+				yDate.setVisible(!yDate.isVisible());
+			}
+		});
+	}
+
+	protected YDateTimeDatatype createDateTimeDatatype() {
+		return ExtDatatypesFactory.eINSTANCE.createYDateTimeDatatype();
+	}
+
+}
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/.project b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/.project
new file mode 100644
index 0000000..ee3fa84
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/.project
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui</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.m2e.core.maven2Builder</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>
+	</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.runtime.web.ecview.presentation.vaadin.tests.ui/LICENSE.txt b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/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.runtime.web.ecview.presentation.vaadin.tests.ui/META-INF/MANIFEST.MF b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..06edf04
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/META-INF/MANIFEST.MF
@@ -0,0 +1,34 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui
+Bundle-SymbolicName: org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui
+Bundle-Version: 0.9.0.qualifier
+Bundle-ClassPath: .
+Require-Bundle: com.vaadin.shared;bundle-version="[7.5.7,7.7.0)",
+ com.vaadin.server;bundle-version="[7.5.7,7.7.0)",
+ org.eclipse.osbp.runtime.web.vaadin.common;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.runtime.web.ecview.presentation.vaadin;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.runtime.web.vaadin.databinding;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.runtime.web.vaadin.components;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.emf.databinding;bundle-version="1.3.0",
+ org.eclipse.core.runtime,
+ org.eclipse.emf.ecore;visibility:=reexport,
+ org.eclipse.osbp.ecview.core.common;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.ecview.core.common.editparts.emf;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.ecview.core.common.model;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.ecview.core.databinding.beans;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.ecview.core.databinding.emf;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.ecview.core.extension.editparts.emf;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.ecview.core.ui.presentation.common;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.ecview.core.util.emf;bundle-version="[0.9.0,0.10.0)",
+ com.vaadin.client-compiled;bundle-version="[7.5.7,7.7.0)"
+Bundle-RequiredExecutionEnvironment: JavaSE-1.7
+Bundle-Vendor: Eclipse OSBP
+Import-Package: javax.servlet;version="2.6.0",
+ javax.servlet.http;version="2.6.0",
+ org.osgi.framework;version="1.7.0",
+ org.osgi.service.cm;version="1.4.0",
+ org.osgi.service.component;version="1.2.0",
+ org.osgi.service.http;version="1.2.1",
+ org.slf4j;version="1.6.1"
+Bundle-Activator: org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.Activator
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/about.html b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>June 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.runtime.web.ecview.presentation.vaadin.tests.ui/about.ini b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/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.runtime.web.ecview.presentation.vaadin.tests.ui/about.mappings b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/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.runtime.web.ecview.presentation.vaadin.tests.ui/about.properties b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/about.properties
new file mode 100644
index 0000000..0b9ef63
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/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.runtime.web.ecview.presentation.vaadin.tests.ui
+
+################ 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.runtime.web.ecview.presentation.vaadin.tests.ui/build.properties b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/build.properties
new file mode 100644
index 0000000..0cc7681
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/build.properties
@@ -0,0 +1,6 @@
+#
+
+bin.includes = about.properties,  about.mappings,  about.ini,  about.html,  .,\
+               META-INF/,\
+source.. = src/
+output.. = target/classes/
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/pom.xml b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/pom.xml
new file mode 100644
index 0000000..3b23e13
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/pom.xml
@@ -0,0 +1,23 @@
+<?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: -->
+<!--# Florian Pirchner - 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.runtime.web</groupId>
+		<artifactId>org.eclipse.osbp.runtime.web.aggregator</artifactId>
+		<version>0.9.0-SNAPSHOT</version>
+		<relativePath>..</relativePath>
+	</parent>
+	<artifactId>org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui</artifactId>
+	<packaging>eclipse-plugin</packaging>
+
+</project>
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/setup/user-target.target b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/setup/user-target.target
new file mode 100644
index 0000000..099457c
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/setup/user-target.target
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?pde version="3.8"?><target includeMode="feature" name="user-target" sequenceNumber="59">
+<locations>
+<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="false" type="InstallableUnit">
+<unit id="org.eclipse.jdt.feature.group" version="3.9.2.v20140221-1700"/>
+<repository location="http://download.eclipse.org/releases/kepler"/>
+</location>
+<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="false" type="InstallableUnit">
+<unit id="org.eclipse.equinox.sdk.feature.group" version="3.9.0.v20140221-1852"/>
+<unit id="org.eclipse.platform.sdk" version="4.3.2.M20140221-1700"/>
+<unit id="org.eclipse.emf.sdk.feature.group" version="2.9.2.v20140203-1126"/>
+<repository location="http://download.eclipse.org/releases/kepler"/>
+</location>
+<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="false" type="InstallableUnit">
+<unit id="org.apache.commons.math" version="2.1.0.v201105210652"/>
+<unit id="org.apache.commons.lang" version="2.6.0.v201205030909"/>
+<unit id="org.apache.commons.collections" version="3.2.0.v201005080500"/>
+<unit id="org.apache.commons.beanutils" version="1.8.0.v201205091237"/>
+<repository location="http://download.eclipse.org/tools/orbit/downloads/drops/R20120526062928/repository"/>
+</location>
+<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="false" type="InstallableUnit">
+<unit id="org.junit.source" version="4.10.0.v4_10_0_v20120426-0900"/>
+<unit id="org.junit" version="4.10.0.v4_10_0_v20120426-0900"/>
+<repository location="http://download.eclipse.org/tools/orbit/downloads/drops/R20120526062928/repository"/>
+</location>
+<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="false" type="InstallableUnit">
+<unit id="org.eclipse.persistence.sdk.feature.group" version="2.5.1.v20130913-5eaeb06"/>
+<repository location="http://download.eclipse.org/releases/kepler"/>
+</location>
+<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="false" type="InstallableUnit">
+<unit id="org.eclipse.osbp.runtime.web.feature.vaadin.databinding.feature.group" version="0.0.1.201406122143"/>
+<unit id="org.eclipse.osbp.runtime.web.feature.vaadin.common.feature.group" version="0.0.1.201406122143"/>
+<unit id="org.eclipse.osbp.runtime.web.feature.vaadin.components.source.feature.group" version="0.0.1.201406122143"/>
+<unit id="org.eclipse.osbp.runtime.web.feature.ecview.presentation.vaadin.feature.group" version="0.0.1.201406122143"/>
+<unit id="org.eclipse.osbp.runtime.web.feature.ecview.presentation.vaadin.source.feature.group" version="0.0.1.201406122143"/>
+<unit id="org.eclipse.osbp.runtime.web.feature.vaadin.components.feature.group" version="0.0.1.201406122143"/>
+<unit id="org.eclipse.osbp.runtime.web.feature.vaadin.common.source.feature.group" version="0.0.1.201406122143"/>
+<unit id="org.eclipse.osbp.runtime.web.feature.vaadin.databinding.source.feature.group" version="0.0.1.201406122143"/>
+<repository location="http://lun.lunifera.org/downloads/p2/lunifera/kepler/latest/"/>
+</location>
+<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="false" type="InstallableUnit">
+<unit id="org.apache.httpcomponents.httpclient" version="4.1.2.v201203221030"/>
+<unit id="org.apache.httpcomponents.httpclient.source" version="4.1.2.v201203221030"/>
+<repository location="http://download.eclipse.org/tools/orbit/downloads/drops/R20120526062928/repository"/>
+</location>
+<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="false" type="InstallableUnit">
+<unit id="org.eclipse.emf.ecp.ecview.feature.core.feature.group" version="0.0.1.201406122002"/>
+<unit id="org.eclipse.emf.ecp.ecview.feature.core.source.feature.group" version="0.0.1.201406122002"/>
+<repository location="http://lun.lunifera.org/downloads/p2/ecview/nightly/"/>
+</location>
+<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="false" type="InstallableUnit">
+<unit id="org.apache.httpcomponents.httpcore.source" version="4.1.4.v201203221030"/>
+<unit id="org.apache.httpcomponents.httpcore" version="4.1.4.v201203221030"/>
+<unit id="org.apache.httpcomponents.httpcore.nio" version="4.1.0.v201101201700"/>
+<unit id="org.apache.httpcomponents.httpcore.nio.source" version="4.1.0.v201101201700"/>
+<repository location="http://download.eclipse.org/tools/orbit/downloads/drops/R20120526062928/repository"/>
+</location>
+<location path="${project_loc}/setup/lib" type="Directory"/>
+<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="false" type="InstallableUnit">
+<unit id="org.eclipse.osbp.dependencies.feature.assert-utilities.feature.group" version="1.2.2"/>
+<unit id="org.eclipse.osbp.runtime.feature.common.source.feature.group" version="0.0.1.201405120903"/>
+<unit id="org.eclipse.osbp.runtime.feature.common.feature.group" version="0.0.1.201405120903"/>
+<repository location="http://lun.lunifera.org/downloads/p2/lunifera/kepler/latest/"/>
+</location>
+<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="false" type="InstallableUnit">
+<unit id="org.eclipse.osbp.dependencies.feature.vaadin.feature.group" version="7.1.9"/>
+<repository location="http://lun.lunifera.org/downloads/p2/lunifera/kepler/latest/"/>
+</location>
+</locations>
+</target>
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/Activator.java b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/Activator.java
new file mode 100644
index 0000000..3a709c2
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/Activator.java
@@ -0,0 +1,146 @@
+/**
+ * Copyright (c) 2011, 2014 - 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.runtime.web.ecview.presentation.vaadin.tests.ui;
+
+import javax.servlet.ServletException;
+
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.BundleEvent;
+import org.osgi.framework.BundleListener;
+import org.osgi.framework.ServiceReference;
+import org.osgi.service.http.HttpService;
+import org.osgi.service.http.NamespaceException;
+import org.osgi.util.tracker.ServiceTracker;
+import org.osgi.util.tracker.ServiceTrackerCustomizer;
+
+public class Activator implements BundleActivator,
+ServiceTrackerCustomizer<HttpService, HttpService>, BundleListener {
+
+	private static BundleContext context;
+	private static Activator plugin;
+
+	static BundleContext getContext() {
+		return context;
+	}
+	
+	private ServiceTracker<HttpService, HttpService> tracker;
+
+	// used to register servlets
+	private HttpService httpService;
+	private ResourceProvider resourceProvider;
+
+	/**
+	 * @return the plugin
+	 */
+	public static Activator getPlugin() {
+		return plugin;
+	}
+	
+	//
+	// Helper methods to get an instance of the http service
+	//
+	@Override
+	public HttpService addingService(ServiceReference<HttpService> reference) {
+		httpService = context.getService(reference);
+
+		try {
+			// register the servlet at the http service
+			httpService.registerServlet("/", new ECViewTestsServlet(), null,
+					resourceProvider);
+		} catch (ServletException e) {
+			e.printStackTrace();
+		} catch (NamespaceException e) {
+			e.printStackTrace();
+		}
+
+		return httpService;
+	}
+
+	@Override
+	public void removedService(ServiceReference<HttpService> reference,
+			HttpService service) {
+		// unregister the servlet from the http service
+		httpService.unregister("/");
+	}
+
+	@Override
+	public void modifiedService(ServiceReference<HttpService> reference,
+			HttpService service) {
+
+	}
+
+	public void start(BundleContext bundleContext) throws Exception {
+		Activator.context = bundleContext;
+		Activator.plugin = this;
+
+		resourceProvider = new ResourceProvider();
+
+		handleStartedBundles(context);
+
+		// register this instance as a bundle listener to an reference to all
+		// vaadin bundles. Used to find the static resources.
+		bundleContext.addBundleListener(this);
+
+		// Start a HttpService-Tracker to get an instance of HttpService
+				tracker = new ServiceTracker<>(bundleContext, HttpService.class, this);
+				tracker.open();
+	}
+
+	public void stop(BundleContext bundleContext) throws Exception {
+		// close the HttpService-tracker
+				tracker.close();
+				tracker = null;
+
+		
+		resourceProvider = null;
+
+		bundleContext.removeBundleListener(this);
+
+		Activator.context = null;
+		Activator.plugin = null;
+	}
+
+	/**
+	 * Tries to find proper started bundles and adds them to resource provider.
+	 * Since bundle changed listener will not find them.
+	 * 
+	 * @param context
+	 */
+	protected void handleStartedBundles(BundleContext context) {
+		for (Bundle bundle : context.getBundles()) {
+			String name = bundle.getSymbolicName();
+			if (bundle.getState() == Bundle.ACTIVE
+					&& (name.startsWith("com.vaadin") || name
+							.equals("org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui"))) {
+				resourceProvider.add(bundle);
+			}
+		}
+	}
+
+	@Override
+	public void bundleChanged(BundleEvent event) {
+		// tracks the starting and stopping of vaadin bundles. If a bundle is a
+		// vaadin bundle it will be added to the resource provider for lookups.
+		String name = event.getBundle().getSymbolicName();
+		if (name.startsWith("com.vaadin")
+				|| name.equals("org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui")) {
+			if (event.getType() == BundleEvent.STARTED) {
+				resourceProvider.add(event.getBundle());
+			} else if (event.getType() == BundleEvent.STOPPED) {
+				resourceProvider.remove(event.getBundle());
+			}
+		}
+	}
+
+}
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/DummyApplication.java b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/DummyApplication.java
new file mode 100644
index 0000000..ae16763
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/DummyApplication.java
@@ -0,0 +1,28 @@
+/**
+ * Copyright (c) 2011, 2014 - 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.runtime.web.ecview.presentation.vaadin.tests.ui;
+
+import org.eclipse.equinox.app.IApplication;
+import org.eclipse.equinox.app.IApplicationContext;
+
+public class DummyApplication implements IApplication {
+
+	@Override
+	public Object start(IApplicationContext context) throws Exception {
+		return null;
+	}
+
+	@Override
+	public void stop() {
+	}
+
+}
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/ECViewTestsServlet.java b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/ECViewTestsServlet.java
new file mode 100644
index 0000000..72b0076
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/ECViewTestsServlet.java
@@ -0,0 +1,36 @@
+/**
+ * Copyright (c) 2011, 2014 - 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.runtime.web.ecview.presentation.vaadin.tests.ui;
+
+import com.vaadin.annotations.VaadinServletConfiguration;
+import com.vaadin.server.DeploymentConfiguration;
+import com.vaadin.server.ServiceException;
+import com.vaadin.server.VaadinServlet;
+import com.vaadin.server.VaadinServletService;
+
+/**
+ * An implementation of VaadinServlet that uses SimpleUI as its base UI.
+ */
+@SuppressWarnings("serial")
+@VaadinServletConfiguration(ui = ECViewTestsUI.class, productionMode = false)
+public class ECViewTestsServlet extends VaadinServlet {
+
+	@Override
+	protected VaadinServletService createServletService(
+			DeploymentConfiguration deploymentConfiguration)
+			throws ServiceException {
+		ECViewTestsServletService service = new ECViewTestsServletService(this,
+				deploymentConfiguration);
+		service.init();
+		return service;
+	}
+
+}
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/ECViewTestsServletService.java b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/ECViewTestsServletService.java
new file mode 100644
index 0000000..9f45cc1
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/ECViewTestsServletService.java
@@ -0,0 +1,32 @@
+/**
+ * Copyright (c) 2011, 2014 - 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.runtime.web.ecview.presentation.vaadin.tests.ui;
+
+import com.vaadin.server.DeploymentConfiguration;
+import com.vaadin.server.ServiceException;
+import com.vaadin.server.VaadinServlet;
+import com.vaadin.server.VaadinServletService;
+
+@SuppressWarnings("serial")
+public class ECViewTestsServletService extends VaadinServletService {
+
+	public ECViewTestsServletService(VaadinServlet servlet,
+			DeploymentConfiguration deploymentConfiguration)
+			throws ServiceException {
+		super(servlet, deploymentConfiguration);
+	}
+
+	@Override
+	public ClassLoader getClassLoader() {
+		return getClass().getClassLoader();
+	}
+
+}
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/ECViewTestsUI.java b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/ECViewTestsUI.java
new file mode 100644
index 0000000..6636a1b
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/ECViewTestsUI.java
@@ -0,0 +1,89 @@
+/**
+ * Copyright (c) 2011, 2014 - 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.runtime.web.ecview.presentation.vaadin.tests.ui;
+
+import org.eclipse.osbp.runtime.web.vaadin.databinding.VaadinObservables;
+
+import com.vaadin.annotations.Theme;
+import com.vaadin.server.Page;
+import com.vaadin.server.Page.UriFragmentChangedEvent;
+import com.vaadin.server.VaadinRequest;
+import com.vaadin.ui.Component;
+import com.vaadin.ui.Label;
+import com.vaadin.ui.UI;
+import com.vaadin.ui.VerticalLayout;
+import com.vaadin.ui.themes.Reindeer;
+
+@SuppressWarnings("serial")
+@Theme(Reindeer.THEME_NAME)
+public class ECViewTestsUI extends UI {
+
+	private static final String SAMPLE_PACKAGE = "org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui.samples";
+	private VerticalLayout layout;
+
+	@Override
+	protected void init(VaadinRequest request) {
+		layout = new VerticalLayout();
+		layout.setSizeFull();
+		layout.setMargin(true);
+		layout.setSpacing(true);
+		setContent(layout);
+
+		layout.addComponent(new Label("Insert URL fragment to open testclass"));
+
+		getPage().addUriFragmentChangedListener(
+				new Page.UriFragmentChangedListener() {
+					@Override
+					public void uriFragmentChanged(
+							final UriFragmentChangedEvent event) {
+						getUI().accessSynchronously(new Runnable() {
+							@Override
+							public void run() {
+								VaadinObservables.getRealm(getUI());
+								String fragment = event.getUriFragment();
+								handleFragment(SAMPLE_PACKAGE + "." + fragment);
+							}
+						});
+					}
+				});
+
+		String fragment = request.getPathInfo().replace("/", "");
+		handleFragment(SAMPLE_PACKAGE + "." + fragment);
+	}
+
+	protected void handleFragment(String className) {
+		try {
+			Class<?> clazz = Activator.getContext().getBundle()
+					.loadClass(className);
+			if (Component.class.isAssignableFrom(clazz)) {
+				layout.removeAllComponents();
+
+				Component component = (Component) clazz.newInstance();
+				component.setSizeFull();
+				layout.addComponent(component);
+			} else {
+				handleError(className);
+			}
+		} catch (ClassNotFoundException e) {
+			handleError(className);
+		} catch (InstantiationException e) {
+			handleError(className);
+		} catch (IllegalAccessException e) {
+			handleError(className);
+		}
+	}
+
+	private void handleError(String clazzname) {
+		layout.removeAllComponents();
+		layout.addComponent(new Label(clazzname
+				+ " is not a valid test sample!"));
+	}
+}
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/ResourceProvider.java b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/ResourceProvider.java
new file mode 100644
index 0000000..9dd2748
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/ResourceProvider.java
@@ -0,0 +1,76 @@
+ /**
+ * Copyright (c) 2011, 2014 - 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.runtime.web.ecview.presentation.vaadin.tests.ui;
+
+import java.io.IOException;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.osgi.framework.Bundle;
+import org.osgi.service.http.HttpContext;
+
+/**
+ * Resource provider is responsible to look for resources requested by the
+ * HttpService. Therefore it uses the classpath of registered bundles.
+ */
+public class ResourceProvider implements HttpContext {
+
+	private List<Bundle> resources = new ArrayList<Bundle>();
+
+	@Override
+	public URL getResource(String uri) {
+		URL resource = null;
+		// iterate over the vaadin bundles and try to find the requested
+		// resource
+		for (Bundle bundle : resources) {
+			resource = bundle.getResource(uri);
+			if (resource != null) {
+				break;
+			}
+		}
+		return resource;
+	}
+
+	/**
+	 * Adds a bundle that may potentially contain a requested resource.
+	 * 
+	 * @param bundle
+	 */
+	public void add(Bundle bundle) {
+		if(!resources.contains(bundle)){
+			resources.add(bundle);
+		}
+	}
+
+	/**
+	 * Removes a bundle that may potentially contain a requested resource.
+	 * 
+	 * @param bundle
+	 */
+	public void remove(Bundle bundle) {
+		resources.remove(bundle);
+	}
+	
+	@Override
+	public String getMimeType(String arg0) {
+		return null;
+	}
+	
+	@Override
+	public boolean handleSecurity(HttpServletRequest request,
+			HttpServletResponse response) throws IOException {
+		return true;
+	}
+}
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/AbstractBean.java b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/AbstractBean.java
new file mode 100644
index 0000000..ec4e364
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/AbstractBean.java
@@ -0,0 +1,95 @@
+/**
+ * Copyright (c) 2011, 2014 - 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.runtime.web.ecview.presentation.vaadin.tests.ui.samples;
+
+import java.beans.PropertyChangeListener;
+import java.beans.PropertyChangeSupport;
+
+/**
+ * Default implementation of value bean. Offerns {@link PropertyChangeSupport}.
+ */
+public class AbstractBean {
+	private final PropertyChangeSupport changeSupport = new PropertyChangeSupport(
+			this);
+
+	public AbstractBean() {
+	}
+
+	/**
+	 * Adds the given property change listener to the change support.
+	 * 
+	 * @param listener
+	 *            Listener to be added
+	 * @see java.beans.PropertyChangeSupport#addPropertyChangeListener(java.beans.PropertyChangeListener)
+	 */
+	public void addPropertyChangeListener(PropertyChangeListener listener) {
+		changeSupport.addPropertyChangeListener(listener);
+	}
+
+	/**
+	 * Adds the given property change listener to the change support.
+	 * 
+	 * @param property
+	 *            Name of the property
+	 * @param listener
+	 *            Listener to be added
+	 * @see java.beans.PropertyChangeSupport#addPropertyChangeListener(java.lang.String,
+	 *      java.beans.PropertyChangeListener)
+	 */
+	public void addPropertyChangeListener(String property,
+			PropertyChangeListener listener) {
+		changeSupport.addPropertyChangeListener(property, listener);
+	}
+
+	/**
+	 * Removes the given property change listener from the change support.
+	 * 
+	 * @param listener
+	 *            Listener to be removed
+	 * @see java.beans.PropertyChangeSupport#removePropertyChangeListener(java.beans.PropertyChangeListener)
+	 */
+	public void removePropertyChangeListener(PropertyChangeListener listener) {
+		changeSupport.removePropertyChangeListener(listener);
+	}
+
+	/**
+	 * Removes the given property change listener from the change support.
+	 * 
+	 * @param property
+	 *            Name of the property
+	 * @param listener
+	 *            Listener to be removed
+	 * @see java.beans.PropertyChangeSupport#removePropertyChangeListener(java.lang.String,
+	 *      java.beans.PropertyChangeListener)
+	 */
+	public void removePropertyChangeListener(String property,
+			PropertyChangeListener listener) {
+		changeSupport.removePropertyChangeListener(property, listener);
+	}
+
+	/**
+	 * Fires the property changed event.
+	 * 
+	 * @param property
+	 *            Name of the property
+	 * @param oldValue
+	 *            The old value
+	 * @param newValue
+	 *            The new value
+	 * @see java.beans.PropertyChangeSupport#firePropertyChange(String, Object,
+	 *      Object)
+	 */
+	protected void firePropertyChanged(String property, Object oldValue,
+			Object newValue) {
+		changeSupport.firePropertyChange(property, oldValue, newValue);
+	}
+
+}
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/CheckBoxSample.java b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/CheckBoxSample.java
new file mode 100644
index 0000000..2ce0830
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/CheckBoxSample.java
@@ -0,0 +1,37 @@
+/**
+ * Copyright (c) 2011, 2014 - 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.runtime.web.ecview.presentation.vaadin.tests.ui.samples;
+
+import com.vaadin.ui.CheckBox;
+import com.vaadin.ui.CssLayout;
+import com.vaadin.ui.CustomComponent;
+
+public class CheckBoxSample extends CustomComponent {
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+	private CssLayout layout;
+
+	public CheckBoxSample() {
+		layout = new CssLayout();
+		setCompositionRoot(layout);
+
+		init();
+	}
+
+	protected void init() {
+		CheckBox checkbox = new CheckBox();
+		layout.addComponent(checkbox);
+	}
+}
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/DatetimeFieldSample.java b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/DatetimeFieldSample.java
new file mode 100644
index 0000000..af07071
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/DatetimeFieldSample.java
@@ -0,0 +1,146 @@
+/**
+ * Copyright (c) 2011, 2014 - 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.runtime.web.ecview.presentation.vaadin.tests.ui.samples;
+
+import java.util.Locale;
+
+import org.eclipse.osbp.ecview.core.common.context.ContextException;
+import org.eclipse.osbp.ecview.core.common.context.IViewContext;
+import org.eclipse.osbp.ecview.core.common.model.binding.YBindingSet;
+import org.eclipse.osbp.ecview.core.common.model.core.YView;
+import org.eclipse.osbp.ecview.core.extension.model.datatypes.ExtDatatypesFactory;
+import org.eclipse.osbp.ecview.core.extension.model.datatypes.YDateTimeDatatype;
+import org.eclipse.osbp.ecview.core.extension.model.datatypes.YDateTimeFormat;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YButton;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YDateTime;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YHorizontalLayout;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YVerticalLayout;
+import org.eclipse.osbp.ecview.core.extension.model.extension.listener.YButtonClickListener;
+import org.eclipse.osbp.ecview.core.extension.model.extension.util.SimpleExtensionModelFactory;
+import org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.VaadinRenderer;
+
+import com.vaadin.ui.CssLayout;
+import com.vaadin.ui.CustomComponent;
+import com.vaadin.ui.Label;
+
+public class DatetimeFieldSample extends CustomComponent {
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+
+	private final SimpleExtensionModelFactory factory = new SimpleExtensionModelFactory();
+
+	private CssLayout layout;
+
+	private YView yView;
+
+	private YBindingSet yBindingSet;
+
+	private YVerticalLayout yLayout;
+
+	private IViewContext context;
+
+	public DatetimeFieldSample() {
+		layout = new CssLayout();
+		setCompositionRoot(layout);
+
+		init();
+	}
+
+	protected void init() {
+
+		Locale.setDefault(Locale.GERMANY);
+
+		yView = factory.createView();
+		yLayout = factory.createVerticalLayout();
+		yView.setContent(yLayout);
+
+		yBindingSet = yView.getOrCreateBindingSet();
+
+		row1();
+
+		row2();
+
+		// render now, fill in values later
+		// to avoid overwriting values with bindings to empty fields
+		VaadinRenderer renderer = new VaadinRenderer();
+		try {
+			context = renderer.render(layout, yView, null);
+		} catch (ContextException e) {
+			layout.addComponent(new Label(e.toString()));
+		}
+	}
+
+	public void row2() {
+		// test row 2
+		YHorizontalLayout row2 = factory.createHorizontalLayout();
+		yLayout.addElement(row2);
+
+		YDateTime yText2_1 = factory.createDateTime();
+		yText2_1.setLabel("date");
+		row2.addElement(yText2_1);
+		YDateTimeDatatype yDt2_2 = createDateTimeDatatype();
+		yDt2_2.setFormat(YDateTimeFormat.DATE);
+		yText2_1.setDatatype(yDt2_2);
+
+		YDateTime yText2_2 = factory.createDateTime();
+		yText2_2.setLabel("time");
+		row2.addElement(yText2_2);
+		YDateTimeDatatype yDt2_1 = createDateTimeDatatype();
+		yDt2_1.setFormat(YDateTimeFormat.TIME);
+		yText2_2.setDatatype(yDt2_1);
+
+		YDateTime yText2_3 = factory.createDateTime();
+		yText2_3.setLabel("datetime");
+		row2.addElement(yText2_3);
+		YDateTimeDatatype yDt2_3 = createDateTimeDatatype();
+		yDt2_3.setFormat(YDateTimeFormat.DATE_TIME);
+		yText2_3.setDatatype(yDt2_3);
+
+		YButton yLocaleSwitcher = factory.createButton();
+		yLocaleSwitcher.setLabel("switchLocale");
+		row2.addElement(yLocaleSwitcher);
+		yLocaleSwitcher.addClickListener(new YButtonClickListener() {
+			@Override
+			public void clicked(YButton yButton) {
+				Locale locale = context.getLocale();
+				if (locale == Locale.GERMANY) {
+					context.setLocale(Locale.US);
+				} else {
+					context.setLocale(Locale.GERMANY);
+				}
+			}
+		});
+	}
+
+	public void row1() {
+		// test row 1
+		YHorizontalLayout row1 = factory.createHorizontalLayout();
+		yLayout.addElement(row1);
+		YDateTime yText1_1 = factory.createDateTime();
+		yText1_1.setLabel("Field1");
+		YDateTime yText1_2 = factory.createDateTime();
+		yText1_2.setLabel("Field2");
+		row1.addElement(yText1_1);
+		row1.addElement(yText1_2);
+
+		yBindingSet.addBinding(yText1_1.createValueEndpoint(),
+				yText1_2.createValueEndpoint());
+	}
+
+	protected YDateTimeDatatype createDateTimeDatatype() {
+		return ExtDatatypesFactory.eINSTANCE.createYDateTimeDatatype();
+	}
+
+}
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/DecimalFieldSample.java b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/DecimalFieldSample.java
new file mode 100644
index 0000000..391679b
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/DecimalFieldSample.java
@@ -0,0 +1,148 @@
+/**
+ * Copyright (c) 2011, 2014 - 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.runtime.web.ecview.presentation.vaadin.tests.ui.samples;
+
+import java.util.Locale;
+
+import org.eclipse.osbp.ecview.core.common.context.ContextException;
+import org.eclipse.osbp.ecview.core.common.context.IViewContext;
+import org.eclipse.osbp.ecview.core.common.model.binding.YBindingSet;
+import org.eclipse.osbp.ecview.core.common.model.core.YView;
+import org.eclipse.osbp.ecview.core.extension.model.datatypes.YDecimalDatatype;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YButton;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YDecimalField;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YHorizontalLayout;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YVerticalLayout;
+import org.eclipse.osbp.ecview.core.extension.model.extension.listener.YButtonClickListener;
+import org.eclipse.osbp.ecview.core.extension.model.extension.util.SimpleExtensionModelFactory;
+import org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.VaadinRenderer;
+
+import com.vaadin.ui.CssLayout;
+import com.vaadin.ui.CustomComponent;
+import com.vaadin.ui.Label;
+
+public class DecimalFieldSample extends CustomComponent {
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+
+	private final SimpleExtensionModelFactory factory = new SimpleExtensionModelFactory();
+
+	private CssLayout layout;
+
+	private YView yView;
+
+	private YBindingSet yBindingSet;
+
+	private YVerticalLayout yLayout;
+
+	private IViewContext context;
+
+	public DecimalFieldSample() {
+		layout = new CssLayout();
+		setCompositionRoot(layout);
+
+		init();
+	}
+
+	protected void init() {
+
+		Locale.setDefault(Locale.GERMANY);
+
+		yView = factory.createView();
+		yLayout = factory.createVerticalLayout();
+		yView.setContent(yLayout);
+
+		yBindingSet = yView.getOrCreateBindingSet();
+
+		row1();
+
+		row2();
+
+		// render now, fill in values later
+		// to avoid overwriting values with bindings to empty fields
+		VaadinRenderer renderer = new VaadinRenderer();
+		try {
+			context = renderer.render(layout, yView, null);
+		} catch (ContextException e) {
+			layout.addComponent(new Label(e.toString()));
+		}
+	}
+
+	public void row2() {
+		// test row 2
+		YHorizontalLayout row2 = factory.createHorizontalLayout();
+		yLayout.addElement(row2);
+
+		YDecimalField yText2_1 = factory.createDecimalField();
+		yText2_1.setLabel("grouping false");
+		row2.addElement(yText2_1);
+		YDecimalDatatype yDt2_2 = factory.createDecimalDatatype();
+		yDt2_2.setGrouping(false);
+		yText2_1.setDatatype(yDt2_2);
+
+		YDecimalField yText2_2 = factory.createDecimalField();
+		yText2_2.setLabel("grouping true");
+		row2.addElement(yText2_2);
+		YDecimalDatatype yDt2_1 = factory.createDecimalDatatype();
+		yDt2_1.setGrouping(true);
+		yText2_2.setDatatype(yDt2_1);
+
+		YDecimalField yText2_3 = factory.createDecimalField();
+		yText2_3.setLabel("mark negative");
+		row2.addElement(yText2_3);
+		YDecimalDatatype yDt2_3 = factory.createDecimalDatatype();
+		yDt2_3.setMarkNegative(true);
+		yText2_3.setDatatype(yDt2_3);
+
+		YDecimalField yText2_4 = factory.createDecimalField();
+		yText2_4.setLabel("digits6");
+		row2.addElement(yText2_4);
+		YDecimalDatatype yDt2_4 = factory.createDecimalDatatype();
+		yDt2_4.setMarkNegative(true);
+		yDt2_4.setPrecision(6);
+		yText2_4.setDatatype(yDt2_4);
+
+		YButton yLocaleSwitcher = factory.createButton();
+		yLocaleSwitcher.setLabel("switchLocale");
+		row2.addElement(yLocaleSwitcher);
+		yLocaleSwitcher.addClickListener(new YButtonClickListener() {
+			@Override
+			public void clicked(YButton yButton) {
+				Locale locale = context.getLocale();
+				if (locale == Locale.GERMANY) {
+					context.setLocale(Locale.US);
+				} else {
+					context.setLocale(Locale.GERMANY);
+				}
+			}
+		});
+
+	}
+
+	public void row1() {
+		// test row 1
+		YHorizontalLayout row1 = factory.createHorizontalLayout();
+		yLayout.addElement(row1);
+		YDecimalField yText1_1 = factory.createDecimalField();
+		yText1_1.setLabel("Field1");
+		YDecimalField yText1_2 = factory.createDecimalField();
+		yText1_2.setLabel("Field2");
+		row1.addElement(yText1_1);
+		row1.addElement(yText1_2);
+
+		yBindingSet.addBinding(yText1_1.createValueEndpoint(),
+				yText1_2.createValueEndpoint());
+	}
+}
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/EnabledSample.java b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/EnabledSample.java
new file mode 100644
index 0000000..a958574
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/EnabledSample.java
@@ -0,0 +1,119 @@
+/**
+ * Copyright (c) 2011, 2014 - 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.runtime.web.ecview.presentation.vaadin.tests.ui.samples;
+
+import java.util.Date;
+import java.util.Locale;
+
+import org.eclipse.osbp.ecview.core.common.context.ContextException;
+import org.eclipse.osbp.ecview.core.common.context.IViewContext;
+import org.eclipse.osbp.ecview.core.common.model.binding.YBindingSet;
+import org.eclipse.osbp.ecview.core.common.model.core.YView;
+import org.eclipse.osbp.ecview.core.extension.model.datatypes.ExtDatatypesFactory;
+import org.eclipse.osbp.ecview.core.extension.model.datatypes.YDateTimeDatatype;
+import org.eclipse.osbp.ecview.core.extension.model.datatypes.YDateTimeFormat;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YButton;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YDateTime;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YHorizontalLayout;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YTextField;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YVerticalLayout;
+import org.eclipse.osbp.ecview.core.extension.model.extension.listener.YButtonClickListener;
+import org.eclipse.osbp.ecview.core.extension.model.extension.util.SimpleExtensionModelFactory;
+import org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.VaadinRenderer;
+
+import com.vaadin.ui.CssLayout;
+import com.vaadin.ui.CustomComponent;
+import com.vaadin.ui.Label;
+
+public class EnabledSample extends CustomComponent {
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+
+	private final SimpleExtensionModelFactory factory = new SimpleExtensionModelFactory();
+
+	private CssLayout layout;
+
+	private YView yView;
+
+	private YBindingSet yBindingSet;
+
+	private YVerticalLayout yLayout;
+
+	private IViewContext context;
+
+	public EnabledSample() {
+		layout = new CssLayout();
+		setCompositionRoot(layout);
+
+		init();
+	}
+
+	protected void init() {
+
+		Locale.setDefault(Locale.GERMANY);
+
+		yView = factory.createView();
+		yLayout = factory.createVerticalLayout();
+		yView.setContent(yLayout);
+
+		yBindingSet = yView.getOrCreateBindingSet();
+
+		row2();
+
+		// render now, fill in values later
+		// to avoid overwriting values with bindings to empty fields
+		VaadinRenderer renderer = new VaadinRenderer();
+		try {
+			context = renderer.render(layout, yView, null);
+		} catch (ContextException e) {
+			layout.addComponent(new Label(e.toString()));
+		}
+	}
+
+	public void row2() {
+		// test row 2
+		YHorizontalLayout row2 = factory.createHorizontalLayout();
+		yLayout.addElement(row2);
+
+		final YTextField yText = factory.createTextField();
+		yText.setLabel("text");
+		yText.setValue("Huhu");
+		row2.addElement(yText);
+
+		final YDateTime yDate = factory.createDateTime();
+		yDate.setLabel("time");
+		yDate.setValue(new Date());
+		row2.addElement(yDate);
+		YDateTimeDatatype yDt2_1 = createDateTimeDatatype();
+		yDt2_1.setFormat(YDateTimeFormat.TIME);
+		yDate.setDatatype(yDt2_1);
+
+		YButton yLocaleSwitcher = factory.createButton();
+		yLocaleSwitcher.setLabel("enable");
+		row2.addElement(yLocaleSwitcher);
+		yLocaleSwitcher.addClickListener(new YButtonClickListener() {
+			@Override
+			public void clicked(YButton yButton) {
+				yText.setEnabled(!yText.isEnabled());
+				yDate.setEnabled(!yDate.isEnabled());
+			}
+		});
+	}
+
+	protected YDateTimeDatatype createDateTimeDatatype() {
+		return ExtDatatypesFactory.eINSTANCE.createYDateTimeDatatype();
+	}
+
+}
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/ExecutableSample.java b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/ExecutableSample.java
new file mode 100644
index 0000000..34ac4d9
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/ExecutableSample.java
@@ -0,0 +1,122 @@
+/**
+ * Copyright (c) 2011, 2014 - 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.runtime.web.ecview.presentation.vaadin.tests.ui.samples;
+
+import org.eclipse.osbp.ecview.core.common.context.ContextException;
+import org.eclipse.osbp.ecview.core.common.context.IViewContext;
+import org.eclipse.osbp.ecview.core.common.model.binding.YBindingSet;
+import org.eclipse.osbp.ecview.core.common.model.core.YView;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YButton;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YHorizontalLayout;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YTextField;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YVerticalLayout;
+import org.eclipse.osbp.ecview.core.extension.model.extension.listener.YButtonClickListener;
+import org.eclipse.osbp.ecview.core.extension.model.extension.util.SimpleExtensionModelFactory;
+import org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.VaadinRenderer;
+
+import com.vaadin.ui.CssLayout;
+import com.vaadin.ui.CustomComponent;
+import com.vaadin.ui.Label;
+
+public class ExecutableSample extends CustomComponent {
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+
+	private final SimpleExtensionModelFactory factory = new SimpleExtensionModelFactory();
+
+	private CssLayout layout;
+
+	private YView yView;
+
+	private YBindingSet yBindingSet;
+
+	private YVerticalLayout yLayout;
+
+	private IViewContext context;
+
+	private YTextField yText;
+
+	public ExecutableSample() {
+		layout = new CssLayout();
+		setCompositionRoot(layout);
+
+		init();
+	}
+
+	protected void init() {
+
+		// TODO - fix me FP
+
+		yView = factory.createView();
+		yLayout = factory.createVerticalLayout();
+		yView.setContent(yLayout);
+
+		yBindingSet = yView.getOrCreateBindingSet();
+
+		row1();
+
+		// render now, fill in values later
+		// to avoid overwriting values with bindings to empty fields
+		VaadinRenderer renderer = new VaadinRenderer();
+		try {
+			context = renderer.render(layout, yView, null);
+		} catch (ContextException e) {
+			layout.addComponent(new Label(e.toString()));
+		}
+	}
+
+	public void row1() {
+		// test row 1
+		YHorizontalLayout row1 = factory.createHorizontalLayout();
+		yLayout.addElement(row1);
+		yText = factory.createTextField();
+		yText.setLabel("ExecType");
+		row1.addElement(yText);
+
+		YButton ySyncRunner = factory.createButton();
+		ySyncRunner.setLabel("exec");
+		row1.addElement(ySyncRunner);
+		ySyncRunner.addClickListener(new YButtonClickListener() {
+			@Override
+			public void clicked(YButton yButton) {
+				context.exec(new Runnable() {
+					@Override
+					public void run() {
+						yText.setValue("exec");
+					}
+				});
+			}
+		});
+
+		YButton yAsyncRunner = factory.createButton();
+		yAsyncRunner.setLabel("asyncexec");
+		row1.addElement(yAsyncRunner);
+		yAsyncRunner.addClickListener(new YButtonClickListener() {
+			@Override
+			public void clicked(YButton yButton) {
+				context.execAsync(new Runnable() {
+					@Override
+					public void run() {
+						try {
+							Thread.sleep(2500);
+						} catch (InterruptedException e) {
+						}
+						yText.setValue("asyncexec");
+					}
+				});
+			}
+		});
+	}
+}
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/ListSelectSample.java b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/ListSelectSample.java
new file mode 100644
index 0000000..2a403d1
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/ListSelectSample.java
@@ -0,0 +1,154 @@
+/**
+ * Copyright (c) 2011, 2014 - 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.runtime.web.ecview.presentation.vaadin.tests.ui.samples;
+
+import org.eclipse.osbp.ecview.core.common.context.ContextException;
+import org.eclipse.osbp.ecview.core.common.model.binding.YBindingSet;
+import org.eclipse.osbp.ecview.core.common.model.core.YView;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YHorizontalLayout;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YLabel;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YList;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YSelectionType;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YVerticalLayout;
+import org.eclipse.osbp.ecview.core.extension.model.extension.util.SimpleExtensionModelFactory;
+import org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.VaadinRenderer;
+
+import com.vaadin.ui.CssLayout;
+import com.vaadin.ui.CustomComponent;
+import com.vaadin.ui.Label;
+
+public class ListSelectSample extends CustomComponent {
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+
+	private final SimpleExtensionModelFactory factory = new SimpleExtensionModelFactory();
+
+	private CssLayout layout;
+
+	private YView yView;
+
+	private YBindingSet yBindingSet;
+
+	private YVerticalLayout yLayout;
+
+	public ListSelectSample() {
+		layout = new CssLayout();
+		setCompositionRoot(layout);
+
+		init();
+	}
+
+	protected void init() {
+
+		// TODO - fix me FP
+
+		yView = factory.createView();
+		yLayout = factory.createVerticalLayout();
+		yView.setContent(yLayout);
+
+		yBindingSet = yView.getOrCreateBindingSet();
+
+		row1();
+
+		row2();
+
+		// render now, fill in values later
+		// to avoid overwriting values with bindings to empty fields
+		VaadinRenderer renderer = new VaadinRenderer();
+		try {
+			renderer.render(layout, yView, null);
+		} catch (ContextException e) {
+			layout.addComponent(new Label(e.toString()));
+		}
+	}
+
+	// public void row2() {
+	// // test row 2
+	// YHorizontalLayout row2 = factory.createHorizontalLayout();
+	// yLayout.addElement(row2);
+	//
+	// YList yList2_1 = factory.createList();
+	// yList2_1.setLabel("minLength 3");
+	// row2.addElement(yList2_1);
+	//
+	// YList yList2_2 = factory.createList();
+	// yList2_2.setLabel("maxLength 10:");
+	// row2.addElement(yList2_2);
+	//
+	// YList yList2_3 = factory.createList();
+	// yList2_3.setLabel("regexp: \\d+");
+	// row2.addElement(yList2_3);
+	// }
+
+	public void row1() {
+		// test row 1
+		YHorizontalLayout row1 = factory.createHorizontalLayout();
+		yLayout.addElement(row1);
+
+		YLabel label = factory.createLabel();
+		label.setLabel("SingleSelection");
+		row1.addElement(label);
+		YList yList1_1 = factory.createList();
+		yList1_1.setId("Field1");
+		yList1_1.setLabel("Field1");
+		yList1_1.setType(String.class);
+		YList yList1_2 = factory.createList();
+		yList1_2.setId("Field2");
+		yList1_2.setLabel("Field2");
+		yList1_2.setType(String.class);
+		row1.addElement(yList1_1);
+		row1.addElement(yList1_2);
+
+		yList1_2.getCollection().add("Sabrina");
+		yList1_2.getCollection().add("Klemens");
+		yList1_2.getCollection().add("Flo");
+
+		yBindingSet.addBinding(yList1_1.createCollectionEndpoint(),
+				yList1_2.createCollectionEndpoint());
+		yBindingSet.addBinding(yList1_1.createSelectionEndpoint(),
+				yList1_2.createSelectionEndpoint());
+	}
+
+	public void row2() {
+		// test row 2
+		YHorizontalLayout row1 = factory.createHorizontalLayout();
+		yLayout.addElement(row1);
+
+		YLabel label = factory.createLabel();
+		label.setLabel("Multi Selection");
+		row1.addElement(label);
+		YList yList1_1 = factory.createList();
+		yList1_1.setId("Field3");
+		yList1_1.setLabel("Field3");
+		yList1_1.setType(String.class);
+		yList1_1.setSelectionType(YSelectionType.MULTI);
+		YList yList1_2 = factory.createList();
+		yList1_2.setId("Field4");
+		yList1_2.setLabel("Field4");
+		yList1_2.setType(String.class);
+		yList1_2.setSelectionType(YSelectionType.MULTI);
+		row1.addElement(yList1_1);
+		row1.addElement(yList1_2);
+
+		yList1_2.getCollection().add("Sabrina");
+		yList1_2.getCollection().add("Klemens");
+		yList1_2.getCollection().add("Flo");
+
+		yBindingSet.addBinding(yList1_1.createCollectionEndpoint(),
+				yList1_2.createCollectionEndpoint());
+		yBindingSet.addBinding(yList1_1.createMultiSelectionEndpoint(),
+				yList1_2.createMultiSelectionEndpoint());
+	}
+}
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/MasterDetailSample.java b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/MasterDetailSample.java
new file mode 100644
index 0000000..2394440
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/MasterDetailSample.java
@@ -0,0 +1,229 @@
+/**
+ * Copyright (c) 2011, 2014 - 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.runtime.web.ecview.presentation.vaadin.tests.ui.samples;
+
+import org.eclipse.osbp.ecview.core.common.context.ContextException;
+import org.eclipse.osbp.ecview.core.common.model.binding.BindingFactory;
+import org.eclipse.osbp.ecview.core.common.model.binding.YBindingSet;
+import org.eclipse.osbp.ecview.core.common.model.binding.YDetailValueBindingEndpoint;
+import org.eclipse.osbp.ecview.core.common.model.binding.YEnumListBindingEndpoint;
+import org.eclipse.osbp.ecview.core.common.model.core.YEmbeddableSelectionEndpoint;
+import org.eclipse.osbp.ecview.core.common.model.core.YView;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YCheckBox;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YComboBox;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YGridLayout;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YNumericField;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YTable;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YTextField;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YVerticalLayout;
+import org.eclipse.osbp.ecview.core.extension.model.extension.util.SimpleExtensionModelFactory;
+import org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.VaadinRenderer;
+
+import com.vaadin.ui.CssLayout;
+import com.vaadin.ui.CustomComponent;
+import com.vaadin.ui.Label;
+
+public class MasterDetailSample extends CustomComponent {
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+
+	private final SimpleExtensionModelFactory factory = new SimpleExtensionModelFactory();
+
+	private CssLayout layout;
+
+	private YView yView;
+
+	private YBindingSet yBindingSet;
+
+	private YVerticalLayout yLayout;
+
+	public MasterDetailSample() {
+		layout = new CssLayout();
+		setCompositionRoot(layout);
+
+		init();
+	}
+
+	protected void init() {
+
+		// TODO - fix me FP
+
+		yView = factory.createView();
+		yLayout = factory.createVerticalLayout();
+		yView.setContent(yLayout);
+
+		yBindingSet = yView.getOrCreateBindingSet();
+
+		YVerticalLayout row1 = factory.createVerticalLayout();
+		yLayout.addElement(row1);
+
+		YTable yTable1_1 = factory.createTable();
+		yTable1_1.setLabel("Master");
+		yTable1_1.setType(Person.class);
+		row1.addElement(yTable1_1);
+
+		yTable1_1.getCollection().add(
+				new Person("Sabrina", 21, "1220", "Am Nordseeteich", false,
+						Gender.FEMALE));
+		yTable1_1.getCollection().add(
+				new Person("Klemens", 36, "1220", "Irgendwo hinterm Ort", true,
+						Gender.MALE));
+		yTable1_1.getCollection().add(
+				new Person("Flo", 35, "2301", "Hinterm Mond", false,
+						Gender.MALE));
+
+		YGridLayout yGrid = factory.createGridLayout();
+		yLayout.addElement(yGrid);
+
+		YTextField name = factory.createTextField();
+		name.setLabel("Name");
+		yGrid.addElement(name);
+
+		YNumericField age = factory.createNumericField();
+		age.setLabel("Age");
+		yGrid.addElement(age);
+
+		YTextField postalcode = factory.createTextField();
+		postalcode.setLabel("Postalcode");
+		yGrid.addElement(postalcode);
+
+		YTextField street = factory.createTextField();
+		street.setLabel("Street");
+		yGrid.addElement(street);
+
+		YCheckBox hasChild = factory.createCheckBox();
+		hasChild.setLabel("Has child");
+		yGrid.addElement(hasChild);
+
+		YComboBox gender = factory.createComboBox();
+		gender.setLabel("Gender");
+		gender.setType(Gender.class);
+		yGrid.addElement(gender);
+
+		// render now, fill in values later
+		// to avoid overwriting values with bindings to empty fields
+		VaadinRenderer renderer = new VaadinRenderer();
+		try {
+			renderer.render(layout, yView, null);
+		} catch (ContextException e) {
+			layout.addComponent(new Label(e.toString()));
+		}
+
+		yBindingSet.addBinding(name.createValueEndpoint(),
+				selectionEndpoint(yTable1_1, "name"));
+		yBindingSet.addBinding(age.createValueEndpoint(),
+				selectionEndpoint(yTable1_1, "age"));
+		yBindingSet.addBinding(postalcode.createValueEndpoint(),
+				selectionEndpoint(yTable1_1, "postalcode"));
+		yBindingSet.addBinding(street.createValueEndpoint(),
+				selectionEndpoint(yTable1_1, "street"));
+		yBindingSet.addBinding(hasChild.createValueEndpoint(),
+				selectionEndpoint(yTable1_1, "hasChild"));
+		yBindingSet.addBinding(gender.createSelectionEndpoint(),
+				selectionEndpoint(yTable1_1, "gender"));
+		YEnumListBindingEndpoint enumBinding = BindingFactory.eINSTANCE
+				.createYEnumListBindingEndpoint();
+		enumBinding.setEnum(Gender.class);
+		yBindingSet.addBinding(gender.createCollectionEndpoint(), enumBinding);
+	}
+
+	protected YDetailValueBindingEndpoint selectionEndpoint(YTable yTable1_1,
+			String path) {
+		YEmbeddableSelectionEndpoint result = yTable1_1
+				.createSelectionEndpoint();
+		YDetailValueBindingEndpoint detailBinding = BindingFactory.eINSTANCE
+				.createYDetailValueBindingEndpoint();
+		detailBinding.setMasterObservable(result);
+		detailBinding.setPropertyPath(path);
+		detailBinding.setType(Person.class);
+
+		return detailBinding;
+	}
+
+	public static class Person extends AbstractBean {
+
+		private String name;
+		private int age;
+		private String postalcode;
+		private String street;
+		private boolean hasChild;
+		private Gender gender;
+
+		public Person(String name, int age, String postalcode, String street,
+				boolean hasChild, Gender gender) {
+			super();
+			this.name = name;
+			this.age = age;
+			this.postalcode = postalcode;
+			this.street = street;
+			this.hasChild = hasChild;
+			this.gender = gender;
+		}
+
+		public String getName() {
+			return name;
+		}
+
+		public void setName(String name) {
+			firePropertyChanged("name", this.name, this.name = name);
+		}
+
+		public int getAge() {
+			return age;
+		}
+
+		public void setAge(int age) {
+			firePropertyChanged("age", this.age, this.age = age);
+		}
+
+		public String getPostalcode() {
+			return postalcode;
+		}
+
+		public void setPostalcode(String postalcode) {
+			firePropertyChanged("postalcode", this.postalcode,
+					this.postalcode = postalcode);
+		}
+
+		public String getStreet() {
+			return street;
+		}
+
+		public void setStreet(String street) {
+			firePropertyChanged("street", this.street, this.street = street);
+		}
+
+		public boolean isHasChild() {
+			return hasChild;
+		}
+
+		public void setHasChild(boolean hasChild) {
+			firePropertyChanged("hasChild", this.hasChild,
+					this.hasChild = hasChild);
+		}
+
+		public Gender getGender() {
+			return gender;
+		}
+
+		public void setGender(Gender gender) {
+			firePropertyChanged("gender", this.gender, this.gender = gender);
+		}
+	}
+
+	public static enum Gender {
+		MALE, FEMALE
+	}
+}
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/NumericFieldSample.java b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/NumericFieldSample.java
new file mode 100644
index 0000000..bf75e96
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/NumericFieldSample.java
@@ -0,0 +1,115 @@
+/**
+ * Copyright (c) 2011, 2014 - 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.runtime.web.ecview.presentation.vaadin.tests.ui.samples;
+
+import org.eclipse.osbp.ecview.core.common.context.ContextException;
+import org.eclipse.osbp.ecview.core.common.model.binding.YBindingSet;
+import org.eclipse.osbp.ecview.core.common.model.core.YView;
+import org.eclipse.osbp.ecview.core.extension.model.datatypes.YNumericDatatype;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YHorizontalLayout;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YNumericField;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YVerticalLayout;
+import org.eclipse.osbp.ecview.core.extension.model.extension.util.SimpleExtensionModelFactory;
+import org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.VaadinRenderer;
+
+import com.vaadin.ui.CssLayout;
+import com.vaadin.ui.CustomComponent;
+import com.vaadin.ui.Label;
+
+public class NumericFieldSample extends CustomComponent {
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+
+	private final SimpleExtensionModelFactory factory = new SimpleExtensionModelFactory();
+
+	private CssLayout layout;
+
+	private YView yView;
+
+	private YBindingSet yBindingSet;
+
+	private YVerticalLayout yLayout;
+
+	public NumericFieldSample() {
+		layout = new CssLayout();
+		setCompositionRoot(layout);
+
+		init();
+	}
+
+	protected void init() {
+
+		yView = factory.createView();
+		yLayout = factory.createVerticalLayout();
+		yView.setContent(yLayout);
+
+		yBindingSet = yView.getOrCreateBindingSet();
+
+		row1();
+
+		row2();
+
+		// render now, fill in values later
+		// to avoid overwriting values with bindings to empty fields
+		VaadinRenderer renderer = new VaadinRenderer();
+		try {
+			renderer.render(layout, yView, null);
+		} catch (ContextException e) {
+			layout.addComponent(new Label(e.toString()));
+		}
+	}
+	
+	public void row2() {
+		// test row 2
+		YHorizontalLayout row2 = factory.createHorizontalLayout();
+		yLayout.addElement(row2);
+
+		YNumericField yText2_1 = factory.createNumericField();
+		yText2_1.setLabel("grouping false");
+		row2.addElement(yText2_1);
+		YNumericDatatype yDt2_2 = factory.createNumericDatatype();
+		yDt2_2.setGrouping(false);
+		yText2_1.setDatatype(yDt2_2);
+
+		YNumericField yText2_2 = factory.createNumericField();
+		yText2_2.setLabel("grouping true");
+		row2.addElement(yText2_2);
+		YNumericDatatype yDt2_1 = factory.createNumericDatatype();
+		yDt2_1.setGrouping(true);
+		yText2_2.setDatatype(yDt2_1);
+
+		YNumericField yText2_3 = factory.createNumericField();
+		yText2_3.setLabel("mark negative");
+		row2.addElement(yText2_3);
+		YNumericDatatype yDt2_3 = factory.createNumericDatatype();
+		yDt2_3.setMarkNegative(true);
+		yText2_3.setDatatype(yDt2_3);
+	}
+
+	public void row1() {
+		// test row 1
+		YHorizontalLayout row1 = factory.createHorizontalLayout();
+		yLayout.addElement(row1);
+		YNumericField yText1_1 = factory.createNumericField();
+		yText1_1.setLabel("Field1");
+		YNumericField yText1_2 = factory.createNumericField();
+		yText1_2.setLabel("Field2");
+		row1.addElement(yText1_1);
+		row1.addElement(yText1_2);
+
+		yBindingSet.addBinding(yText1_1.createValueEndpoint(),
+				yText1_2.createValueEndpoint());
+	}
+}
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/OptionsGroupSample.java b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/OptionsGroupSample.java
new file mode 100644
index 0000000..3080f82
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/OptionsGroupSample.java
@@ -0,0 +1,154 @@
+/**
+ * Copyright (c) 2011, 2014 - 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.runtime.web.ecview.presentation.vaadin.tests.ui.samples;
+
+import org.eclipse.osbp.ecview.core.common.context.ContextException;
+import org.eclipse.osbp.ecview.core.common.model.binding.YBindingSet;
+import org.eclipse.osbp.ecview.core.common.model.core.YView;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YHorizontalLayout;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YLabel;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YOptionsGroup;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YSelectionType;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YVerticalLayout;
+import org.eclipse.osbp.ecview.core.extension.model.extension.util.SimpleExtensionModelFactory;
+import org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.VaadinRenderer;
+
+import com.vaadin.ui.CssLayout;
+import com.vaadin.ui.CustomComponent;
+import com.vaadin.ui.Label;
+
+public class OptionsGroupSample extends CustomComponent {
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+
+	private final SimpleExtensionModelFactory factory = new SimpleExtensionModelFactory();
+
+	private CssLayout layout;
+
+	private YView yView;
+
+	private YBindingSet yBindingSet;
+
+	private YVerticalLayout yLayout;
+
+	public OptionsGroupSample() {
+		layout = new CssLayout();
+		setCompositionRoot(layout);
+
+		init();
+	}
+
+	protected void init() {
+
+		// TODO - fix me FP
+
+		yView = factory.createView();
+		yLayout = factory.createVerticalLayout();
+		yView.setContent(yLayout);
+
+		yBindingSet = yView.getOrCreateBindingSet();
+
+		row1();
+
+		row2();
+
+		// render now, fill in values later
+		// to avoid overwriting values with bindings to empty fields
+		VaadinRenderer renderer = new VaadinRenderer();
+		try {
+			renderer.render(layout, yView, null);
+		} catch (ContextException e) {
+			layout.addComponent(new Label(e.toString()));
+		}
+	}
+
+	// public void row2() {
+	// // test row 2
+	// YHorizontalLayout row2 = factory.createHorizontalLayout();
+	// yLayout.addElement(row2);
+	//
+	// YOptionsGroup yOptionsGroup2_1 = factory.createOptionsGroup();
+	// yOptionsGroup2_1.setLabel("minLength 3");
+	// row2.addElement(yOptionsGroup2_1);
+	//
+	// YOptionsGroup yOptionsGroup2_2 = factory.createOptionsGroup();
+	// yOptionsGroup2_2.setLabel("maxLength 10:");
+	// row2.addElement(yOptionsGroup2_2);
+	//
+	// YOptionsGroup yOptionsGroup2_3 = factory.createOptionsGroup();
+	// yOptionsGroup2_3.setLabel("regexp: \\d+");
+	// row2.addElement(yOptionsGroup2_3);
+	// }
+
+	public void row1() {
+		// test row 1
+		YHorizontalLayout row1 = factory.createHorizontalLayout();
+		yLayout.addElement(row1);
+
+		YLabel label = factory.createLabel();
+		label.setLabel("SingleSelection");
+		row1.addElement(label);
+		YOptionsGroup yOptionsGroup1_1 = factory.createOptionsGroup();
+		yOptionsGroup1_1.setId("Field1");
+		yOptionsGroup1_1.setLabel("Field1");
+		yOptionsGroup1_1.setType(String.class);
+		YOptionsGroup yOptionsGroup1_2 = factory.createOptionsGroup();
+		yOptionsGroup1_2.setId("Field2");
+		yOptionsGroup1_2.setLabel("Field2");
+		yOptionsGroup1_2.setType(String.class);
+		row1.addElement(yOptionsGroup1_1);
+		row1.addElement(yOptionsGroup1_2);
+
+		yOptionsGroup1_2.getCollection().add("Sabrina");
+		yOptionsGroup1_2.getCollection().add("Klemens");
+		yOptionsGroup1_2.getCollection().add("Flo");
+
+		yBindingSet.addBinding(yOptionsGroup1_1.createCollectionEndpoint(),
+				yOptionsGroup1_2.createCollectionEndpoint());
+		yBindingSet.addBinding(yOptionsGroup1_1.createSelectionEndpoint(),
+				yOptionsGroup1_2.createSelectionEndpoint());
+	}
+
+	public void row2() {
+		// test row 2
+		YHorizontalLayout row1 = factory.createHorizontalLayout();
+		yLayout.addElement(row1);
+
+		YLabel label = factory.createLabel();
+		label.setLabel("Multi Selection");
+		row1.addElement(label);
+		YOptionsGroup yOptionsGroup1_1 = factory.createOptionsGroup();
+		yOptionsGroup1_1.setId("Field3");
+		yOptionsGroup1_1.setLabel("Field3");
+		yOptionsGroup1_1.setType(String.class);
+		yOptionsGroup1_1.setSelectionType(YSelectionType.MULTI);
+		YOptionsGroup yOptionsGroup1_2 = factory.createOptionsGroup();
+		yOptionsGroup1_2.setId("Field4");
+		yOptionsGroup1_2.setLabel("Field4");
+		yOptionsGroup1_2.setType(String.class);
+		yOptionsGroup1_2.setSelectionType(YSelectionType.MULTI);
+		row1.addElement(yOptionsGroup1_1);
+		row1.addElement(yOptionsGroup1_2);
+
+		yOptionsGroup1_2.getCollection().add("Sabrina");
+		yOptionsGroup1_2.getCollection().add("Klemens");
+		yOptionsGroup1_2.getCollection().add("Flo");
+
+		yBindingSet.addBinding(yOptionsGroup1_1.createCollectionEndpoint(),
+				yOptionsGroup1_2.createCollectionEndpoint());
+		yBindingSet.addBinding(yOptionsGroup1_1.createMultiSelectionEndpoint(),
+				yOptionsGroup1_2.createMultiSelectionEndpoint());
+	}
+}
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/ReadonlySample.java b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/ReadonlySample.java
new file mode 100644
index 0000000..0433d92
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/ReadonlySample.java
@@ -0,0 +1,119 @@
+/**
+ * Copyright (c) 2011, 2014 - 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.runtime.web.ecview.presentation.vaadin.tests.ui.samples;
+
+import java.util.Date;
+import java.util.Locale;
+
+import org.eclipse.osbp.ecview.core.common.context.ContextException;
+import org.eclipse.osbp.ecview.core.common.context.IViewContext;
+import org.eclipse.osbp.ecview.core.common.model.binding.YBindingSet;
+import org.eclipse.osbp.ecview.core.common.model.core.YView;
+import org.eclipse.osbp.ecview.core.extension.model.datatypes.ExtDatatypesFactory;
+import org.eclipse.osbp.ecview.core.extension.model.datatypes.YDateTimeDatatype;
+import org.eclipse.osbp.ecview.core.extension.model.datatypes.YDateTimeFormat;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YButton;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YDateTime;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YHorizontalLayout;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YTextField;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YVerticalLayout;
+import org.eclipse.osbp.ecview.core.extension.model.extension.listener.YButtonClickListener;
+import org.eclipse.osbp.ecview.core.extension.model.extension.util.SimpleExtensionModelFactory;
+import org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.VaadinRenderer;
+
+import com.vaadin.ui.CssLayout;
+import com.vaadin.ui.CustomComponent;
+import com.vaadin.ui.Label;
+
+public class ReadonlySample extends CustomComponent {
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+
+	private final SimpleExtensionModelFactory factory = new SimpleExtensionModelFactory();
+
+	private CssLayout layout;
+
+	private YView yView;
+
+	private YBindingSet yBindingSet;
+
+	private YVerticalLayout yLayout;
+
+	private IViewContext context;
+
+	public ReadonlySample() {
+		layout = new CssLayout();
+		setCompositionRoot(layout);
+
+		init();
+	}
+
+	protected void init() {
+
+		Locale.setDefault(Locale.GERMANY);
+
+		yView = factory.createView();
+		yLayout = factory.createVerticalLayout();
+		yView.setContent(yLayout);
+
+		yBindingSet = yView.getOrCreateBindingSet();
+
+		row2();
+
+		// render now, fill in values later
+		// to avoid overwriting values with bindings to empty fields
+		VaadinRenderer renderer = new VaadinRenderer();
+		try {
+			context = renderer.render(layout, yView, null);
+		} catch (ContextException e) {
+			layout.addComponent(new Label(e.toString()));
+		}
+	}
+
+	public void row2() {
+		// test row 2
+		YHorizontalLayout row2 = factory.createHorizontalLayout();
+		yLayout.addElement(row2);
+
+		final YTextField yText = factory.createTextField();
+		yText.setLabel("text");
+		yText.setValue("Huhu");
+		row2.addElement(yText);
+
+		final YDateTime yDate = factory.createDateTime();
+		yDate.setLabel("time");
+		yDate.setValue(new Date());
+		row2.addElement(yDate);
+		YDateTimeDatatype yDt2_1 = createDateTimeDatatype();
+		yDt2_1.setFormat(YDateTimeFormat.TIME);
+		yDate.setDatatype(yDt2_1);
+
+		YButton yLocaleSwitcher = factory.createButton();
+		yLocaleSwitcher.setLabel("readonly");
+		row2.addElement(yLocaleSwitcher);
+		yLocaleSwitcher.addClickListener(new YButtonClickListener() {
+			@Override
+			public void clicked(YButton yButton) {
+				yText.setEditable(!yText.isEditable());
+				yDate.setEditable(!yDate.isEditable());
+			}
+		});
+	}
+
+	protected YDateTimeDatatype createDateTimeDatatype() {
+		return ExtDatatypesFactory.eINSTANCE.createYDateTimeDatatype();
+	}
+
+}
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/TableSample.java b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/TableSample.java
new file mode 100644
index 0000000..eb0e43a
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/TableSample.java
@@ -0,0 +1,172 @@
+/**
+ * Copyright (c) 2011, 2014 - 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.runtime.web.ecview.presentation.vaadin.tests.ui.samples;
+
+import org.eclipse.osbp.ecview.core.common.context.ContextException;
+import org.eclipse.osbp.ecview.core.common.model.binding.YBindingSet;
+import org.eclipse.osbp.ecview.core.common.model.core.YView;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YHorizontalLayout;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YLabel;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YSelectionType;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YTable;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YVerticalLayout;
+import org.eclipse.osbp.ecview.core.extension.model.extension.util.SimpleExtensionModelFactory;
+import org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.VaadinRenderer;
+
+import com.vaadin.ui.CssLayout;
+import com.vaadin.ui.CustomComponent;
+import com.vaadin.ui.Label;
+
+public class TableSample extends CustomComponent {
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+
+	private final SimpleExtensionModelFactory factory = new SimpleExtensionModelFactory();
+
+	private CssLayout layout;
+
+	private YView yView;
+
+	private YBindingSet yBindingSet;
+
+	private YVerticalLayout yLayout;
+
+	public TableSample() {
+		layout = new CssLayout();
+		setCompositionRoot(layout);
+
+		init();
+	}
+
+	protected void init() {
+
+		// TODO - fix me FP
+
+		yView = factory.createView();
+		yLayout = factory.createVerticalLayout();
+		yView.setContent(yLayout);
+
+		yBindingSet = yView.getOrCreateBindingSet();
+
+		row1();
+
+		row2();
+
+		// render now, fill in values later
+		// to avoid overwriting values with bindings to empty fields
+		VaadinRenderer renderer = new VaadinRenderer();
+		try {
+			renderer.render(layout, yView, null);
+		} catch (ContextException e) {
+			layout.addComponent(new Label(e.toString()));
+		}
+	}
+
+	// public void row2() {
+	// // test row 2
+	// YHorizontalLayout row2 = factory.createHorizontalLayout();
+	// yLayout.addElement(row2);
+	//
+	// YTable yTable2_1 = factory.createTable();
+	// yTable2_1.setLabel("minLength 3");
+	// row2.addElement(yTable2_1);
+	//
+	// YTable yTable2_2 = factory.createTable();
+	// yTable2_2.setLabel("maxLength 10:");
+	// row2.addElement(yTable2_2);
+	//
+	// YTable yTable2_3 = factory.createTable();
+	// yTable2_3.setLabel("regexp: \\d+");
+	// row2.addElement(yTable2_3);
+	// }
+
+	public void row1() {
+		// test row 1
+		YHorizontalLayout row1 = factory.createHorizontalLayout();
+		yLayout.addElement(row1);
+
+		YLabel label = factory.createLabel();
+		label.setLabel("SingleSelection");
+		row1.addElement(label);
+		YTable yTable1_1 = factory.createTable();
+		yTable1_1.setId("Field1");
+		yTable1_1.setLabel("Field1");
+		yTable1_1.setType(Bean.class);
+		YTable yTable1_2 = factory.createTable();
+		yTable1_2.setId("Field2");
+		yTable1_2.setLabel("Field2");
+		yTable1_2.setType(Bean.class);
+		row1.addElement(yTable1_1);
+		row1.addElement(yTable1_2);
+
+		yTable1_2.getCollection().add(new Bean("Sabrina"));
+		yTable1_2.getCollection().add(new Bean("Klemens"));
+		yTable1_2.getCollection().add(new Bean("Flo"));
+
+		yBindingSet.addBinding(yTable1_1.createCollectionEndpoint(),
+				yTable1_2.createCollectionEndpoint());
+		yBindingSet.addBinding(yTable1_1.createSelectionEndpoint(),
+				yTable1_2.createSelectionEndpoint());
+	}
+
+	public void row2() {
+		// test row 2
+		YHorizontalLayout row1 = factory.createHorizontalLayout();
+		yLayout.addElement(row1);
+
+		YLabel label = factory.createLabel();
+		label.setLabel("Multi Selection");
+		row1.addElement(label);
+		YTable yTable1_1 = factory.createTable();
+		yTable1_1.setId("Field3");
+		yTable1_1.setLabel("Field3");
+		yTable1_1.setType(Bean.class);
+		yTable1_1.setSelectionType(YSelectionType.MULTI);
+		YTable yTable1_2 = factory.createTable();
+		yTable1_2.setId("Field4");
+		yTable1_2.setLabel("Field4");
+		yTable1_2.setType(Bean.class);
+		yTable1_2.setSelectionType(YSelectionType.MULTI);
+		row1.addElement(yTable1_1);
+		row1.addElement(yTable1_2);
+
+		yTable1_2.getCollection().add(new Bean("Sabrina"));
+		yTable1_2.getCollection().add(new Bean("Klemens"));
+		yTable1_2.getCollection().add(new Bean("Flo"));
+
+		yBindingSet.addBinding(yTable1_1.createCollectionEndpoint(),
+				yTable1_2.createCollectionEndpoint());
+		yBindingSet.addBinding(yTable1_1.createMultiSelectionEndpoint(),
+				yTable1_2.createMultiSelectionEndpoint());
+	}
+
+	public static final class Bean {
+		private String name;
+
+		public Bean(String name) {
+			super();
+			this.name = name;
+		}
+
+		public String getName() {
+			return name;
+		}
+
+		public void setName(String name) {
+			this.name = name;
+		}
+
+	}
+}
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/TabsheetSample.java b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/TabsheetSample.java
new file mode 100644
index 0000000..0ee8195
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/TabsheetSample.java
@@ -0,0 +1,105 @@
+/**
+ * Copyright (c) 2011, 2014 - 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.runtime.web.ecview.presentation.vaadin.tests.ui.samples;
+
+import org.eclipse.osbp.ecview.core.common.context.ContextException;
+import org.eclipse.osbp.ecview.core.common.model.binding.YBindingSet;
+import org.eclipse.osbp.ecview.core.common.model.core.YView;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YTab;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YTabSheet;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YTextField;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YVerticalLayout;
+import org.eclipse.osbp.ecview.core.extension.model.extension.util.SimpleExtensionModelFactory;
+import org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.VaadinRenderer;
+
+import com.vaadin.ui.CssLayout;
+import com.vaadin.ui.CustomComponent;
+import com.vaadin.ui.Label;
+
+public class TabsheetSample extends CustomComponent {
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+
+	private final SimpleExtensionModelFactory factory = new SimpleExtensionModelFactory();
+
+	private CssLayout layout;
+
+	private YView yView;
+
+	private YBindingSet yBindingSet;
+
+	private YVerticalLayout yLayout;
+
+	public TabsheetSample() {
+		layout = new CssLayout();
+		setCompositionRoot(layout);
+
+		init();
+	}
+
+	protected void init() {
+
+		yView = factory.createView();
+		yLayout = factory.createVerticalLayout();
+		yView.setContent(yLayout);
+
+		YTabSheet yTabsheet = factory.createTabSheet();
+		yLayout.getElements().add(yTabsheet);
+		
+
+		tab1(yTabsheet);
+
+		tab2(yTabsheet);
+
+		// render now, fill in values later
+		// to avoid overwriting values with bindings to empty fields
+		VaadinRenderer renderer = new VaadinRenderer();
+		try {
+			renderer.render(layout, yView, null);
+		} catch (ContextException e) {
+			layout.addComponent(new Label(e.toString()));
+		}
+	}
+	
+	public void tab1(YTabSheet yTabsheet) {
+		YTab yTab1 = factory.createTab();
+		yTab1.setLabel("Tab 1");
+		
+		YVerticalLayout yTab1Content = factory.createVerticalLayout();
+		yTab1.setEmbeddable(yTab1Content);
+		
+		YTextField yTextfield1 = factory.createTextField();
+		yTextfield1.setLabel("Huhu");
+		yTextfield1.setValue("Huhu");
+		yTab1Content.addElement(yTextfield1);
+		
+		yTabsheet.getTabs().add(yTab1);
+	}
+
+	public void tab2(YTabSheet yTabsheet) {
+		YTab yTab2 = factory.createTab();
+		yTab2.setLabel("Tab 2");
+		
+		YVerticalLayout yTab2Content = factory.createVerticalLayout();
+		yTab2.setEmbeddable(yTab2Content);
+		
+		YTextField yTextfield2 = factory.createTextField();
+		yTextfield2.setLabel("Haha");
+		yTextfield2.setValue("Haha");
+		yTab2Content.addElement(yTextfield2);
+		
+		yTabsheet.getTabs().add(yTab2);
+	}
+}
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/TextAreaSample.java b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/TextAreaSample.java
new file mode 100644
index 0000000..82e9d93
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/TextAreaSample.java
@@ -0,0 +1,117 @@
+/**
+ * Copyright (c) 2011, 2014 - 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.runtime.web.ecview.presentation.vaadin.tests.ui.samples;
+
+import org.eclipse.osbp.ecview.core.common.context.ContextException;
+import org.eclipse.osbp.ecview.core.common.model.binding.YBindingSet;
+import org.eclipse.osbp.ecview.core.common.model.core.YView;
+import org.eclipse.osbp.ecview.core.extension.model.datatypes.YTextAreaDatatype;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YHorizontalLayout;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YTextArea;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YVerticalLayout;
+import org.eclipse.osbp.ecview.core.extension.model.extension.util.SimpleExtensionModelFactory;
+import org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.VaadinRenderer;
+
+import com.vaadin.ui.CssLayout;
+import com.vaadin.ui.CustomComponent;
+import com.vaadin.ui.Label;
+
+public class TextAreaSample extends CustomComponent {
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+
+	private final SimpleExtensionModelFactory factory = new SimpleExtensionModelFactory();
+
+	private CssLayout layout;
+
+	private YView yView;
+
+	private YBindingSet yBindingSet;
+
+	private YVerticalLayout yLayout;
+
+	public TextAreaSample() {
+		layout = new CssLayout();
+		setCompositionRoot(layout);
+
+		init();
+	}
+
+	protected void init() {
+		
+		// TODO - fix me FP
+
+		yView = factory.createView();
+		yLayout = factory.createVerticalLayout();
+		yView.setContent(yLayout);
+
+		yBindingSet = yView.getOrCreateBindingSet();
+
+		row1();
+
+		row2();
+
+		// render now, fill in values later
+		// to avoid overwriting values with bindings to empty fields
+		VaadinRenderer renderer = new VaadinRenderer();
+		try {
+			renderer.render(layout, yView, null);
+		} catch (ContextException e) {
+			layout.addComponent(new Label(e.toString()));
+		}
+	}
+
+	public void row2() {
+		// test row 2
+		YHorizontalLayout row2 = factory.createHorizontalLayout();
+		yLayout.addElement(row2);
+
+		YTextArea yText2_1 = factory.createTextArea();
+		yText2_1.setLabel("minLength 3");
+		row2.addElement(yText2_1);
+		YTextAreaDatatype yDt2_2 = factory.createTextAreaDatatype();
+		yDt2_2.setMinLength(3);
+		yText2_1.setDatatype(yDt2_2);
+
+		YTextArea yText2_2 = factory.createTextArea();
+		yText2_2.setLabel("maxLength 10:");
+		row2.addElement(yText2_2);
+		YTextAreaDatatype yDt2_1 = factory.createTextAreaDatatype();
+		yDt2_1.setMaxLength(10);
+		yText2_2.setDatatype(yDt2_1);
+
+		YTextArea yText2_3 = factory.createTextArea();
+		yText2_3.setLabel("regexp: \\d+");
+		row2.addElement(yText2_3);
+		YTextAreaDatatype yDt2_3 = factory.createTextAreaDatatype();
+		yDt2_3.setRegExpression("\\d+");
+		yText2_3.setDatatype(yDt2_3);
+	}
+
+	public void row1() {
+		// test row 1
+		YHorizontalLayout row1 = factory.createHorizontalLayout();
+		yLayout.addElement(row1);
+		YTextArea yText1_1 = factory.createTextArea();
+		yText1_1.setLabel("Field1");
+		YTextArea yText1_2 = factory.createTextArea();
+		yText1_2.setLabel("Field2");
+		row1.addElement(yText1_1);
+		row1.addElement(yText1_2);
+
+		yBindingSet.addBinding(yText1_1.createValueEndpoint(),
+				yText1_2.createValueEndpoint());
+	}
+}
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/TextFieldSample.java b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/TextFieldSample.java
new file mode 100644
index 0000000..f63e49b
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/TextFieldSample.java
@@ -0,0 +1,138 @@
+/**
+ * Copyright (c) 2011, 2014 - 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.runtime.web.ecview.presentation.vaadin.tests.ui.samples;
+
+import org.eclipse.osbp.ecview.core.common.context.ContextException;
+import org.eclipse.osbp.ecview.core.common.model.binding.YBindingSet;
+import org.eclipse.osbp.ecview.core.common.model.core.YView;
+import org.eclipse.osbp.ecview.core.extension.model.datatypes.YTextDatatype;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YCheckBox;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YHorizontalLayout;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YTextField;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YVerticalLayout;
+import org.eclipse.osbp.ecview.core.extension.model.extension.util.SimpleExtensionModelFactory;
+import org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.VaadinRenderer;
+
+import com.vaadin.ui.CssLayout;
+import com.vaadin.ui.CustomComponent;
+import com.vaadin.ui.Label;
+
+public class TextFieldSample extends CustomComponent {
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+
+	private final SimpleExtensionModelFactory factory = new SimpleExtensionModelFactory();
+
+	private CssLayout layout;
+
+	private YView yView;
+
+	private YBindingSet yBindingSet;
+
+	private YVerticalLayout yLayout;
+
+	public TextFieldSample() {
+		layout = new CssLayout();
+		setCompositionRoot(layout);
+
+		init();
+	}
+
+	protected void init() {
+
+		yView = factory.createView();
+		yLayout = factory.createVerticalLayout();
+		yView.setContent(yLayout);
+
+		yBindingSet = yView.getOrCreateBindingSet();
+
+		row1();
+
+		row2();
+
+		// render now, fill in values later
+		// to avoid overwriting values with bindings to empty fields
+		VaadinRenderer renderer = new VaadinRenderer();
+		try {
+			renderer.render(layout, yView, null);
+		} catch (ContextException e) {
+			layout.addComponent(new Label(e.toString()));
+		}
+	}
+
+	public void row3() {
+		// test row 1
+		YHorizontalLayout row1 = factory.createHorizontalLayout();
+		yLayout.addElement(row1);
+		YCheckBox yCheckbox = factory.createCheckBox();
+		yCheckbox.setLabel("Click for readonly");
+		YTextField yText = factory.createTextField();
+		yText.setLabel("Becomes read only");
+		row1.addElement(yCheckbox);
+		row1.addElement(yText);
+
+		// yText.setEditable(value);
+
+		yBindingSet.addBinding(yText.createValueEndpoint(),
+				yText.createValueEndpoint());
+	}
+
+	public void row2() {
+		// test row 2
+		YHorizontalLayout row2 = factory.createHorizontalLayout();
+		yLayout.addElement(row2);
+
+		YTextField yText2_1 = factory.createTextField();
+		yText2_1.setLabel("minLength 3");
+		yText2_1.setCssID("minLength");
+		row2.addElement(yText2_1);
+		YTextDatatype yDt2_2 = factory.createTextDatatype();
+		yDt2_2.setMinLength(3);
+		yText2_1.setDatatype(yDt2_2);
+
+		YTextField yText2_2 = factory.createTextField();
+		yText2_2.setLabel("maxLength 10:");
+		yText2_2.setCssID("maxLength");
+		row2.addElement(yText2_2);
+		YTextDatatype yDt2_1 = factory.createTextDatatype();
+		yDt2_1.setMaxLength(10);
+		yText2_2.setDatatype(yDt2_1);
+
+		YTextField yText2_3 = factory.createTextField();
+		yText2_3.setLabel("regexp: \\d+");
+		yText2_3.setCssID("regexp");
+		row2.addElement(yText2_3);
+		YTextDatatype yDt2_3 = factory.createTextDatatype();
+		yDt2_3.setRegExpression("\\d+");
+		yText2_3.setDatatype(yDt2_3);
+	}
+
+	public void row1() {
+		// test row 1
+		YHorizontalLayout row1 = factory.createHorizontalLayout();
+		yLayout.addElement(row1);
+		YTextField yText1_1 = factory.createTextField();
+		yText1_1.setCssID("field1");
+		yText1_1.setLabel("A (binds to B):");
+		YTextField yText1_2 = factory.createTextField();
+		yText1_2.setLabel("B (binds to A):");
+		yText1_2.setCssID("field2");
+		row1.addElement(yText1_1);
+		row1.addElement(yText1_2);
+
+		yBindingSet.addBinding(yText1_1.createValueEndpoint(),
+				yText1_2.createValueEndpoint());
+	}
+}
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/VisibleSample.java b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/VisibleSample.java
new file mode 100644
index 0000000..4008be0
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.ui/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ui/samples/VisibleSample.java
@@ -0,0 +1,119 @@
+/**
+ * Copyright (c) 2011, 2014 - 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.runtime.web.ecview.presentation.vaadin.tests.ui.samples;
+
+import java.util.Date;
+import java.util.Locale;
+
+import org.eclipse.osbp.ecview.core.common.context.ContextException;
+import org.eclipse.osbp.ecview.core.common.context.IViewContext;
+import org.eclipse.osbp.ecview.core.common.model.binding.YBindingSet;
+import org.eclipse.osbp.ecview.core.common.model.core.YView;
+import org.eclipse.osbp.ecview.core.extension.model.datatypes.ExtDatatypesFactory;
+import org.eclipse.osbp.ecview.core.extension.model.datatypes.YDateTimeDatatype;
+import org.eclipse.osbp.ecview.core.extension.model.datatypes.YDateTimeFormat;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YButton;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YDateTime;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YHorizontalLayout;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YTextField;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YVerticalLayout;
+import org.eclipse.osbp.ecview.core.extension.model.extension.listener.YButtonClickListener;
+import org.eclipse.osbp.ecview.core.extension.model.extension.util.SimpleExtensionModelFactory;
+import org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.VaadinRenderer;
+
+import com.vaadin.ui.CssLayout;
+import com.vaadin.ui.CustomComponent;
+import com.vaadin.ui.Label;
+
+public class VisibleSample extends CustomComponent {
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+
+	private final SimpleExtensionModelFactory factory = new SimpleExtensionModelFactory();
+
+	private CssLayout layout;
+
+	private YView yView;
+
+	private YBindingSet yBindingSet;
+
+	private YVerticalLayout yLayout;
+
+	private IViewContext context;
+
+	public VisibleSample() {
+		layout = new CssLayout();
+		setCompositionRoot(layout);
+
+		init();
+	}
+
+	protected void init() {
+
+		Locale.setDefault(Locale.GERMANY);
+
+		yView = factory.createView();
+		yLayout = factory.createVerticalLayout();
+		yView.setContent(yLayout);
+
+		yBindingSet = yView.getOrCreateBindingSet();
+
+		row2();
+
+		// render now, fill in values later
+		// to avoid overwriting values with bindings to empty fields
+		VaadinRenderer renderer = new VaadinRenderer();
+		try {
+			context = renderer.render(layout, yView, null);
+		} catch (ContextException e) {
+			layout.addComponent(new Label(e.toString()));
+		}
+	}
+
+	public void row2() {
+		// test row 2
+		YHorizontalLayout row2 = factory.createHorizontalLayout();
+		yLayout.addElement(row2);
+
+		final YTextField yText = factory.createTextField();
+		yText.setLabel("text");
+		yText.setValue("Huhu");
+		row2.addElement(yText);
+
+		final YDateTime yDate = factory.createDateTime();
+		yDate.setLabel("time");
+		yDate.setValue(new Date());
+		row2.addElement(yDate);
+		YDateTimeDatatype yDt2_1 = createDateTimeDatatype();
+		yDt2_1.setFormat(YDateTimeFormat.TIME);
+		yDate.setDatatype(yDt2_1);
+
+		YButton yLocaleSwitcher = factory.createButton();
+		yLocaleSwitcher.setLabel("visible");
+		row2.addElement(yLocaleSwitcher);
+		yLocaleSwitcher.addClickListener(new YButtonClickListener() {
+			@Override
+			public void clicked(YButton yButton) {
+				yText.setVisible(!yText.isVisible());
+				yDate.setVisible(!yDate.isVisible());
+			}
+		});
+	}
+
+	protected YDateTimeDatatype createDateTimeDatatype() {
+		return ExtDatatypesFactory.eINSTANCE.createYDateTimeDatatype();
+	}
+
+}
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/.project b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/.project
new file mode 100644
index 0000000..d41bba6
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/.project
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests</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.runtime.web.ecview.presentation.vaadin.tests/LICENSE.txt b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/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.runtime.web.ecview.presentation.vaadin.tests/META-INF/MANIFEST.MF b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..f4801f7
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/META-INF/MANIFEST.MF
@@ -0,0 +1,46 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests
+Bundle-SymbolicName: org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests;singleton:=true
+Bundle-Version: 0.9.0.qualifier
+Bundle-ClassPath: .
+Require-Bundle: org.junit;bundle-version="4.10.0",
+ org.knowhowlab.osgi.testing.assertions;bundle-version="[1.3.0,1.3.1)",
+ org.knowhowlab.osgi.testing.utils;bundle-version="[1.2.2,1.2.3)",
+ com.vaadin.shared;bundle-version="[7.5.7,7.7.0)",
+ com.vaadin.server;bundle-version="[7.5.7,7.7.0)",
+ org.eclipse.osbp.runtime.web.vaadin.common;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.runtime.web.ecview.presentation.vaadin;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.runtime.web.vaadin.databinding;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.runtime.web.vaadin.components;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.emf.databinding;bundle-version="1.3.0",
+ org.eclipse.core.runtime,
+ org.eclipse.emf.ecore;visibility:=reexport,
+ org.eclipse.osbp.ecview.core.common;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.ecview.core.common.editparts.emf;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.ecview.core.common.model;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.ecview.core.databinding.beans;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.ecview.core.databinding.emf;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.ecview.core.extension.editparts.emf;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.ecview.core.ui.presentation.common;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.ecview.core.util.emf;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.runtime.common;bundle-version="[0.9.0,0.10.0)",
+ org.jsoup;bundle-version="1.7.2",
+ org.eclipse.osbp.runtime.web.vaadin.components.widget;bundle-version="[0.9.0,0.10.0)",
+ org.slf4j.api;bundle-version="1.7.2",
+ org.eclipse.osbp.runtime.designer.api;bundle-version="0.9.0",
+ org.eclipse.equinox.ds;bundle-version="1.4.200"
+Bundle-RequiredExecutionEnvironment: JavaSE-1.7
+Export-Package: org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.emf.model;version="0.9.0",
+ org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.emf.model.impl;version="0.9.0",
+ org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.emf.model.util;version="0.9.0"
+Bundle-Vendor: Eclipse OSBP
+Bundle-Localization: plugin
+Import-Package: javax.servlet;version="2.6.0",
+ javax.servlet.http;version="2.6.0",
+ org.osgi.framework;version="1.7.0",
+ org.osgi.service.cm;version="1.4.0",
+ org.osgi.service.component;version="1.2.0",
+ org.osgi.service.http;version="1.2.1"
+Bundle-ActivationPolicy: lazy
+Bundle-Activator: org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.Activator
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/build.properties b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/build.properties
new file mode 100644
index 0000000..5bef6ac
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/build.properties
@@ -0,0 +1,9 @@
+output.. = target/classes/
+bin.includes = .,\
+               META-INF/,\
+               plugin.xml,\
+               plugin.properties,\
+               LICENSE.txt
+jars.compile.order = .
+source.. = src/
+src.includes = LICENSE.txt
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/emfmodel/model.ecore b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/emfmodel/model.ecore
new file mode 100644
index 0000000..8c8a081
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/emfmodel/model.ecore
@@ -0,0 +1,13 @@
+<?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="model" nsURI="http://www.osbp.org/vaadin/presentation/tests"
+    nsPrefix="model">
+  <eClassifiers xsi:type="ecore:EClass" name="EmfFoo">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="EmfBar">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="myfoo" eType="#//EmfFoo"
+        containment="true"/>
+  </eClassifiers>
+</ecore:EPackage>
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/emfmodel/model.genmodel b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/emfmodel/model.genmodel
new file mode 100644
index 0000000..9681efe
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/emfmodel/model.genmodel
@@ -0,0 +1,18 @@
+<?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.runtime.web.ecview.presentation.vaadin.tests/src"
+    modelPluginID="org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests" modelName="Model"
+    rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container" importerID="org.eclipse.emf.importer.ecore"
+    complianceLevel="6.0" copyrightFields="false" operationReflection="true" importOrganizing="true">
+  <foreignModel>model.ecore</foreignModel>
+  <genPackages prefix="Model" basePackage="org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.emf"
+      disposableProviderFactory="true" ecorePackage="model.ecore#/">
+    <genClasses ecoreClass="model.ecore#//Foo">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute model.ecore#//Foo/name"/>
+    </genClasses>
+    <genClasses ecoreClass="model.ecore#//Bar">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute model.ecore#//Bar/name"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference model.ecore#//Bar/myfoos"/>
+    </genClasses>
+  </genPackages>
+</genmodel:GenModel>
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/plugin.properties b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/plugin.properties
new file mode 100644
index 0000000..24680b9
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/plugin.properties
@@ -0,0 +1,4 @@
+#
+
+pluginName = Model Model
+providerName = www.example.org
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/plugin.xml b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/plugin.xml
new file mode 100644
index 0000000..36f8abb
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/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 model -->
+      <package
+            uri="http://www.osbp.org/vaadin/presentation/tests"
+            class="org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.emf.model.ModelPackage"
+            genModel="emfmodel/model.genmodel"/>
+   </extension>
+
+</plugin>
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/pom.xml b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/pom.xml
new file mode 100644
index 0000000..db127a4
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/pom.xml
@@ -0,0 +1,128 @@
+<?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: -->
+<!--# Florian Pirchner - 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.runtime.web</groupId>
+		<artifactId>org.eclipse.osbp.runtime.web.aggregator</artifactId>
+		<version>0.9.0-SNAPSHOT</version>
+		<relativePath>..</relativePath>
+	</parent>
+	<artifactId>org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests</artifactId>
+	<packaging>eclipse-test-plugin</packaging>
+
+	<reporting>
+		<plugins>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-javadoc-plugin</artifactId>
+				<configuration>
+					<skip>true</skip>
+				</configuration>
+			</plugin>
+		</plugins>
+	</reporting>
+
+	<build>
+		<plugins>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-javadoc-plugin</artifactId>
+				<configuration>
+					<skip>true</skip>
+				</configuration>
+			</plugin>
+			<plugin>
+				<groupId>org.eclipse.tycho</groupId>
+				<artifactId>tycho-surefire-plugin</artifactId>
+				<configuration>
+					<includes>
+						<include>**/*Test.class</include>
+						<include>**/*Tests.class</include>
+					</includes>
+					<failIfNoTests>false</failIfNoTests>
+					<showEclipseLog>true</showEclipseLog>
+					<!-- <argLine>${ui.test.vmargs}</argLine> -->
+					<bundleStartLevel>
+						<bundle>
+							<id>org.eclipse.osgi</id>
+							<level>-1</level>
+							<autoStart>true</autoStart>
+						</bundle>
+						<bundle>
+							<id>org.eclipse.equinox.common</id>
+							<level>1</level>
+							<autoStart>true</autoStart>
+						</bundle>
+						<bundle>
+							<id>org.eclipse.equinox.ds</id>
+							<level>2</level>
+							<autoStart>true</autoStart>
+						</bundle>
+						<bundle>
+							<id>org.eclipse.equinox.log</id>
+							<level>1</level>
+							<autoStart>true</autoStart>
+						</bundle>
+						<bundle>
+							<id>org.eclipse.osgi.services</id>
+							<level>1</level>
+							<autoStart>true</autoStart>
+						</bundle>
+						<bundle>
+							<id>org.eclipse.osbp.ecview.core.common.editparts.emf</id>
+							<level>4</level>
+							<autoStart>true</autoStart>
+						</bundle>
+						<bundle>
+							<id>org.eclipse.osbp.ecview.core.extension.editparts.emf</id>
+							<level>4</level>
+							<autoStart>true</autoStart>
+						</bundle>
+						<bundle>
+							<id>org.eclipse.osbp.runtime.web.ecview.presentation.vaadin</id>
+							<level>4</level>
+							<autoStart>true</autoStart>
+						</bundle>
+						<bundle>
+							<id>org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests</id>
+							<level>4</level>
+							<autoStart>true</autoStart>
+						</bundle>
+					</bundleStartLevel>
+
+					<dependencies>
+						<!-- Plugins -->
+						<dependency>
+							<type>eclipse-plugin</type>
+							<artifactId>org.eclipse.equinox.ds</artifactId>
+							<version>0.0.0</version>
+						</dependency>
+						<dependency>
+							<type>eclipse-plugin</type>
+							<artifactId>org.eclipse.equinox.util</artifactId>
+							<version>0.0.0</version>
+						</dependency>
+					</dependencies>
+
+					<useUIHarness>false</useUIHarness>
+					<useUIThread>false</useUIThread>
+				</configuration>
+			</plugin>
+		</plugins>
+	</build>
+
+	<properties>
+		<osbp.skip.javadoc>true</osbp.skip.javadoc>
+	</properties>
+</project>
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/Activator.java b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/Activator.java
new file mode 100644
index 0000000..a552726
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/Activator.java
@@ -0,0 +1,68 @@
+/**
+ * Copyright (c) 2012, 2015 Lunifera GmbH (Gross Enzersdorf), 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 API and implementation
+ */
+package org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests;
+
+import org.knowhowlab.osgi.testing.assertions.BundleAssert;
+import org.knowhowlab.osgi.testing.assertions.ServiceAssert;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class Activator implements BundleActivator {
+
+	@SuppressWarnings("unused")
+	private static final Logger logger = LoggerFactory
+			.getLogger(Activator.class);
+
+	private static Activator instance;
+	public static BundleContext context;
+
+	/**
+	 * @return the instance
+	 */
+	public static Activator getInstance() {
+		return instance;
+	}
+
+	@Override
+	public void start(BundleContext context) throws Exception {
+		Activator.context = context;
+		instance = this;
+
+		BundleAssert.setDefaultBundleContext(context);
+		ServiceAssert.setDefaultBundleContext(context);
+
+		// BundleHelper.ensureSetup();
+	}
+
+	/**
+	 * Returns the bundle with the given id.
+	 * 
+	 * @param id
+	 * @return
+	 */
+	public static Bundle findBundle(String id) {
+		for (Bundle bundle : context.getBundles()) {
+			if (bundle.getSymbolicName().equals(id)) {
+				return bundle;
+			}
+		}
+		return null;
+	}
+
+	@Override
+	public void stop(BundleContext context) throws Exception {
+		Activator.context = null;
+		instance = null;
+	}
+}
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ModelUtilTests.java b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ModelUtilTests.java
new file mode 100644
index 0000000..b81b522
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/ModelUtilTests.java
@@ -0,0 +1,311 @@
+/**
+ *                                                                            
+ *  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 implementation
+ * 
+ */
+ package org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import java.util.List;
+import java.util.Locale;
+import java.util.Set;
+
+import org.eclipse.core.databinding.Binding;
+import org.eclipse.osbp.ecview.core.common.binding.IECViewBindingManager;
+import org.eclipse.osbp.ecview.core.common.context.ContextException;
+import org.eclipse.osbp.ecview.core.common.context.IViewContext;
+import org.eclipse.osbp.ecview.core.common.context.ViewContext;
+import org.eclipse.osbp.ecview.core.common.editpart.DelegatingEditPartManager;
+import org.eclipse.osbp.ecview.core.common.editpart.IElementEditpart;
+import org.eclipse.osbp.ecview.core.common.editpart.IEmbeddableEditpart;
+import org.eclipse.osbp.ecview.core.common.editpart.IEmbeddableValueBindingEndpointEditpart;
+import org.eclipse.osbp.ecview.core.common.editpart.IViewEditpart;
+import org.eclipse.osbp.ecview.core.common.editpart.binding.IBindingEditpart;
+import org.eclipse.osbp.ecview.core.common.editpart.binding.IBindingSetEditpart;
+import org.eclipse.osbp.ecview.core.common.editpart.binding.IValueBindingEditpart;
+import org.eclipse.osbp.ecview.core.common.model.binding.YBeanValueBindingEndpoint;
+import org.eclipse.osbp.ecview.core.common.model.binding.YBinding;
+import org.eclipse.osbp.ecview.core.common.model.binding.YBindingSet;
+import org.eclipse.osbp.ecview.core.common.model.core.CoreModelFactory;
+import org.eclipse.osbp.ecview.core.common.model.core.CoreModelPackage;
+import org.eclipse.osbp.ecview.core.common.model.core.YBeanSlot;
+import org.eclipse.osbp.ecview.core.common.model.core.YBeanSlotValueBindingEndpoint;
+import org.eclipse.osbp.ecview.core.common.model.core.YEmbeddableValueEndpoint;
+import org.eclipse.osbp.ecview.core.common.model.core.YView;
+import org.eclipse.osbp.ecview.core.common.notification.ILifecycleService;
+import org.eclipse.osbp.ecview.core.common.presentation.IWidgetPresentation;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YDecimalField;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YGridLayout;
+import org.eclipse.osbp.ecview.core.extension.model.extension.util.SimpleExtensionModelFactory;
+import org.eclipse.osbp.ecview.core.util.emf.ModelUtil;
+import org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.VaadinRenderer;
+import org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.model.ValueBean;
+import org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.presentation.DefaultUI;
+import org.eclipse.osbp.runtime.web.vaadin.components.fields.DecimalField;
+import org.junit.Before;
+import org.junit.Test;
+
+import com.vaadin.ui.Component;
+import com.vaadin.ui.CssLayout;
+import com.vaadin.ui.UI;
+
+public class ModelUtilTests {
+
+	private SimpleExtensionModelFactory factory = new SimpleExtensionModelFactory();
+	private CssLayout rootLayout = new CssLayout();
+	private DecimalField text1;
+	private DecimalField text2;
+	private IEmbeddableEditpart layoutEditpart;
+	private IEmbeddableEditpart text1Editpart;
+	private IEmbeddableEditpart text2Editpart;
+	private YDecimalField yText1;
+	private YDecimalField yText2;
+	private YBindingSet yBindingSet;
+	private ValueBean bean1;
+	private ValueBean bean2;
+	private YView yView;
+	private IViewEditpart viewEditpart;
+	private YGridLayout yLayout;
+	private IViewContext viewContext;
+	private YEmbeddableValueEndpoint yText1ValueEndpoint;
+	private YBinding yText1ValueBinding;
+
+	@Before
+	public void initialize() throws ContextException {
+
+		Locale.setDefault(Locale.US);
+
+		UI.setCurrent(new DefaultUI());
+		UI.getCurrent().setContent(rootLayout);
+
+		yView = factory.createView();
+		yLayout = factory.createGridLayout();
+		yView.setContent(yLayout);
+		yText1 = factory.createDecimalField();
+		yText1.setCssID("ID_0815");
+		yText1.setCssClass("anyOtherClass");
+		yLayout.getElements().add(yText1);
+		yText2 = factory.createDecimalField();
+		yLayout.getElements().add(yText2);
+
+		VaadinRenderer renderer = new VaadinRenderer();
+		renderer.render(rootLayout, yView, null);
+
+		viewEditpart = ModelUtil.findEditpart(yView);
+		layoutEditpart = ModelUtil.findEditpart(yLayout);
+		text1Editpart = ModelUtil.findEditpart(yText1);
+		text2Editpart = ModelUtil.findEditpart(yText2);
+		viewContext = ModelUtil.getViewContext(yLayout);
+		IWidgetPresentation<Component> text1Presentation = text1Editpart
+				.getPresentation();
+		IWidgetPresentation<Component> text2Presentation = text2Editpart
+				.getPresentation();
+		text1 = (DecimalField) text1Presentation.getWidget();
+		text2 = (DecimalField) text2Presentation.getWidget();
+
+		yBindingSet = yView.getOrCreateBindingSet();
+		yView.setBindingSet(yBindingSet);
+		YBeanValueBindingEndpoint beanBinding1 = factory
+				.createBeanBindingEndpoint();
+		bean1 = new ValueBean(9988.77);
+		beanBinding1.setPropertyPath("doubleValue");
+		beanBinding1.setBean(bean1);
+
+		yText1ValueEndpoint = yText1.createValueEndpoint();
+		yText1ValueBinding = yBindingSet.addBinding(yText1ValueEndpoint,
+				beanBinding1);
+
+		YBeanValueBindingEndpoint beanBinding2 = factory
+				.createBeanBindingEndpoint();
+		bean2 = new ValueBean(9988.77);
+		beanBinding2.setPropertyPath("doubleValue");
+		beanBinding2.setBean(bean2);
+		yBindingSet.addBinding(yText2.createValueEndpoint(), beanBinding2);
+	}
+
+	@Test
+	public void test_testenvironment() {
+
+		// model to ui & bean
+		yText1.setValue(111.11);
+		yText2.setValue(222.22);
+		assertEquals("111.11", text1.getValue());
+		assertEquals("222.22", text2.getValue());
+		assertEquals(111.11, bean1.getDoubleValue(), 0);
+		assertEquals(222.22, bean2.getDoubleValue(), 0);
+
+		// bean to ui & model
+		bean1.setDoubleValue(333.33);
+		bean2.setDoubleValue(444.44);
+		assertEquals("333.33", text1.getValue());
+		assertEquals("444.44", text2.getValue());
+		assertEquals(333.33, yText1.getValue(), 0);
+		assertEquals(444.44, yText2.getValue(), 0);
+
+		// ui to bean & model
+		text1.setValue("555.55");
+		text2.setValue("666.66");
+		assertEquals(555.55, yText1.getValue(), 0);
+		assertEquals(666.66, yText2.getValue(), 0);
+		assertEquals(555.55, bean1.getDoubleValue(), 0);
+		assertEquals(666.66, bean2.getDoubleValue(), 0);
+
+	}
+
+	@Test
+	public void test_getViewContext() {
+		IViewContext testContext = ModelUtil.getViewContext(yText1);
+		assertEquals(viewContext, testContext);
+		testContext = ModelUtil.getViewContext(yText2);
+		assertEquals(viewContext, testContext);
+		testContext = ModelUtil.getViewContext(yLayout);
+		assertEquals(viewContext, testContext);
+	}
+
+	@Test
+	public void test_getWidget() {
+		Object layout_w = ModelUtil.getWidget(yLayout);
+		Object text1_w = ModelUtil.getWidget(yText1);
+		Object text2_w = ModelUtil.getWidget(yText2);
+		assertNotNull(layout_w);
+		assertNotNull(text1_w);
+		assertNotNull(text2_w);
+		assertEquals(layoutEditpart.getPresentation().getWidget(), layout_w);
+
+	}
+
+	@Test
+	public void test_getUIBindings() {
+		Set<Binding> uiBindings = text1Editpart.getPresentation()
+				.getUIBindings();
+		Set<Binding> uiBindings2 = ModelUtil.getUIBindings(yText1);
+		assertEquals(uiBindings2.size(), uiBindings.size());
+		for (Binding binding : uiBindings2) {
+			assertTrue(uiBindings.contains(binding));
+		}
+		for (Binding binding : uiBindings) {
+			assertTrue(uiBindings2.contains(binding));
+		}
+	}
+
+	@Test
+	public void test_getValueBinding() {
+		IValueBindingEditpart editpart = ModelUtil
+				.findEditpart(yText1ValueBinding);
+		Binding valueBinding2 = ModelUtil.getValueBinding(yText1);
+		assertEquals(editpart.getBinding(), valueBinding2);
+	}
+
+	@Test
+	public void test_getValueBindingEditpart() {
+		IValueBindingEditpart editpart = ModelUtil
+				.findEditpart(yText1ValueBinding);
+		YBinding yBinding = yText1.getValueBindingEndpoint().getBinding();
+		IValueBindingEditpart bindingEditpart = ModelUtil.findEditpart(yBinding);
+		assertEquals(editpart, bindingEditpart);
+	}
+
+	@Test
+	public void test_getValueEndpointEditpart() {
+		YEmbeddableValueEndpoint yBinding = yText1.getValueBindingEndpoint();
+		IEmbeddableValueBindingEndpointEditpart editpart1 = ModelUtil
+				.getValueEndpointEditpart(yBinding);
+		IEmbeddableValueBindingEndpointEditpart editpart2 = DelegatingEditPartManager
+				.getInstance().findEditpart(yBinding);
+
+		assertEquals(editpart1, editpart2);
+	}
+
+	@Test
+	public void test_getPresentation() {
+		IEmbeddableEditpart editpart = DelegatingEditPartManager.getInstance()
+				.findEditpart(yText1);
+		IWidgetPresentation<?> presentation = editpart.getPresentation();
+		assertEquals(presentation, ModelUtil.getPresentation(yText1));
+	}
+
+	@Test
+	public void test_getModelBindingEditparts() {
+		YBindingSet bindingset = yText1.getView().getBindingSet();
+		IBindingSetEditpart bindingSetEditpart = ModelUtil
+				.findEditpart(bindingset);
+		List<IBindingEditpart<?>> bindings = bindingSetEditpart
+				.findBindings(yText1);
+		assertEquals(bindings, ModelUtil.getModelBindingEditparts(yText1));
+	}
+
+	@Test
+	public void test_getLifecacleService() {
+		ILifecycleService service = viewContext
+				.getService(ILifecycleService.class.getName());
+		assertEquals(service, ModelUtil.getLifecylceService(viewContext));
+	}
+
+	@Test
+	public void test_getEditpart() {
+		IElementEditpart editpart = DelegatingEditPartManager.getInstance()
+				.findEditpart(yLayout);
+		assertEquals(editpart, ModelUtil.findEditpart(yLayout));
+	}
+
+	@Test
+	public void test_getBindingManager() {
+		IECViewBindingManager manager = viewContext
+				.getService(IECViewBindingManager.class.getName());
+		assertEquals(manager, ModelUtil.getBindingManager(viewContext));
+	}
+
+	// @Test
+	// public void test_createViewSetByEditpart() {
+	// IViewSetEditpart editpart = DelegatingEditPartManager.getInstance()
+	// .createEditpart(CoreModelPackage.eNS_URI,
+	// IViewSetEditpart.class);
+	// YViewSet set = (YViewSet) editpart.getModel();
+	// assertNotNull(set);
+	// }
+
+//	@Test
+//	public void test_URI_ForBeanSlot_ViewContext() {
+//		IViewEditpart editpart = DelegatingEditPartManager.getInstance()
+//				.createEditpart(new ViewContext(), CoreModelPackage.eNS_URI, IViewEditpart.class);
+//		YView yView = (YView) editpart.getModel();
+//
+//		YBeanSlot ySlot = factory.createBeanSlot();
+//		ySlot.setName("slotNo1");
+//		ySlot.setValueType(String.class);
+//		yView.getBeanSlots().add(ySlot);
+//
+//		assertEquals("view://bean/slotNo1", ModelUtil.getURI(ySlot).toString());
+//	}
+//
+//	@Test
+//	public void test_URI_ForBeanSlotBinding_ViewContext() {
+//		IViewEditpart editpart = DelegatingEditPartManager.getInstance()
+//				.getEditpart(new ViewContext(), CoreModelPackage.eNS_URI, IViewEditpart.class);
+//		YView yView = (YView) editpart.getModel();
+//
+//		YBeanSlot ySlot = factory.createBeanSlot();
+//		ySlot.setName("slotNo1");
+//		ySlot.setValueType(String.class);
+//		yView.getBeanSlots().add(ySlot);
+//
+//		YBeanSlotValueBindingEndpoint yEndpoint = CoreModelFactory.eINSTANCE
+//				.createYBeanSlotValueBindingEndpoint();
+//		yEndpoint.setAttributePath("item.group.name");
+//		yEndpoint.setBeanSlot(ySlot);
+//
+//		assertEquals("view://bean/slotNo1#item.group.name",
+//				ModelUtil.getURI(yEndpoint).toString());
+//	}
+}
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/emf/model/EmfBar.java b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/emf/model/EmfBar.java
new file mode 100644
index 0000000..6062291
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/emf/model/EmfBar.java
@@ -0,0 +1,98 @@
+/**
+ *                                                                            
+ *  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 implementation
+ * 
+ */
+ package org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.emf.model;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '
+ * <em><b>Emf Bar</b></em>'. <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>
+ * {@link org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.emf.model.EmfBar#getName
+ * <em>Name</em>}</li>
+ * <li>
+ * {@link org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.emf.model.EmfBar#getMyfoo
+ * <em>Myfoo</em>}</li>
+ * </ul>
+ * 
+ *
+ * @see org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.emf.model.ModelPackage#getEmfBar()
+ * @model
+ * @generated
+ */
+public interface EmfBar 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...
+	 * 
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Name</em>' attribute.
+	 * @see #setName(String)
+	 * @see org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.emf.model.ModelPackage#getEmfBar_Name()
+	 * @model
+	 * @generated
+	 */
+	String getName();
+
+	/**
+	 * Sets the value of the '
+	 * {@link org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.emf.model.EmfBar#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>Myfoo</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Myfoo</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * 
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Myfoo</em>' containment reference.
+	 * @see #setMyfoo(EmfFoo)
+	 * @see org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.emf.model.ModelPackage#getEmfBar_Myfoo()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EmfFoo getMyfoo();
+
+	/**
+	 * Sets the value of the '
+	 * {@link org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.emf.model.EmfBar#getMyfoo
+	 * <em>Myfoo</em>}' containment reference. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @param value
+	 *            the new value of the '<em>Myfoo</em>' containment reference.
+	 * @see #getMyfoo()
+	 * @generated
+	 */
+	void setMyfoo(EmfFoo value);
+
+} // EmfBar
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/emf/model/EmfFoo.java b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/emf/model/EmfFoo.java
new file mode 100644
index 0000000..e4e592e
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/emf/model/EmfFoo.java
@@ -0,0 +1,65 @@
+/**
+ *                                                                            
+ *  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 implementation
+ * 
+ */
+ package org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.emf.model;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '
+ * <em><b>Emf Foo</b></em>'. <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>
+ * {@link org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.emf.model.EmfFoo#getName
+ * <em>Name</em>}</li>
+ * </ul>
+ * 
+ *
+ * @see org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.emf.model.ModelPackage#getEmfFoo()
+ * @model
+ * @generated
+ */
+public interface EmfFoo 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...
+	 * 
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Name</em>' attribute.
+	 * @see #setName(String)
+	 * @see org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.emf.model.ModelPackage#getEmfFoo_Name()
+	 * @model
+	 * @generated
+	 */
+	String getName();
+
+	/**
+	 * Sets the value of the '
+	 * {@link org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.emf.model.EmfFoo#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);
+
+} // EmfFoo
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/emf/model/ModelFactory.java b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/emf/model/ModelFactory.java
new file mode 100644
index 0000000..8192aca
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/emf/model/ModelFactory.java
@@ -0,0 +1,62 @@
+/**
+ *                                                                            
+ *  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 implementation
+ * 
+ */
+ package org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.emf.model;
+
+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 org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.emf.model.ModelPackage
+ * @generated
+ */
+public interface ModelFactory extends EFactory {
+	/**
+	 * The singleton instance of the factory. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	ModelFactory eINSTANCE = org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.emf.model.impl.ModelFactoryImpl
+			.init();
+
+	/**
+	 * Returns a new object of class '<em>Emf Foo</em>'. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return a new object of class '<em>Emf Foo</em>'.
+	 * @generated
+	 */
+	EmfFoo createEmfFoo();
+
+	/**
+	 * Returns a new object of class '<em>Emf Bar</em>'. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return a new object of class '<em>Emf Bar</em>'.
+	 * @generated
+	 */
+	EmfBar createEmfBar();
+
+	/**
+	 * Returns the package supported by this factory. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the package supported by this factory.
+	 * @generated
+	 */
+	ModelPackage getModelPackage();
+
+} // ModelFactory
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/emf/model/ModelPackage.java b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/emf/model/ModelPackage.java
new file mode 100644
index 0000000..80331bf
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/emf/model/ModelPackage.java
@@ -0,0 +1,285 @@
+/**
+ *                                                                            
+ *  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 implementation
+ * 
+ */
+ package org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.emf.model;
+
+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 org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.emf.model.ModelFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface ModelPackage extends EPackage {
+	/**
+	 * The package name. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	String eNAME = "model";
+
+	/**
+	 * The package namespace URI. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	String eNS_URI = "http://www.osbp.org/vaadin/presentation/tests";
+
+	/**
+	 * The package namespace name. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	String eNS_PREFIX = "model";
+
+	/**
+	 * The singleton instance of the package. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	ModelPackage eINSTANCE = org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.emf.model.impl.ModelPackageImpl
+			.init();
+
+	/**
+	 * The meta object id for the '
+	 * {@link org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.emf.model.impl.EmfFooImpl
+	 * <em>Emf Foo</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.emf.model.impl.EmfFooImpl
+	 * @see org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.emf.model.impl.ModelPackageImpl#getEmfFoo()
+	 * @generated
+	 */
+	int EMF_FOO = 0;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int EMF_FOO__NAME = 0;
+
+	/**
+	 * The number of structural features of the '<em>Emf Foo</em>' class. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int EMF_FOO_FEATURE_COUNT = 1;
+
+	/**
+	 * The number of operations of the '<em>Emf Foo</em>' class. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int EMF_FOO_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '
+	 * {@link org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.emf.model.impl.EmfBarImpl
+	 * <em>Emf Bar</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.emf.model.impl.EmfBarImpl
+	 * @see org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.emf.model.impl.ModelPackageImpl#getEmfBar()
+	 * @generated
+	 */
+	int EMF_BAR = 1;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int EMF_BAR__NAME = 0;
+
+	/**
+	 * The feature id for the '<em><b>Myfoo</b></em>' containment reference.
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int EMF_BAR__MYFOO = 1;
+
+	/**
+	 * The number of structural features of the '<em>Emf Bar</em>' class. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int EMF_BAR_FEATURE_COUNT = 2;
+
+	/**
+	 * The number of operations of the '<em>Emf Bar</em>' class. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int EMF_BAR_OPERATION_COUNT = 0;
+
+	/**
+	 * Returns the meta object for class '
+	 * {@link org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.emf.model.EmfFoo
+	 * <em>Emf Foo</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for class '<em>Emf Foo</em>'.
+	 * @see org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.emf.model.EmfFoo
+	 * @generated
+	 */
+	EClass getEmfFoo();
+
+	/**
+	 * Returns the meta object for the attribute '
+	 * {@link org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.emf.model.EmfFoo#getName
+	 * <em>Name</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the attribute '<em>Name</em>'.
+	 * @see org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.emf.model.EmfFoo#getName()
+	 * @see #getEmfFoo()
+	 * @generated
+	 */
+	EAttribute getEmfFoo_Name();
+
+	/**
+	 * Returns the meta object for class '
+	 * {@link org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.emf.model.EmfBar
+	 * <em>Emf Bar</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for class '<em>Emf Bar</em>'.
+	 * @see org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.emf.model.EmfBar
+	 * @generated
+	 */
+	EClass getEmfBar();
+
+	/**
+	 * Returns the meta object for the attribute '
+	 * {@link org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.emf.model.EmfBar#getName
+	 * <em>Name</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the attribute '<em>Name</em>'.
+	 * @see org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.emf.model.EmfBar#getName()
+	 * @see #getEmfBar()
+	 * @generated
+	 */
+	EAttribute getEmfBar_Name();
+
+	/**
+	 * Returns the meta object for the containment reference '
+	 * {@link org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.emf.model.EmfBar#getMyfoo
+	 * <em>Myfoo</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the containment reference '<em>Myfoo</em>'.
+	 * @see org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.emf.model.EmfBar#getMyfoo()
+	 * @see #getEmfBar()
+	 * @generated
+	 */
+	EReference getEmfBar_Myfoo();
+
+	/**
+	 * 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
+	 */
+	ModelFactory getModelFactory();
+
+	/**
+	 * <!-- 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.runtime.web.ecview.presentation.vaadin.tests.emf.model.impl.EmfFooImpl
+		 * <em>Emf Foo</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc
+		 * -->
+		 * 
+		 * @see org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.emf.model.impl.EmfFooImpl
+		 * @see org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.emf.model.impl.ModelPackageImpl#getEmfFoo()
+		 * @generated
+		 */
+		EClass EMF_FOO = eINSTANCE.getEmfFoo();
+
+		/**
+		 * The meta object literal for the '<em><b>Name</b></em>' attribute
+		 * feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EAttribute EMF_FOO__NAME = eINSTANCE.getEmfFoo_Name();
+
+		/**
+		 * The meta object literal for the '
+		 * {@link org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.emf.model.impl.EmfBarImpl
+		 * <em>Emf Bar</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc
+		 * -->
+		 * 
+		 * @see org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.emf.model.impl.EmfBarImpl
+		 * @see org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.emf.model.impl.ModelPackageImpl#getEmfBar()
+		 * @generated
+		 */
+		EClass EMF_BAR = eINSTANCE.getEmfBar();
+
+		/**
+		 * The meta object literal for the '<em><b>Name</b></em>' attribute
+		 * feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EAttribute EMF_BAR__NAME = eINSTANCE.getEmfBar_Name();
+
+		/**
+		 * The meta object literal for the '<em><b>Myfoo</b></em>' containment
+		 * reference feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EReference EMF_BAR__MYFOO = eINSTANCE.getEmfBar_Myfoo();
+
+	}
+
+} // ModelPackage
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/emf/model/impl/EmfBarImpl.java b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/emf/model/impl/EmfBarImpl.java
new file mode 100644
index 0000000..ae29bfa
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/emf/model/impl/EmfBarImpl.java
@@ -0,0 +1,270 @@
+/**
+ * Copyright (c) 2011, 2014 - 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.runtime.web.ecview.presentation.vaadin.tests.emf.model.impl;
+
+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.impl.MinimalEObjectImpl;
+import org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.emf.model.EmfBar;
+import org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.emf.model.EmfFoo;
+import org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.emf.model.ModelPackage;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '
+ * <em><b>Emf Bar</b></em>'. <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>
+ * {@link org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.emf.model.impl.EmfBarImpl#getName
+ * <em>Name</em>}</li>
+ * <li>
+ * {@link org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.emf.model.impl.EmfBarImpl#getMyfoo
+ * <em>Myfoo</em>}</li>
+ * </ul>
+ * 
+ *
+ * @generated
+ */
+public class EmfBarImpl extends MinimalEObjectImpl.Container implements EmfBar {
+	/**
+	 * 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 cached value of the '{@link #getMyfoo() <em>Myfoo</em>}' containment
+	 * reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @see #getMyfoo()
+	 * @generated
+	 * @ordered
+	 */
+	protected EmfFoo myfoo;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected EmfBarImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return ModelPackage.Literals.EMF_BAR;
+	}
+
+	/**
+	 * <!-- 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,
+					ModelPackage.EMF_BAR__NAME, oldName, name));
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EmfFoo getMyfoo() {
+		return myfoo;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public NotificationChain basicSetMyfoo(EmfFoo newMyfoo,
+			NotificationChain msgs) {
+		EmfFoo oldMyfoo = myfoo;
+		myfoo = newMyfoo;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this,
+					Notification.SET, ModelPackage.EMF_BAR__MYFOO, oldMyfoo,
+					newMyfoo);
+			if (msgs == null)
+				msgs = notification;
+			else
+				msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setMyfoo(EmfFoo newMyfoo) {
+		if (newMyfoo != myfoo) {
+			NotificationChain msgs = null;
+			if (myfoo != null)
+				msgs = ((InternalEObject) myfoo).eInverseRemove(this,
+						EOPPOSITE_FEATURE_BASE - ModelPackage.EMF_BAR__MYFOO,
+						null, msgs);
+			if (newMyfoo != null)
+				msgs = ((InternalEObject) newMyfoo).eInverseAdd(this,
+						EOPPOSITE_FEATURE_BASE - ModelPackage.EMF_BAR__MYFOO,
+						null, msgs);
+			msgs = basicSetMyfoo(newMyfoo, msgs);
+			if (msgs != null)
+				msgs.dispatch();
+		} else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET,
+					ModelPackage.EMF_BAR__MYFOO, newMyfoo, newMyfoo));
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd,
+			int featureID, NotificationChain msgs) {
+		switch (featureID) {
+		case ModelPackage.EMF_BAR__MYFOO:
+			return basicSetMyfoo(null, 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 ModelPackage.EMF_BAR__NAME:
+			return getName();
+		case ModelPackage.EMF_BAR__MYFOO:
+			return getMyfoo();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case ModelPackage.EMF_BAR__NAME:
+			setName((String) newValue);
+			return;
+		case ModelPackage.EMF_BAR__MYFOO:
+			setMyfoo((EmfFoo) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case ModelPackage.EMF_BAR__NAME:
+			setName(NAME_EDEFAULT);
+			return;
+		case ModelPackage.EMF_BAR__MYFOO:
+			setMyfoo((EmfFoo) null);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case ModelPackage.EMF_BAR__NAME:
+			return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT
+					.equals(name);
+		case ModelPackage.EMF_BAR__MYFOO:
+			return myfoo != null;
+		}
+		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(')');
+		return result.toString();
+	}
+
+} // EmfBarImpl
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/emf/model/impl/EmfFooImpl.java b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/emf/model/impl/EmfFooImpl.java
new file mode 100644
index 0000000..1dbc154
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/emf/model/impl/EmfFooImpl.java
@@ -0,0 +1,175 @@
+/**
+ * Copyright (c) 2011, 2014 - 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.runtime.web.ecview.presentation.vaadin.tests.emf.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.runtime.web.ecview.presentation.vaadin.tests.emf.model.EmfFoo;
+import org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.emf.model.ModelPackage;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '
+ * <em><b>Emf Foo</b></em>'. <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>
+ * {@link org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.emf.model.impl.EmfFooImpl#getName
+ * <em>Name</em>}</li>
+ * </ul>
+ * 
+ *
+ * @generated
+ */
+public class EmfFooImpl extends MinimalEObjectImpl.Container implements EmfFoo {
+	/**
+	 * 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;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected EmfFooImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return ModelPackage.Literals.EMF_FOO;
+	}
+
+	/**
+	 * <!-- 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,
+					ModelPackage.EMF_FOO__NAME, oldName, name));
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case ModelPackage.EMF_FOO__NAME:
+			return getName();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case ModelPackage.EMF_FOO__NAME:
+			setName((String) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case ModelPackage.EMF_FOO__NAME:
+			setName(NAME_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case ModelPackage.EMF_FOO__NAME:
+			return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT
+					.equals(name);
+		}
+		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(')');
+		return result.toString();
+	}
+
+} // EmfFooImpl
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/emf/model/impl/ModelFactoryImpl.java b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/emf/model/impl/ModelFactoryImpl.java
new file mode 100644
index 0000000..ee0b0b7
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/emf/model/impl/ModelFactoryImpl.java
@@ -0,0 +1,120 @@
+/**
+ * Copyright (c) 2011, 2014 - 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.runtime.web.ecview.presentation.vaadin.tests.emf.model.impl;
+
+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;
+import org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.emf.model.EmfBar;
+import org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.emf.model.EmfFoo;
+import org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.emf.model.ModelFactory;
+import org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.emf.model.ModelPackage;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model <b>Factory</b>. <!--
+ * end-user-doc -->
+ * 
+ * @generated
+ */
+public class ModelFactoryImpl extends EFactoryImpl implements ModelFactory {
+	/**
+	 * Creates the default factory implementation. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public static ModelFactory init() {
+		try {
+			ModelFactory theModelFactory = (ModelFactory) EPackage.Registry.INSTANCE
+					.getEFactory(ModelPackage.eNS_URI);
+			if (theModelFactory != null) {
+				return theModelFactory;
+			}
+		} catch (Exception exception) {
+			EcorePlugin.INSTANCE.log(exception);
+		}
+		return new ModelFactoryImpl();
+	}
+
+	/**
+	 * Creates an instance of the factory. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public ModelFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+		case ModelPackage.EMF_FOO:
+			return createEmfFoo();
+		case ModelPackage.EMF_BAR:
+			return createEmfBar();
+		default:
+			throw new IllegalArgumentException("The class '" + eClass.getName()
+					+ "' is not a valid classifier");
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EmfFoo createEmfFoo() {
+		EmfFooImpl emfFoo = new EmfFooImpl();
+		return emfFoo;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EmfBar createEmfBar() {
+		EmfBarImpl emfBar = new EmfBarImpl();
+		return emfBar;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public ModelPackage getModelPackage() {
+		return (ModelPackage) getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @deprecated
+	 * @generated
+	 */
+	@Deprecated
+	public static ModelPackage getPackage() {
+		return ModelPackage.eINSTANCE;
+	}
+
+} // ModelFactoryImpl
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/emf/model/impl/ModelPackageImpl.java b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/emf/model/impl/ModelPackageImpl.java
new file mode 100644
index 0000000..8053052
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/emf/model/impl/ModelPackageImpl.java
@@ -0,0 +1,249 @@
+/**
+ * Copyright (c) 2011, 2014 - 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.runtime.web.ecview.presentation.vaadin.tests.emf.model.impl;
+
+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.runtime.web.ecview.presentation.vaadin.tests.emf.model.EmfBar;
+import org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.emf.model.EmfFoo;
+import org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.emf.model.ModelFactory;
+import org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.emf.model.ModelPackage;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model <b>Package</b>. <!--
+ * end-user-doc -->
+ * 
+ * @generated
+ */
+public class ModelPackageImpl extends EPackageImpl implements ModelPackage {
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private EClass emfFooEClass = null;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private EClass emfBarEClass = 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.runtime.web.ecview.presentation.vaadin.tests.emf.model.ModelPackage#eNS_URI
+	 * @see #init()
+	 * @generated
+	 */
+	private ModelPackageImpl() {
+		super(eNS_URI, ModelFactory.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 ModelPackage#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 ModelPackage init() {
+		if (isInited)
+			return (ModelPackage) EPackage.Registry.INSTANCE
+					.getEPackage(ModelPackage.eNS_URI);
+
+		// Obtain or create and register package
+		ModelPackageImpl theModelPackage = (ModelPackageImpl) (EPackage.Registry.INSTANCE
+				.get(eNS_URI) instanceof ModelPackageImpl ? EPackage.Registry.INSTANCE
+				.get(eNS_URI) : new ModelPackageImpl());
+
+		isInited = true;
+
+		// Create package meta-data objects
+		theModelPackage.createPackageContents();
+
+		// Initialize created meta-data
+		theModelPackage.initializePackageContents();
+
+		// Mark meta-data to indicate it can't be changed
+		theModelPackage.freeze();
+
+		// Update the registry and return the package
+		EPackage.Registry.INSTANCE.put(ModelPackage.eNS_URI, theModelPackage);
+		return theModelPackage;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EClass getEmfFoo() {
+		return emfFooEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EAttribute getEmfFoo_Name() {
+		return (EAttribute) emfFooEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EClass getEmfBar() {
+		return emfBarEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EAttribute getEmfBar_Name() {
+		return (EAttribute) emfBarEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EReference getEmfBar_Myfoo() {
+		return (EReference) emfBarEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public ModelFactory getModelFactory() {
+		return (ModelFactory) 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
+		emfFooEClass = createEClass(EMF_FOO);
+		createEAttribute(emfFooEClass, EMF_FOO__NAME);
+
+		emfBarEClass = createEClass(EMF_BAR);
+		createEAttribute(emfBarEClass, EMF_BAR__NAME);
+		createEReference(emfBarEClass, EMF_BAR__MYFOO);
+	}
+
+	/**
+	 * <!-- 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);
+
+		// Create type parameters
+
+		// Set bounds for type parameters
+
+		// Add supertypes to classes
+
+		// Initialize classes, features, and operations; add parameters
+		initEClass(emfFooEClass, EmfFoo.class, "EmfFoo", !IS_ABSTRACT,
+				!IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getEmfFoo_Name(), ecorePackage.getEString(), "name",
+				null, 0, 1, EmfFoo.class, !IS_TRANSIENT, !IS_VOLATILE,
+				IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
+				IS_ORDERED);
+
+		initEClass(emfBarEClass, EmfBar.class, "EmfBar", !IS_ABSTRACT,
+				!IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getEmfBar_Name(), ecorePackage.getEString(), "name",
+				null, 0, 1, EmfBar.class, !IS_TRANSIENT, !IS_VOLATILE,
+				IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
+				IS_ORDERED);
+		initEReference(getEmfBar_Myfoo(), this.getEmfFoo(), null, "myfoo",
+				null, 0, 1, EmfBar.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);
+	}
+
+} // ModelPackageImpl
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/emf/model/util/ModelAdapterFactory.java b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/emf/model/util/ModelAdapterFactory.java
new file mode 100644
index 0000000..b19bcf2
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/emf/model/util/ModelAdapterFactory.java
@@ -0,0 +1,152 @@
+/**
+ *                                                                            
+ *  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 implementation
+ * 
+ */
+ package org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.emf.model.util;
+
+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.runtime.web.ecview.presentation.vaadin.tests.emf.model.EmfBar;
+import org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.emf.model.EmfFoo;
+import org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.emf.model.ModelPackage;
+
+/**
+ * <!-- 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.runtime.web.ecview.presentation.vaadin.tests.emf.model.ModelPackage
+ * @generated
+ */
+public class ModelAdapterFactory extends AdapterFactoryImpl {
+	/**
+	 * The cached model package. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected static ModelPackage modelPackage;
+
+	/**
+	 * Creates an instance of the adapter factory. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public ModelAdapterFactory() {
+		if (modelPackage == null) {
+			modelPackage = ModelPackage.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 ModelSwitch<Adapter> modelSwitch = new ModelSwitch<Adapter>() {
+		@Override
+		public Adapter caseEmfFoo(EmfFoo object) {
+			return createEmfFooAdapter();
+		}
+
+		@Override
+		public Adapter caseEmfBar(EmfBar object) {
+			return createEmfBarAdapter();
+		}
+
+		@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.runtime.web.ecview.presentation.vaadin.tests.emf.model.EmfFoo
+	 * <em>Emf Foo</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.runtime.web.ecview.presentation.vaadin.tests.emf.model.EmfFoo
+	 * @generated
+	 */
+	public Adapter createEmfFooAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '
+	 * {@link org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.emf.model.EmfBar
+	 * <em>Emf Bar</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.runtime.web.ecview.presentation.vaadin.tests.emf.model.EmfBar
+	 * @generated
+	 */
+	public Adapter createEmfBarAdapter() {
+		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;
+	}
+
+} // ModelAdapterFactory
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/emf/model/util/ModelSwitch.java b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/emf/model/util/ModelSwitch.java
new file mode 100644
index 0000000..260347f
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/emf/model/util/ModelSwitch.java
@@ -0,0 +1,150 @@
+/**
+ *                                                                            
+ *  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 implementation
+ * 
+ */
+ package org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.emf.model.util;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.util.Switch;
+import org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.emf.model.EmfBar;
+import org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.emf.model.EmfFoo;
+import org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.emf.model.ModelPackage;
+
+/**
+ * <!-- 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.runtime.web.ecview.presentation.vaadin.tests.emf.model.ModelPackage
+ * @generated
+ */
+public class ModelSwitch<T> extends Switch<T> {
+	/**
+	 * The cached model package <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected static ModelPackage modelPackage;
+
+	/**
+	 * Creates an instance of the switch. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public ModelSwitch() {
+		if (modelPackage == null) {
+			modelPackage = ModelPackage.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 T doSwitch(int classifierID, EObject theEObject) {
+		switch (classifierID) {
+		case ModelPackage.EMF_FOO: {
+			EmfFoo emfFoo = (EmfFoo) theEObject;
+			T result = caseEmfFoo(emfFoo);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
+		case ModelPackage.EMF_BAR: {
+			EmfBar emfBar = (EmfBar) theEObject;
+			T result = caseEmfBar(emfBar);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
+		default:
+			return defaultCase(theEObject);
+		}
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '
+	 * <em>Emf Foo</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>Emf Foo</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseEmfFoo(EmfFoo object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '
+	 * <em>Emf Bar</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>Emf Bar</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseEmfBar(EmfBar 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 T defaultCase(EObject object) {
+		return null;
+	}
+
+} // ModelSwitch
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/model/AbstractBean.java b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/model/AbstractBean.java
new file mode 100644
index 0000000..1bba237
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/model/AbstractBean.java
@@ -0,0 +1,95 @@
+/**
+ * Copyright (c) 2012, 2015 - Lunifera GmbH (Austria), Loetz GmbH&Co.KG 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:
+ *    Florian Pirchner - initial API and implementation
+ */
+package org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.model;
+
+import java.beans.PropertyChangeListener;
+import java.beans.PropertyChangeSupport;
+
+/**
+ * Default implementation of value bean. Offerns {@link PropertyChangeSupport}.
+ */
+public class AbstractBean {
+	private final PropertyChangeSupport changeSupport = new PropertyChangeSupport(
+			this);
+
+	public AbstractBean() {
+	}
+
+	/**
+	 * Adds the given property change listener to the change support.
+	 * 
+	 * @param listener
+	 *            Listener to be added
+	 * @see java.beans.PropertyChangeSupport#addPropertyChangeListener(java.beans.PropertyChangeListener)
+	 */
+	public void addPropertyChangeListener(PropertyChangeListener listener) {
+		changeSupport.addPropertyChangeListener(listener);
+	}
+
+	/**
+	 * Adds the given property change listener to the change support.
+	 * 
+	 * @param property
+	 *            Name of the property
+	 * @param listener
+	 *            Listener to be added
+	 * @see java.beans.PropertyChangeSupport#addPropertyChangeListener(java.lang.String,
+	 *      java.beans.PropertyChangeListener)
+	 */
+	public void addPropertyChangeListener(String property,
+			PropertyChangeListener listener) {
+		changeSupport.addPropertyChangeListener(property, listener);
+	}
+
+	/**
+	 * Removes the given property change listener from the change support.
+	 * 
+	 * @param listener
+	 *            Listener to be removed
+	 * @see java.beans.PropertyChangeSupport#removePropertyChangeListener(java.beans.PropertyChangeListener)
+	 */
+	public void removePropertyChangeListener(PropertyChangeListener listener) {
+		changeSupport.removePropertyChangeListener(listener);
+	}
+
+	/**
+	 * Removes the given property change listener from the change support.
+	 * 
+	 * @param property
+	 *            Name of the property
+	 * @param listener
+	 *            Listener to be removed
+	 * @see java.beans.PropertyChangeSupport#removePropertyChangeListener(java.lang.String,
+	 *      java.beans.PropertyChangeListener)
+	 */
+	public void removePropertyChangeListener(String property,
+			PropertyChangeListener listener) {
+		changeSupport.removePropertyChangeListener(property, listener);
+	}
+
+	/**
+	 * Fires the property changed event.
+	 * 
+	 * @param property
+	 *            Name of the property
+	 * @param oldValue
+	 *            The old value
+	 * @param newValue
+	 *            The new value
+	 * @see java.beans.PropertyChangeSupport#firePropertyChange(String, Object,
+	 *      Object)
+	 */
+	protected void firePropertyChanged(String property, Object oldValue,
+			Object newValue) {
+		changeSupport.firePropertyChange(property, oldValue, newValue);
+	}
+
+}
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/model/Bar.java b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/model/Bar.java
new file mode 100644
index 0000000..5acafa0
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/model/Bar.java
@@ -0,0 +1,168 @@
+/**
+ *                                                                            
+ *  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 implementation
+ * 
+ */
+ package org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.model;
+
+import java.beans.PropertyChangeListener;
+import java.beans.PropertyChangeSupport;
+import java.io.Serializable;
+
+@SuppressWarnings("serial")
+public class Bar implements Serializable {
+	private PropertyChangeSupport propertyChangeSupport = new PropertyChangeSupport(
+			this);
+
+	private boolean disposed;
+
+	private String name;
+
+	private Foo myfoo;
+
+	/**
+	 * Returns true, if the object is disposed. Disposed means, that it is
+	 * prepared for garbage collection and may not be used anymore. Accessing
+	 * objects that are already disposed will cause runtime exceptions.
+	 */
+	public boolean isDisposed() {
+		return this.disposed;
+	}
+
+	/**
+	 * @see PropertyChangeSupport#addPropertyChangeListener(PropertyChangeListener)
+	 */
+	public void addPropertyChangeListener(final PropertyChangeListener listener) {
+		propertyChangeSupport.addPropertyChangeListener(listener);
+	}
+
+	/**
+	 * @see PropertyChangeSupport#addPropertyChangeListener(String,
+	 *      PropertyChangeListener)
+	 */
+	public void addPropertyChangeListener(final String propertyName,
+			final PropertyChangeListener listener) {
+		propertyChangeSupport.addPropertyChangeListener(propertyName, listener);
+	}
+
+	/**
+	 * @see PropertyChangeSupport#removePropertyChangeListener(PropertyChangeListener)
+	 */
+	public void removePropertyChangeListener(
+			final PropertyChangeListener listener) {
+		propertyChangeSupport.removePropertyChangeListener(listener);
+	}
+
+	/**
+	 * @see PropertyChangeSupport#removePropertyChangeListener(String,
+	 *      PropertyChangeListener)
+	 */
+	public void removePropertyChangeListener(final String propertyName,
+			final PropertyChangeListener listener) {
+		propertyChangeSupport.removePropertyChangeListener(propertyName,
+				listener);
+	}
+
+	/**
+	 * @see PropertyChangeSupport#firePropertyChange(String, Object, Object)
+	 */
+	public void firePropertyChange(final String propertyName,
+			final Object oldValue, final Object newValue) {
+		propertyChangeSupport.firePropertyChange(propertyName, oldValue,
+				newValue);
+	}
+
+	/**
+	 * Checks whether the object is disposed.
+	 * 
+	 * @throws RuntimeException
+	 *             if the object is disposed.
+	 */
+	private void checkDisposed() {
+		if (isDisposed()) {
+			throw new RuntimeException("Object already disposed: " + this);
+		}
+	}
+
+	/**
+	 * Calling dispose will destroy that instance. The internal state will be
+	 * set to 'disposed' and methods of that object must not be used anymore.
+	 * Each call will result in runtime exceptions.
+	 * If this object keeps composition containments, these will be disposed
+	 * too. So the whole composition containment tree will be disposed on
+	 * calling this method.
+	 */
+	public void dispose() {
+		if (isDisposed()) {
+			return;
+		}
+		disposed = true;
+	}
+
+	/**
+	 * Returns the name property or <code>null</code> if not present.
+	 */
+	public String getName() {
+		checkDisposed();
+		return this.name;
+	}
+
+	/**
+	 * Sets the <code>name</code> property to this instance.
+	 * 
+	 * @param name
+	 *            - the property
+	 * @throws RuntimeException
+	 *             if instance is <code>disposed</code>
+	 * 
+	 */
+	public void setName(final String name) {
+		firePropertyChange("name", this.name, this.name = name);
+	}
+
+	/**
+	 * Returns the myfoo property or <code>null</code> if not present.
+	 */
+	public Foo getMyfoo() {
+		checkDisposed();
+		return this.myfoo;
+	}
+
+/**
+   * Sets the <code>myfoo</code> property to this instance.
+   * Since the reference has an opposite reference, the opposite <code>foo#
+   * mybars</code> of the <code>myfoo</code> will be handled automatically and no 
+   * further coding is required to keep them in sync.<p>
+   * See {@link foo#setMybars(foo)
+   * 
+   * @param myfoo - the property
+   * @throws RuntimeException if instance is <code>disposed</code>
+   * 
+   */
+	public void setMyfoo(final Foo myfoo) {
+		checkDisposed();
+		if (this.myfoo != null) {
+			this.myfoo.internalRemoveFromMybars(this);
+		}
+		internalSetMyfoo(myfoo);
+		if (this.myfoo != null) {
+			this.myfoo.internalAddToMybars(this);
+		}
+
+	}
+
+	/**
+	 * For internal use only!
+	 */
+	public void internalSetMyfoo(final Foo myfoo) {
+		firePropertyChange("myfoo", this.myfoo, this.myfoo = myfoo);
+	}
+}
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/model/BarHashById.java b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/model/BarHashById.java
new file mode 100644
index 0000000..b5108b4
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/model/BarHashById.java
@@ -0,0 +1,168 @@
+/**
+ *                                                                            
+ *  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 implementation
+ * 
+ */
+ package org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.model;
+
+import java.beans.PropertyChangeListener;
+import java.beans.PropertyChangeSupport;
+import java.io.Serializable;
+
+@SuppressWarnings("serial")
+public class BarHashById implements Serializable {
+	private PropertyChangeSupport propertyChangeSupport = new PropertyChangeSupport(
+			this);
+
+	private final String id;
+
+	private boolean disposed;
+
+	private String name;
+
+	public BarHashById(String id) {
+		super();
+		this.id = id;
+	}
+
+	/**
+	 * Returns true, if the object is disposed. Disposed means, that it is
+	 * prepared for garbage collection and may not be used anymore. Accessing
+	 * objects that are already disposed will cause runtime exceptions.
+	 */
+	public boolean isDisposed() {
+		return this.disposed;
+	}
+
+	/**
+	 * @see PropertyChangeSupport#addPropertyChangeListener(PropertyChangeListener)
+	 */
+	public void addPropertyChangeListener(final PropertyChangeListener listener) {
+		propertyChangeSupport.addPropertyChangeListener(listener);
+	}
+
+	/**
+	 * @see PropertyChangeSupport#addPropertyChangeListener(String,
+	 *      PropertyChangeListener)
+	 */
+	public void addPropertyChangeListener(final String propertyName,
+			final PropertyChangeListener listener) {
+		propertyChangeSupport.addPropertyChangeListener(propertyName, listener);
+	}
+
+	/**
+	 * @see PropertyChangeSupport#removePropertyChangeListener(PropertyChangeListener)
+	 */
+	public void removePropertyChangeListener(
+			final PropertyChangeListener listener) {
+		propertyChangeSupport.removePropertyChangeListener(listener);
+	}
+
+	/**
+	 * @see PropertyChangeSupport#removePropertyChangeListener(String,
+	 *      PropertyChangeListener)
+	 */
+	public void removePropertyChangeListener(final String propertyName,
+			final PropertyChangeListener listener) {
+		propertyChangeSupport.removePropertyChangeListener(propertyName,
+				listener);
+	}
+
+	/**
+	 * @see PropertyChangeSupport#firePropertyChange(String, Object, Object)
+	 */
+	public void firePropertyChange(final String propertyName,
+			final Object oldValue, final Object newValue) {
+		propertyChangeSupport.firePropertyChange(propertyName, oldValue,
+				newValue);
+	}
+
+	/**
+	 * Checks whether the object is disposed.
+	 * 
+	 * @throws RuntimeException
+	 *             if the object is disposed.
+	 */
+	private void checkDisposed() {
+		if (isDisposed()) {
+			throw new RuntimeException("Object already disposed: " + this);
+		}
+	}
+
+	/**
+	 * Calling dispose will destroy that instance. The internal state will be
+	 * set to 'disposed' and methods of that object must not be used anymore.
+	 * Each call will result in runtime exceptions.
+	 * If this object keeps composition containments, these will be disposed
+	 * too. So the whole composition containment tree will be disposed on
+	 * calling this method.
+	 */
+	public void dispose() {
+		if (isDisposed()) {
+			return;
+		}
+		disposed = true;
+	}
+
+	/**
+	 * Returns the name property or <code>null</code> if not present.
+	 */
+	public String getName() {
+		checkDisposed();
+		return this.name;
+	}
+
+	/**
+	 * Sets the <code>name</code> property to this instance.
+	 * 
+	 * @param name
+	 *            - the property
+	 * @throws RuntimeException
+	 *             if instance is <code>disposed</code>
+	 * 
+	 */
+	public void setName(final String name) {
+		firePropertyChange("name", this.name, this.name = name);
+	}
+
+	@Override
+	public int hashCode() {
+		final int prime = 31;
+		int result = 1;
+		result = prime * result + ((id == null) ? 0 : id.hashCode());
+		return result;
+	}
+
+	@Override
+	public boolean equals(Object obj) {
+		if (this == obj)
+			return true;
+		if (obj == null)
+			return false;
+		if (getClass() != obj.getClass())
+			return false;
+		BarHashById other = (BarHashById) obj;
+		if (disposed != other.disposed)
+			return false;
+		if (id == null) {
+			if (other.id != null)
+				return false;
+		} else if (!id.equals(other.id))
+			return false;
+		if (name == null) {
+			if (other.name != null)
+				return false;
+		} else if (!name.equals(other.name))
+			return false;
+		return true;
+	}
+
+}
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/model/Foo.java b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/model/Foo.java
new file mode 100644
index 0000000..e9bef89
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/model/Foo.java
@@ -0,0 +1,218 @@
+/**
+ *                                                                            
+ *  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 implementation
+ * 
+ */
+ package org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.model;
+
+import java.beans.PropertyChangeListener;
+import java.beans.PropertyChangeSupport;
+import java.io.Serializable;
+import java.util.Collections;
+import java.util.List;
+
+@SuppressWarnings("serial")
+public class Foo implements Serializable {
+	private PropertyChangeSupport propertyChangeSupport = new PropertyChangeSupport(
+			this);
+
+	private boolean disposed;
+
+	private String name;
+
+	private List<Bar> mybars;
+
+	/**
+	 * Returns true, if the object is disposed. Disposed means, that it is
+	 * prepared for garbage collection and may not be used anymore. Accessing
+	 * objects that are already disposed will cause runtime exceptions.
+	 */
+	public boolean isDisposed() {
+		return this.disposed;
+	}
+
+	/**
+	 * @see PropertyChangeSupport#addPropertyChangeListener(PropertyChangeListener)
+	 */
+	public void addPropertyChangeListener(final PropertyChangeListener listener) {
+		propertyChangeSupport.addPropertyChangeListener(listener);
+	}
+
+	/**
+	 * @see PropertyChangeSupport#addPropertyChangeListener(String,
+	 *      PropertyChangeListener)
+	 */
+	public void addPropertyChangeListener(final String propertyName,
+			final PropertyChangeListener listener) {
+		propertyChangeSupport.addPropertyChangeListener(propertyName, listener);
+	}
+
+	/**
+	 * @see PropertyChangeSupport#removePropertyChangeListener(PropertyChangeListener)
+	 */
+	public void removePropertyChangeListener(
+			final PropertyChangeListener listener) {
+		propertyChangeSupport.removePropertyChangeListener(listener);
+	}
+
+	/**
+	 * @see PropertyChangeSupport#removePropertyChangeListener(String,
+	 *      PropertyChangeListener)
+	 */
+	public void removePropertyChangeListener(final String propertyName,
+			final PropertyChangeListener listener) {
+		propertyChangeSupport.removePropertyChangeListener(propertyName,
+				listener);
+	}
+
+	/**
+	 * @see PropertyChangeSupport#firePropertyChange(String, Object, Object)
+	 */
+	public void firePropertyChange(final String propertyName,
+			final Object oldValue, final Object newValue) {
+		propertyChangeSupport.firePropertyChange(propertyName, oldValue,
+				newValue);
+	}
+
+	/**
+	 * Checks whether the object is disposed.
+	 * 
+	 * @throws RuntimeException
+	 *             if the object is disposed.
+	 */
+	private void checkDisposed() {
+		if (isDisposed()) {
+			throw new RuntimeException("Object already disposed: " + this);
+		}
+	}
+
+	/**
+	 * Calling dispose will destroy that instance. The internal state will be
+	 * set to 'disposed' and methods of that object must not be used anymore.
+	 * Each call will result in runtime exceptions.
+	 * If this object keeps composition containments, these will be disposed
+	 * too. So the whole composition containment tree will be disposed on
+	 * calling this method.
+	 */
+	public void dispose() {
+		if (isDisposed()) {
+			return;
+		}
+		try {
+			// Dispose all the composition references.
+			if (this.mybars != null) {
+				for (Bar bar : this.mybars) {
+					bar.dispose();
+				}
+				this.mybars = null;
+			}
+
+		} finally {
+			disposed = true;
+		}
+
+	}
+
+	/**
+	 * Returns the name property or <code>null</code> if not present.
+	 */
+	public String getName() {
+		checkDisposed();
+		return this.name;
+	}
+
+	/**
+	 * Sets the <code>name</code> property to this instance.
+	 * 
+	 * @param name
+	 *            - the property
+	 * @throws RuntimeException
+	 *             if instance is <code>disposed</code>
+	 * 
+	 */
+	public void setName(final String name) {
+		firePropertyChange("name", this.name, this.name = name);
+	}
+
+	/**
+	 * Returns an unmodifiable list of mybars.
+	 */
+	public List<Bar> getMybars() {
+		checkDisposed();
+		return Collections.unmodifiableList(internalGetMybars());
+	}
+
+	/**
+	 * Returns the list of <code>bar</code>s thereby lazy initializing it. For
+	 * internal use only!
+	 * 
+	 * @return list - the resulting list
+	 * 
+	 */
+	private List<Bar> internalGetMybars() {
+		if (this.mybars == null) {
+			this.mybars = new java.util.ArrayList<Bar>();
+		}
+		return this.mybars;
+	}
+
+	/**
+	 * Adds the given bar to this object.
+	 * <p>
+	 * Since the reference is a composition reference, the opposite reference
+	 * <code>bar#myfoo</code> of the <code>bar</code> will be handled
+	 * automatically and no further coding is required to keep them in sync.
+	 * <p>
+	 * See {@link bar#setMyfoo(bar)}.
+	 * 
+	 * @param bar
+	 *            - the property
+	 * @throws RuntimeException
+	 *             if instance is <code>disposed</code>
+	 * 
+	 */
+	public void addToMybars(final Bar bar) {
+		checkDisposed();
+		bar.setMyfoo(this);
+	}
+
+	/**
+	 * Removes the given bar from this object.
+	 * <p>
+	 * Since the reference is a cascading reference, the opposite reference
+	 * (bar.myfoo) of the bar will be handled automatically and no further
+	 * coding is required to keep them in sync. See {@link bar#setMyfoo(bar)}.
+	 * 
+	 * @param bar
+	 *            - the property
+	 * @throws RuntimeException
+	 *             if instance is <code>disposed</code>
+	 * 
+	 */
+	public void removeFromMybars(final Bar bar) {
+		checkDisposed();
+		bar.setMyfoo(null);
+	}
+
+	/**
+	 * For internal use only!
+	 */
+	public void internalAddToMybars(final Bar bar) {
+		internalGetMybars().add(bar);
+	}
+
+	/**
+	 * For internal use only!
+	 */
+	public void internalRemoveFromMybars(final Bar bar) {
+		internalGetMybars().remove(bar);
+	}
+}
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/model/ValueBean.java b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/model/ValueBean.java
new file mode 100644
index 0000000..f8deb1f
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/model/ValueBean.java
@@ -0,0 +1,131 @@
+/**
+ *                                                                            
+ *  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 implementation
+ * 
+ */
+ package org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.model;
+
+import java.util.Date;
+
+public class ValueBean extends AbstractBean {
+
+	private String value;
+	private boolean boolValue;
+	private Date dateValue;
+	private int intValue;
+	private long longValue;
+	private double doubleValue;
+	private float floatValue;
+
+	public ValueBean(String value) {
+		super();
+		this.value = value;
+	}
+
+	public ValueBean(boolean value) {
+		super();
+		this.boolValue = value;
+	}
+
+	public ValueBean(Date value) {
+		super();
+		this.dateValue = value;
+	}
+
+	public ValueBean(int value) {
+		super();
+		this.intValue = value;
+	}
+
+	public ValueBean(long value) {
+		super();
+		this.longValue = value;
+	}
+
+	public ValueBean(double value) {
+		super();
+		this.doubleValue = value;
+	}
+
+	public ValueBean(float value) {
+		super();
+		this.floatValue = value;
+	}
+
+	/**
+	 * @return the value
+	 */
+	public String getValue() {
+		return value;
+	}
+
+	/**
+	 * @param value
+	 *            the value to set
+	 */
+	public void setValue(String value) {
+		firePropertyChanged("value", this.value, this.value = value);
+	}
+
+	public boolean isBoolValue() {
+		return boolValue;
+	}
+
+	public void setBoolValue(boolean boolValue) {
+		firePropertyChanged("boolValue", this.boolValue,
+				this.boolValue = boolValue);
+	}
+
+	public Date getDateValue() {
+		return dateValue;
+	}
+
+	public void setDateValue(Date dateValue) {
+		firePropertyChanged("dateValue", this.dateValue,
+				this.dateValue = dateValue);
+	}
+
+	public int getIntValue() {
+		return intValue;
+	}
+
+	public void setIntValue(int intValue) {
+		firePropertyChanged("intValue", this.intValue, this.intValue = intValue);
+	}
+
+	public long getLongValue() {
+		return longValue;
+	}
+
+	public void setLongValue(long longValue) {
+		firePropertyChanged("longValue", this.longValue,
+				this.longValue = longValue);
+	}
+
+	public double getDoubleValue() {
+		return doubleValue;
+	}
+
+	public void setDoubleValue(double doubleValue) {
+		firePropertyChanged("doubleValue", this.doubleValue,
+				this.doubleValue = doubleValue);
+	}
+
+	public float getFloatValue() {
+		return floatValue;
+	}
+
+	public void setFloatValue(float floatValue) {
+		firePropertyChanged("floatValue", this.floatValue,
+				this.floatValue = floatValue);
+	}
+
+}
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/presentation/BindingManagerTests.java b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/presentation/BindingManagerTests.java
new file mode 100644
index 0000000..7561bf3
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/presentation/BindingManagerTests.java
@@ -0,0 +1,99 @@
+/**
+ * Copyright (c) 2012, 2015 Lunifera GmbH (Gross Enzersdorf), 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 API and implementation
+ */
+package org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.presentation;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YTextField;
+import org.eclipse.osbp.ecview.core.extension.model.extension.util.SimpleExtensionModelFactory;
+import org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.internal.binding.BindingManager;
+import org.eclipse.osbp.runtime.web.vaadin.databinding.VaadinObservables;
+import org.osgi.framework.BundleException;
+import org.osgi.service.cm.ConfigurationException;
+
+import com.vaadin.ui.TextField;
+import com.vaadin.ui.UI;
+
+@SuppressWarnings("restriction")
+public class BindingManagerTests {
+
+	private SimpleExtensionModelFactory factory = new SimpleExtensionModelFactory();
+	private BindingManager bindingManager;
+
+	/**
+	 * Setup tests.
+	 * 
+	 * @throws ConfigurationException
+	 * @throws BundleException
+	 */
+	@Before
+	public void setup() throws ConfigurationException, BundleException {
+		UI.setCurrent(new DefaultUI());
+		bindingManager = new BindingManager(new DefaultViewContext(),
+				VaadinObservables.getRealm(UI.getCurrent()));
+	}
+
+	@Test
+	public void test_bindEnabled() {
+		TextField text = new TextField();
+		YTextField yText = factory.createTextField();
+		yText.setEnabled(yText.isInitialEditable());
+
+		bindingManager.bindEnabled(yText, text);
+		assertTrue(text.isEnabled());
+
+		yText.setEnabled(false);
+		assertFalse(text.isEnabled());
+
+		// test target to model
+		text.setEnabled(true);
+		// -> no update
+		assertFalse(yText.isEnabled());
+	}
+
+	@Test
+	public void test_bindVisible() {
+		TextField text = new TextField();
+		YTextField yText = factory.createTextField();
+		yText.setVisible(yText.isInitialVisible());
+
+		bindingManager.bindVisible(yText, text);
+		assertTrue(text.isVisible());
+
+		yText.setVisible(false);
+		assertFalse(text.isVisible());
+
+		// test target to model
+		text.setVisible(true);
+		// -> no update
+		assertFalse(yText.isVisible());
+	}
+
+	@Test
+	public void test_bindReadonly() {
+		TextField text = new TextField();
+		YTextField yText = factory.createTextField();
+		yText.setEditable(yText.isInitialEditable());
+
+		bindingManager.bindReadonly(yText, text);
+		assertFalse(text.isReadOnly());
+
+		yText.setEditable(true);
+		assertFalse(text.isReadOnly());
+
+		// test target to model
+		text.setReadOnly(false);
+		assertTrue(yText.isEditable());
+	}
+}
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/presentation/BrowserPresentationTests.java b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/presentation/BrowserPresentationTests.java
new file mode 100644
index 0000000..0a36388
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/presentation/BrowserPresentationTests.java
@@ -0,0 +1,424 @@
+/**
+ * Copyright (c) 2012, 2015 - Lunifera GmbH (Austria), Loetz GmbH&Co.KG 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:
+ * Florian Pirchner - initial API and implementation
+ */
+package org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.presentation;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import java.util.HashMap;
+import java.util.Locale;
+import java.util.Map;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.eclipse.osbp.ecview.core.common.context.ContextException;
+import org.eclipse.osbp.ecview.core.common.context.IViewContext;
+import org.eclipse.osbp.ecview.core.common.editpart.DelegatingEditPartManager;
+import org.eclipse.osbp.ecview.core.common.editpart.IElementEditpart;
+import org.eclipse.osbp.ecview.core.common.editpart.IEmbeddableEditpart;
+import org.eclipse.osbp.ecview.core.common.editpart.IViewEditpart;
+import org.eclipse.osbp.ecview.core.common.model.binding.YBeanValueBindingEndpoint;
+import org.eclipse.osbp.ecview.core.common.model.binding.YBindingSet;
+import org.eclipse.osbp.ecview.core.common.model.core.YElement;
+import org.eclipse.osbp.ecview.core.common.model.core.YView;
+import org.eclipse.osbp.ecview.core.common.presentation.IWidgetPresentation;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YBrowser;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YGridLayout;
+import org.eclipse.osbp.ecview.core.extension.model.extension.util.SimpleExtensionModelFactory;
+import org.eclipse.osbp.ecview.core.ui.core.editparts.extension.IBrowserEditpart;
+import org.eclipse.osbp.runtime.common.i18n.II18nService;
+import org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.VaadinRenderer;
+import org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.common.AbstractVaadinWidgetPresenter;
+import org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.internal.BrowserPresentation;
+import org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.internal.TextFieldPresentation;
+import org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.model.ValueBean;
+import org.osgi.framework.BundleException;
+import org.osgi.service.cm.ConfigurationException;
+
+import com.vaadin.ui.BrowserFrame;
+import com.vaadin.ui.Component;
+import com.vaadin.ui.CssLayout;
+import com.vaadin.ui.UI;
+
+/**
+ * Tests the {@link TextFieldPresentation}.
+ */
+@SuppressWarnings("restriction")
+public class BrowserPresentationTests {
+
+	private SimpleExtensionModelFactory factory = new SimpleExtensionModelFactory();
+	private CssLayout rootLayout = new CssLayout();
+
+	/**
+	 * Setup tests.
+	 * 
+	 * @throws ConfigurationException
+	 * @throws BundleException
+	 */
+	@Before
+	public void setup() throws ConfigurationException, BundleException {
+		UI.setCurrent(new DefaultUI());
+		UI.getCurrent().setContent(rootLayout);
+	}
+
+	/**
+	 * Tests rendering issues.
+	 * 
+	 * @throws Exception
+	 */
+	@Test
+	// BEGIN SUPRESS CATCH EXCEPTION
+	public void test_isRendered_unrender_byModel() throws Exception {
+		// END SUPRESS CATCH EXCEPTION
+		// build the view model
+		// ...> yView
+		// ......> yGridLayout
+		// .........> yBrowser
+		YView yView = factory.createView();
+		YGridLayout yGridlayout = factory.createGridLayout();
+		yView.setContent(yGridlayout);
+		YBrowser yBrowser = factory.createBrowser();
+		yGridlayout.getElements().add(yBrowser);
+
+		VaadinRenderer renderer = new VaadinRenderer();
+		IViewContext viewContext = renderer.render(rootLayout, yView, null);
+
+		IBrowserEditpart textEditpart = DelegatingEditPartManager.getInstance()
+				.getEditpart(viewContext, yBrowser);
+		IWidgetPresentation<Component> presentation = textEditpart
+				.getPresentation();
+		assertTrue(presentation.isRendered());
+		assertFalse(presentation.isDisposed());
+
+		yGridlayout.getElements().remove(yBrowser);
+		assertFalse(presentation.isRendered());
+		assertFalse(presentation.isDisposed());
+	}
+
+	/**
+	 * Tests the internal structure.
+	 * 
+	 * @throws Exception
+	 */
+	@Test
+	// BEGIN SUPRESS CATCH EXCEPTION
+	public void test_InternalStructure() throws Exception {
+		// END SUPRESS CATCH EXCEPTION
+		// build the view model
+		// ...> yView
+		// ......> yBrowser
+		YView yView = factory.createView();
+		YBrowser yBrowser = factory.createBrowser();
+		yView.setContent(yBrowser);
+
+		VaadinRenderer renderer = new VaadinRenderer();
+		IViewContext viewContext = renderer.render(rootLayout, yView, null);
+
+		IBrowserEditpart textEditpart = DelegatingEditPartManager.getInstance()
+				.getEditpart(viewContext, yBrowser);
+		IWidgetPresentation<Component> presentation = textEditpart
+				.getPresentation();
+
+		BrowserFrame text = (BrowserFrame) presentation.getWidget();
+		assertNotNull(text);
+	}
+
+	/**
+	 * Test the internal structure based on CSS.
+	 * 
+	 * @throws Exception
+	 */
+	@Test
+	// BEGIN SUPRESS CATCH EXCEPTION
+	public void test_InternalStructure__CSS() throws Exception {
+		// END SUPRESS CATCH EXCEPTION
+		// build the view model
+		// ...> yView
+		// ......> yBrowser
+		YView yView = factory.createView();
+		YGridLayout yLayout = factory.createGridLayout();
+		yView.setContent(yLayout);
+		YBrowser yBrowser1 = factory.createBrowser();
+		yBrowser1.setCssID("ID_0815");
+		yBrowser1.setCssClass("anyOtherClass");
+		yLayout.getElements().add(yBrowser1);
+		YBrowser yBrowser2 = factory.createBrowser();
+		yLayout.getElements().add(yBrowser2);
+
+		VaadinRenderer renderer = new VaadinRenderer();
+		IViewContext viewContext = renderer.render(rootLayout, yView, null);
+
+		IBrowserEditpart text1Editpart = DelegatingEditPartManager
+				.getInstance().getEditpart(viewContext, yBrowser1);
+		IBrowserEditpart text2Editpart = DelegatingEditPartManager
+				.getInstance().getEditpart(viewContext, yBrowser2);
+		IWidgetPresentation<Component> text1Presentation = text1Editpart
+				.getPresentation();
+		IWidgetPresentation<Component> text2Presentation = text2Editpart
+				.getPresentation();
+
+		BrowserFrame text1 = (BrowserFrame) text1Presentation.getWidget();
+		BrowserFrame text2 = (BrowserFrame) text2Presentation.getWidget();
+
+		// assert css class
+		assertTrue(text1.getStyleName().contains("anyOtherClass"));
+		assertTrue(text2.getStyleName().contains(
+				AbstractVaadinWidgetPresenter.CSS_CLASS_CONTROL));
+
+		// assert css id
+		assertEquals("ID_0815", text1.getId());
+		assertEquals(text2Editpart.getId(), text2.getId());
+	}
+
+	/**
+	 * Test the internal structure based on CSS.
+	 * 
+	 * @throws Exception
+	 */
+	@Test
+	// BEGIN SUPRESS CATCH EXCEPTION
+	public void test_Bindings() throws Exception {
+		// END SUPRESS CATCH EXCEPTION
+		// build the view model
+		// ...> yView
+		// ......> yBrowser
+		YView yView = factory.createView();
+		YGridLayout yLayout = factory.createGridLayout();
+		yView.setContent(yLayout);
+		YBrowser yBrowser1 = factory.createBrowser();
+		yLayout.getElements().add(yBrowser1);
+		YBrowser yBrowser2 = factory.createBrowser();
+		yLayout.getElements().add(yBrowser2);
+
+		VaadinRenderer renderer = new VaadinRenderer();
+		IViewContext viewContext = renderer.render(rootLayout, yView, null);
+
+		IBrowserEditpart text1Editpart = DelegatingEditPartManager
+				.getInstance().getEditpart(viewContext, yBrowser1);
+		IBrowserEditpart text2Editpart = DelegatingEditPartManager
+				.getInstance().getEditpart(viewContext, yBrowser2);
+		IWidgetPresentation<Component> text1Presentation = text1Editpart
+				.getPresentation();
+		IWidgetPresentation<Component> text2Presentation = text2Editpart
+				.getPresentation();
+		BrowserFrame text1 = (BrowserFrame) text1Presentation.getWidget();
+		BrowserFrame text2 = (BrowserFrame) text2Presentation.getWidget();
+
+		// start tests
+		//
+		assertTrue(text1.isVisible());
+		assertTrue(text1.isEnabled());
+		assertFalse(text1.isReadOnly());
+
+		assertTrue(text2.isVisible());
+		assertTrue(text2.isEnabled());
+		assertFalse(text2.isReadOnly());
+
+		yBrowser1.setVisible(false);
+		assertFalse(text1.isVisible());
+
+		yBrowser1.setEnabled(false);
+		assertFalse(text1.isEnabled());
+
+		yBrowser1.setEditable(false);
+		assertTrue(text1.isReadOnly());
+
+		// target to model -> UI element does not send notifications for
+		// readOnly state changes
+		text1.setReadOnly(false);
+		assertFalse(yBrowser1.isEditable());
+	}
+
+	/**
+	 * Test the automatic disposal of bindings
+	 * 
+	 * @throws ContextException
+	 */
+	@Test
+	public void testBindingIsDisposed() throws ContextException {
+		// test that the binding is disposed if field is disposed
+		YView yView = factory.createView();
+		YBrowser yBrowser = factory.createBrowser();
+		yView.setContent(yBrowser);
+
+		VaadinRenderer renderer = new VaadinRenderer();
+		IViewContext viewContext = renderer.render(rootLayout, yView, null);
+
+		IBrowserEditpart textEditpart = DelegatingEditPartManager.getInstance()
+				.getEditpart(viewContext, yBrowser);
+		IWidgetPresentation<Component> presentation = textEditpart
+				.getPresentation();
+
+		assertTrue(presentation.isRendered());
+		assertFalse(presentation.isDisposed());
+		assertEquals(4, presentation.getUIBindings().size());
+
+		presentation.dispose();
+		assertFalse(presentation.isRendered());
+		assertTrue(presentation.isDisposed());
+		assertEquals(0, presentation.getUIBindings().size());
+
+	}
+
+
+	@Test
+	public void test_i18n() throws ContextException {
+
+		// switch the global locale to german
+		Locale.setDefault(Locale.GERMAN);
+
+		YView yView = factory.createView();
+		YGridLayout yGridlayout = factory.createGridLayout();
+		yView.setContent(yGridlayout);
+		YBrowser yBrowser = factory.createBrowser();
+		yGridlayout.getElements().add(yBrowser);
+
+		// set the i18n key
+		yBrowser.setLabelI18nKey(I18nServiceForTests.KEY__AGE);
+
+		// prepare the I18nService and pass it to the renderer
+		Map<String, Object> parameter = new HashMap<String, Object>();
+		Map<String, Object> services = new HashMap<String, Object>();
+		parameter.put(IViewContext.PARAM_SERVICES, services);
+		services.put(II18nService.ID, new I18nServiceForTests());
+
+		VaadinRenderer renderer = new VaadinRenderer();
+		IViewContext viewContext = renderer.render(rootLayout, yView, parameter);
+		IBrowserEditpart editpart = DelegatingEditPartManager.getInstance()
+				.getEditpart(viewContext, yBrowser);
+		BrowserPresentation presentation = editpart.getPresentation();
+
+		assertEquals("Alter", presentation.getWidget().getCaption());
+
+		viewContext.setLocale(Locale.ENGLISH);
+		assertEquals("Age", presentation.getWidget().getCaption());
+	}
+
+	@Test
+	// BEGIN SUPRESS CATCH EXCEPTION
+	public void test_Readonly_Binding() throws Exception {
+		// END SUPRESS CATCH EXCEPTION
+		// build the view model
+		YView yView = factory.createView();
+		YGridLayout yLayout = factory.createGridLayout();
+		yView.setContent(yLayout);
+		YBrowser yBrowser = factory.createBrowser();
+		yLayout.getElements().add(yBrowser);
+
+		VaadinRenderer renderer = new VaadinRenderer();
+		IViewContext viewContext = renderer.render(rootLayout, yView, null);
+
+		IBrowserEditpart editpart = DelegatingEditPartManager.getInstance()
+				.getEditpart(viewContext, yBrowser);
+		IWidgetPresentation<Component> presentation = editpart
+				.getPresentation();
+		BrowserFrame browser = (BrowserFrame) presentation.getWidget();
+
+		ValueBean bean = new ValueBean(false);
+		YBeanValueBindingEndpoint yBeanBinding = factory
+				.createBeanBindingEndpoint();
+		yBeanBinding.setBean(bean);
+		yBeanBinding.setPropertyPath("boolValue");
+		YBindingSet yBindingSet = yView.getOrCreateBindingSet();
+		yBindingSet.addBinding(yBrowser.createEditableEndpoint(), yBeanBinding);
+
+		// test binding
+		assertFalse(yBrowser.isEditable());
+		assertFalse(!browser.isReadOnly());
+		assertFalse(bean.isBoolValue());
+
+		bean.setBoolValue(true);
+		assertTrue(yBrowser.isEditable());
+		assertTrue(!browser.isReadOnly());
+		assertTrue(bean.isBoolValue());
+	}
+
+	@Test
+	// BEGIN SUPRESS CATCH EXCEPTION
+	public void test_Visible_Binding() throws Exception {
+		// END SUPRESS CATCH EXCEPTION
+		// build the view model
+		YView yView = factory.createView();
+		YGridLayout yLayout = factory.createGridLayout();
+		yView.setContent(yLayout);
+		YBrowser yBrowser = factory.createBrowser();
+		yLayout.getElements().add(yBrowser);
+
+		VaadinRenderer renderer = new VaadinRenderer();
+		IViewContext viewContext = renderer.render(rootLayout, yView, null);
+
+		IBrowserEditpart editpart = DelegatingEditPartManager.getInstance()
+				.getEditpart(viewContext, yBrowser);
+		IWidgetPresentation<Component> presentation = editpart
+				.getPresentation();
+		BrowserFrame browser = (BrowserFrame) presentation.getWidget();
+
+		ValueBean bean = new ValueBean(false);
+		YBeanValueBindingEndpoint yBeanBinding = factory
+				.createBeanBindingEndpoint();
+		yBeanBinding.setBean(bean);
+		yBeanBinding.setPropertyPath("boolValue");
+		YBindingSet yBindingSet = yView.getOrCreateBindingSet();
+		yBindingSet.addBinding(yBrowser.createVisibleEndpoint(), yBeanBinding);
+
+		// test binding
+		assertFalse(yBrowser.isVisible());
+		assertFalse(browser.isVisible());
+		assertFalse(bean.isBoolValue());
+
+		bean.setBoolValue(true);
+		assertTrue(yBrowser.isVisible());
+		assertTrue(browser.isVisible());
+		assertTrue(bean.isBoolValue());
+	}
+
+	@Test
+	// BEGIN SUPRESS CATCH EXCEPTION
+	public void test_Enabled_Binding() throws Exception {
+		// END SUPRESS CATCH EXCEPTION
+		// build the view model
+		YView yView = factory.createView();
+		YGridLayout yLayout = factory.createGridLayout();
+		yView.setContent(yLayout);
+		YBrowser yBrowser = factory.createBrowser();
+		yLayout.getElements().add(yBrowser);
+
+		VaadinRenderer renderer = new VaadinRenderer();
+		IViewContext viewContext = renderer.render(rootLayout, yView, null);
+
+		IBrowserEditpart editpart = DelegatingEditPartManager.getInstance()
+				.getEditpart(viewContext, yBrowser);
+		IWidgetPresentation<Component> presentation = editpart
+				.getPresentation();
+		BrowserFrame browser = (BrowserFrame) presentation.getWidget();
+
+		ValueBean bean = new ValueBean(false);
+		YBeanValueBindingEndpoint yBeanBinding = factory
+				.createBeanBindingEndpoint();
+		yBeanBinding.setBean(bean);
+		yBeanBinding.setPropertyPath("boolValue");
+		YBindingSet yBindingSet = yView.getOrCreateBindingSet();
+		yBindingSet.addBinding(yBrowser.createEnabledEndpoint(), yBeanBinding);
+
+		// test binding
+		assertFalse(yBrowser.isEnabled());
+		assertFalse(browser.isEnabled());
+		assertFalse(bean.isBoolValue());
+
+		bean.setBoolValue(true);
+		assertTrue(yBrowser.isEnabled());
+		assertTrue(browser.isEnabled());
+		assertTrue(bean.isBoolValue());
+	}
+
+}
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/presentation/BundleHelper.java b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/presentation/BundleHelper.java
new file mode 100644
index 0000000..d6cc2b6
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/presentation/BundleHelper.java
@@ -0,0 +1,77 @@
+/**
+ * Copyright (c) 2012, 2015 Lunifera GmbH (Gross Enzersdorf), 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 API and implementation
+ */
+package org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.presentation;
+
+import static org.knowhowlab.osgi.testing.assertions.BundleAssert.assertBundleAvailable;
+import static org.knowhowlab.osgi.testing.assertions.ServiceAssert.assertServiceAvailable;
+
+import org.knowhowlab.osgi.testing.utils.BundleUtils;
+import org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.Activator;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleException;
+
+/**
+ * Helps checking required bundles
+ * 
+ * @author admin
+ * 
+ */
+public class BundleHelper {
+
+	public static void ensureSetup() throws BundleException {
+		ensureNeededBundlesAvailable();
+		ensureNeededServicesAvailable();
+	}
+
+	public static void ensureNeededBundlesAvailable() throws BundleException {
+
+		// check bundles available
+		assertBundleAvailable("org.eclipse.osbp.runtime.web.http");
+		assertBundleAvailable("org.eclipse.osbp.runtime.web.jetty");
+		assertBundleAvailable("org.eclipse.equinox.ds");
+		assertBundleAvailable("org.eclipse.equinox.util");
+		assertBundleAvailable("org.eclipse.equinox.cm");
+
+		// stop jetty
+		Bundle jetty = BundleUtils.findBundle(Activator.context,
+				"org.eclipse.equinox.http.jetty");
+		if (jetty != null) {
+			jetty.stop();
+		}
+
+		// start ds
+		Bundle ds = BundleUtils.findBundle(Activator.context,
+				"org.eclipse.equinox.ds");
+		if (ds == null) {
+			throw new IllegalStateException(
+					"Bundle org.eclipse.equinox.ds is missing!");
+		}
+		if (ds.getState() != Bundle.STARTING && ds.getState() != Bundle.ACTIVE) {
+			ds.start();
+		}
+
+		// start cm
+		Bundle cm = BundleUtils.findBundle(Activator.context,
+				"org.eclipse.equinox.cm");
+		if (cm == null) {
+			throw new IllegalStateException(
+					"Bundle org.eclipse.equinox.cm is missing!");
+		}
+		if (cm.getState() != Bundle.STARTING && cm.getState() != Bundle.ACTIVE) {
+			cm.start();
+		}
+	}
+
+	public static void ensureNeededServicesAvailable() throws BundleException {
+		assertServiceAvailable("org.osgi.service.cm.ConfigurationAdmin");
+	}
+
+}
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/presentation/ButtonPresentationTests.java b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/presentation/ButtonPresentationTests.java
new file mode 100644
index 0000000..60ca730
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/presentation/ButtonPresentationTests.java
@@ -0,0 +1,415 @@
+/**
+ * Copyright (c) 2012, 2015 - Lunifera GmbH (Austria), Loetz GmbH&Co.KG 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:
+ * Florian Pirchner - initial API and implementation
+ */
+package org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.presentation;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import java.util.HashMap;
+import java.util.Locale;
+import java.util.Map;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.eclipse.osbp.ecview.core.common.context.ContextException;
+import org.eclipse.osbp.ecview.core.common.context.IViewContext;
+import org.eclipse.osbp.ecview.core.common.editpart.DelegatingEditPartManager;
+import org.eclipse.osbp.ecview.core.common.editpart.IElementEditpart;
+import org.eclipse.osbp.ecview.core.common.editpart.IEmbeddableEditpart;
+import org.eclipse.osbp.ecview.core.common.editpart.IViewEditpart;
+import org.eclipse.osbp.ecview.core.common.model.binding.YBeanValueBindingEndpoint;
+import org.eclipse.osbp.ecview.core.common.model.binding.YBindingSet;
+import org.eclipse.osbp.ecview.core.common.model.core.YElement;
+import org.eclipse.osbp.ecview.core.common.model.core.YView;
+import org.eclipse.osbp.ecview.core.common.presentation.IWidgetPresentation;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YButton;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YGridLayout;
+import org.eclipse.osbp.ecview.core.extension.model.extension.util.SimpleExtensionModelFactory;
+import org.eclipse.osbp.ecview.core.ui.core.editparts.extension.IButtonEditpart;
+import org.eclipse.osbp.runtime.common.i18n.II18nService;
+import org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.VaadinRenderer;
+import org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.common.AbstractVaadinWidgetPresenter;
+import org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.internal.ButtonPresentation;
+import org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.model.ValueBean;
+import org.osgi.framework.BundleException;
+import org.osgi.service.cm.ConfigurationException;
+
+import com.vaadin.ui.Button;
+import com.vaadin.ui.Component;
+import com.vaadin.ui.CssLayout;
+import com.vaadin.ui.UI;
+
+/**
+ * Tests the {@link ButtonPresentation}.
+ */
+@SuppressWarnings("restriction")
+public class ButtonPresentationTests {
+
+	private SimpleExtensionModelFactory factory = new SimpleExtensionModelFactory();
+	private CssLayout rootLayout = new CssLayout();
+
+	/**
+	 * Setup tests.
+	 * 
+	 * @throws ConfigurationException
+	 * @throws BundleException
+	 */
+	@Before
+	public void setup() throws ConfigurationException, BundleException {
+		UI.setCurrent(new DefaultUI());
+		UI.getCurrent().setContent(rootLayout);
+	}
+
+	/**
+	 * Tests rendering issues.
+	 * 
+	 * @throws Exception
+	 */
+	@Test
+	// BEGIN SUPRESS CATCH EXCEPTION
+	public void test_isRendered_unrender_byModel() throws Exception {
+		// END SUPRESS CATCH EXCEPTION
+		// build the view model
+		// ...> yView
+		// ......> yGridLayout
+		// .........> yButton
+		YView yView = factory.createView();
+		YGridLayout yGridlayout = factory.createGridLayout();
+		yView.setContent(yGridlayout);
+		YButton yButton = factory.createButton();
+		yGridlayout.getElements().add(yButton);
+
+		VaadinRenderer renderer = new VaadinRenderer();
+		IViewContext viewContext = renderer.render(rootLayout, yView, null);
+
+		IButtonEditpart buttonEditpart = DelegatingEditPartManager
+				.getInstance().getEditpart(viewContext, yButton);
+		IWidgetPresentation<Component> presentation = buttonEditpart
+				.getPresentation();
+		assertTrue(presentation.isRendered());
+		assertFalse(presentation.isDisposed());
+
+		yGridlayout.getElements().remove(yButton);
+		assertFalse(presentation.isRendered());
+		assertFalse(presentation.isDisposed());
+	}
+
+	/**
+	 * Tests the internal structure.
+	 * 
+	 * @throws Exception
+	 */
+	@Test
+	// BEGIN SUPRESS CATCH EXCEPTION
+	public void test_InternalStructure() throws Exception {
+		// END SUPRESS CATCH EXCEPTION
+		// build the view model
+		// ...> yView
+		// ......> yButton
+		YView yView = factory.createView();
+		YButton yButton = factory.createButton();
+		yView.setContent(yButton);
+
+		VaadinRenderer renderer = new VaadinRenderer();
+		IViewContext viewContext = renderer.render(rootLayout, yView, null);
+
+		IButtonEditpart buttonEditpart = DelegatingEditPartManager
+				.getInstance().getEditpart(viewContext, yButton);
+		IWidgetPresentation<Component> presentation = buttonEditpart
+				.getPresentation();
+		Button button = (Button) presentation.getWidget();
+		assertNotNull(button);
+	}
+
+	/**
+	 * Test the internal structure based on CSS.
+	 * 
+	 * @throws Exception
+	 */
+	@Test
+	// BEGIN SUPRESS CATCH EXCEPTION
+	public void test_InternalStructure__CSS() throws Exception {
+		// END SUPRESS CATCH EXCEPTION
+		// build the view model
+		// ...> yView
+		// ......> yButton
+		YView yView = factory.createView();
+		YGridLayout yLayout = factory.createGridLayout();
+		yView.setContent(yLayout);
+		YButton yButton1 = factory.createButton();
+		yButton1.setCssID("ID_0815");
+		yButton1.setCssClass("anyOtherClass");
+		yLayout.getElements().add(yButton1);
+		YButton yButton2 = factory.createButton();
+		yLayout.getElements().add(yButton2);
+
+		VaadinRenderer renderer = new VaadinRenderer();
+		IViewContext viewContext = renderer.render(rootLayout, yView, null);
+
+		IButtonEditpart button1Editpart = DelegatingEditPartManager
+				.getInstance().getEditpart(viewContext, yButton1);
+		IButtonEditpart button2Editpart = DelegatingEditPartManager
+				.getInstance().getEditpart(viewContext, yButton2);
+		IWidgetPresentation<Component> button1Presentation = button1Editpart
+				.getPresentation();
+		IWidgetPresentation<Component> button2Presentation = button2Editpart
+				.getPresentation();
+
+		Button button1 = (Button) button1Presentation.getWidget();
+		Button button2 = (Button) button2Presentation.getWidget();
+
+		// assert css class
+		assertTrue(button1.getStyleName().contains("anyOtherClass"));
+		assertTrue(button2.getStyleName().contains(
+				AbstractVaadinWidgetPresenter.CSS_CLASS_CONTROL));
+
+		// assert css id
+		assertEquals("ID_0815", button1.getId());
+		assertEquals(button2Editpart.getId(), button2.getId());
+	}
+
+	/**
+	 * Test the internal structure based on CSS.
+	 * 
+	 * @throws Exception
+	 */
+	@Test
+	// BEGIN SUPRESS CATCH EXCEPTION
+	public void test_Bindings() throws Exception {
+		// END SUPRESS CATCH EXCEPTION
+		// build the view model
+		// ...> yView
+		// ......> yButton
+		YView yView = factory.createView();
+		YGridLayout yLayout = factory.createGridLayout();
+		yView.setContent(yLayout);
+		YButton yButton1 = factory.createButton();
+		yLayout.getElements().add(yButton1);
+		YButton yButton2 = factory.createButton();
+		yLayout.getElements().add(yButton2);
+
+		VaadinRenderer renderer = new VaadinRenderer();
+		IViewContext viewContext = renderer.render(rootLayout, yView, null);
+
+		IButtonEditpart button1Editpart = DelegatingEditPartManager
+				.getInstance().getEditpart(viewContext, yButton1);
+		IButtonEditpart button2Editpart = DelegatingEditPartManager
+				.getInstance().getEditpart(viewContext, yButton2);
+		IWidgetPresentation<Component> button1Presentation = button1Editpart
+				.getPresentation();
+		IWidgetPresentation<Component> button2Presentation = button2Editpart
+				.getPresentation();
+		Button button1 = (Button) button1Presentation.getWidget();
+		Button button2 = (Button) button2Presentation.getWidget();
+
+		// start tests
+		//
+		assertTrue(button1.isVisible());
+		assertTrue(button1.isEnabled());
+		assertFalse(button1.isReadOnly());
+
+		assertTrue(button2.isVisible());
+		assertTrue(button2.isEnabled());
+		assertFalse(button2.isReadOnly());
+
+		yButton1.setVisible(false);
+		assertFalse(button1.isVisible());
+
+		yButton1.setEnabled(false);
+		assertFalse(button1.isEnabled());
+
+	}
+
+	/**
+	 * Test the automatic disposal of bindings
+	 * 
+	 * @throws ContextException
+	 */
+	@Test
+	public void testBindingIsDisposed() throws ContextException {
+		// test that the binding is disposed if field is disposed
+		YView yView = factory.createView();
+		YGridLayout yGridlayout = factory.createGridLayout();
+		yView.setContent(yGridlayout);
+		YButton yButton = factory.createButton();
+		yGridlayout.getElements().add(yButton);
+
+		VaadinRenderer renderer = new VaadinRenderer();
+		IViewContext viewContext = renderer.render(rootLayout, yView, null);
+
+		IButtonEditpart buttonEditpart = DelegatingEditPartManager
+				.getInstance().getEditpart(viewContext, yButton);
+		IWidgetPresentation<Component> presentation = buttonEditpart
+				.getPresentation();
+		assertTrue(presentation.isRendered());
+		assertFalse(presentation.isDisposed());
+		assertEquals(4, presentation.getUIBindings().size());
+
+		presentation.dispose();
+		assertFalse(presentation.isRendered());
+		assertTrue(presentation.isDisposed());
+		assertEquals(0, presentation.getUIBindings().size());
+
+	}
+
+	@Test
+	public void test_i18n() throws ContextException {
+
+		// switch the global locale to german
+		Locale.setDefault(Locale.GERMAN);
+
+		YView yView = factory.createView();
+		YGridLayout yGridlayout = factory.createGridLayout();
+		yView.setContent(yGridlayout);
+		YButton yButton = factory.createButton();
+		yGridlayout.getElements().add(yButton);
+
+		// set the i18n key
+		yButton.setLabelI18nKey(I18nServiceForTests.KEY__AGE);
+
+		// prepare the I18nService and pass it to the renderer
+		Map<String, Object> parameter = new HashMap<String, Object>();
+		Map<String, Object> services = new HashMap<String, Object>();
+		parameter.put(IViewContext.PARAM_SERVICES, services);
+		services.put(II18nService.ID, new I18nServiceForTests());
+
+		VaadinRenderer renderer = new VaadinRenderer();
+		IViewContext context = renderer.render(rootLayout, yView, parameter);
+		IButtonEditpart editpart = DelegatingEditPartManager.getInstance()
+				.getEditpart(context, yButton);
+		ButtonPresentation presentation = editpart.getPresentation();
+
+		Button button = (Button) presentation.getWidget();
+		assertEquals("Alter", button.getCaption());
+
+		context.setLocale(Locale.ENGLISH);
+		assertEquals("Age", button.getCaption());
+	}
+
+	@Test
+	// BEGIN SUPRESS CATCH EXCEPTION
+	public void test_Readonly_Binding() throws Exception {
+		// END SUPRESS CATCH EXCEPTION
+		// build the view model
+		YView yView = factory.createView();
+		YGridLayout yLayout = factory.createGridLayout();
+		yView.setContent(yLayout);
+		YButton yButton = factory.createButton();
+		yLayout.getElements().add(yButton);
+
+		VaadinRenderer renderer = new VaadinRenderer();
+		IViewContext viewContext = renderer.render(rootLayout, yView, null);
+
+		IButtonEditpart editpart = DelegatingEditPartManager.getInstance()
+				.getEditpart(viewContext, yButton);
+		IWidgetPresentation<Component> presentation = editpart
+				.getPresentation();
+		Button button = (Button) presentation.getWidget();
+
+		ValueBean bean = new ValueBean(false);
+		YBeanValueBindingEndpoint yBeanBinding = factory
+				.createBeanBindingEndpoint();
+		yBeanBinding.setBean(bean);
+		yBeanBinding.setPropertyPath("boolValue");
+		YBindingSet yBindingSet = yView.getOrCreateBindingSet();
+		yBindingSet.addBinding(yButton.createEditableEndpoint(), yBeanBinding);
+
+		// test binding
+		assertFalse(yButton.isEditable());
+		assertFalse(!button.isReadOnly());
+		assertFalse(bean.isBoolValue());
+
+		bean.setBoolValue(true);
+		assertTrue(yButton.isEditable());
+		assertTrue(!button.isReadOnly());
+		assertTrue(bean.isBoolValue());
+	}
+
+	@Test
+	// BEGIN SUPRESS CATCH EXCEPTION
+	public void test_Visible_Binding() throws Exception {
+		// END SUPRESS CATCH EXCEPTION
+		// build the view model
+		YView yView = factory.createView();
+		YGridLayout yLayout = factory.createGridLayout();
+		yView.setContent(yLayout);
+		YButton yButton = factory.createButton();
+		yLayout.getElements().add(yButton);
+
+		VaadinRenderer renderer = new VaadinRenderer();
+		IViewContext viewContext = renderer.render(rootLayout, yView, null);
+
+		IButtonEditpart editpart = DelegatingEditPartManager.getInstance()
+				.getEditpart(viewContext, yButton);
+		IWidgetPresentation<Component> presentation = editpart
+				.getPresentation();
+		Button button = (Button) presentation.getWidget();
+
+		ValueBean bean = new ValueBean(false);
+		YBeanValueBindingEndpoint yBeanBinding = factory
+				.createBeanBindingEndpoint();
+		yBeanBinding.setBean(bean);
+		yBeanBinding.setPropertyPath("boolValue");
+		YBindingSet yBindingSet = yView.getOrCreateBindingSet();
+		yBindingSet.addBinding(yButton.createVisibleEndpoint(), yBeanBinding);
+
+		// test binding
+		assertFalse(yButton.isVisible());
+		assertFalse(button.isVisible());
+		assertFalse(bean.isBoolValue());
+
+		bean.setBoolValue(true);
+		assertTrue(yButton.isVisible());
+		assertTrue(button.isVisible());
+		assertTrue(bean.isBoolValue());
+	}
+
+	@Test
+	// BEGIN SUPRESS CATCH EXCEPTION
+	public void test_Enabled_Binding() throws Exception {
+		// END SUPRESS CATCH EXCEPTION
+		// build the view model
+		YView yView = factory.createView();
+		YGridLayout yLayout = factory.createGridLayout();
+		yView.setContent(yLayout);
+		YButton yButton = factory.createButton();
+		yLayout.getElements().add(yButton);
+
+		VaadinRenderer renderer = new VaadinRenderer();
+		IViewContext viewContext = renderer.render(rootLayout, yView, null);
+
+		IButtonEditpart editpart = DelegatingEditPartManager.getInstance()
+				.getEditpart(viewContext, yButton);
+		IWidgetPresentation<Component> presentation = editpart
+				.getPresentation();
+		Button button = (Button) presentation.getWidget();
+
+		ValueBean bean = new ValueBean(false);
+		YBeanValueBindingEndpoint yBeanBinding = factory
+				.createBeanBindingEndpoint();
+		yBeanBinding.setBean(bean);
+		yBeanBinding.setPropertyPath("boolValue");
+		YBindingSet yBindingSet = yView.getOrCreateBindingSet();
+		yBindingSet.addBinding(yButton.createEnabledEndpoint(), yBeanBinding);
+
+		// test binding
+		assertFalse(yButton.isEnabled());
+		assertFalse(button.isEnabled());
+		assertFalse(bean.isBoolValue());
+
+		bean.setBoolValue(true);
+		assertTrue(yButton.isEnabled());
+		assertTrue(button.isEnabled());
+		assertTrue(bean.isBoolValue());
+	}
+}
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/presentation/CheckBoxPresentationTests.java b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/presentation/CheckBoxPresentationTests.java
new file mode 100644
index 0000000..e667e51
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/tests/presentation/CheckBoxPresentationTests.java
@@ -0,0 +1,477 @@
+/**
+ * Copyright (c) 2013 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: Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation
+ */
+package org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.presentation;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import java.util.HashMap;
+import java.util.Locale;
+import java.util.Map;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.eclipse.osbp.ecview.core.common.context.ContextException;
+import org.eclipse.osbp.ecview.core.common.context.IViewContext;
+import org.eclipse.osbp.ecview.core.common.editpart.DelegatingEditPartManager;
+import org.eclipse.osbp.ecview.core.common.editpart.IElementEditpart;
+import org.eclipse.osbp.ecview.core.common.editpart.IEmbeddableEditpart;
+import org.eclipse.osbp.ecview.core.common.editpart.IViewEditpart;
+import org.eclipse.osbp.ecview.core.common.model.binding.YBeanValueBindingEndpoint;
+import org.eclipse.osbp.ecview.core.common.model.binding.YBindingSet;
+import org.eclipse.osbp.ecview.core.common.model.core.YElement;
+import org.eclipse.osbp.ecview.core.common.model.core.YView;
+import org.eclipse.osbp.ecview.core.common.presentation.IWidgetPresentation;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YCheckBox;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YGridLayout;
+import org.eclipse.osbp.ecview.core.extension.model.extension.util.SimpleExtensionModelFactory;
+import org.eclipse.osbp.ecview.core.ui.core.editparts.extension.ICheckboxEditpart;
+import org.eclipse.osbp.runtime.common.i18n.II18nService;
+import org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.VaadinRenderer;
+import org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.common.AbstractVaadinWidgetPresenter;
+import org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.internal.CheckBoxPresentation;
+import org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.model.ValueBean;
+import org.osgi.framework.BundleException;
+import org.osgi.service.cm.ConfigurationException;
+
+import com.vaadin.ui.CheckBox;
+import com.vaadin.ui.Component;
+import com.vaadin.ui.CssLayout;
+import com.vaadin.ui.UI;
+
+/**
+ * Tests the {@link CheckBoxPresentation}.
+ */
+@SuppressWarnings("restriction")
+public class CheckBoxPresentationTests {
+
+	private SimpleExtensionModelFactory factory = new SimpleExtensionModelFactory();
+	private CssLayout rootLayout = new CssLayout();
+
+	/**
+	 * Setup tests.
+	 * 
+	 * @throws ConfigurationException
+	 * @throws BundleException
+	 */
+	@Before
+	public void setup() throws ConfigurationException, BundleException {
+		UI.setCurrent(new DefaultUI());
+		UI.getCurrent().setContent(rootLayout);
+	}
+
+	/**
+	 * Tests rendering issues.
+	 * 
+	 * @throws Exception
+	 */
+	@Test
+	// BEGIN SUPRESS CATCH EXCEPTION
+	public void test_isRendered_unrender_byModel() throws Exception {
+		// END SUPRESS CATCH EXCEPTION
+		// build the view model
+		// ...> yView
+		// ......> yGridLayout
+		// .........> yText
+		YView yView = factory.createView();
+		YGridLayout yGridlayout = factory.createGridLayout();
+		yView.setContent(yGridlayout);
+		YCheckBox yCheckBox = factory.createCheckBox();
+		yGridlayout.getElements().add(yCheckBox);
+
+		VaadinRenderer renderer = new VaadinRenderer();
+		IViewContext viewContext = renderer.render(rootLayout, yView, null);
+
+		ICheckboxEditpart checkBoxEditpart = DelegatingEditPartManager
+				.getInstance().getEditpart(viewContext, yCheckBox);
+		IWidgetPresentation<Component> presentation = checkBoxEditpart
+				.getPresentation();
+		assertTrue(presentation.isRendered());
+		assertFalse(presentation.isDisposed());
+
+		yGridlayout.getElements().remove(yCheckBox);
+		assertFalse(presentation.isRendered());
+		assertFalse(presentation.isDisposed());
+	}
+
+	/**
+	 * Tests the internal structure.
+	 * 
+	 * @throws Exception
+	 */
+	@Test
+	// BEGIN SUPRESS CATCH EXCEPTION
+	public void test_InternalStructure() throws Exception {
+		// END SUPRESS CATCH EXCEPTION
+		// build the view model
+		// ...> yView
+		// ......> yText
+		YView yView = factory.createView();
+		YCheckBox yCheckBox = factory.createCheckBox();
+		yView.setContent(yCheckBox);
+
+		VaadinRenderer renderer = new VaadinRenderer();
+		IViewContext viewContext = renderer.render(rootLayout, yView, null);
+
+		ICheckboxEditpart checkBoxEditpart = DelegatingEditPartManager
+				.getInstance().getEditpart(viewContext, yCheckBox);
+		IWidgetPresentation<Component> presentation = checkBoxEditpart
+				.getPresentation();
+
+		CheckBox checkBox = (CheckBox) presentation.getWidget();
+		assertNotNull(checkBox);
+	}
+
+	/**
+	 * Test the internal structure based on CSS.
+	 * 
+	 * @throws Exception
+	 */
+	@Test
+	// BEGIN SUPRESS CATCH EXCEPTION
+	public void test_InternalStructure__CSS() throws Exception {
+		// END SUPRESS CATCH EXCEPTION
+		// build the view model
+		// ...> yView
+		// ......> yText
+		YView yView = factory.createView();
+		YGridLayout yLayout = factory.createGridLayout();
+		yView.setContent(yLayout);
+		YCheckBox yCheckBox1 = factory.createCheckBox();
+		yCheckBox1.setCssID("ID_0815");
+		yCheckBox1.setCssClass("anyOtherClass");
+		yLayout.getElements().add(yCheckBox1);
+		YCheckBox yCheckBox2 = factory.createCheckBox();
+		yLayout.getElements().add(yCheckBox2);
+
+		VaadinRenderer renderer = new VaadinRenderer();
+		IViewContext viewContext = renderer.render(rootLayout, yView, null);
+
+		ICheckboxEditpart checkBox1Editpart = DelegatingEditPartManager
+				.getInstance().getEditpart(viewContext, yCheckBox1);
+		ICheckboxEditpart checkBox2Editpart = DelegatingEditPartManager
+				.getInstance().getEditpart(viewContext, yCheckBox2);
+		IWidgetPresentation<Component> checkBox1Presentation = checkBox1Editpart
+				.getPresentation();
+		IWidgetPresentation<Component> checkBox2Presentation = checkBox2Editpart
+				.getPresentation();
+
+		CheckBox checkBox1 = (CheckBox) checkBox1Presentation.getWidget();
+		CheckBox checkBox2 = (CheckBox) checkBox2Presentation.getWidget();
+
+		// assert css class
+
+		assertTrue(checkBox1.getStyleName().contains("anyOtherClass"));
+		assertTrue(checkBox2.getStyleName().contains(
+				AbstractVaadinWidgetPresenter.CSS_CLASS_CONTROL));
+
+		// assert css id
+		assertEquals("ID_0815", checkBox1.getId());
+		assertEquals(checkBox2Editpart.getId(), checkBox2.getId());
+	}
+
+	/**
+	 * Test the internal structure based on CSS.
+	 * 
+	 * @throws Exception
+	 */
+	@Test
+	// BEGIN SUPRESS CATCH EXCEPTION
+	public void test_Bindings() throws Exception {
+		// END SUPRESS CATCH EXCEPTION
+		// build the view model
+		// ...> yView
+		// ......> yText
+		YView yView = factory.createView();
+		YGridLayout yLayout = factory.createGridLayout();
+		yView.setContent(yLayout);
+		YCheckBox yCheckBox1 = factory.createCheckBox();
+		yLayout.getElements().add(yCheckBox1);
+		YCheckBox yCheckBox2 = factory.createCheckBox();
+		yLayout.getElements().add(yCheckBox2);
+
+		VaadinRenderer renderer = new VaadinRenderer();
+		IViewContext viewContext = renderer.render(rootLayout, yView, null);
+
+		ICheckboxEditpart checkBox1Editpart = DelegatingEditPartManager
+				.getInstance().getEditpart(viewContext, yCheckBox1);
+		ICheckboxEditpart checkBox2Editpart = DelegatingEditPartManager
+				.getInstance().getEditpart(viewContext, yCheckBox2);
+		IWidgetPresentation<Component> checkBox1Presentation = checkBox1Editpart
+				.getPresentation();
+		IWidgetPresentation<Component> checkBox2Presentation = checkBox2Editpart
+				.getPresentation();
+		CheckBox checkBox1 = (CheckBox) checkBox1Presentation.getWidget();
+		CheckBox checkBox2 = (CheckBox) checkBox2Presentation.getWidget();
+
+		// start tests
+		//
+		assertFalse(checkBox1.getValue());
+		assertTrue(checkBox1.isVisible());
+		assertTrue(checkBox1.isEnabled());
+		assertFalse(checkBox1.isReadOnly());
+
+		assertTrue(checkBox2.isVisible());
+		assertTrue(checkBox2.isEnabled());
+		assertFalse(checkBox2.isReadOnly());
+
+		yCheckBox1.setVisible(false);
+		assertFalse(checkBox1.isVisible());
+
+		yCheckBox1.setEnabled(false);
+		assertFalse(checkBox1.isEnabled());
+
+		yCheckBox1.setEditable(false);
+		assertTrue(checkBox1.isReadOnly());
+
+		// target to model
+		checkBox1.setReadOnly(false);
+		assertTrue(yCheckBox1.isEditable());
+
+		yCheckBox1.setValue(false);
+		assertFalse(checkBox1.getValue());
+
+		yCheckBox1.setValue(true);
+		assertTrue(checkBox1.getValue());
+	}
+
+	@Test
+	// BEGIN SUPRESS CATCH EXCEPTION
+	public void test_ValueBinding() throws Exception {
+		// END SUPRESS CATCH EXCEPTION
+		// build the view model
+		// ...> yView
+		// ......> yText
+		YView yView = factory.createView();
+		YGridLayout yLayout = factory.createGridLayout();
+		yView.setContent(yLayout);
+		YCheckBox yCheckBox1 = factory.createCheckBox();
+		yLayout.getElements().add(yCheckBox1);
+
+		VaadinRenderer renderer = new VaadinRenderer();
+		IViewContext viewContext = renderer.render(rootLayout, yView, null);
+
+		ICheckboxEditpart checkBox1Editpart = DelegatingEditPartManager
+				.getInstance().getEditpart(viewContext, yCheckBox1);
+		IWidgetPresentation<Component> checkBox1Presentation = checkBox1Editpart
+				.getPresentation();
+		CheckBox checkBox1 = (CheckBox) checkBox1Presentation.getWidget();
+
+		// start tests
+		//
+		YBindingSet yBindingSet = yView.getOrCreateBindingSet();
+
+		checkBox1.setValue(false);
+		YBeanValueBindingEndpoint beanBinding = factory
+				.createBeanBindingEndpoint();
+		ValueBean bean = new ValueBean(true);
+		beanBinding.setPropertyPath("boolValue");
+		beanBinding.setBean(bean);
+		yBindingSet.addBinding(yCheckBox1.createValueEndpoint(), beanBinding);
+		assertTrue(yCheckBox1.isValue());
+		assertTrue(checkBox1.getValue());
+
+		bean.setBoolValue(false);
+		assertFalse(checkBox1.getValue());
+		assertFalse(yCheckBox1.isValue());
+
+		checkBox1.setValue(true);
+		assertTrue(bean.isBoolValue());
+		assertTrue(yCheckBox1.isValue());
+
+		yCheckBox1.setValue(false);
+		assertFalse(bean.isBoolValue());
+		assertFalse(checkBox1.getValue());
+	}
+
+	/**
+	 * Test the automatic disposal of bindings
+	 * 
+	 * @throws ContextException
+	 */
+	@Test
+	public void testBindingIsDisposed() throws ContextException {
+		// test that the binding is disposed if field is disposed
+		YView yView = factory.createView();
+		YGridLayout yGridlayout = factory.createGridLayout();
+		yView.setContent(yGridlayout);
+		YCheckBox yCheckBox = factory.createCheckBox();
+		yGridlayout.getElements().add(yCheckBox);
+
+		VaadinRenderer renderer = new VaadinRenderer();
+		IViewContext viewContext = renderer.render(rootLayout, yView, null);
+
+		ICheckboxEditpart checkBoxEditpart = DelegatingEditPartManager
+				.getInstance().getEditpart(viewContext, yCheckBox);
+		IWidgetPresentation<Component> presentation = checkBoxEditpart
+				.getPresentation();
+		assertTrue(presentation.isRendered());
+		assertFalse(presentation.isDisposed());
+		assertEquals(4, presentation.getUIBindings().size());
+
+		presentation.dispose();
+		assertFalse(presentation.isRendered());
+		assertTrue(presentation.isDisposed());
+		assertEquals(0, presentation.getUIBindings().size());
+	}
+
+	@Test
+	public void test_i18n() throws ContextException {
+
+		// switch the global locale to german
+		Locale.setDefault(Locale.GERMAN);
+
+		YView yView = factory.createView();
+		YGridLayout yGridlayout = factory.createGridLayout();
+		yView.setContent(yGridlayout);
+		YCheckBox yCheckBox = factory.createCheckBox();
+		yGridlayout.getElements().add(yCheckBox);
+
+		// set the i18n key
+		yCheckBox.setLabelI18nKey(I18nServiceForTests.KEY__AGE);
+
+		// prepare the I18nService and pass it to the renderer
+		Map<String, Object> parameter = new HashMap<String, Object>();
+		Map<String, Object> services = new HashMap<String, Object>();
+		parameter.put(IViewContext.PARAM_SERVICES, services);
+		services.put(II18nService.ID, new I18nServiceForTests());
+
+		VaadinRenderer renderer = new VaadinRenderer();
+		IViewContext viewContext = renderer.render(rootLayout, yView, parameter);
+		ICheckboxEditpart editpart = DelegatingEditPartManager.getInstance()
+				.getEditpart(viewContext, yCheckBox);
+		CheckBoxPresentation presentation = editpart.getPresentation();
+
+		assertEquals("Alter", presentation.getWidget().getCaption());
+
+		viewContext.setLocale(Locale.ENGLISH);
+		assertEquals("Age", presentation.getWidget().getCaption());
+	}
+
+	@Test
+	// BEGIN SUPRESS CATCH EXCEPTION
+	public void test_Readonly_Binding() throws Exception {
+		// END SUPRESS CATCH EXCEPTION
+		// build the view model
+		YView yView = factory.createView();
+		YGridLayout yLayout = factory.createGridLayout();
+		yView.setContent(yLayout);
+		YCheckBox yCheckBox = factory.createCheckBox();
+		yLayout.getElements().add(yCheckBox);
+
+		VaadinRenderer renderer = new VaadinRenderer();
+		IViewContext viewContext = renderer.render(rootLayout, yView, null);
+
+		ICheckboxEditpart editpart = DelegatingEditPartManager.getInstance()
+				.getEditpart(viewContext, yCheckBox);
+		IWidgetPresentation<Component> presentation = editpart
+				.getPresentation();
+		CheckBox box = (CheckBox) presentation.getWidget();
+
+		ValueBean bean = new ValueBean(false);
+		YBeanValueBindingEndpoint yBeanBinding = factory
+				.createBeanBindingEndpoint();
+		yBeanBinding.setBean(bean);
+		yBeanBinding.setPropertyPath("boolValue");
+		YBindingSet yBindingSet = yView.getOrCreateBindingSet();
+		yBindingSet
+				.addBinding(yCheckBox.createEditableEndpoint(), yBeanBinding);
+
+		// test binding
+		assertFalse(yCheckBox.isEditable());
+		assertFalse(!box.isReadOnly());
+		assertFalse(bean.isBoolValue());
+
+		bean.setBoolValue(true);
+		assertTrue(yCheckBox.isEditable());
+		assertTrue(!box.isReadOnly());
+		assertTrue(bean.isBoolValue());
+	}
+
+	@Test
+	// BEGIN SUPRESS CATCH EXCEPTION
+	public void test_Visible_Binding() throws Exception {
+		// END SUPRESS CATCH EXCEPTION
+		// build the view model
+		YView yView = factory.createView();
+		YGridLayout yLayout = factory.createGridLayout();
+		yView.setContent(yLayout);
+		YCheckBox yCheckBox = factory.createCheckBox();
+		yLayout.getElements().add(yCheckBox);
+
+		VaadinRenderer renderer = new VaadinRenderer();
+		IViewContext viewContext = renderer.render(rootLayout, yView, null);
+
+		ICheckboxEditpart editpart = DelegatingEditPartManager.getInstance()
+				.getEditpart(viewContext, yCheckBox);
+		IWidgetPresentation<Component> presentation = editpart
+				.getPresentation();
+		CheckBox box = (CheckBox) presentation.getWidget();
+
+		ValueBean bean = new ValueBean(false);
+		YBeanValueBindingEndpoint yBeanBinding = factory
+