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.


Anonymous said...

Nice work! You obviously have a lot more patience than I do when it comes to graphics. So, I would like to propose enhancing your map by making it a clickable image map. With your permission, I'll do the grunt work of collecting image coordinates and assembling the map HTML, but I would also like to use the resulting work to link to some online class documentation. I've already got GWT source online in a browsable form, with notes, cross-references, and JavaDoc. Your API map would make it totally killer.

Robert Hanson said...

>> I'll do the grunt work of collecting image coordinates and assembling the map HTML

This is a great idea, by all means please do. Were you planning on linking up both the class names and the interface icons? I think that could be extremely useful.

>> but I would also like to use the resulting work to link to some online class documentation

That sounds like a good idea to me.

Anonymous said...

You know, I had not thought to do the icons, but that's a really good suggestion. A lot of extra mileage for a little extra work. Well, I'll try to get this done tonight, then. Thanks.

Anonymous said...

It's mostly debugged. :) And the map coordinates I'm using are listed at the bottom of the page for anybody to recycle. Anyway, thanks again for your permission to borrow your work. I'll keep an eye out for when you make updates so that I can keep the map coordinates in sync.

Robert Hanson said...

That is awesome! I especially like the fact that you can access both the source and javadoc. I'll see if I can finish it up this weekend.

Anonymous said...

I've done some work wrapping the scriptaculous drag and drop using some of your code as a template for my design. If you want, just contact me and I'll send you the source.

Anonymous said...

I am obviously late to the game here in noticing this resource, but had to say nice job and thanks anyway.

This thing is really hand, kudos.