The week in qooxdoo (2008-07-04)
Filed under: Activity Reports
By Thomas Herchenröder @ July 4, 2008 6:46 pm
German Java Forum 2008
Andreas and Fabian joined the Java Forum 2008 (german web site) on Thursday in Stuttgart, Germany. There will be a dedicated post about this one, but among various interesting presentations there seemed to have been a surprising amount of interest in qooxdoo. Stay tuned...
Generator
The Generator basically saw the addition of some missing targets from the Makefile world, like 'clean', 'pretty' or 'lint'. That means the new Generator is nearing feature completeness as far as the driving of project-level targets/jobs is concerned. Also, the module structure has been improved.
Dynamic switching of locales and themes
A major issue of concern during the last few weeks was the cost and benefit of supporting locale and theme switching at runtime in the next version of our framework. To that end, Fabian started a general poll on the mailing list to find out how important these features were for our users. In his summary of the ensuing discussion, he expressed surprise about the amount of support in favour of locale switching. Fortunately, there was also a solution found that promises both the availability of locale runtime switching but at a reasonable cost on the implementation side.
The envisioned solution will implement locales as being static during runtime as the default, which will result in some memory/performance gains. But it will also offer a dedicated setting to turn dynamic switching on for an application, and then the runtime costs will be about the same as they are in the current version. So this feature will continue to be available for those who wish to use it. On the implementation side, the relevant point was to bypass the (costly) LocalizedString class and use built-in Javascript strings to handle necessary meta information.
Runtime switching for themes is still an open topic. There were fewer postings speaking in favour of it, but still some interesting technical suggestions how to continue it in a more feasible way. This will be sorted out in the near future.
Framework
Here are a few more ramblings about recent changes in the qooxdoo framework.
- The 'Modern' theme is making advances, and we expect to have a working version during this week.
- A major refactoring of the focus system now leads to unique support for complex cascaded widgets like the Spinner or the ComboBox. The outer widgets always receives the focus event etc., and still the caret is visible when jumping from field to field when using the keyboard. Widgets also now have the possibility to differentiate between tab focus and normal focus.
- All qooxdoo widgets use the new subcontrol support now. This means that features built on this like the new appearance theme handling are now much more widely used. More details on this feature and the changes to the appearance themes needed will follow in the coming weeks.
- Support for aliases has been added to reduce the size of themes. Aliases also make the new sub control support a lot more usable. It greatly reduces the overhead introduced with the sub control handling in the last week.
- State inheritance to sub controls is now supported. This means that every child control like e.g. the up-button of the Spinner can be informed about specific state changes, such as "focused". This is especially useful or even required for better looking themes. You can see the new feature live in the improved Spinner and ComboBox widgets.
- Greatly improved performance of the appearance system through an improved caching algorithm. Instead of dynamically sorting an array and concat'ing it to a unique identifier the new implementation is based on a simple arithmetic loop. There were some other improvements as well. Especially the new alias support, as mentioned above, results into a few performance improvements as well.
Some minor improvements include:
- Fixed PageUp/PageDown support in all ScrollArea based widgets like the List.
- More API docs were fixed or extended. Especially in qx.html.* and qx.ui.core.*
- The TabView widget was improved to make better use of the SlideBar widget.
- The GroupBox widget was fixed and now correctly handles all legend types e.g. Atom, RadioButton or CheckBox.
- Added some new methods to the lower level classes in qx.html.*, to give a better API for focus related features of the widget system.
- Fixed appearance queueing for dynamic widgets like the Atom. Sometimes the states were not correctly displayed after initial rendering.
- Improved Splitter demo. The code was structured into separate methods.
That's it from this week's qooxdoo - enjoy your time!
