The week in qooxdoo (2009-06-26)
Filed under: Activity Reports
By Andreas Ecker @ June 26, 2009 19:48
It's just the end of the week, not the end of the world, so here comes a freshly baked status report:
Yes we can
This is a call of duty to every reader of this post: qooxdoo has been chosen as a finalist in the annual SourceForge.net Community Choice Awards. During the first voting phase it became a nominee for Best Visual Design (sure, other categories might have worked out as well, but we go for Gold now in this one).
The final voting phase for the 2009 Awards has just begun, so please click on the badge and vote for qooxdoo. On the page that'll appear are a number of categories with 10 projects each. Feel free to vote for any other SF projects you like. If you don't care, just pick qooxdoo for Best Visual Design. Thanks for your support!
Flow Layout
This week the Flow layout manager has been re-added to qooxdoo. It hasn't been part of the framework since the 0.8 release.
A flow layout renders widgets just as a word processor renders text. Widgets are placed one after the other until there is no space left. If a widget doesn't fit into the remaining space of the current line, a new line is created and the widget is placed at the beginning of the new line. This layout manager can for instance be used to implement a gallery widget. The flow layout is based on the excellent community contribution by Chris Banford (Thanks!).
Memory leaks
We spent some time for checking for and fixing potential memory leaks in demo browser and framework core code. Just a reminder for anybody to check their applications for memory leaks, please have a look at the "Memory Management" article. This article describes how qooxdoo does a good job in assisting you to detect and fix memory leaks.
Core Fixes
We discovered three bugs right in the core system of qooxdoo this week. All of them were fixed immediately.
The first bug was in the check routine for interfaces. Remember that the property system auto-generates accessor and mutator methods for properties on demand. For Boolean properties two additional accessors, isPropertyName() and togglePropertyName() are created. But the interface check did not recognize these two methods so the check failed if you declared one of those methods in the interface.
The second bug was in the property system. A property with an init value returns on first access, right, the init value. Nevertheless, the corresponding change event contained null as old data value.Take a look at the following code showing the problem.
var m = new qx.ui.core.Widget(); m.getVisibility(); // returns the init value "visible" m.addListener("changeVisibility", function(e) { e.getData(); // "hidden" e.getOldData(); // BUG: null and not the init value "visible" }); m.setVisibility("hidden");
The third bug was in the destructor of qx.core.Object. If a property contains a reference type as value, these references weren't deleted during disposal, which could cause some memory problems. As already mentioned, all three bug were fixed during the week.
Form API
We fixed some minor details on the recently introduced form API. The new properties valid, invalidMessage and required do now fire events on every change. This has been missing in the former implementation.
Another change in the area of the form elements has been made in the abstract base class of all textfields. There has been a bug for deprecating the input event and introducing a property which changes the behavior of the changeValue event. The newly introduced property is called liveUpdate, whose default is false. So nothing should break, if you want to use the textfield like you used to. Switching the property to true causes the event to be fired on each key stroke instead of being fired when setting the final value.
Data Binding
We are interested in getting to know about all the issues you come across when using the data binding layer. We try to fix the incoming bugs as quickly as possible. So if you notice a weird behavior in the data binding (no matter how minor), please add a report to our bugtracking system.
Inline bug
A nasty bug in IE broke the layout for inline roots. A text-align style set to center on any surrounding element was sufficient to break the whole layout inside an inline root. Thanks to an excellent bug report from Jean-Noel Rivasseau, this bug could be fixed quickly.
IE8 debugging console
Since the 0.8.2 release qooxdoo supports the IE8 debugging console, but the legacy release 0.7.4 didn't. This missing feature was backported to the legacy branch in the SVN repository. A little note about the IE8 debugging console: the JavaScript object for calling the IE8 console method is only available after the "Developer Tools" were opened once. So don't worry if e.g. the logging window (qx 0.7.x) appears. Just open the "Developer Tools" and reload your application, which activates the console object and the log messages show up in the console.
Bugfixes
The usual can of worms has all the bugs that were fixed during the week.
qcl: PHP-based application framework
Christian Boulanger is currently upgrading the qcl project at qooxdoo-contrib. In his post to the mailing list had all the details about the project and a demo link. If you are also interested in the following features, please let him know:
"[...] basic building blocks for a fully featured web application:
- server-side authentication and access control using users, roles,
permissions - login and session management with fully transparent sessions
- configuration values synchronized between server and client
- GUI access control using permissions"
New real-life example
Andreas Fink let us all know about a cool qooxdoo app they're using. See the detailed description of their ReForm application and several screenshots of it (mmh, doesn't a qooxdoo 0.8.x application look great in the Modern theme?). Thanks Andreas for the info.
That's a perfect chance to remind everyone to add his/her application to the real-life examples as well. As with the latest addition, of course you don't have to supply online access to it if it's an enterprise and not a public internet solution. A short description and a nice screenshot is all it takes to inform the community and any (potentially new) users.
Whatever your plans for the weekend are, have fun. We certainly will, as we're about to head to the legendary, annual 1&1 summer fest. Partying with so many colleagues tonight will again be a blast.



