VirtualKeyboard Add-on

Just updated. Take a look at the demo, get the link from
VirtualKeyboard Add-on
.

Fixed minor issues, but now it works with many browsers (although still needs testing).

Next steps:

  • Make it work independently on the client-side. Currently each keystroke generates a server round-trip.
  • Make compatible with touch devices.

Regarding the latter, the most annoying thing is that the build-in onscreen keyboard pops up when a text element receives focus. If someone has an idea how to avoid it, it could save me a lot of research time.

Bugs, ideas, wishes, comments are welcome!

My application always crashes when i press a key on the virtual keyboard

Mai 13, 2014 1:00:14 PM com.vaadin.server.DefaultErrorHandler doDefault
Schwerwiegend:
com.vaadin.server.ServerRpcManager$RpcInvocationException: Unable to invoke method onKeyClick in org.vaadin.majuk.virtualkeyboard.VirtualKeyboard$KeyClickRpc
    at com.vaadin.server.ServerRpcManager.applyInvocation(ServerRpcManager.java:170)
    at com.vaadin.server.ServerRpcManager.applyInvocation(ServerRpcManager.java:118)
    at com.vaadin.server.communication.ServerRpcHandler.handleBurst(ServerRpcHandler.java:207)
    at com.vaadin.server.communication.ServerRpcHandler.handleRpc(ServerRpcHandler.java:111)
    at com.vaadin.server.communication.PushHandler$2.run(PushHandler.java:160)
    at com.vaadin.server.communication.PushHandler.callWithUi(PushHandler.java:238)
    at com.vaadin.server.communication.PushHandler.onRequest(PushHandler.java:307)
    at org.atmosphere.cpr.AsynchronousProcessor.action(AsynchronousProcessor.java:260)
    at org.atmosphere.cpr.AsynchronousProcessor.suspended(AsynchronousProcessor.java:167)
    at org.atmosphere.container.TomcatWebSocketUtil.doService(TomcatWebSocketUtil.java:137)
    at org.atmosphere.container.Tomcat7AsyncSupportWithWebSocket.service(Tomcat7AsyncSupportWithWebSocket.java:59)
    at org.atmosphere.cpr.AtmosphereFramework.doCometSupport(AtmosphereFramework.java:1464)
    at org.atmosphere.websocket.DefaultWebSocketProcessor.dispatch(DefaultWebSocketProcessor.java:219)
    at org.atmosphere.websocket.DefaultWebSocketProcessor$2.run(DefaultWebSocketProcessor.java:183)
    at org.atmosphere.util.VoidExecutorService.execute(VoidExecutorService.java:101)
    at org.atmosphere.websocket.DefaultWebSocketProcessor.dispatch(DefaultWebSocketProcessor.java:178)
    at org.atmosphere.websocket.DefaultWebSocketProcessor.invokeWebSocketProtocol(DefaultWebSocketProcessor.java:167)
    at org.atmosphere.container.TomcatWebSocketHandler.onTextMessage(TomcatWebSocketHandler.java:92)
    at org.apache.catalina.websocket.MessageInbound.onTextData(MessageInbound.java:78)
    at org.apache.catalina.websocket.StreamInbound.doOnTextData(StreamInbound.java:191)
    at org.apache.catalina.websocket.StreamInbound.onData(StreamInbound.java:139)
    at org.apache.coyote.http11.upgrade.UpgradeProcessor.upgradeDispatch(UpgradeProcessor.java:88)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:313)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.reflect.InvocationTargetException
    at sun.reflect.GeneratedMethodAccessor63.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at com.vaadin.server.ServerRpcManager.applyInvocation(ServerRpcManager.java:168)
    ... 26 more
Caused by: java.lang.StringIndexOutOfBoundsException: String index out of range: 36
    at java.lang.String.substring(Unknown Source)
    at org.vaadin.majuk.virtualkeyboard.VirtualKeyboard$1.onKeyClick(VirtualKeyboard.java:74)
    ... 30 more