org.eclipse.rap icon indicating copy to clipboard operation
org.eclipse.rap copied to clipboard

Support for keyboard styles for browser on touch devices

Open JohnGymer opened this issue 11 months ago • 0 comments

How can keyboard type be specified for a Text widget in RAP? This is for browser running on mobile/touch device with an on-screen keyboard. I tried setting type="email" as an html attribute, and this causes an exception in the RAP JS when typing any character into the field. Oddly, type="url" and type="tel" work OK.

exception as follows:

java.lang.IllegalArgumentException: Could not create Point for: [null,0] at org.eclipse.rap.rwt.remote.JsonMapping.readPoint(JsonMapping.java:338) at org.eclipse.swt.internal.widgets.textkit.TextOperationHandler.handleSetSelection(TextOperationHandler.java:97) at org.eclipse.swt.internal.widgets.textkit.TextOperationHandler.handleSet(TextOperationHandler.java:44) at org.eclipse.swt.internal.widgets.textkit.TextOperationHandler.handleSet(TextOperationHandler.java:1) at org.eclipse.rap.rwt.internal.protocol.ControlOperationHandler.handleSet(ControlOperationHandler.java:1) at org.eclipse.rap.rwt.internal.protocol.WidgetOperationHandler.handleSet(WidgetOperationHandler.java:41) at org.eclipse.rap.rwt.internal.protocol.ProtocolUtil.handleOperation(ProtocolUtil.java:65) at org.eclipse.rap.rwt.internal.lifecycle.WidgetLCA.readData(WidgetLCA.java:51) at org.eclipse.swt.internal.widgets.displaykit.DisplayLCA$3.visit(DisplayLCA.java:145) at org.eclipse.swt.internal.widgets.WidgetTreeUtil.accept(WidgetTreeUtil.java:32) at org.eclipse.swt.internal.widgets.WidgetTreeUtil.handleChildren(WidgetTreeUtil.java:111) at org.eclipse.swt.internal.widgets.WidgetTreeUtil.accept(WidgetTreeUtil.java:40) at org.eclipse.swt.internal.widgets.WidgetTreeUtil.handleChildren(WidgetTreeUtil.java:111) at org.eclipse.swt.internal.widgets.WidgetTreeUtil.accept(WidgetTreeUtil.java:40) at org.eclipse.swt.internal.widgets.WidgetTreeUtil.handleChildren(WidgetTreeUtil.java:111) at org.eclipse.swt.internal.widgets.WidgetTreeUtil.accept(WidgetTreeUtil.java:40) at org.eclipse.swt.internal.widgets.WidgetTreeUtil.handleChildren(WidgetTreeUtil.java:111) at org.eclipse.swt.internal.widgets.WidgetTreeUtil.accept(WidgetTreeUtil.java:40) at org.eclipse.swt.internal.widgets.WidgetTreeUtil.handleChildren(WidgetTreeUtil.java:111) at org.eclipse.swt.internal.widgets.WidgetTreeUtil.accept(WidgetTreeUtil.java:40) at org.eclipse.swt.internal.widgets.WidgetTreeUtil.handleChildren(WidgetTreeUtil.java:111) at org.eclipse.swt.internal.widgets.WidgetTreeUtil.accept(WidgetTreeUtil.java:40) at org.eclipse.swt.internal.widgets.WidgetTreeUtil.handleChildren(WidgetTreeUtil.java:111) at org.eclipse.swt.internal.widgets.WidgetTreeUtil.accept(WidgetTreeUtil.java:40) at org.eclipse.swt.internal.widgets.displaykit.DisplayLCA.visitWidgets(DisplayLCA.java:150) at org.eclipse.swt.internal.widgets.displaykit.DisplayLCA.readData(DisplayLCA.java:70) at org.eclipse.rap.rwt.internal.lifecycle.ReadData.execute(ReadData.java:29) at org.eclipse.rap.rwt.internal.lifecycle.PhaseExecutor.execute(PhaseExecutor.java:38) at org.eclipse.rap.rwt.internal.lifecycle.SimpleLifeCycle.execute(SimpleLifeCycle.java:46) at org.eclipse.rap.rwt.internal.service.RWTMessageHandler.executeLifeCycle(RWTMessageHandler.java:57) at org.eclipse.rap.rwt.internal.service.RWTMessageHandler.handleMessage(RWTMessageHandler.java:41) at org.eclipse.rap.rwt.internal.remote.MessageChainElement.handleMessage(MessageChainElement.java:29) at org.eclipse.rap.rwt.internal.service.LifeCycleServiceHandler.processMessage(LifeCycleServiceHandler.java:128) at org.eclipse.rap.rwt.internal.service.LifeCycleServiceHandler.processUIRequest(LifeCycleServiceHandler.java:100) at org.eclipse.rap.rwt.internal.service.LifeCycleServiceHandler.synchronizedService(LifeCycleServiceHandler.java:75) at org.eclipse.rap.rwt.internal.service.LifeCycleServiceHandler.service(LifeCycleServiceHandler.java:66) at org.eclipse.rap.rwt.engine.RWTServlet.handleValidRequest(RWTServlet.java:135) at org.eclipse.rap.rwt.engine.RWTServlet.handleRequest(RWTServlet.java:117) at org.eclipse.rap.rwt.engine.RWTServlet.doPost(RWTServlet.java:107) at javax.servlet.http.HttpServlet.service(HttpServlet.java:706) at javax.servlet.http.HttpServlet.service(HttpServlet.java:791) at org.eclipse.rap.rwt.osgi.internal.CutOffContextPathWrapper.service(CutOffContextPathWrapper.java:106) at org.eclipse.equinox.http.servlet.internal.HttpServiceRuntimeImpl$LegacyServlet.service(HttpServiceRuntimeImpl.java:1457) at org.eclipse.equinox.http.servlet.internal.registration.EndpointRegistration.service(EndpointRegistration.java:159) at org.eclipse.equinox.http.servlet.internal.servlet.ResponseStateHandler.processRequest(ResponseStateHandler.java:67) at org.eclipse.equinox.http.servlet.internal.context.DispatchTargets.doDispatch(DispatchTargets.java:118) at org.eclipse.equinox.http.servlet.internal.servlet.ProxyServlet.dispatch(ProxyServlet.java:147) at org.eclipse.equinox.http.servlet.internal.servlet.ProxyServlet.preprocess(ProxyServlet.java:115) at org.eclipse.equinox.http.servlet.internal.servlet.ProxyServlet.service(ProxyServlet.java:104) at javax.servlet.http.HttpServlet.service(HttpServlet.java:791) at org.eclipse.equinox.http.jetty.internal.HttpServerManager$InternalHttpServiceServlet.service(HttpServerManager.java:308) at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:764) at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:529) at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:221) at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1570) at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:221) at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1384) at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:176) at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:484) at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1543) at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:174) at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1306) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:129) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:122) at org.eclipse.jetty.server.Server.handle(Server.java:563) at org.eclipse.jetty.server.HttpChannel.lambda$handle$0(HttpChannel.java:505) at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:762) at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:497) at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:282) at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:314) at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:100) at org.eclipse.jetty.io.SelectableChannelEndPoint$1.run(SelectableChannelEndPoint.java:53) at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.runTask(AdaptiveExecutionStrategy.java:416) at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.consumeTask(AdaptiveExecutionStrategy.java:385) at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.tryProduce(AdaptiveExecutionStrategy.java:272) at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.lambda$new$0(AdaptiveExecutionStrategy.java:140) at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:411) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:969) at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.doRunJob(QueuedThreadPool.java:1194) at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1149) at java.base/java.lang.Thread.run(Thread.java:833) Caused by: java.lang.UnsupportedOperationException: Not a number: null at org.eclipse.rap.json.JsonValue.asInt(JsonValue.java:304) at org.eclipse.rap.rwt.remote.JsonMapping.readPoint(JsonMapping.java:335) ... 80 more

DOM:

type="email" achieved with Java RAP code: exec( "var object = rap.getObject( '", id, "' ); if( object ) { object.", $el, ".css( 'type', 'email' ); } ");

Using RAP 3.26, but doesn't look like it has changed.

JohnGymer avatar Nov 19 '24 15:11 JohnGymer