OpenLaszlo 3.2 is the next fully-qualified release since 3.1.1. OpenLaszlo 3.2 includes useful new features, many new incubator contributions, improvements to the documentation, and numerous bug fixes. Many of the incubator contributions came from the Laszlo Mail team, which has shared some of the look-and-feel from their components. In addition, there have been significant contributions from the OpenLaszlo community - thank you!
For every release, we rely on the OpenLaszlo community to help ensure the quality of the platform release and to determine its future direction. We encourage you to report any problems, and to make suggestions for enhancements, through our JIRA bug tracking system.
Here is a summary of what you will find in these notes:
Since release 3.1.1, the following features have been added to OpenLaszlo:
The incubator directory contains components and other code that have been contributed to the OpenLaszlo project, but have not yet been fully integrated into the product. It is intended as an easy way to contribute code that doesn't have the level of documentation, testing, or API review that is required in other directories, or that is simply contributed too late in the release cycle to place elsewhere.
There have been many new items added to the incubator in this release. A large number of items were contributed by the Laszlo Mail team at Laszlo Systems after receiving many requests for their awesome components. Other members of the OpenLaszlo community have also generously shared their components and utilities. Here is a listing of some of the newest items in the incubator to tempt you:
basecheckbox.lzx: Base class for representing a boolean value. Contributed by the Laszlo Mail team.
baseedittext.lzx: Look and feel for user editable text, data binding, and focus events. Contributed by the Laszlo Mail team.
baseradio.lzx: Base class for a single radio button. Contributed by the Laszlo Mail team.
bigcheckbox.lzx: Checkbox using larger resources. Contributed by the Laszlo Mail team.
checkbox.lzx: Smaller checkbox. Contributed by the Laszlo Mail team.
closebox.lzx: Button that looks like a closebox. No special behavior. Contributed by the Laszlo Mail team.
defaultlistitem.lzx: Item type for simpledefaultlist. Contributed by the Laszlo Mail team.
domapi.js: A collection of compatibility functions to bring LZX closer to the W3 DOM API bindings for ECMAScript. Created by Oliver Steele.
formlayout.lzx: Layout used to arrange title-control pairs as they might appear in a form. Contributed by Togawa Manabu.
hscrollbar.lzx: Horizontal scrollbar with a different look. Contributed by the Laszlo Mail team.
icontab.lzx: Nice looking tab with an icon and a text label. Contributed by the Laszlo Mail team.
icontogglebutton.lzx: Button, which toggles, and has only an icon (no text). Contributed by the Laszlo Mail team.
labeledinputtext.lzx: Horizontal container for a right-aligned label and text field. Contributed by the Laszlo Mail team.
lzcombobox.lzx: Subclass of newcombobox with a visual appearance. Contributed by the Laszlo Mail team.
lzcombobox, but editable. Contributed by the Laszlo Mail team.
lzedittext.lzx: Inputtext with edges. Contributed by the Laszlo Mail team.
lzradio.lzx: Subclass of
radiobuttonwith matching appearance to the other incubator lz components. Contributed by the Laszlo Mail team.
minibutton.lzx: Stylishbutton subclass with specialized resources to be smaller than a usual button. Contributed by the Laszlo Mail team.
opttree/opttree.lzx: An optimized implementation of tree, contributed by Adam Wolff of Laszlo Systems, Inc.
radioitem.lzx: A selectable list item which works like a radio button except it uses an icon instead of radio button graphics. Contributed by the Laszlo Mail team.
rich-text: A rich text editor, and various support components. Contributed by the Laszlo Mail team.
roundrect.lzx: Round rectangle component with optional gradient, created by Oliver Steele.
roundrect-test.lzxcan be found in the
roundrectbutton.lzx: Round rectangle button without art assets (so programmers can make roundrect buttons that look three-dish without a designer in the loo) created by Benjamin Shine of Laszlo Systems, Inc.
test-roundrectbutton.lzxcan be found in the
shadowbox.lzx: A basic container view with an inner dropshadow effect. Contributed by the Laszlo Mail team.
stylishbutton.lzx: A button which can be capsule-shaped or rectangular. Contributed by Benjamin Shine and the rest of the Laszlo Mail team.
ulink.lzx: A text link that is decorated with an underline when hovered. The color, hover color, and hover decoration can be customized, and all attributes can be data bound. Created by Oliver Steele.
validators: Utilities for incrementally validating form entry values. Contributed by Togawa Manabu. See laszlo.jp for updates.
vscrollbar.lzx: Vertical scrollbar with a different look. Contributed by the Laszlo Mail team.
There were two major changes in the components for OpenLaszlo
3.2. First, the
components/lz/floatinglist.lzx was split into two
components/lz/basefloatinglist.lzx, which contains
functionality and no look-and-feel, and
components/lz/plainfloatinglist.lzx, which is a
basefloatinglist subclass that defines a thin border around the list.
Second, the functionality in
components/incubator/newcombobox.lzx was moved into
components/lz/datacombobox.lzx uses the
components/lz/floatinglist.lzx. Note that
components/lz/combobox.lzx has been preserved to ensure
compatibility with existing applications, just as
components/incubator/newcombobox.lzx is a subclass of
basedatacombobox.lzx for the same reason.
We recommend that you consider using
datacombobox.lzx, which has been defined to perform better than
A partial implementation of the HTML <img> tag allows you to include images within HTML text. There are some limitations; please see the documentation.
By using Active Accessibility and following accessible design practices, developers can make applications running on Windows more accessible to many people with vision, hearing, or motion disabilities. OpenLaszlo now includes a partial implementation of this specification, with some limitations that depend on the target runtime. Please see the documentation.
A complete, standalone rich text editor with toolbar is now available. Just instantiate it as a normal view and you'll have a rich text editor with toolbar controls for bold, underline, italic, font color, font face, font name, hyperlink and 'remove format'. This is a contribution from the LaszloMail team.
The resulting compiler is much faster, with reported gains of up to 5x.
There have been many improvements to the documentation. Significant new content has been added, existing content has been clarified and updated, and many of the typographical errors have been corrected. The documentation is virtually always under development. For the most up-to-date version, you may want to consult the nightly build of the documentation hosted on OpenLaszlo.org. (The latest documentation may include information pertinent to the next-following release (e.g. 4.0) and therefore will not necessarily be accurate for 3.2; however, it will include ongoing general improvements.)
Automated unit test are now available for those who build OpenLaszlo from sources. The cool thing about automated unit tests is 'ant runlzunit', which automatically runs the known unit tests against a build. These work on Mac and PC; they have not been tested under Linux.
There is a new syntax for declaring events and event handlers. The old syntax still works, but we came up with this new style because people find the current syntax somewhat obscure, and anonymous methods sometimes have unanticipated results.
The documentation has not caught up with the new syntax, but there is a wiki page that explains the new idiom.
The KRANK feature has been removed (LPP-871). This capability was only fully supported under Flash6 and improved performance in later players made it unnecessary.
Several dozens of bugs have been fixed since the 3.1.1 release. Consult JIRA for complete information. Note that the 3.2 release is referred to as "Sage" in JIRA.
For the most current and complete information, consult the JIRA bug database.
There are two particular problems that we would like to call to your attention:
There is a common "UI" design pattern that is easily implemented within OpenLaszlo. This implementation, however, reveals a bug that some developers have encountered. In this particular UI design, a view is expanded in some dimension on rollover of the mouse and contracted upon mouseout. The code is often written like the following:
<canvas> <view width="100" height="100" bgcolor="blue" onmouseover="this.expand.doStart()" onmouseout="this.contract.doStart()" > <animator name="expand" attribute="width" to="150" duration="500" /> <animator name="contract" attribute="width" to="100" duration="500" /> </view> </canvas>
The visual effect of the above code will fail, however, if the mouse is moved so fast by the user that the 2nd mouseover event occurs before the first expand animation is complete.
In other words, calling doStart() on an animator that is already running does nothing. It seems that the view has missed the 2nd mouseover event, when in actuality it is the animator that ignored its doStart() method call because it was already running.
<canvas> <view width="100" height="100" bgcolor="red" onmouseover=" this.animate('width',150,500) " onmouseout=" this.animate('width',100,500) " /> </canvas>
in this case, new animators are created with each new mouse event. These animators will run independently and so will not have the same problems associated with them like those encountered with the animator tags. Run the examples above, and move the mouse quickly in and out of both views. Notice how in the second example the motion of the red box seems more natural.
Users have reported problems with applications embedded in some versions of Internet Explorer -- the applications don't appear. If you can't get your OpenLaszlo application to show up in IE, try using the older version of embed.js from 3.0.2. We couldn't fix it because we couldn't reproduce the problem, but using older versions of the embed.js sometimes made the problem go away.