Eclipse E4 and UFacekit

E4 and my impression

Haveing attended the E4 Talk, A Future of SWT and the E4 BOF. I’m looking forward for a lot of innovation and discussion about new architectures at various levels of the Eclipse-Platform.

The most important thing to notice is that E4 is much more than simply bringing RCP to the webspace. Still I’m going to concentrate on the UI-Aspect of E4 in the rest of the post.

There’s never been a better time to start getting involved because I myself (or you yourself) can to some extend define how the future looks like.

From the discussion I had with all the guys from the Platform/SWT/…-team I feel fairly comfortable infact I’m glad the Platform/SWT-Team recognized that RAP is not the only solution to get RCP-Applications run inside the browsers. The current SWT-prototype code uses established technologies like GWT, Dojo. In fact with the current prototype design SWT is going to be for DOJO what GWT-Ext/MyGWT are for Ext-Js nowadays.

UFacekit and E4

Do we still have to put effort into UFacekit?

When I first saw what’s been done by the E4-Prototypers my first reaction was: Do we still need to work UFacekit? My answer is definately YES because UFacekite is more than providing a possibility to run your Desktop-UI inside a Browser. UFacekit has more to offer than a uniform Widget-API. UFacekit provides other values:

  • Eclipse-Core-Databinding compatible to GWT
  • Eclipse-EMF-Ecore compatible to GWT
  • Highlevel-Abstraction for Eclipse-Databinding
  • Easy support for Decoration, …
  • … and much more

If SWT for Browser is getting reality (and it will trust me) people will want to use all this stuff in their application and then UFace provides them with all they need.

How can UFacekit profit

Well we get a first class Browser-Widget implementation for free or even better we can take part to make this happen (I’m willing get part of this effort) and use it in UFacekit.

UFacekit News

  • I added an Example how to use EMF + UFacekit inside GWT.
    You can take a look at the code here.
  • Angelo started to add CSS-Support for SWT-Widget in his own project and offered to donate it to UFacekit but I didn’t had time to take look how to use it in UFacekit until now
  • Work on GWT-Ext port continues but getting the layout stuff right is a real pain

UFace – Update

I recognized today that I haven’t blogged about one of my favorite OSS-project (UFace/UFacekit) lately.

For those of you who have never heard of this project let me introduce it in a few sentences.

UFace or UFacekit has the following targets:

  • Add a highlevel API above Eclipse-Databinding
  • Helping Eclipse-Databinding to gain momentum outside Eclipse/SWT/JFace world by providing Observable-Implementation for various UI-Toolkits like Swing, GWT, …
  • Helping OSGi to be used in UI-Applications outside Eclipse-RCP e.g. in Swing Applications
  • Providing a uniform UI-API for all those widget-systems including builders for common form layouts (e.g. 2 column label/field list)

We have been fairly busy lately and added the following things into UFace:

  • Validation and Decoration Support (contributed by Kenneth Westelinck) for Swing and SWT
  • Worked heavily on the MyGWT integration
  • Maven-Build-System

Validation and Decoration

Adding decorations to a UIForms (our abstraction above the databindingContext providing a uniform API for different Databinding-Implementations JavaBean/EMF/UBean/…) is not more than adding these 2 lines to your sources:

StatusDecoratingInterceptor interceptor = new StatusDecoratingInterceptor(detailComposite);

Darn cool, isn’t it?

The resulting UI with validation error looks like this:

SWT on Win32:

Swing on Win32:

UFacekit implementation for MyGWT

Beside providing a higherlevel API above Eclipse-Databinding the other idea of UFace is to provide a uniform API to deploy your applications in different ways (Desktop, Web, Mobile-Devices, …). In Web-Space we decided to go the GWT way which means your application is running completely in the browser and only business data is fetched from the server.

This concept is different from the one of RAP who, as far as I have understood the framework, does most of the work on the server-side and uses the browser “only” for rendering purposes (RAP devs please correct if I’m wrong here).

The hardest thing to bring to browsers are SWT-Layouts and that’s where I’m currently progressing slowly but steadily at the moment. This is how the the same form looks like in the browser rendered with MyGWT:

It’s not 100% right and Combo and List aren’t working either but it was quite an achievement to get that far.

Current status / Release plans

My first draft plan was to have an M1-Milestone for JFace, Swing and MyGWT implementation ready for EclipseCon but I had to delay this because my current work load hasn’t give me enough time to work on UFacekit too many hours. Today JFace and Swing are complete (as complete a first Milestone can be) and only MyGWT is missing so I hope we could have a first Milestone by April.

What’s in the queue

We already have a queue for features we’d like to integrate (an incomplete list is this):

  • Support for more Widgets Tree/TreeTable, TabFolders, …
  • Implementation ontop of Eclipse-Forms
  • Better looking decorations on Swing
  • Support for CSS to style your widgets
  • Extensible converts