Hi

I'm meandering through the codebase, admiring the succintness and
absence of hacks (a nice change from Swing), and I'm accumulating
comments as I go.

For the Component class:

- what's with the naming of ComponentClassListener? shouldn't that be
FocusListener?
- and shouldn't the static field Component#componentClassListeners live
on instances of the Window object?
   Focussing is a per-window thing.

- nothing seems to be adding to Component#components.
  I think Component#components it is there to allow runtime theme changes???
  A much lighter-weight approach would be to track the current Window
objects, and then run down the containment hierarchy.

- Component#focusedComponent should be a field of Window, since each
Window can have it's own focussed widget.

- Component#decorators should probably live inside
Component.DecoratorSequence
- Component#handle seems to be only useful for debugging
- Component#preferredSize is a cached value - why is it necessary to
cache this value? Is it expensive to retrieve?
- Component#userData is going to be hard to use.
  It is very handy to be able to stash extra info on a component, but
when multiple libraries all want to do this, it quickly gets out of hand.
  A better solution would be a map with methods like
get/putUserData(Class key) where key is the Class of the client object.

Regards, Noel.

Reply via email to