Author: Tim Buschtöns

Behold! ;-) After moving ClientScripting from Incubator to RAP proper in M1 and revising ToolTips in M2, we finally introduce an all new key feature in 2.2M3 called Row Templates. Row Templates will allow you to change the way a Table or Tree widget presents Items on screen, completely replacing the default column layout. A template consist of text and image cells that can be freely...

Read More

RAP 2.2M2 is due next week, and if you use any ToolTips (the property, not the class) in your application you will notice quite a few changes. First, ToolTips have a new default look, and they can now point towards the widget they describe. Instead of placing it somewhere besides the mouse cursor, the ToolTip is positioned above, below, or besides the widget, with a...

Read More

A while ago we started a new RAP Incubator project, the DropDown widget. This is basically a List widget that can be attached to a text field, like the pop-up of a combo box. In itself this widget isn't terribly useful, but it provided the basis for the new AutoSuggest component, which is currently part of the same incubator project. You may also know these kind...

Read More

The first milestone of RAP 2.2 has been published last Friday. It's main attraction is the RWT Scripting feature which was formerly known as the incubator "ClientScripting" project. If you are currently using ClientScripting and wish to upgrade to RAP 2.2 (which will be released in December 2013), you should be aware of some breaking changes*: Namespace: The ClientListener has been...

Read More

RAP 2.0 introduced the JavaScriptLoader service to allow custom widgets to load their scripts dynamically. However, because this is based on an "eval"-like JavaScript feature, the scripts did not appear like all other in the browser developer tools, and setting break points was not possible. The same exact same issue always existed for ClientListener. For the JavaScriptLoader this will be fixed in RAP 2.2M1, but...

Read More

I've been programming JavaScript for a few years now, and the one thing that definitely bothered me from the beginning was the lack of built-in support for private object members. The feeling that anyone using your code (including yourself) could by accident or intent mess with the internals of your objects isn't great. Not just can anyone change the value of any property at...

Read More

Part 3: Cross-Widget Scripting The most glaring limitation of ClientScripting since it's inception was that a listener can only manipulate the widget that fired the current event. Consider, for example, an onscreen number keypad like this: The obvious (non-ClientScripting) implementation would be to attach selection listeners to the buttons that insert the given character into the text field. In RAP this would normally cause a slight delay...

Read More

Part 2: How to Pass Data to Your ClientListener A ClientListener is executed in a completely different environment to a traditional SWT listener. The only data it has access to is the event object, which in turn has a reference to the ClientScripting-version of the widget that fired the event. Until now, the almost only way to pass any data to a ClientListener was to hard-code...

Read More

Part 1: RAP 2.1 and Client Scripting The RAP ClientScripting add-on was introduced with RAP 1.5/Juno to enable more responsive input validation on text widgets. The basic idea is that while most components of a RAP application can run exclusively on the server, some surface-level behavior is best implemented to run on the client. ClientScripting allows this by adding support for SWT-style event listeners written in...

Read More

You can now download RAP 2.1 M2, the final milestone of RAP before the 2.1 (Kepler) release in June. This milstone adds quite a few nice features like bézier curves for Canvas, background-position and -repeat for CSS theming, and (especially) improved multi-tab browsing: It is now possible to host multiple UI-Sessions within the same HTTP-Session, meaning that there are no more tricks required to use multiple...

Read More