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&ivyXmlPath=ivy.xml&confs=default&ivySettingsPath=%24%7Bworkspace_loc%3Aorg.eclipse.osbp.vaadin.addons.keyevents%2Fivysettings.xml%7D&loadSettingsOnDemand=false&ivyUserDir=&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&ivyXmlPath=ivy.xml&confs=widgetset-compile&ivySettingsPath=%24%7Bworkspace_loc%3Aorg.eclipse.osbp.vaadin.addons.keyevents%2Fivysettings.xml%7D&loadSettingsOnDemand=false&ivyUserDir=&propertyFiles="/>
+ <classpathentry kind="con" path="org.apache.ivyde.eclipse.cpcontainer.IVYDE_CONTAINER/?project=org.eclipse.osbp.vaadin.addons.keyevents&ivyXmlPath=ivy.xml&confs=nodeploy&ivySettingsPath=%24%7Bworkspace_loc%3Aorg.eclipse.osbp.vaadin.addons.keyevents%2Fivysettings.xml%7D&loadSettingsOnDemand=false&ivyUserDir=&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™ 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>