Monday, November 19, 2007

EMF + Databinding + GWT 1.5 - it works

Since the last time I blogged about the on going work to provide Eclipse-Core-Features for users of GWT some time has elapsed so I thought I should give you an update.

Ed and Boris jumped on the train and try to help me with their indepth knowledge of EMF and Databinding. It's great to have them on board.

Today I managed the first time to use EMF-Core-Modules (EMF-Common und EMF-Ecore) in a GWT-context. There are some rough edges and not everything is working but it's amazing that the newly developed EMF-Databinding-Integration developed in Bug 75625 works nearly out-of-the box.

My GWT-Code looks like this now:

EMFDataBindingContext ctx = new EMFDataBindingContext();

targetObservableValue = GWTObservables.observeText(
textBox, GWTObservables.Change);

modelObservableValue = EMFObservables.observeDetailValue(
Realm.getDefault(),
value,
BrojectPackage.Literals.PROJECT__NAME);

IConstants.BINDING_BUILDER.bindTextValue(
ctx,
targetObservableValue,
modelObservableValue);



I've started an example project you can look at Broject and get the sources from my svn-repository, it's in a very very early stage but you should get the idea.

If you are interested in the work then you should subscribe to the following bugs EMF-Common, EMF-Ecore, Extension to GWT-JRE-Emulation, Core-Databinding.

9 comments:

Bull said...

This is Great Tom! I have built a small website running on OSGi / Jetty, with a GWT front end and EMF / Teneo /Hibernate behind the scene. Combine this with your databinding framework and you have one powerful web architecture.

Tom said...

My ideas goes further. I'd like to have one Model and Core part (Commands-Framework) and only write the UI-code twice (once for RCP-Applications and once for Web-Clients)

lucas said...

I Fell So in love with EMF DataBinding ... I just gave you a Kudo. Thanks for your hard work and dedication

James Strachan said...

This looks awesome stuff! I wonder Tom had you thought of spinning up an open source project somewhere with a website, issue tracker, mailing list and so forth so you could get other folks contributing? Google Code seems really easy to get started and comes with all the various stuff you need etc.

I love the idea of picking one API - say the JFace stuff - to make rich applications and minimise the duplicated effort making both rich web applications and eclipse plugins / RCP stuff.

I'd love to contribute and help out.

Tom said...

James, well I'm doing all this in Eclipse-incubator project at the moment because then Boris and Ed can also contribute.

The problem with this is as fast I move something out to some other repository I have IP problems when syncing it back to Eclipse.

I definately have to think about a way how I can make it possible for others to contribute but I had no time so far because until this success I really didn't know this could work at all :-)

I'll think about a process and ping you when done at least a mailing list is not hard to setup. When it comes to a bugtracker I think we could use Eclipse-bugzilla because this once more frees me from IP-Issues.

James Strachan said...

Thanks for the super-fast reply :)

If you setup, say, a google project you could add in minutes whoever you wanted to contribute.

I hear you on the IP / eclipse issues. I've been through some similar pain :), I'm wondering how much of this stuff needs to be imported into somewhere in eclipse - i.e. how much of it might be affected by IP issues?

Am wondering if stuff that needs to go to eclipse (e.g. patches to the Eclipse libraries and frameworks) stays in the eclipse incubator - but stuff that just implements eclipse APIs (such as the GWT implementations of eclipse APIs) might that be better outside of eclipse (to avoid IP issues and having to wait for IP clearence of GWT / MyGWT / gwt-ext or whatever). e.g. I can imagine 2 implementations of the GWT stuff; one using the raw GWT widgets, another using MyGWT (or gwt-ext or even a YUL / DOJO implementation).

No biggie - go with whatever approach you think is best. Where the code lives and what tool you use for issue tracking doesn't matter that much - lets just get a little dedicated website somewhere and mailing list and so forth. (Documentation and demos is often the most important thing in open source).

Maybe a google project could be created which really just acts as the website & mailing list (google groups are great for that) - and it can host a bunch of examples, which don't then have to go through the whole eclipse IP process stuff - while most of the meat of the code lives at the eclipse incubator?

Whatever happens - I'm looking forward to watching the GWT / JFace stuff grow! Keep up the great work :)

Tom said...

James, I'll think about it and you are right the projects implementing the databinding for GWT,... could really be moved out of eclipse (which it is already because this is only found at my own repository)

sumit said...

from http://code.google.com/webtoolkit/download.html
i see that gwt 1.4 is available . where can i get gwt 1.5 .
did u build it from source .

Tom said...

You can fetch all these things and even more from http://code.google.com/p/uface/