As we wrap-up the latest release and look forward to upcoming sprints, I'm planning on merging the Pentaho and Shandor XUL branches. There are a lot of features in Shandor that can benefit us and others that we absolutely need. As this merge isn't trivial and many core APIs are going to change, I'm seeking all feedback about your experiences with Pentaho XUL and specifically feature requests or API changes. Now is the time to realize broad changes and new ideas. Hit me up yo!
I've compiled a list of features in Shandor that will make it through the merge to give you an idea of what's upcoming.
Asynchronous APIs everywhere.
This mainly impacts the loading of overlays at runtime, but also includes a generic callback interfaces to base service calls on. Coding asynchonously facilitates code portability from SWT/Swing to the thin-client GWT world.
Completely abstracted DOM
The current Pentaho XUL uses Dom4J in the loading and parsing steps. Shandor has abstracted this away allowing us to use the same parser between Swt/Swing and GWT as well as facilitating the replacement of the Dom4J implementation for a strait W3C one
Simplified Component design
No more 4-arg constructors. Components are given their abstracted DOM node from the parser (see above) from which they can extract all needed information.
BeanUtils has also been emulated for GWT removing the need to extract component values from attributes as the GWT components currently do. Note this still needs to be evaluated for performance.
The onDomReady event is propigated down the Component tree when everything has been parsed. This allows SWT to construct it's components in the natural manner by passing in the intended parent. By contrast the current design re-parents all components in the layout routine. This will speed up SWT loading and solve some layouting issues.
Access to the message bundles used to contruct the UI via document.getMessage("key", args...). Results are computed with overlays taken into account allowing overriding of default values
Other things on my wish-list which haven't been coded yet: