add new addon keyevents
diff --git a/org.eclipse.osbp.vaadin.addons.absolutelayout/META-INF/git.properties b/org.eclipse.osbp.vaadin.addons.absolutelayout/META-INF/git.properties
index 96b55fc..42f42bb 100644
--- a/org.eclipse.osbp.vaadin.addons.absolutelayout/META-INF/git.properties
+++ b/org.eclipse.osbp.vaadin.addons.absolutelayout/META-INF/git.properties
@@ -1,14 +1,14 @@
 #Generated by Git-Commit-Id-Plugin
-#Thu Jul 14 16:21:42 CEST 2016
+#Fri Feb 23 12:30:40 CET 2018
 git.remote.origin.url=ssh\://compex@10.1.13.14/osbpgit/org.eclipse.osbp.vaadin.addons.git
-git.closest.tag.name=
-git.commit.id.describe-short=8e68853-dirty
-git.commit.time=08.07.2016 @ 12\:02\:34 MESZ
-git.commit.message.full=Merge branch 'mavenizing' of ssh\://10.1.13.14/osbpgit/org.eclipse.osbp.vaadin.addons into mavenizing
-git.commit.message.short=Merge branch 'mavenizing' of ssh\://10.1.13.14/osbpgit/org.eclipse.osbp.vaadin.addons into mavenizing
-git.commit.id.abbrev=8e68853
-git.branch=mavenizing
-git.closest.tag.commit.count=
-git.commit.id.describe=8e68853-dirty
-git.commit.id=8e688530eab4a10955fec4308c9265c6a00ed4c9
+git.closest.tag.name=daily-2018-02-12-21-16-49
+git.commit.id.describe-short=daily-2018-02-12-21-16-49-3-dirty
+git.commit.time=09.02.2018 @ 13\:23\:29 MEZ
+git.commit.message.full=kanban
+git.commit.message.short=kanban
+git.commit.id.abbrev=495fc00
+git.branch=development
+git.closest.tag.commit.count=3
+git.commit.id.describe=daily-2018-02-12-21-16-49-3-g495fc00-dirty
+git.commit.id=495fc00cb050c6f32031305e0d52c493061c3582
 git.tags=
diff --git a/org.eclipse.osbp.vaadin.addons.absolutelayout/pom.xml b/org.eclipse.osbp.vaadin.addons.absolutelayout/pom.xml
index 1bcf950..fa1752c 100644
--- a/org.eclipse.osbp.vaadin.addons.absolutelayout/pom.xml
+++ b/org.eclipse.osbp.vaadin.addons.absolutelayout/pom.xml
@@ -52,6 +52,11 @@
 			<artifactId>org.eclipse.osbp.dependencies.bundle.vaadin.addon.dragdroplayouts</artifactId>
 			<version>1.3.2-SNAPSHOT</version>
 		</dependency>
+		<dependency>
+			<groupId>org.eclipse.osbp.dependencies</groupId>
+			<artifactId>org.eclipse.osbp.dependencies.bundle.vaadin.external.gwt</artifactId>
+			<version>2.7.0-SNAPSHOT</version>
+		</dependency>
 	</dependencies>
 
 	<build>
diff --git a/org.eclipse.osbp.vaadin.addons.designer.overlay/.settings/com.vaadin.integration.eclipse.prefs b/org.eclipse.osbp.vaadin.addons.designer.overlay/.settings/com.vaadin.integration.eclipse.prefs
index 3121837..7e9db76 100644
--- a/org.eclipse.osbp.vaadin.addons.designer.overlay/.settings/com.vaadin.integration.eclipse.prefs
+++ b/org.eclipse.osbp.vaadin.addons.designer.overlay/.settings/com.vaadin.integration.eclipse.prefs
@@ -1,3 +1,4 @@
+com.vaadin.integration.eclipse.mavenLatestVersionsUpgrade=["7.5.10","7.7.13"]
 com.vaadin.integration.eclipse.previousCompileAction=widgetset
 com.vaadin.integration.eclipse.useLatestNightly=false
 com.vaadin.integration.eclipse.widgetsetBuildsSuspended=true
diff --git a/org.eclipse.osbp.vaadin.addons.designer.overlay/META-INF/MANIFEST.MF b/org.eclipse.osbp.vaadin.addons.designer.overlay/META-INF/MANIFEST.MF
index f464b05..d06ddc9 100644
--- a/org.eclipse.osbp.vaadin.addons.designer.overlay/META-INF/MANIFEST.MF
+++ b/org.eclipse.osbp.vaadin.addons.designer.overlay/META-INF/MANIFEST.MF
@@ -1,17 +1,17 @@
 Manifest-Version: 1.0
-Bnd-LastModified: 1491902102912
-Build-Jdk: 1.8.0_91
+Bnd-LastModified: 1519385055722
+Build-Jdk: 1.8.0_161
 Built-By: mollik
 Bundle-ActivationPolicy: lazy
 Bundle-Description: A parent POM aimed to set up the build of general Ma
  ven based projects.
 Bundle-DocURL: http://www.eclipse.org/osbp
 Bundle-ManifestVersion: 2
-Bundle-Name: org.eclipse.osbp.vaadin.addons.designer.overlay
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-Name: OSBP Addon for Vaadin: Designer Overlay
+Bundle-RequiredExecutionEnvironment: JavaSE-1.7
 Bundle-SymbolicName: org.eclipse.osbp.vaadin.addons.designer.overlay
-Bundle-Vendor: Eclipse OSBP
-Bundle-Version: 0.9.0.qualifier
+Bundle-Vendor: Loetz GmbH&Co.KG - 69115 Heidelberg - Germany
+Bundle-Version: 0.9.0.osgi-version-qualifier
 Created-By: Apache Maven Bundle Plugin
 Export-Package: org.eclipse.osbp.vaadin.addons.designer.overlay;version=
  "0.9.0",org.eclipse.osbp.vaadin.addons.designer.overlay.client;version=
@@ -21,12 +21,15 @@
 Import-Package: javax.servlet.annotation;resolution:=optional;version="[
  3.0,4)",com.vaadin.annotations;version="[7.7,8)",com.vaadin.client;vers
  ion="[7.7,8)",com.vaadin.client.communication;version="[7.7,8)",com.vaa
- din.server;version="[7.7,8)",com.vaadin.ui;version="[7.7,8)",org.eclips
- e.osbp.vaadin.addons.designer.overlay.client;version="[0.9,1)",org.ecli
- pse.osbp.vaadin.addons.designer.overlay.client.widgets;version="[0.9,1)
- ",org.junit
-Require-Bundle: com.vaadin.server;bundle-version="[7.5.7,7.7.0)",com.vaa
- din.client;bundle-version="[7.5.7,7.7.0)",com.vaadin.shared;bundle-vers
- ion="[7.5.7,7.7.0)",org.jsoup;bundle-version="[1.8.3,1.8.4)"
+ din.server;version="[7.7,8)",com.vaadin.shared.communication;version="[
+ 7.7,8)",com.vaadin.shared.ui;version="[7.7,8)",com.vaadin.ui;version="[
+ 7.7,8)",com.vaadin.util;version="[7.7,8)",org.eclipse.osbp.vaadin.addon
+ s.designer.overlay;version="[0.9,1)",org.eclipse.osbp.vaadin.addons.des
+ igner.overlay.client;version="[0.9,1)",org.eclipse.osbp.vaadin.addons.d
+ esigner.overlay.client.widgets;version="[0.9,1)",org.junit
+Require-Bundle: com.vaadin.server;bundle-version="[7.7.6,7.8.0)",com.vaa
+ din.client;bundle-version="[7.7.6,7.8.0)",com.vaadin.shared;bundle-vers
+ ion="[7.7.6,7.8.0)",org.jsoup;bundle-version="[1.8.3,1.8.4)",org.eclips
+ e.osbp.dependencies.bundle.vaadin.external.gwt
 Require-Capability: osgi.ee;filter:="(&(osgi.ee=JavaSE)(version=1.8))"
 Tool: Bnd-3.2.0.201605172007
diff --git a/org.eclipse.osbp.vaadin.addons.designer.overlay/META-INF/git.properties b/org.eclipse.osbp.vaadin.addons.designer.overlay/META-INF/git.properties
index f8505c5..cea9ea9 100644
--- a/org.eclipse.osbp.vaadin.addons.designer.overlay/META-INF/git.properties
+++ b/org.eclipse.osbp.vaadin.addons.designer.overlay/META-INF/git.properties
@@ -1,14 +1,14 @@
 #Generated by Git-Commit-Id-Plugin
-#Tue Apr 11 11:17:33 CEST 2017
+#Wed Feb 21 13:28:18 CET 2018
 git.remote.origin.url=ssh\://compex@10.1.13.14/osbpgit/org.eclipse.osbp.vaadin.addons.git
-git.closest.tag.name=OSBP-initial-commit-2-Eclipse-4-luna-2017-03-31-17-10-39
-git.commit.id.describe-short=OSBP-initial-commit-2-Eclipse-4-luna-2017-03-31-17-10-39-dirty
-git.commit.time=02.02.2017 @ 18\:04\:55 MEZ
-git.commit.message.full=remove the feature from build
-git.commit.message.short=remove the feature from build
-git.commit.id.abbrev=90dd482
-git.branch=OSBP-initial-commit-2-Eclipse-4-luna
-git.closest.tag.commit.count=0
-git.commit.id.describe=OSBP-initial-commit-2-Eclipse-4-luna-2017-03-31-17-10-39-dirty
-git.commit.id=90dd482e5bc78cd1a404d12445cebc868ee417b0
-git.tags=OSBP-initial-commit-2-Eclipse-4-luna-2017-03-31-17-10-39
+git.closest.tag.name=daily-2018-02-12-21-16-49
+git.commit.id.describe-short=daily-2018-02-12-21-16-49-3-dirty
+git.commit.time=09.02.2018 @ 13\:23\:29 MEZ
+git.commit.message.full=kanban
+git.commit.message.short=kanban
+git.commit.id.abbrev=495fc00
+git.branch=development
+git.closest.tag.commit.count=3
+git.commit.id.describe=daily-2018-02-12-21-16-49-3-g495fc00-dirty
+git.commit.id=495fc00cb050c6f32031305e0d52c493061c3582
+git.tags=
diff --git a/org.eclipse.osbp.vaadin.addons.designer.overlay/pom.xml b/org.eclipse.osbp.vaadin.addons.designer.overlay/pom.xml
index 27050f4..02bee7a 100644
--- a/org.eclipse.osbp.vaadin.addons.designer.overlay/pom.xml
+++ b/org.eclipse.osbp.vaadin.addons.designer.overlay/pom.xml
@@ -46,6 +46,11 @@
 			<artifactId>javax.servlet-api</artifactId>
 			<version>3.0.1</version>
 		</dependency>
+		<dependency>
+			<groupId>org.eclipse.osbp.dependencies</groupId>
+			<artifactId>org.eclipse.osbp.dependencies.bundle.vaadin.external.gwt</artifactId>
+			<version>2.7.0-SNAPSHOT</version>
+		</dependency>
 	</dependencies>
 
 	<build>
diff --git a/org.eclipse.osbp.vaadin.addons.kanban/.settings/com.vaadin.integration.eclipse.prefs b/org.eclipse.osbp.vaadin.addons.kanban/.settings/com.vaadin.integration.eclipse.prefs
index 9af73b0..f11e0e0 100644
--- a/org.eclipse.osbp.vaadin.addons.kanban/.settings/com.vaadin.integration.eclipse.prefs
+++ b/org.eclipse.osbp.vaadin.addons.kanban/.settings/com.vaadin.integration.eclipse.prefs
@@ -1,5 +1,5 @@
 com.vaadin.integration.eclipse.mavenAutoCompileWidgetset=true
-com.vaadin.integration.eclipse.mavenLatestVersionsUpgrade=["7.5.10","7.7.3"]
+com.vaadin.integration.eclipse.mavenLatestVersionsUpgrade=["7.7.13"]
 com.vaadin.integration.eclipse.notifyOfVaadinUpdates=true
 com.vaadin.integration.eclipse.previousCompileAction=widgetset
 com.vaadin.integration.eclipse.useLatestNightly=false
diff --git a/org.eclipse.osbp.vaadin.addons.kanban/pom.xml b/org.eclipse.osbp.vaadin.addons.kanban/pom.xml
index eb3118f..ba2a667 100644
--- a/org.eclipse.osbp.vaadin.addons.kanban/pom.xml
+++ b/org.eclipse.osbp.vaadin.addons.kanban/pom.xml
@@ -56,6 +56,11 @@
 			<artifactId>org.eclipse.osbp.dependencies.bundle.vaadin.addon.dragdroplayouts</artifactId>
 			<version>1.3.2-SNAPSHOT</version>
 		</dependency>
+		<dependency>
+			<groupId>org.eclipse.osbp.dependencies</groupId>
+			<artifactId>org.eclipse.osbp.dependencies.bundle.vaadin.external.gwt</artifactId>
+			<version>2.7.0-SNAPSHOT</version>
+		</dependency>
 	</dependencies>
 
 	<build>
diff --git a/org.eclipse.osbp.vaadin.addons.keyevents/.classpath b/org.eclipse.osbp.vaadin.addons.keyevents/.classpath
new file mode 100644
index 0000000..95b940a
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.addons.keyevents/.classpath
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry including="**/*.java" kind="src" output="target/classes" path="src">
+		<attributes>
+			<attribute name="optional" value="true"/>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="src" path="Sample"/>
+	<classpathentry kind="con" path="org.eclipse.jst.server.core.container/org.eclipse.jst.server.tomcat.runtimeTarget/Apache Tomcat v8.0">
+		<attributes>
+			<attribute name="owner.project.facets" value="jst.web"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.web.container"/>
+	<classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.module.container"/>
+	<classpathentry kind="con" path="org.apache.ivyde.eclipse.cpcontainer.IVYDE_CONTAINER/?project=org.eclipse.osbp.vaadin.addons.keyevents&amp;ivyXmlPath=ivy.xml&amp;confs=default&amp;ivySettingsPath=%24%7Bworkspace_loc%3Aorg.eclipse.osbp.vaadin.addons.keyevents%2Fivysettings.xml%7D&amp;loadSettingsOnDemand=false&amp;ivyUserDir=&amp;propertyFiles=">
+		<attributes>
+			<attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="con" path="org.apache.ivyde.eclipse.cpcontainer.IVYDE_CONTAINER/?project=org.eclipse.osbp.vaadin.addons.keyevents&amp;ivyXmlPath=ivy.xml&amp;confs=widgetset-compile&amp;ivySettingsPath=%24%7Bworkspace_loc%3Aorg.eclipse.osbp.vaadin.addons.keyevents%2Fivysettings.xml%7D&amp;loadSettingsOnDemand=false&amp;ivyUserDir=&amp;propertyFiles="/>
+	<classpathentry kind="con" path="org.apache.ivyde.eclipse.cpcontainer.IVYDE_CONTAINER/?project=org.eclipse.osbp.vaadin.addons.keyevents&amp;ivyXmlPath=ivy.xml&amp;confs=nodeploy&amp;ivySettingsPath=%24%7Bworkspace_loc%3Aorg.eclipse.osbp.vaadin.addons.keyevents%2Fivysettings.xml%7D&amp;loadSettingsOnDemand=false&amp;ivyUserDir=&amp;propertyFiles="/>
+	<classpathentry exported="true" kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
+		<attributes>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
+		<attributes>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/org.eclipse.osbp.vaadin.addons.keyevents/.gitignore b/org.eclipse.osbp.vaadin.addons.keyevents/.gitignore
new file mode 100644
index 0000000..9c43300
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.addons.keyevents/.gitignore
@@ -0,0 +1,3 @@
+META-INF/
+**/git.properties
+**/target/
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaadin.addons.keyevents/.project b/org.eclipse.osbp.vaadin.addons.keyevents/.project
new file mode 100644
index 0000000..3f994f6
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.addons.keyevents/.project
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.vaadin.addons.keyevents</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.wst.jsdt.core.javascriptValidator</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.wst.common.project.facet.core.builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.wst.validation.validationbuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>com.vaadin.integration.eclipse.widgetsetBuilder</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>com.vaadin.integration.eclipse.addonStylesBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
+		<nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
+		<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.wst.jsdt.core.jsNature</nature>
+		<nature>com.vaadin.integration.eclipse.widgetsetNature</nature>
+		<nature>org.apache.ivyde.eclipse.ivynature</nature>
+		<nature>org.eclipse.babel.editor.rbeNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.vaadin.addons.keyevents/.project-for-debug b/org.eclipse.osbp.vaadin.addons.keyevents/.project-for-debug
new file mode 100644
index 0000000..644735a
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.addons.keyevents/.project-for-debug
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>net.osbee.vaadin.addons.keyevents</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.wst.jsdt.core.javascriptValidator</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.wst.common.project.facet.core.builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.wst.validation.validationbuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>com.vaadin.integration.eclipse.widgetsetBuilder</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.pde.PluginNature</nature>
+		<nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
+		<nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
+		<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.wst.jsdt.core.jsNature</nature>
+		<nature>com.vaadin.integration.eclipse.widgetsetNature</nature>
+		<nature>org.apache.ivyde.eclipse.ivynature</nature>
+		<nature>org.eclipse.babel.editor.rbeNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.vaadin.addons.keyevents/.settings/.jsdtscope b/org.eclipse.osbp.vaadin.addons.keyevents/.settings/.jsdtscope
new file mode 100644
index 0000000..92e666d
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.addons.keyevents/.settings/.jsdtscope
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry excluding="**/bower_components/*|**/node_modules/*|**/*.min.js" kind="src" path="WebContent"/>
+	<classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.WebProject">
+		<attributes>
+			<attribute name="hide" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.baseBrowserLibrary"/>
+	<classpathentry kind="output" path=""/>
+</classpath>
diff --git a/org.eclipse.osbp.vaadin.addons.keyevents/.settings/com.vaadin.integration.eclipse.prefs b/org.eclipse.osbp.vaadin.addons.keyevents/.settings/com.vaadin.integration.eclipse.prefs
new file mode 100644
index 0000000..f9769c8
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.addons.keyevents/.settings/com.vaadin.integration.eclipse.prefs
@@ -0,0 +1,11 @@
+com.vaadin.integration.eclipse.mavenAutoCompileWidgetset=true
+com.vaadin.integration.eclipse.mavenLatestVersionsUpgrade=["7.7.13"]
+com.vaadin.integration.eclipse.notifyOfVaadinUpdates=true
+com.vaadin.integration.eclipse.previousCompileAction=widgetset
+com.vaadin.integration.eclipse.useLatestNightly=false
+com.vaadin.integration.eclipse.widgetsetBuildsSuspended=true
+com.vaadin.integration.eclipse.widgetsetCompilationEta=34529
+com.vaadin.integration.eclipse.widgetsetDirty=true
+com.vaadin.integration.eclipse.widgetsetStyle=OBF
+com.vaadin.integration.eclipse.widgetsetVerbose=true
+eclipse.preferences.version=1
diff --git a/org.eclipse.osbp.vaadin.addons.keyevents/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.vaadin.addons.keyevents/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..7a53139
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.addons.keyevents/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
+encoding/src=UTF-8
diff --git a/org.eclipse.osbp.vaadin.addons.keyevents/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.osbp.vaadin.addons.keyevents/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..13b3428
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.addons.keyevents/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,13 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/org.eclipse.osbp.vaadin.addons.keyevents/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.vaadin.addons.keyevents/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.addons.keyevents/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/org.eclipse.osbp.vaadin.addons.keyevents/.settings/org.eclipse.wst.common.component b/org.eclipse.osbp.vaadin.addons.keyevents/.settings/org.eclipse.wst.common.component
new file mode 100644
index 0000000..e529cff
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.addons.keyevents/.settings/org.eclipse.wst.common.component
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?><project-modules id="moduleCoreId" project-version="1.5.0">
+    <wb-module deploy-name="org.eclipse.osbp.vaadin.addons.keyevents">
+        <wb-resource deploy-path="/" source-path="/WebContent" tag="defaultRootSource"/>
+        <wb-resource deploy-path="/WEB-INF/classes" source-path="/src"/>
+        <wb-resource deploy-path="/WEB-INF/classes" source-path="/Sample"/>
+        <property name="java-output-path" value="/org.eclipse.osbp.vaadin.addons.keyevents/build/classes"/>
+        <property name="context-root" value="org.eclipse.osbp.vaadin.addons.keyevents"/>
+    </wb-module>
+</project-modules>
diff --git a/org.eclipse.osbp.vaadin.addons.keyevents/.settings/org.eclipse.wst.common.project.facet.core.xml b/org.eclipse.osbp.vaadin.addons.keyevents/.settings/org.eclipse.wst.common.project.facet.core.xml
new file mode 100644
index 0000000..b662702
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.addons.keyevents/.settings/org.eclipse.wst.common.project.facet.core.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<faceted-project>
+  <runtime name="Apache Tomcat v8.0"/>
+  <fixed facet="wst.jsdt.web"/>
+  <fixed facet="java"/>
+  <fixed facet="com.vaadin.integration.eclipse.core"/>
+  <fixed facet="jst.web"/>
+  <installed facet="jst.web" version="3.1"/>
+  <installed facet="wst.jsdt.web" version="1.0"/>
+  <installed facet="com.vaadin.integration.eclipse.core" version="7.0"/>
+  <installed facet="java" version="1.8"/>
+</faceted-project>
diff --git a/org.eclipse.osbp.vaadin.addons.keyevents/.settings/org.eclipse.wst.jsdt.ui.superType.container b/org.eclipse.osbp.vaadin.addons.keyevents/.settings/org.eclipse.wst.jsdt.ui.superType.container
new file mode 100644
index 0000000..3bd5d0a
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.addons.keyevents/.settings/org.eclipse.wst.jsdt.ui.superType.container
@@ -0,0 +1 @@
+org.eclipse.wst.jsdt.launching.baseBrowserLibrary
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaadin.addons.keyevents/.settings/org.eclipse.wst.jsdt.ui.superType.name b/org.eclipse.osbp.vaadin.addons.keyevents/.settings/org.eclipse.wst.jsdt.ui.superType.name
new file mode 100644
index 0000000..05bd71b
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.addons.keyevents/.settings/org.eclipse.wst.jsdt.ui.superType.name
@@ -0,0 +1 @@
+Window
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaadin.addons.keyevents/LICENSE.txt b/org.eclipse.osbp.vaadin.addons.keyevents/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.addons.keyevents/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.vaadin.addons.keyevents/Sample/org/eclipse/osbp/vaadin/addons/keyevents/sample/KeyEventsSample.java b/org.eclipse.osbp.vaadin.addons.keyevents/Sample/org/eclipse/osbp/vaadin/addons/keyevents/sample/KeyEventsSample.java
new file mode 100644
index 0000000..afb64a9
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.addons.keyevents/Sample/org/eclipse/osbp/vaadin/addons/keyevents/sample/KeyEventsSample.java
@@ -0,0 +1,56 @@
+/**
+ *                                                                            
+ * 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 <florian.pirchner@gmail.com> - Initial implementation
+ */
+package org.eclipse.osbp.vaadin.addons.keyevents.sample;
+
+import javax.servlet.annotation.WebServlet;
+
+import org.eclipse.osbp.vaadin.addons.keyevents.KeyEventExtension;
+
+import com.vaadin.annotations.Push;
+import com.vaadin.annotations.Theme;
+import com.vaadin.annotations.VaadinServletConfiguration;
+import com.vaadin.server.VaadinRequest;
+import com.vaadin.server.VaadinServlet;
+import com.vaadin.ui.Panel;
+import com.vaadin.ui.TextField;
+import com.vaadin.ui.UI;
+
+@SuppressWarnings("serial")
+@Theme("valo")
+// @Push(transport = Transport.LONG_POLLING, value = PushMode.AUTOMATIC)
+@Push
+public class KeyEventsSample extends UI {
+
+	@WebServlet(value = "/*", asyncSupported = true)
+	@VaadinServletConfiguration(productionMode = false, ui = KeyEventsSample.class, widgetset = "org.eclipse.osbp.vaadin.addons.keyevents.KeyEventsWidgetset")
+	public static class Servlet extends VaadinServlet {
+	}
+
+	@Override
+	protected void init(VaadinRequest request) {
+
+		Panel p1 = new Panel();
+		setContent(p1);
+
+		Panel p2 = new Panel();
+		p1.setContent(p2);
+
+		TextField t = new TextField("text");
+		p2.setContent(t);
+
+		KeyEventExtension ext = KeyEventExtension.addTo(p2);
+		ext.setCallback(e -> t.setValue(t.getValue() + e.charCode));
+
+		this.focus();
+	}
+}
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaadin.addons.keyevents/build.properties b/org.eclipse.osbp.vaadin.addons.keyevents/build.properties
new file mode 100644
index 0000000..a172fdb
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.addons.keyevents/build.properties
@@ -0,0 +1,5 @@
+output.. = target/classes/
+bin.includes = META-INF/,\
+               .,\
+               build.properties
+source.. = src/
diff --git a/org.eclipse.osbp.vaadin.addons.keyevents/epl-v10.html b/org.eclipse.osbp.vaadin.addons.keyevents/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.addons.keyevents/epl-v10.html
@@ -0,0 +1,259 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+  body {
+    size: 8.5in 11.0in;
+    margin: 0.25in 0.5in 0.25in 0.5in;
+    tab-interval: 0.5in;
+    }
+  p {  	
+    margin-left: auto;
+    margin-top:  0.5em;
+    margin-bottom: 0.5em;
+    }
+  p.list {
+  	margin-left: 0.5in;
+    margin-top:  0.05em;
+    margin-bottom: 0.05em;
+    }
+  </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">where such changes and/or additions to the Program
+originate from and are distributed by that particular Contributor. A
+Contribution 'originates' from a Contributor if it was added to the
+Program by such Contributor itself or anyone acting on such
+Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii)
+are not derivative works of the Program.</p>
+
+<p>"Contributor" means any person or entity that distributes
+the Program.</p>
+
+<p>"Licensed Patents" mean patent claims licensable by a
+Contributor which are necessarily infringed by the use or sale of its
+Contribution alone or when combined with the Program.</p>
+
+<p>"Program" means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>"Recipient" means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works
+of, publicly display, publicly perform, distribute and sublicense the
+Contribution of such Contributor, if any, and such derivative works, in
+source code and object code form.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell,
+offer to sell, import and otherwise transfer the Contribution of such
+Contributor, if any, in source code and object code form. This patent
+license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor,
+such addition of the Contribution causes such combination to be covered
+by the Licensed Patents. The patent license shall not apply to any other
+combinations which include the Contribution. No hardware per se is
+licensed hereunder.</p>
+
+<p class="list">c) Recipient understands that although each Contributor
+grants the licenses to its Contributions set forth herein, no assurances
+are provided by any Contributor that the Program does not infringe the
+patent or other intellectual property rights of any other entity. Each
+Contributor disclaims any liability to Recipient for claims brought by
+any other entity based on infringement of intellectual property rights
+or otherwise. As a condition to exercising the rights and licenses
+granted hereunder, each Recipient hereby assumes sole responsibility to
+secure any other intellectual property rights needed, if any. For
+example, if a third party patent license is required to allow Recipient
+to distribute the Program, it is Recipient's responsibility to acquire
+that license before distributing the Program.</p>
+
+<p class="list">d) Each Contributor represents that to its knowledge it
+has sufficient copyright rights in its Contribution, if any, to grant
+the copyright license set forth in this Agreement.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">i) effectively disclaims on behalf of all Contributors
+all warranties and conditions, express and implied, including warranties
+or conditions of title and non-infringement, and implied warranties or
+conditions of merchantability and fitness for a particular purpose;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">iv) states that source code for the Program is available
+from such Contributor, and informs licensees how to obtain it in a
+reasonable manner on or through a medium customarily used for software
+exchange.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>Commercial distributors of software may accept certain
+responsibilities with respect to end users, business partners and the
+like. While this license is intended to facilitate the commercial use of
+the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create
+potential liability for other Contributors. Therefore, if a Contributor
+includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and
+indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses")
+arising from claims, lawsuits and other legal actions brought by a third
+party against the Indemnified Contributor to the extent caused by the
+acts or omissions of such Commercial Contributor in connection with its
+distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In
+order to qualify, an Indemnified Contributor must: a) promptly notify
+the Commercial Contributor in writing of such claim, and b) allow the
+Commercial Contributor to control, and cooperate with the Commercial
+Contributor in, the defense and any related settlement negotiations. The
+Indemnified Contributor may participate in any such claim at its own
+expense.</p>
+
+<p>For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor's responsibility
+alone. Under this section, the Commercial Contributor would have to
+defend claims against the other Contributors related to those
+performance claims and warranties, and if a court requires any other
+Contributor to pay any damages as a result, the Commercial Contributor
+must pay those damages.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
+OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
+ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to
+the risks and costs of program errors, compliance with applicable laws,
+damage to or loss of data, programs or equipment, and unavailability or
+interruption of operations.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
+NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of
+the remainder of the terms of this Agreement, and without further action
+by the parties hereto, such provision shall be reformed to the minimum
+extent necessary to make such provision valid and enforceable.</p>
+
+<p>If Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that the
+Program itself (excluding combinations of the Program with other
+software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the
+date such litigation is filed.</p>
+
+<p>All Recipient's rights under this Agreement shall terminate if it
+fails to comply with any of the material terms or conditions of this
+Agreement and does not cure such failure in a reasonable period of time
+after becoming aware of such noncompliance. If all Recipient's rights
+under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive.</p>
+
+<p>Everyone is permitted to copy and distribute copies of this
+Agreement, but in order to avoid inconsistency the Agreement is
+copyrighted and may only be modified in the following manner. The
+Agreement Steward reserves the right to publish new versions (including
+revisions) of this Agreement from time to time. No one other than the
+Agreement Steward has the right to modify this Agreement. The Eclipse
+Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a
+suitable separate entity. Each new version of the Agreement will be
+given a distinguishing version number. The Program (including
+Contributions) may always be distributed subject to the version of the
+Agreement under which it was received. In addition, after a new version
+of the Agreement is published, Contributor may elect to distribute the
+Program (including its Contributions) under the new version. Except as
+expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
+rights or licenses to the intellectual property of any Contributor under
+this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this
+Agreement are reserved.</p>
+
+<p>This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No party
+to this Agreement will bring a legal action under this Agreement more
+than one year after the cause of action arose. Each party waives its
+rights to a jury trial in any resulting litigation.</p>
+
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaadin.addons.keyevents/ivy.xml b/org.eclipse.osbp.vaadin.addons.keyevents/ivy.xml
new file mode 100644
index 0000000..f37c689
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.addons.keyevents/ivy.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0"?>
+<!DOCTYPE ivy-module [
+	<!ENTITY vaadin.version "7.7.6">
+]>
+<ivy-module version="2.0"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd">
+	<info organisation="com.example" module="v7proj" />
+	<configurations>
+		<!-- The default configuration, which should be deployed to the server -->
+		<conf name="default" />
+		<!-- A configuration only needed when compiling the widget set. Should 
+			not be deployed to the server -->
+		<conf name="widgetset-compile" />
+		<!-- A configuration used in compilation of server side classes only.
+			Should be deployed to the server -->
+		<conf name="nodeploy" />
+	</configurations>
+	<dependencies defaultconf="default" defaultconfmapping="default->default">
+		<!-- The core server part of Vaadin -->
+		<dependency org="com.vaadin" name="vaadin-server" rev="&vaadin.version;" />
+
+		<!-- Vaadin themes -->
+		<dependency org="com.vaadin" name="vaadin-themes" rev="&vaadin.version;" />
+
+		<!-- Push support -->
+		<dependency org="com.vaadin" name="vaadin-push" rev="&vaadin.version;" />
+
+		<!-- Servlet 3.0 API -->
+		<dependency org="javax.servlet" name="javax.servlet-api" rev="3.0.1" conf="nodeploy->default" />
+
+		<!-- TestBench 4 -->
+		<dependency org="com.vaadin" name="vaadin-testbench-api" rev="latest.release" conf="nodeploy -> default" />
+
+		<!-- Precompiled DefaultWidgetSet -->
+		<dependency org="com.vaadin" name="vaadin-client-compiled"
+			rev="&vaadin.version;" />
+
+		<!-- Vaadin client side, needed for widget set compilation -->
+		<dependency org="com.vaadin" name="vaadin-client" rev="&vaadin.version;"
+			 conf="widgetset-compile->default" />
+
+		<!-- Compiler for custom widget sets. Should not be deployed -->
+		<dependency org="com.vaadin" name="vaadin-client-compiler"
+			rev="&vaadin.version;" conf="widgetset-compile->default" />
+			
+	</dependencies>
+	
+</ivy-module>
diff --git a/org.eclipse.osbp.vaadin.addons.keyevents/ivysettings.xml b/org.eclipse.osbp.vaadin.addons.keyevents/ivysettings.xml
new file mode 100644
index 0000000..d4743d3
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.addons.keyevents/ivysettings.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ivysettings>
+	<settings defaultResolver="default" />
+	<resolvers>
+		<chain name="default">
+			<!-- Public Maven repository -->
+			<ibiblio name="public" m2compatible="true" />
+
+			<!-- Vaadin Add-on repository -->
+			<ibiblio name="vaadin-addons" usepoms="true" m2compatible="true"
+				root="http://maven.vaadin.com/vaadin-addons" />
+				
+			<!-- Vaadin snapshots repository -->
+			<ibiblio name="vaadin-snapshots" usepoms="true" m2compatible="true"
+				root="https://oss.sonatype.org/content/repositories/vaadin-snapshots" />
+			<!-- Repository used for Vaadin modified smartsprites library -->
+			<dual name="custom-smartsprites">
+				<filesystem name="smartsprites-ivy">
+					<ivy pattern="${basedir}/ivymodule/[module]-ivy-[revision].xml" />
+				</filesystem>
+				<url name="smartsprites-artifact">
+					<artifact
+						pattern="http://dev.vaadin.com/svn/versions/6.8/build/smartsprites/lib/[artifact](-[revision]).[ext]" />
+				</url>
+			</dual>
+		</chain>
+	</resolvers>
+	<modules>
+		<!-- Vaadin patched SmartSprites -->
+		<module organisation="com.carrotsearch" name="smartsprites"
+			revision="0.2.3-itmill" resolver="custom-smartsprites" />
+	</modules>
+
+
+</ivysettings>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaadin.addons.keyevents/license.html b/org.eclipse.osbp.vaadin.addons.keyevents/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.addons.keyevents/license.html
@@ -0,0 +1,164 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>February 1, 2011</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+   (COLLECTIVELY "CONTENT").  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse
+ Foundation is provided to you under the terms and conditions of the 
+Eclipse Public License Version 1.0
+   ("EPL").  A copy of the EPL is provided with this Content and is also
+ available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+   For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>Content includes, but is not limited to, source code, object code, 
+documentation and other files maintained in the Eclipse Foundation 
+source code
+   repository ("Repository") in software modules ("Modules") and made 
+available as downloadable archives ("Downloads").</p>
+
+<ul>
+       <li>Content may be structured and packaged into modules to 
+facilitate delivering, extending, and upgrading the Content.  Typical 
+modules may include plug-ins ("Plug-ins"), plug-in fragments 
+("Fragments"), and features ("Features").</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&#8482; ARchive) in a directory named "plugins".</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or 
+Fragments and associated material.  Each Feature may be packaged as a 
+sub-directory in a directory named "features".  Within a Feature, files 
+named "feature.xml" may contain a list of the names and version numbers 
+of the Plug-ins
+      and/or Fragments associated with that Feature.</li>
+       <li>Features may also include other Features ("Included 
+Features"). Within a Feature, files named "feature.xml" may contain a 
+list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be 
+contained in files named "about.html" ("Abouts"). The terms and 
+conditions governing Features and
+Included Features should be contained in files named "license.html" 
+("Feature Licenses").  Abouts and Feature Licenses may be located in any
+ directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named "src" of certain Plug-ins</li>
+       <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is 
+installed using the Provisioning Technology (as defined below), you must
+ agree to a license ("Feature Update License") during the
+installation process.  If the Feature contains Included Features, the 
+Feature Update License should either provide you with the terms and 
+conditions governing the Included Features or
+inform you where you can locate them.  Feature Update Licenses may be 
+found in the "license" property of files named "feature.properties" 
+found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the 
+terms and conditions (or references to such terms and conditions) that 
+govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER 
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.
+  SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND 
+CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, 
+or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions 
+govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, 
+examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager ("Provisioning Technology") for the purpose of 
+allowing users to install software, documentation, information and/or
+   other materials (collectively "Installable Software"). This 
+capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about 
+packaging Installable Software is available at <a href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   ("Specification").</p>
+
+<p>You may use Provisioning Technology to allow other parties to install
+ Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to
+ be presented to, and accepted by, the users of the Provisioning 
+Technology
+   in accordance with the Specification. By using Provisioning 
+Technology in such a manner and making it available in accordance with 
+the
+   Specification, you further acknowledge your agreement to, and the 
+acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur ("Provisioning Process") in 
+which a user may execute the Provisioning Technology
+       on a machine ("Target Machine") with the intent of installing, 
+extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology 
+may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user 
+the terms and conditions that govern the use of the Installable
+       Software ("Installable Software Agreement") and such Installable 
+Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable 
+Software Agreement must inform the user of the terms and conditions that
+ govern
+       the Installable Software and must solicit acceptance by the end 
+user in the manner prescribed in such Installable Software Agreement. 
+Upon such
+       indication of agreement by the user, the provisioning Technology 
+will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are
+ currently may have restrictions on the import, possession, and use, 
+and/or re-export to
+   another country, of encryption software. BEFORE using any encryption 
+software, please check the country's laws, regulations and policies 
+concerning the import,
+   possession, or use, and re-export of encryption software, to see if 
+this is permitted.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaadin.addons.keyevents/pom.xml b/org.eclipse.osbp.vaadin.addons.keyevents/pom.xml
new file mode 100644
index 0000000..5878a8c
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.addons.keyevents/pom.xml
@@ -0,0 +1,192 @@
+<?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 implementation 
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	<parent>
+		<groupId>org.eclipse.osbp.releng.maven</groupId>
+		<artifactId>org.eclipse.osbp.releng.maven.parent.mbp</artifactId>
+		<version>0.9.0-SNAPSHOT</version>
+		<relativePath />
+	</parent>
+
+	<groupId>org.eclipse.osbp.vaadin.addons</groupId>
+	<artifactId>org.eclipse.osbp.vaadin.addons.keyevents</artifactId>
+	<packaging>bundle</packaging>
+
+	<dependencies>
+		<dependency>
+			<groupId>com.vaadin</groupId>
+			<artifactId>vaadin-server</artifactId>
+			<version>${vaadin.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>com.vaadin</groupId>
+			<artifactId>vaadin-client</artifactId>
+			<version>${vaadin.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>com.vaadin</groupId>
+			<artifactId>vaadin-shared</artifactId>
+			<version>${vaadin.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>com.vaadin.external.slf4j</groupId>
+			<artifactId>vaadin-slf4j-jdk14</artifactId>
+			<version>1.6.1</version>
+		</dependency>
+		<dependency>
+			<groupId>javax.servlet</groupId>
+			<artifactId>javax.servlet-api</artifactId>
+			<version>3.0.1</version>
+		</dependency>
+		<dependency>
+			<groupId>org.eclipse.osbp.dependencies</groupId>
+			<artifactId>org.eclipse.osbp.dependencies.bundle.vaadin.external.gwt</artifactId>
+			<version>2.7.0-SNAPSHOT</version>
+		</dependency>
+	</dependencies>
+
+	<build>
+		<sourceDirectory>${basedir}/src</sourceDirectory>
+
+		<plugins>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-resources-plugin</artifactId>
+				<configuration>
+					<encoding>UTF-8</encoding>
+				</configuration>
+			</plugin>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-compiler-plugin</artifactId>
+				<configuration>
+					<encoding>UTF-8</encoding>
+					<source>1.8</source>
+					<target>1.8</target>
+				</configuration>
+			</plugin>
+
+			<plugin>
+				<groupId>org.apache.felix</groupId>
+				<artifactId>maven-bundle-plugin</artifactId>
+				<extensions>true</extensions>
+				<configuration>
+					<instructions>
+						<Bundle-Name>OS.bee Addon for Vaadin: Key Events</Bundle-Name>
+						<Bundle-SymbolicName>org.eclipse.osbp.vaadin.addons.keyevents</Bundle-SymbolicName>
+						<Bundle-Version>0.9.0.{osgi-version-qualifier}</Bundle-Version>
+						<Require-Bundle>com.vaadin.server;bundle-version="[7.7.6,7.8.0)",
+							com.vaadin.client;bundle-version="[7.7.6,7.8.0)",
+							com.vaadin.shared;bundle-version="[7.7.6,7.8.0)",
+							org.jsoup;bundle-version="[1.8.3,1.8.4)",
+							dragdroplayouts.osgi;bundle-version="[1.3.2,1.3.3)"
+						</Require-Bundle>
+						<Import-Package>
+							com.vaadin.*,
+							!fi.jasoft.*,
+							javax.servlet.annotation;resolution:=optional,
+							*
+						</Import-Package>
+						<Export-Package>
+							!LICENSE,!LICENSE.txt,!THIRD-PARTY.txt,!NOTICE,!README.txt,!VERSION.txt,!build.properties,
+							!VAADIN.*,
+							org.eclipse.osbp.vaadin.addons.keyevents.*;version="0.9.0"
+						</Export-Package>
+						<Include-Resource>{maven-resources},LICENSE.txt,epl-v10.html</Include-Resource>
+						<_nouses>true</_nouses>
+					</instructions>
+				</configuration>
+			</plugin>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-source-plugin</artifactId>
+				<executions>
+					<execution>
+						<id>attach-sources</id>
+						<goals>
+							<goal>jar</goal>
+						</goals>
+					</execution>
+				</executions>
+			</plugin>
+		</plugins>
+		<pluginManagement>
+			<plugins>
+
+				<!--This plugin's configuration is used to store Eclipse m2e settings 
+					only. It has no influence on the Maven build itself. -->
+				<plugin>
+					<groupId>org.eclipse.m2e</groupId>
+					<artifactId>lifecycle-mapping</artifactId>
+					<version>1.0.0</version>
+					<configuration>
+						<lifecycleMappingMetadata>
+							<pluginExecutions>
+								<pluginExecution>
+									<pluginExecutionFilter>
+										<groupId>
+											org.apache.maven.plugins
+										</groupId>
+										<artifactId>
+											maven-dependency-plugin
+										</artifactId>
+										<versionRange>
+											[2.0.0,)
+										</versionRange>
+										<goals>
+											<goal>
+												copy-dependencies
+											</goal>
+										</goals>
+									</pluginExecutionFilter>
+									<action>
+										<ignore></ignore>
+									</action>
+								</pluginExecution>
+								<pluginExecution>
+									<pluginExecutionFilter>
+										<groupId>com.vaadin</groupId>
+										<artifactId>
+											vaadin-maven-plugin
+										</artifactId>
+										<versionRange>
+											[7.0-SNAPSHOT,)
+										</versionRange>
+										<goals>
+											<goal>compile</goal>
+										</goals>
+									</pluginExecutionFilter>
+									<action>
+										<ignore></ignore>
+									</action>
+								</pluginExecution>
+							</pluginExecutions>
+						</lifecycleMappingMetadata>
+					</configuration>
+				</plugin>
+			</plugins>
+		</pluginManagement>
+		<!-- This is needed for the sources required by the client-side compiler 
+			to be included in the produced JARs -->
+		<resources>
+			<resource>
+				<directory>src</directory>
+			</resource>
+		</resources>
+
+	</build>
+
+</project>
diff --git a/org.eclipse.osbp.vaadin.addons.keyevents/src/org/eclipse/osbp/vaadin/addons/keyevents/KeyEventExtension.java b/org.eclipse.osbp.vaadin.addons.keyevents/src/org/eclipse/osbp/vaadin/addons/keyevents/KeyEventExtension.java
new file mode 100644
index 0000000..0cec0f9
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.addons.keyevents/src/org/eclipse/osbp/vaadin/addons/keyevents/KeyEventExtension.java
@@ -0,0 +1,54 @@
+/**
+ *                                                                            
+ * 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 <florian.pirchner@gmail.com> - Initial implementation
+ */
+package org.eclipse.osbp.vaadin.addons.keyevents;
+
+import java.util.function.Consumer;
+
+import org.eclipse.osbp.vaadin.addons.keyevents.client.Event;
+import org.eclipse.osbp.vaadin.addons.keyevents.client.KeyEventServerRpc;
+
+import com.vaadin.server.AbstractClientConnector;
+import com.vaadin.server.AbstractExtension;
+import com.vaadin.ui.UI;
+
+@SuppressWarnings("serial")
+public class KeyEventExtension extends AbstractExtension {
+
+	private Consumer<Event> callback;
+
+	KeyEventServerRpc rpc = new KeyEventServerRpc() {
+		@Override
+		public void onKeyPress(Event event) {
+			callback.accept(event);
+		}
+	};
+
+	private KeyEventExtension() {
+		registerRpc(rpc);
+	}
+
+	public void extend(UI ui) {
+		super.extend(ui);
+	}
+
+	public static KeyEventExtension addTo(AbstractClientConnector connector) {
+		KeyEventExtension ext = new KeyEventExtension();
+		ext.extend(connector);
+		return ext;
+	}
+
+	public void setCallback(Consumer<Event> callback) {
+		this.callback = callback;
+	}
+
+}
diff --git a/org.eclipse.osbp.vaadin.addons.keyevents/src/org/eclipse/osbp/vaadin/addons/keyevents/KeyEventsWidgetset.gwt.xml b/org.eclipse.osbp.vaadin.addons.keyevents/src/org/eclipse/osbp/vaadin/addons/keyevents/KeyEventsWidgetset.gwt.xml
new file mode 100644
index 0000000..e62c838
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.addons.keyevents/src/org/eclipse/osbp/vaadin/addons/keyevents/KeyEventsWidgetset.gwt.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 2.5.1//EN" "http://google-web-toolkit.googlecode.com/svn/tags/2.5.1/distro-source/core/src/gwt-module.dtd">
+<module>
+	<inherits name="com.vaadin.DefaultWidgetSet" />
+	
+   <!-- Uncomment the following to compile the widgetset for one browser only. 
+		Multiple browsers can be specified as a comma separated list. The supported 
+		user agents at the moment of writing were: ie8,ie9,gecko1_8,safari,opera 
+		The value gecko1_8 is used for Firefox and safari is used for webkit based 
+		browsers including Google Chrome. -->
+
+ 	<!-- To enable SuperDevMode, uncomment this line. See https://vaadin.com/wiki/-/wiki/Main/Using%20SuperDevMode 
+ 		for more information and instructions. --> 
+ 	<!-- <set-configuration-property name="devModeRedirectEnabled" value="true" /> -->
+
+<!-- 	<add-linker name="xsiframe" /> -->
+<!-- 	<set-configuration-property name="devModeRedirectEnabled" value="true" /> -->
+<!-- 	<set-property name="user.agent" value="safari" /> -->
+
+</module>
diff --git a/org.eclipse.osbp.vaadin.addons.keyevents/src/org/eclipse/osbp/vaadin/addons/keyevents/client/Event.java b/org.eclipse.osbp.vaadin.addons.keyevents/src/org/eclipse/osbp/vaadin/addons/keyevents/client/Event.java
new file mode 100644
index 0000000..efcc462
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.addons.keyevents/src/org/eclipse/osbp/vaadin/addons/keyevents/client/Event.java
@@ -0,0 +1,18 @@
+package org.eclipse.osbp.vaadin.addons.keyevents.client;
+
+import java.io.Serializable;
+
+public class Event implements Serializable {
+
+	private static final long serialVersionUID = -8362315991135265409L;
+
+	public int charCode;
+
+	public boolean altKeyDown;
+
+	public boolean shiftKeyDown;
+
+	public boolean metaKeyDown;
+
+	public boolean controlKeyDown;
+}
diff --git a/org.eclipse.osbp.vaadin.addons.keyevents/src/org/eclipse/osbp/vaadin/addons/keyevents/client/KeyEventExtensionConnector.java b/org.eclipse.osbp.vaadin.addons.keyevents/src/org/eclipse/osbp/vaadin/addons/keyevents/client/KeyEventExtensionConnector.java
new file mode 100644
index 0000000..a1780a2
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.addons.keyevents/src/org/eclipse/osbp/vaadin/addons/keyevents/client/KeyEventExtensionConnector.java
@@ -0,0 +1,69 @@
+package org.eclipse.osbp.vaadin.addons.keyevents.client;
+
+import org.eclipse.osbp.vaadin.addons.keyevents.KeyEventExtension;
+
+import com.google.gwt.dom.client.NativeEvent;
+import com.google.gwt.event.shared.HandlerRegistration;
+import com.google.gwt.user.client.Event.NativePreviewEvent;
+import com.google.gwt.user.client.Event.NativePreviewHandler;
+import com.vaadin.client.ServerConnector;
+import com.vaadin.client.VConsole;
+import com.vaadin.client.communication.RpcProxy;
+import com.vaadin.client.extensions.AbstractExtensionConnector;
+import com.vaadin.shared.ui.Connect;
+
+@SuppressWarnings("serial")
+@Connect(KeyEventExtension.class)
+public class KeyEventExtensionConnector extends AbstractExtensionConnector {
+
+	private KeyEventServerRpc serverRPC = RpcProxy.create(KeyEventServerRpc.class, this);
+	private HandlerRegistration handlerRegistration;
+
+	@Override
+	protected void init() {
+		super.init();
+
+		handlerRegistration = com.google.gwt.user.client.Event.addNativePreviewHandler(new NativePreviewHandler() {
+			@Override
+			public void onPreviewNativeEvent(NativePreviewEvent event) {
+				switch (event.getTypeInt()) {
+				case com.google.gwt.user.client.Event.ONKEYUP:
+					final NativeEvent nativeEvent = event.getNativeEvent();
+
+					serverRPC.onKeyPress(createEvent(nativeEvent));
+
+					event.cancel();
+
+					break;
+				}
+
+			}
+		});
+
+	}
+
+	public void onUnregister() {
+		super.onUnregister();
+
+		if (handlerRegistration != null) {
+			VConsole.log("Unregister handlerRegistratio for keyEvents");
+			handlerRegistration.removeHandler();
+		}
+	}
+
+	@Override
+	protected void extend(final ServerConnector connector) {
+		// NOOP
+	}
+
+	protected Event createEvent(NativeEvent event) {
+		Event e = new Event();
+		e.charCode = event.getKeyCode();
+		e.altKeyDown = event.getAltKey();
+		e.controlKeyDown = event.getCtrlKey();
+		e.metaKeyDown = event.getMetaKey();
+		e.shiftKeyDown = event.getShiftKey();
+		return e;
+	}
+
+}
diff --git a/org.eclipse.osbp.vaadin.addons.keyevents/src/org/eclipse/osbp/vaadin/addons/keyevents/client/KeyEventServerRpc.java b/org.eclipse.osbp.vaadin.addons.keyevents/src/org/eclipse/osbp/vaadin/addons/keyevents/client/KeyEventServerRpc.java
new file mode 100644
index 0000000..635912b
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.addons.keyevents/src/org/eclipse/osbp/vaadin/addons/keyevents/client/KeyEventServerRpc.java
@@ -0,0 +1,20 @@
+/**
+ *                                                                            
+ * 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 <florian.pirchner@gmail.com> - Initial implementation
+ */
+package org.eclipse.osbp.vaadin.addons.keyevents.client;
+
+import com.vaadin.shared.communication.ServerRpc;
+
+public interface KeyEventServerRpc extends ServerRpc {
+	
+	void onKeyPress(Event event);
+}
diff --git a/org.eclipse.osbp.vaadin.addons.suggesttext/.project b/org.eclipse.osbp.vaadin.addons.suggesttext/.project
index d05f5c2..42358a8 100644
--- a/org.eclipse.osbp.vaadin.addons.suggesttext/.project
+++ b/org.eclipse.osbp.vaadin.addons.suggesttext/.project
@@ -40,6 +40,11 @@
 			<arguments>
 			</arguments>
 		</buildCommand>
+		<buildCommand>
+			<name>com.vaadin.integration.eclipse.addonStylesBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
 	</buildSpec>
 	<natures>
 		<nature>org.eclipse.pde.PluginNature</nature>
diff --git a/org.eclipse.osbp.vaadin.addons.suggesttext/.settings/com.vaadin.integration.eclipse.prefs b/org.eclipse.osbp.vaadin.addons.suggesttext/.settings/com.vaadin.integration.eclipse.prefs
index a8de489..e68619d 100644
--- a/org.eclipse.osbp.vaadin.addons.suggesttext/.settings/com.vaadin.integration.eclipse.prefs
+++ b/org.eclipse.osbp.vaadin.addons.suggesttext/.settings/com.vaadin.integration.eclipse.prefs
@@ -1,11 +1,11 @@
 com.vaadin.integration.eclipse.mavenAutoCompileWidgetset=true
-com.vaadin.integration.eclipse.mavenLatestVersionsUpgrade=["7.5.10","7.7.3"]
+com.vaadin.integration.eclipse.mavenLatestVersionsUpgrade=["7.7.13"]
 com.vaadin.integration.eclipse.notifyOfVaadinUpdates=true
 com.vaadin.integration.eclipse.previousCompileAction=widgetset
 com.vaadin.integration.eclipse.useLatestNightly=false
 com.vaadin.integration.eclipse.widgetsetBuildsSuspended=true
-com.vaadin.integration.eclipse.widgetsetCompilationEta=50065
-com.vaadin.integration.eclipse.widgetsetDirty=false
+com.vaadin.integration.eclipse.widgetsetCompilationEta=32252
+com.vaadin.integration.eclipse.widgetsetDirty=true
 com.vaadin.integration.eclipse.widgetsetStyle=OBF
 com.vaadin.integration.eclipse.widgetsetVerbose=true
 eclipse.preferences.version=1
diff --git a/org.eclipse.osbp.vaadin.addons.suggesttext/META-INF/MANIFEST.MF b/org.eclipse.osbp.vaadin.addons.suggesttext/META-INF/MANIFEST.MF
index ff4015e..49500a2 100644
--- a/org.eclipse.osbp.vaadin.addons.suggesttext/META-INF/MANIFEST.MF
+++ b/org.eclipse.osbp.vaadin.addons.suggesttext/META-INF/MANIFEST.MF
@@ -1,17 +1,17 @@
 Manifest-Version: 1.0
-Bnd-LastModified: 1491902111724
-Build-Jdk: 1.8.0_91
+Bnd-LastModified: 1519218981398
+Build-Jdk: 1.8.0_161
 Built-By: mollik
 Bundle-ActivationPolicy: lazy
 Bundle-Description: A parent POM aimed to set up the build of general Ma
  ven based projects.
 Bundle-DocURL: http://www.eclipse.org/osbp
 Bundle-ManifestVersion: 2
-Bundle-Name: org.eclipse.osbp.vaadin.addons.suggesttext
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-Name: OS.bee Addon for Vaadin: Suggesttext
+Bundle-RequiredExecutionEnvironment: JavaSE-1.7
 Bundle-SymbolicName: org.eclipse.osbp.vaadin.addons.suggesttext
-Bundle-Vendor: Eclipse OSBP
-Bundle-Version: 0.9.0.qualifier
+Bundle-Vendor: Loetz GmbH&Co.KG - 69115 Heidelberg - Germany
+Bundle-Version: 0.9.0.osgi-version-qualifier
 Created-By: Apache Maven Bundle Plugin
 Export-Package: org.eclipse.osbp.vaadin.addons.customcombo;version="0.9.
  0",org.eclipse.osbp.vaadin.addons.suggesttext;version="0.9.0",org.eclip
@@ -20,13 +20,16 @@
  ipse.osbp.vaadin.addons.suggesttext.sample;version="0.9.0"
 Import-Package: com.vaadin.annotations;version="[7.7,8)",com.vaadin.clie
  nt;version="[7.7,8)",com.vaadin.client.communication;version="[7.7,8)",
- com.vaadin.data;version="[7.7,8)",com.vaadin.external.org.slf4j;version
- ="[1.6,2)",com.vaadin.server;version="[7.7,8)",com.vaadin.ui;version="[
- 7.7,8)",javax.servlet.annotation;resolution:=optional;version="[3.0,4)"
- ,org.eclipse.osbp.vaadin.addons.suggesttext.client;version="[0.9,1)",or
- g.junit
-Require-Bundle: com.vaadin.server;bundle-version="[7.5.7,7.7.0)",com.vaa
- din.client;bundle-version="[7.5.7,7.7.0)",com.vaadin.shared;bundle-vers
- ion="[7.5.7,7.7.0)",org.jsoup;bundle-version="[1.8.3,1.8.4)"
+ com.vaadin.data;version="[7.7,8)",com.vaadin.data.util;version="[7.7,8)
+ ",com.vaadin.external.org.slf4j;version="[1.6,2)",com.vaadin.server;ver
+ sion="[7.7,8)",com.vaadin.shared;version="[7.7,8)",com.vaadin.shared.co
+ mmunication;version="[7.7,8)",com.vaadin.shared.ui;version="[7.7,8)",co
+ m.vaadin.ui;version="[7.7,8)",javax.servlet.annotation;resolution:=opti
+ onal;version="[3.0,4)",org.eclipse.osbp.vaadin.addons.suggesttext;versi
+ on="[0.9,1)",org.eclipse.osbp.vaadin.addons.suggesttext.client;version=
+ "[0.9,1)",org.junit
+Require-Bundle: com.vaadin.server;bundle-version="[7.7.6,7.8.0)",com.vaa
+ din.client;bundle-version="[7.7.6,7.8.0)",com.vaadin.shared;bundle-vers
+ ion="[7.7.6,7.8.0)",org.jsoup;bundle-version="[1.8.3,1.8.4)"
 Require-Capability: osgi.ee;filter:="(&(osgi.ee=JavaSE)(version=1.8))"
 Tool: Bnd-3.2.0.201605172007
diff --git a/org.eclipse.osbp.vaadin.addons.suggesttext/META-INF/git.properties b/org.eclipse.osbp.vaadin.addons.suggesttext/META-INF/git.properties
index c99b885..c60c59b 100644
--- a/org.eclipse.osbp.vaadin.addons.suggesttext/META-INF/git.properties
+++ b/org.eclipse.osbp.vaadin.addons.suggesttext/META-INF/git.properties
@@ -1,14 +1,14 @@
 #Generated by Git-Commit-Id-Plugin
-#Tue Apr 11 11:17:34 CEST 2017
+#Wed Feb 21 14:16:18 CET 2018
 git.remote.origin.url=ssh\://compex@10.1.13.14/osbpgit/org.eclipse.osbp.vaadin.addons.git
-git.closest.tag.name=OSBP-initial-commit-2-Eclipse-4-luna-2017-03-31-17-10-39
-git.commit.id.describe-short=OSBP-initial-commit-2-Eclipse-4-luna-2017-03-31-17-10-39-dirty
-git.commit.time=02.02.2017 @ 18\:04\:55 MEZ
-git.commit.message.full=remove the feature from build
-git.commit.message.short=remove the feature from build
-git.commit.id.abbrev=90dd482
-git.branch=OSBP-initial-commit-2-Eclipse-4-luna
-git.closest.tag.commit.count=0
-git.commit.id.describe=OSBP-initial-commit-2-Eclipse-4-luna-2017-03-31-17-10-39-dirty
-git.commit.id=90dd482e5bc78cd1a404d12445cebc868ee417b0
-git.tags=OSBP-initial-commit-2-Eclipse-4-luna-2017-03-31-17-10-39
+git.closest.tag.name=daily-2018-02-12-21-16-49
+git.commit.id.describe-short=daily-2018-02-12-21-16-49-3-dirty
+git.commit.time=09.02.2018 @ 13\:23\:29 MEZ
+git.commit.message.full=kanban
+git.commit.message.short=kanban
+git.commit.id.abbrev=495fc00
+git.branch=development
+git.closest.tag.commit.count=3
+git.commit.id.describe=daily-2018-02-12-21-16-49-3-g495fc00-dirty
+git.commit.id=495fc00cb050c6f32031305e0d52c493061c3582
+git.tags=
diff --git a/org.eclipse.osbp.vaadin.addons.suggesttext/Sample/org/eclipse/osbp/vaadin/addons/suggesttext/sample/Person.java b/org.eclipse.osbp.vaadin.addons.suggesttext/Sample/org/eclipse/osbp/vaadin/addons/suggesttext/sample/Person.java
index 010f373..5a3626b 100644
--- a/org.eclipse.osbp.vaadin.addons.suggesttext/Sample/org/eclipse/osbp/vaadin/addons/suggesttext/sample/Person.java
+++ b/org.eclipse.osbp.vaadin.addons.suggesttext/Sample/org/eclipse/osbp/vaadin/addons/suggesttext/sample/Person.java
@@ -21,7 +21,7 @@
 	private String firstname;
 
 	private String lastname;
-
+ 
 	public Person(String firstname, String lastname) {
 		super();
 		this.firstname = firstname;
@@ -52,4 +52,9 @@
 		this.lastname = lastname;
 	}
 
+	@Override
+	public String toString() {
+		return "Person [uuid=" + uuid + ", firstname=" + firstname + ", lastname=" + lastname + "]";
+	}
+
 }
diff --git a/org.eclipse.osbp.vaadin.addons.suggesttext/Sample/org/eclipse/osbp/vaadin/addons/suggesttext/sample/PersonForUUIDMapping.java b/org.eclipse.osbp.vaadin.addons.suggesttext/Sample/org/eclipse/osbp/vaadin/addons/suggesttext/sample/PersonForUUIDMapping.java
index 3bfe66c..c3ebc4d 100644
--- a/org.eclipse.osbp.vaadin.addons.suggesttext/Sample/org/eclipse/osbp/vaadin/addons/suggesttext/sample/PersonForUUIDMapping.java
+++ b/org.eclipse.osbp.vaadin.addons.suggesttext/Sample/org/eclipse/osbp/vaadin/addons/suggesttext/sample/PersonForUUIDMapping.java
@@ -21,7 +21,7 @@
 	private String firstname;
 
 	private String lastname;
-
+ 
 	public PersonForUUIDMapping(String firstname, String lastname) {
 		super();
 		this.firstname = firstname;
diff --git a/org.eclipse.osbp.vaadin.addons.suggesttext/Sample/org/eclipse/osbp/vaadin/addons/suggesttext/sample/SuggestTextUI.java b/org.eclipse.osbp.vaadin.addons.suggesttext/Sample/org/eclipse/osbp/vaadin/addons/suggesttext/sample/SuggestTextUI.java
index d704b50..679b4b6 100644
--- a/org.eclipse.osbp.vaadin.addons.suggesttext/Sample/org/eclipse/osbp/vaadin/addons/suggesttext/sample/SuggestTextUI.java
+++ b/org.eclipse.osbp.vaadin.addons.suggesttext/Sample/org/eclipse/osbp/vaadin/addons/suggesttext/sample/SuggestTextUI.java
@@ -113,7 +113,7 @@
 			@Override
 			public void valueChange(Property.ValueChangeEvent event) {
 				suggestionBox.setAutoHide(autoHide.getValue());
-				
+
 				touchLayout.setEnabled(!autoHide.getValue());
 			}
 		});
@@ -146,7 +146,7 @@
 		});
 		navDownSuggestList.setWidth("100%");
 		touchLayout.addComponent(navDownSuggestList);
-		
+
 		Button selectCurrent = new Button("select", e -> {
 			suggestionBox.selectCurrent();
 		});
@@ -155,24 +155,32 @@
 
 		Button sendKeys = new Button("send 'Pirchner1234' as Keys", e -> {
 			int length = suggestionBox.getKeys().length();
-			if(length < "Pirchner12345".length()) {
-				String keys = suggestionBox.getKeys() + "Pirchner12345".substring(length, length+1);
+			if (length < "Pirchner12345".length()) {
+				String keys = suggestionBox.getKeys() + "Pirchner12345".substring(length, length + 1);
 				suggestionBox.setKeys(keys);
 			}
 		});
 		sendKeys.setWidth("100%");
 		layout.addComponent(sendKeys);
-		
+
 		Button sendKeysAsValue = new Button("send 'Pirchner1234' as Value", e -> {
 			int length = suggestionBox.getValue().length();
-			if(length < "Pirchner12345".length()) {
-				String keys = suggestionBox.getValue() + "Pirchner12345".substring(length, length+1);
+			if (length < "Pirchner12345".length()) {
+				String keys = suggestionBox.getValue() + "Pirchner12345".substring(length, length + 1);
 				suggestionBox.setValue(keys);
 			}
 		});
 		sendKeysAsValue.setWidth("100%");
 		layout.addComponent(sendKeysAsValue);
-		
+
+		Button simFastInputs = new Button("Simulate fast inputs", e -> {
+			access(() -> suggestionBox.setValue(""));
+			access(() -> suggestionBox.setValue("Pirchner12345"));
+			access(() -> suggestionBox.setValue(""));
+		});
+		simFastInputs.setWidth("100%");
+		layout.addComponent(simFastInputs);
+
 		// configure and add suggestion box
 		suggestionBox.setCaption("Select");
 		suggestionBox.getTextField().addValueChangeListener(new Property.ValueChangeListener() {
@@ -189,6 +197,8 @@
 		layout.addComponent(suggestionBox);
 		BeanItemContainer<Person> container = new BeanItemContainer<>(Person.class);
 
+		suggestionBox.addSelectionChangedListener(e -> System.out.println("Selection changed " + e.getItemId()));
+
 		for (int i = 0; i < 100; i++) {
 			container.addBean(new Person("Florian" + i, "Pirchner" + i));
 			container.addBean(new Person("Klemens" + i, "Edler" + i));
@@ -200,7 +210,8 @@
 		container.addBean(new Person("Florian", "Pirchner1234"));
 		container.addBean(new Person("Florian", "Pirchner12345"));
 		container.addBean(new Person("Jörg", "Riegel"));
-
+		container.addBean(new Person("EAN", "00012348"));
+		
 		suggestionBox.setContainerDataSource(container);
 		suggestionBox.setCaptionPropertyId("lastname");
 		suggestionBox.setFilterPropertyId("lastname");
diff --git a/org.eclipse.osbp.vaadin.addons.suggesttext/pom.xml b/org.eclipse.osbp.vaadin.addons.suggesttext/pom.xml
index 2e1f48a..ae9c50c 100644
--- a/org.eclipse.osbp.vaadin.addons.suggesttext/pom.xml
+++ b/org.eclipse.osbp.vaadin.addons.suggesttext/pom.xml
@@ -51,6 +51,11 @@
 			<artifactId>javax.servlet-api</artifactId>
 			<version>3.0.1</version>
 		</dependency>
+		<dependency>
+			<groupId>org.eclipse.osbp.dependencies</groupId>
+			<artifactId>org.eclipse.osbp.dependencies.bundle.vaadin.external.gwt</artifactId>
+			<version>2.7.0-SNAPSHOT</version>
+		</dependency>
 	</dependencies>
 
 	<build>
diff --git a/org.eclipse.osbp.vaadin.addons.suggesttext/src/org/eclipse/osbp/vaadin/addons/suggesttext/SuggestTextField.java b/org.eclipse.osbp.vaadin.addons.suggesttext/src/org/eclipse/osbp/vaadin/addons/suggesttext/SuggestTextField.java
index 292a420..e8560c7 100644
--- a/org.eclipse.osbp.vaadin.addons.suggesttext/src/org/eclipse/osbp/vaadin/addons/suggesttext/SuggestTextField.java
+++ b/org.eclipse.osbp.vaadin.addons.suggesttext/src/org/eclipse/osbp/vaadin/addons/suggesttext/SuggestTextField.java
@@ -18,6 +18,7 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 
 import org.eclipse.osbp.vaadin.addons.suggesttext.client.OQueryDelegate.SuggestionResult;
 import org.eclipse.osbp.vaadin.addons.suggesttext.client.SuggestTextFieldClientRpc;
@@ -83,10 +84,14 @@
 	/** The filter property id. */
 	private Object filterPropertyId;
 
+	private String currentHandleId;
+
 	/** The rpc. */
 	private SuggestTextFieldServerRpc rpc = new SuggestTextFieldServerRpc() {
+
 		@Override
 		public void requestSuggestions(final String handleId, final String filter, final int limit) {
+			currentHandleId = handleId;
 			if (needsUUIDMapping) {
 				uuidmapping.clear();
 			}
@@ -94,7 +99,11 @@
 		}
 
 		@Override
-		public void selectionChanged(String id) {
+		public void selectionChanged(String handleId, String id) {
+			if(!Objects.equals(handleId, currentHandleId)){
+				return;
+			}
+			
 			Object itemId = getItemById(id);
 			if (itemId != null) {
 				fireSelectionChanged(itemId);
@@ -169,6 +178,7 @@
 	 * @param value
 	 */
 	public void setValue(String value) {
+		currentHandleId = null;
 		textField.setValue(value);
 	}
 
@@ -188,6 +198,7 @@
 	 * @param value
 	 */
 	public void setKeys(String value) {
+		currentHandleId = null;
 		closePopup();
 		textField.setValue(value);
 		if(isSuggestionEnabled()) {
@@ -545,7 +556,7 @@
 				if (needsUUIDMapping) {
 					uuidmapping.put(id.toString(), id);
 				}
-				result.add(new SuggestionResult(id.toString(), caption));
+				result.add(new SuggestionResult(id.toString(), caption, handleId));
 
 				count++;
 				if (count >= limit) {
diff --git a/org.eclipse.osbp.vaadin.addons.suggesttext/src/org/eclipse/osbp/vaadin/addons/suggesttext/client/ODelegatingOracle.java b/org.eclipse.osbp.vaadin.addons.suggesttext/src/org/eclipse/osbp/vaadin/addons/suggesttext/client/ODelegatingOracle.java
index b67e673..fad2ebe 100644
--- a/org.eclipse.osbp.vaadin.addons.suggesttext/src/org/eclipse/osbp/vaadin/addons/suggesttext/client/ODelegatingOracle.java
+++ b/org.eclipse.osbp.vaadin.addons.suggesttext/src/org/eclipse/osbp/vaadin/addons/suggesttext/client/ODelegatingOracle.java
@@ -81,6 +81,12 @@
 
 		super.requestDefaultSuggestions(request, callback);
 	}
+	
+	
+
+	public void resetCurrentHandle() {
+		delegate.resetCurrentHandle();
+	}
 
 	/**
 	 * Sets the delay until the popup occurs.
diff --git a/org.eclipse.osbp.vaadin.addons.suggesttext/src/org/eclipse/osbp/vaadin/addons/suggesttext/client/OQueryDelegate.java b/org.eclipse.osbp.vaadin.addons.suggesttext/src/org/eclipse/osbp/vaadin/addons/suggesttext/client/OQueryDelegate.java
index 50c9a0f..cdf9e4c 100644
--- a/org.eclipse.osbp.vaadin.addons.suggesttext/src/org/eclipse/osbp/vaadin/addons/suggesttext/client/OQueryDelegate.java
+++ b/org.eclipse.osbp.vaadin.addons.suggesttext/src/org/eclipse/osbp/vaadin/addons/suggesttext/client/OQueryDelegate.java
@@ -12,6 +12,7 @@
  */
 package org.eclipse.osbp.vaadin.addons.suggesttext.client;
 
+import java.io.Serializable;
 import java.util.Date;
 import java.util.List;
 
@@ -19,7 +20,8 @@
 
 // TODO: Auto-generated Javadoc
 /**
- * This class is responsible to delegate the query for suggestions to the serverside rpc. 
+ * This class is responsible to delegate the query for suggestions to the
+ * serverside rpc.
  */
 public class OQueryDelegate {
 
@@ -29,28 +31,36 @@
 
 	/** The current handle. */
 	private String currentHandle;
-	
+
 	/** The current callback. */
 	private FutureCallback currentCallback;
 
 	/**
 	 * Instantiates a new o query delegate.
 	 *
-	 * @param serverRpc the server rpc
+	 * @param serverRpc
+	 *            the server rpc
 	 */
 	public OQueryDelegate(SuggestTextFieldServerRpc serverRpc) {
 		this.serverRpc = serverRpc;
 	}
 
+	public void resetCurrentHandle() {
+		currentHandle = Long.toHexString(new Date().getTime());
+	}
+
 	/**
 	 * Request suggestions.
 	 *
-	 * @param request the request
-	 * @param callback the callback
+	 * @param request
+	 *            the request
+	 * @param callback
+	 *            the callback
 	 */
 	protected void requestSuggestions(Request request, FutureCallback callback) {
 		// dismiss older callbacks
-		currentHandle = Long.toHexString(new Date().getTime());
+		resetCurrentHandle();
+
 		currentCallback = callback;
 
 		serverRpc.requestSuggestions(currentHandle, request.getQuery(), request.getLimit());
@@ -59,24 +69,27 @@
 	/**
 	 * Respond.
 	 *
-	 * @param handle the handle
-	 * @param response the response
+	 * @param handle
+	 *            the handle
+	 * @param response
+	 *            the response
 	 */
 	public void respond(String handle, List<SuggestionResult> response) {
 		if (currentHandle.equals(handle)) {
 			currentCallback.respondSuggestions(response);
 		}
 	}
-	
+
 	/**
-	 * A future to wait for responds from serverside. 
+	 * A future to wait for responds from serverside.
 	 */
 	public interface FutureCallback {
-		
+
 		/**
 		 * Respond suggestions.
 		 *
-		 * @param suggestions the suggestions
+		 * @param suggestions
+		 *            the suggestions
 		 */
 		void respondSuggestions(List<SuggestionResult> suggestions);
 	}
@@ -84,31 +97,34 @@
 	/**
 	 * The Class SuggestionResult.
 	 */
-	public static class SuggestionResult {
-		
+	public static class SuggestionResult implements Serializable {
+		private static final long serialVersionUID = 166123789723L;
+
 		/** The uuid. */
 		public String uuid;
-		
+
 		/** The display text. */
 		public String displayText;
 
-		/**
-		 * Instantiates a new suggestion result.
-		 */
-		public SuggestionResult() {
+		public String handleId;
 
+		public SuggestionResult(){
+			
 		}
-
+		
 		/**
 		 * Instantiates a new suggestion result.
 		 *
-		 * @param uuid the uuid
-		 * @param displayText the display text
+		 * @param uuid
+		 *            the uuid
+		 * @param displayText
+		 *            the display text
 		 */
-		public SuggestionResult(String uuid, String displayText) {
+		public SuggestionResult(String uuid, String displayText, String handleId) {
 			super();
 			this.uuid = uuid;
 			this.displayText = displayText;
+			this.handleId = handleId;
 		}
 
 	}
diff --git a/org.eclipse.osbp.vaadin.addons.suggesttext/src/org/eclipse/osbp/vaadin/addons/suggesttext/client/OSuggestBox.java b/org.eclipse.osbp.vaadin.addons.suggesttext/src/org/eclipse/osbp/vaadin/addons/suggesttext/client/OSuggestBox.java
index a3cf881..62dbeec 100644
--- a/org.eclipse.osbp.vaadin.addons.suggesttext/src/org/eclipse/osbp/vaadin/addons/suggesttext/client/OSuggestBox.java
+++ b/org.eclipse.osbp.vaadin.addons.suggesttext/src/org/eclipse/osbp/vaadin/addons/suggesttext/client/OSuggestBox.java
@@ -1320,6 +1320,10 @@
 			}
 
 			public void onValueChange(ValueChangeEvent<String> event) {
+				// reset the current handle to avoid wrong suggestions which
+				// arrive late
+				((ODelegatingOracle) oracle).resetCurrentHandle();
+
 				delegateEvent(OSuggestBox.this, event);
 			}
 		}
diff --git a/org.eclipse.osbp.vaadin.addons.suggesttext/src/org/eclipse/osbp/vaadin/addons/suggesttext/client/OSuggestion.java b/org.eclipse.osbp.vaadin.addons.suggesttext/src/org/eclipse/osbp/vaadin/addons/suggesttext/client/OSuggestion.java
index b289dc2..b40fd42 100644
--- a/org.eclipse.osbp.vaadin.addons.suggesttext/src/org/eclipse/osbp/vaadin/addons/suggesttext/client/OSuggestion.java
+++ b/org.eclipse.osbp.vaadin.addons.suggesttext/src/org/eclipse/osbp/vaadin/addons/suggesttext/client/OSuggestion.java
@@ -24,41 +24,53 @@
 
 	/** The uuid. */
 	private final String uuid;
-	
+
 	/** The display string. */
 	private final String displayString;
 
+	private final String handleId;
+
 	/**
 	 * Instantiates a new o suggestion.
 	 *
-	 * @param result the result
+	 * @param result
+	 *            the result
 	 */
 	public OSuggestion(SuggestionResult result) {
-		this(result.uuid, result.displayText);
+		this(result.uuid, result.displayText, result.handleId);
 	}
 
 	/**
 	 * Instantiates a new o suggestion.
 	 *
-	 * @param uuid the uuid
-	 * @param displayString the display string
+	 * @param uuid
+	 *            the uuid
+	 * @param displayString
+	 *            the display string
 	 */
-	public OSuggestion(String uuid, String displayString) {
+	public OSuggestion(String uuid, String displayString, String handleId) {
 		super();
 		this.uuid = uuid;
 		this.displayString = displayString;
+		this.handleId = handleId;
 	}
 
-	/* (non-Javadoc)
-	 * @see com.google.gwt.user.client.ui.SuggestOracle.Suggestion#getDisplayString()
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * com.google.gwt.user.client.ui.SuggestOracle.Suggestion#getDisplayString()
 	 */
 	@Override
 	public String getDisplayString() {
 		return displayString;
 	}
 
-	/* (non-Javadoc)
-	 * @see com.google.gwt.user.client.ui.SuggestOracle.Suggestion#getReplacementString()
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see com.google.gwt.user.client.ui.SuggestOracle.Suggestion#
+	 * getReplacementString()
 	 */
 	@Override
 	public String getReplacementString() {
@@ -74,4 +86,8 @@
 		return uuid;
 	}
 
+	public String getHandleId() {
+		return handleId;
+	}
+
 }
diff --git a/org.eclipse.osbp.vaadin.addons.suggesttext/src/org/eclipse/osbp/vaadin/addons/suggesttext/client/SuggestTextFieldConnector.java b/org.eclipse.osbp.vaadin.addons.suggesttext/src/org/eclipse/osbp/vaadin/addons/suggesttext/client/SuggestTextFieldConnector.java
index cf4782f..4d79cdf 100644
--- a/org.eclipse.osbp.vaadin.addons.suggesttext/src/org/eclipse/osbp/vaadin/addons/suggesttext/client/SuggestTextFieldConnector.java
+++ b/org.eclipse.osbp.vaadin.addons.suggesttext/src/org/eclipse/osbp/vaadin/addons/suggesttext/client/SuggestTextFieldConnector.java
@@ -144,7 +144,7 @@
 	public void onSelection(SelectionEvent<Suggestion> event) {
 		OSuggestion suggestion = (OSuggestion) event.getSelectedItem();
 		if (suggestion != null) {
-			rpc.selectionChanged(suggestion.getUuid());
+			rpc.selectionChanged(suggestion.getHandleId(), suggestion.getUuid());
 		}
 	}
 
diff --git a/org.eclipse.osbp.vaadin.addons.suggesttext/src/org/eclipse/osbp/vaadin/addons/suggesttext/client/SuggestTextFieldServerRpc.java b/org.eclipse.osbp.vaadin.addons.suggesttext/src/org/eclipse/osbp/vaadin/addons/suggesttext/client/SuggestTextFieldServerRpc.java
index 63b2080..99e1892 100644
--- a/org.eclipse.osbp.vaadin.addons.suggesttext/src/org/eclipse/osbp/vaadin/addons/suggesttext/client/SuggestTextFieldServerRpc.java
+++ b/org.eclipse.osbp.vaadin.addons.suggesttext/src/org/eclipse/osbp/vaadin/addons/suggesttext/client/SuggestTextFieldServerRpc.java
@@ -38,8 +38,10 @@
 	 *
 	 * @param uuid
 	 *            the uuid
+	 * @param handleId
+	 *            a unique id for every request to link request/response.
 	 */
-	public void selectionChanged(String uuid);
+	public void selectionChanged(String handleId, String uuid);
 
 	/**
 	 * The client notifies the server about suggestion enablement.
diff --git a/pom.xml b/pom.xml
index bc226fc..590d457 100644
--- a/pom.xml
+++ b/pom.xml
@@ -43,6 +43,7 @@
 		<module>org.eclipse.osbp.vaadin.addons.designer.overlay</module>
 		<module>org.eclipse.osbp.vaadin.addons.kanban</module>
 		<module>org.eclipse.osbp.vaadin.addons.suggesttext</module>
+		<module>org.eclipse.osbp.vaadin.addons.keyevents</module>
 	<!-- NO FEATURES IN MBP REACTORS! -->
 <!-- 		<module>org.eclipse.osbp.vaadin.addons.feature</module> -->
 	</modules>