Document Information

Last modified:
2008/08/01 20:14 by ecker

qooxdoo 0.8-beta1 (2008-08-01)

GUI Toolkit

Core

  • Completely refactored and reworked implementation for supporting drag&drop, including elegant data exchange. It is the first time during 0.8 development that it nicely supports drag&drop. The new API was closely modeled according to the WHATWG specification of HTML5.
  • Support for focus roots is now complete. Focus roots keep the focus within the currently active pane or window while pressing the TAB key. Keyboard users will like this feature (that was also available in 0.7)
  • Added tabFocus support to form fields to make them select all text when reaching the field using the TAB key.
  • Added support for global cursors. These are now used during drag sessions, window resize or window move as well as by the new drag&drop layer.
  • New placement utility to position widgets relative to each other, to DOM event coordinates or to classical DOM nodes. This new feature is used by many widgets, e.g. SelectBox, Menu, ToolTip, Popup, etc., and reduces complexity and code size significantly.
  • Added methods setDomLeft(), setDomTop() and setDomPosition() to all widgets as an easily usable public API to control widget position explicitly. This is particularly handy when dragging widgets around (e.g. Slider, Window, ...).
  • Added methods getContainerLocation() and getContentLocation() to all widgets as a convenient way to detect the location of a widget as seen by the document (computed coordinates). This is particularly useful to align widgets (e.g. Popup, Menu, ...) to each other.
  • Added keepActive feature to qx.ui.core.Widget to allow widgets to be non-activateable, what means that they don’t take away activation from the current widget. For instance this is used by the menu popups (keeping the opening menu button active).
  • Experimental support for separators was introduced. Separators are currently supported by VBox and HBox layouts and render a configureable element between every child (but not at the ends). This is an alternative to assigning each child a decoration border-left or similar. This new feature is in no way final regarding API or feature set, but it is expected to become one of those handy features that make constructing an UI very easy. It has grown from some testing code and is already quite usable, despite any potential modifications in future releases.
  • Fixed an ugly IE specific issue, where elements, that are excluded at the same moment (using display=none) while being cascaded into each other, are not correctly updated when shown again afterwards. This was solved by a work-around for IE in qx.html.Element, so now this fixes all such issues at a central location.
  • Major improvements were made to the fallback handling when trying to find a valid target for keyboard events. With the new version lost keyboard events are history (hopefully).
  • Various disposer fixes were made. There are still some issues, but a lot of them are fixed in this version.
  • Fixed missing resolve call when resetting decorators.
  • Fixed appearance of outline border on initial click/focus of a widget, quite an ugly effect.
  • Added method getApplicationRoot() to all widgets to have a direct access to the application’s root widget.
  • Fixed issues with Firefox text selection, noticed while implementing drag&drop. The new version successfully resolves all known issues where text was selected unintentionally. The major issue with this was that when such a unintended selection existed, Firefox went into some native drag mode in which it set the target of all mouse events to the element originally clicked onto.
  • Selection handling (e.g. in List, Tree, ...) was improved to keep the current selection when dragging the selection to another widget. Clicking on an already selected range keeps the selection during mousedown, but clears it when mouseup is fired.
  • Added a lot of missing stopPropagation() calls to prevent an event to bubble up the parent chain when it is already being processed by the current one. Previously this negatively affected all types of buttons.
  • Some widget core features were improved to reduce memory consumption

Table

  • The table has been ported from 0.7
  • The table API, that means all methods not inherited from qx.core.Widget, has been kept untouched
  • All features of the old table are still supported
  • New menu system in place (complete rewrite with some borrowed ideas from the 0.7 implementation) with support for all kind of openers like normal menu buttons, menu bar buttons and split buttons. Major improvements to timer interval handling. Compared to 0.7.x with reduced memory consumption and improved stability and flexibility.
  • Major improvements to ToolTip and Popup. Both are now API documentation-complete as well. Usage of timers and intervals was reduced. This leads to reduced memory consumption and improved responsiveness.
  • Fixed ugly offset (of two pixels) in location detection (qx.bom.element.Location) when using IE in some specific doctype combinations. Menus and popups of SelectBoxes are now aligned pixel-perfect in IE as well.
  • All Popup instances are now automatically added to the application root and are excluded by default. They behave identically to ToolTips, Menus and Windows now.
  • The tooltip classes were moved into the namespace qx.ui.tooltip. Both, popup and tooltip classes got shorter names.

Forms

  • Slider has got some great improvements in reacting on mouse clicks. It should now behave identical to MS Windows.
  • Added a menu button widget to qx.ui.form. This allows menus to be used much easier outside a classical toolbar.
  • Added new SplitButton widget as a combination of a classical Button with a MenuButton. This widget is often used as a history navigation button, commonly seen in web browsers.
  • The default size of the TextArea widget was increased to a more common size.
  • More finishing touches to Spinner and SelectBox

Window / Resizer

  • The MResizable mixin now only supports a boolean resizable property. The properties resizableNorth, resizableWest, resizableSouth and resizableEast were removed in accordance with the original implementor. There was not seen a good reason for keeping them. Please get back to us if you have a strong use case for this feature.
  • The translucent move and resize features (via API) were removed. These features should better be realized by appearance properties. The properties resizeMethod and moveMethod where replaced with boolean properties useResizeFrame or useMoveFrame as these are functional, whereas the translucent values are rather visual.
  • The move feature originally implemented in the Window class is now located in the to the MMovable mixin and can be added to any widget now.
  • The Resizer widget is now a container and can be found under qx.ui.container.
  • Splitted out implementation for moveable widgets into the MMoveable mixin in qx.ui.core. This reduces complexity and code size of the qx.ui.window.Window class.
  • Minor improvements to the window implementation to correctly support maximize/restore.

Controls

  • The DateChooser widget has been ported and moved from the qx.ui.component package to a new qx.ui.contol package.
  • The DateChooserButton widget has been replaced with a new widget called DateField which can be found in the form package at qx.ui.form.dateField. The new widget is more like a ComboBox widget with a calender as popup.
  • Port of the ColorSelector widget is almost done. It is not finished yet, and needs some more work and polishing.

Text Selection

  • Implemented the first basic part of the low-level text selection API
  • Added text selection methods to high level widgets like TextField, TextArea and ComboBox
  • Fix the getValue() method of the ComboBox

Themes

  • Continued work on the Modern Theme
  • Added inverted arrows to qooxdoo’s decoration themes. This improves appearance of menus when buttons are hovered using a dark background color.
  • Added Modern appearance for TabView

Miscellaneous

  • Added support for first/last tab states to the TabView. This allows us to style overlapping TabButtons which is needed by most modern screen designs.
  • Decouple layout system from the queue manager. This allows us to reuse layout managers in non widget code. It is used e.g. in the table’s resize column manager.
  • Text inside HTMLEmbed can be selected now
  • Iframe’s property “source” is now nullable
  • Fixed #1023: TabView should use Stack container
  • Fixed #1053: Toolbar page in showcase has errors
  • Added support for the methods scrollTo and scrollBy to the SlideBar widget (used by the TabView for example)

Framework

  • Make multiple inclusion of a mixin a warning and not an error
  • Fixed #786: qx.client.Timer.once should have a return value
  • Fixed #871: complete i18n support
  • always include the default locale “C” into any application
  • Fixed #1109: Remove @type declarations from API doc comments
  • Fixed qx.dev.ObjectSummary.getInfo
  • Fixed Logger’s clear method
  • Add supported for cloning and serialization to qooxdoo objects, layout items and widgets. These features are still in testing phase.
  • Improved usage of document fragments in qx.html.Element (qooxdoo’s low-level DOM element layer), not using them when inserting less than three elements.
  • qx.Class got a new method getProperties() to get a list of all supported properties
  • Fixed detection of iPhone’s Mobile Safari browser
  • Fixed deregistration of events. Previously the deregistration at the handler happend even if the removed listener was not the last one. This was the source of some crazy effects during development of drag&drop and may have affected other parts as well.
  • Fixed an event system issue where preventDefault() was not correctly propagated from the widget event to the low-level event.

Tool Chain

  • Removal of Makefiles in standard applications, skeleton, quickstart
    Build commands (’source’, ‘build’) now only depend on Python
  • Configuration files: Support for new keys “include” and “block” in top-level “include” maps, to select/reject certain jobs during imports
  • Each application now contains a drop-in replacement for the old ‘make’ command named ‘generate.py’
  • Removal of dependency to ‘wget’ command; ‘cache://’ manifest files are downloaded with standard Python modules, but version check is still disabled (due to frequent Sourceforge ViewVC availability during the last two weeks)
  • Handling of default locale has been fixed
  • Handling of relative paths in configuration files has been overhauled
  • Fixed #755: added parsing of accessors into Map and Array literals
  • Updated ‘frontend/tool/data/config/example.json’ config file
  • Various adaptions to ‘frontend/Makefile’ (shouldn’t affect end users, but is still used for maintaining and release management)

Applications

API Viewer

  • API Viewer was ported to 0.8.
  • Search feature now uses Table instead of the deprecated ListView

Demo Browser

  • Demo Browser was ported to 0.8.
  • Demos can be switched between Modern and Classic styling

Feed Reader

  • Feedreader works with 0.8.again

Showcase

  • The showcase application was removed, deemed not appropriate for all the new glory of the 0.8 GUI toolkit. The widget section of the demo browser sports better examples and better documented and more modern code. Some time after 0.8 there should be something like a showcase application again, but currently work concentrates on finishing 0.8, including all the nice samples for testing and demonstration in demobrowser.

Information

Last modified:
2008/08/01 20:14 by ecker

Account

Not logged in

 
 

Job Offers

To further improve qooxdoo we are seeking javascript developers. Read more...

Rich Ajax Platform (RAP)

RAP uses qooxdoo, Java and the Eclipse development model to build rich web applications. Read more...

qooxdoo Web Toolkit (QWT)

Similar to GWT this framework allows to create impressive qooxdoo applications just using Java. Read more...

Pustefix

Pustefix is a MVC-based web application framework using Java and XML/XSLT. Read more...

 
SourceForge.net Logo

Bad Behavior has blocked 0 potential spam attempts in the last 7 days.