Sunday, August 27, 2006

What's New...

Based on current statistics most of my readership are users of Google's Web Toolkit, so this will geared toward my work with GWT. I have been somewhat absent, especially on the GWT dev list, where I have become more of a spectator than a poster. This isn't because I have moved on to other things, instead it is because GWT has become a second job for me, and it business is booming. So let me summaraize what I have been up to.

1. The GWT Widget Library

I haven't had as much time as I would like to add new gizmos, mostly because of #3 below, but with help from others (Brian Glick, Jason Essington, George Georgovassilis, and many others) it is far from stagnant.

I am currently planning on adding a new dev branch which will include some cool tools that are either partly done, or have questionable APIs. The idea is to throw everything against the wall and see what sticks. One of the first things that I expect will appear here is a JDOMish API build on to of the GWT XML Parser. I am not a fan of the DOM API, and this will make it a bit easier to navigate.

2. GWT API Map

The latest version of the map is still missing a lot of interfaces and doesn't include any changes introduced in 1.1.0. I very much want to get back to this and finish it up, but again #3 below is currently a priority.

3. GWT Book

Adam Tacy and I started work on a book a month or so ago, and have been spending much of our time writing content for it. It will be both a paper and PDF book, with a beta release on the web several months before it hits the store shelves. I don't want to get into any specifics on this right now because we are still a long way from finishing it.

Anyway that is it for now, time to get back to work :)

Saturday, August 05, 2006

Expanded GWT API Map

w2Last week I posted a visual map of the components that come with GWT. I had mentioned that I wanted to include interfaces, but it would have become a mess rather quickly. An anonymous reader added the comment below.

Possible enhancement: a symbol in the box below each for the various interfaces they support (mouse, keyboard, focus, etc).


It sounded like a great idea, so I spent some time working on it today. The linked image above is the initial version this enhancement. While looking through the GWT source I found some redundancies in interface usage, and decided to not include the redundancies in the map. One example of this is the TextBoxBase class, which implements the SourcesKeyboardEvents interface. The duplication is that TextBoxBase extends FocusWidget, which in turn implements HasFocus, and HasFocus extends SourcesKeyboardEvents. Some of the redundancies were not obvious until I went to chart them on the map, and could visually see the redundancies.

So far the following interfaces appear on the map: SourcesChangeEvents, HasFocus, HasText, HasHTML, EventListener, SourcesClickEvents, SourcesLoadEvents, SourcesMouseEvents, SourcesKeyboardEvents (by inheritance), and SourcesFocusEvents (by inheritance). There isn't a map legend yet, but I hope it won't be too difficult to figure out.

And for the sake of completeness, the following interfaces still need to be added: ClickListener, HasAlignment, HasHorizontalAlignment, HasVerticalAlignment, HasWidgets, HasWordWrap, MouseListener, PopupListener, SourcesPopupEvents, SourcesTabEvents, SourcesTableEvents, SourcesTreeEvents, and TabListener. Any other interface not listed here was either found to not be used by any classes, or can be traced back through some child interface.

No promises, but I hope to finish it in the next couple of weeks. Let me know if you have any other ideas for enhancing the map.