Develop and Download Open Source Software

Browse CVS Repository

Contents of /openlaszlo/docs/release-notes.html

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.1.1.1 - (show annotations) (download) (as text) (vendor branch)
Wed Dec 7 16:31:34 2005 UTC (18 years, 4 months ago) by togawamanabu
Branch: MAIN, docs
CVS Tags: start, HEAD
Changes since 1.1: +0 -0 lines
File MIME type: text/html
import docs    

1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
2 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head>
3 <!-- * X_LZ_COPYRIGHT_BEGIN ***************************************************
4 * Copyright 2001-2005 Laszlo Systems, Inc. All Rights Reserved. *
5 * Use is subject to license terms. *
6 * X_LZ_COPYRIGHT_END ****************************************************** --><title>OpenLaszlo 3.1 Release Notes</title>
7
8 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
9 <link rel="stylesheet" href="../lps/includes/explore.css" type="text/css" />
10 <link rel="SHORTCUT ICON" href="http://www.laszlosystems.com/images/laszlo.ico" />
11 </head>
12
13
14 <body class="release-notes">
15 <h1><b>Release Notes for OpenLaszlo 3.1 </b> </h1>
16
17 <p class="bodytext">
18
19 <p>
20 OpenLaszlo 3.1 is a fully qualified release of the OpenLaszlo Platform. The previous qualified release was 3.0.2 (July, 2005). </p>
21 <p>
22 There have been many significant new features added to OpenLaszlo since Release 3.0.2, and more than 100 bugs have been fixed. There have also been significant improvements to the documentation.
23 </p>
24 <p>
25 Also please note that the documentation is virtually always under development. For the most up-to-date version, you may want to consult <a href="http://www.openlaszlo.org/docs/nightly/">the nightly build</a> hosted on OpenLaszlo.org. (The latest documentation may include information pertinent to the upcoming release and therefore will not necessarily be accurate for 3.1; however, it will also include general improvements.)
26 </p>
27 <p>
28 The OpenLaszlo development team depends on you, the users of the platform, to help us ensure its quality and determine its future direction. We encourage you to report any problems, and to make suggestions for enhancements, through our <a href="http://www.openlaszlo.org/jira/browse/LPP">bug tracking system.</a>
29 </p>
30 <p>
31 Here is a summary of what you will find in these notes:
32 </p>
33 <ul>
34 <li><a href="#target-runtimes">Target Runtimes</a>
35 <li><a href="#nomenclature">A Note on Nomenclature</a>
36 <li><a href="#key-features">New Features</a></li>
37 <li><a href="#backwards">Backwards-incompatible Changes</a></li>
38 <li><a href="#fixed-bugs">Significant Bugs Fixed Since 3.0.2</a></li>
39 <li><a href="#Known">Known Problems and Workarounds</a></li>
40 </ul>
41
42 <h1><a name="target-runtimes">Target Runtimes</a></h1>
43 <p>OpenLaszlo 3.1 supports compilation to <code>swf6, swf7</code> and <code>swf8</code> formats. For OpenLaszlo 3.1, Flash 7 is the default runtime. You can specify the target runtime by selecting the corresponding button on the Developer's Console or by explicitly using the <code>lzr=</code> request type.</p>
44 <p>
45 If you have a choice, we strongly encourage you to target Flash 7 or higher. All of the applications and demos bundled with the SDK are compiled using <code>swf7 </code>as the target.</p>
46 <p>
47 The OpenLaszlo SDK still supports development and deployment using Flash 6.0.65. However, note that the demos and examples in the SDK have been compiled against Flash 7 and due to a limitation in our wrapper implementation they do not completely function even if you force the compiler to use swf6 by setting <code>lzr=swf6</code>. The default runtime can be set at server startup time by changing <code>"compiler.runtime.default=swf7"</code> to <code>"compiler.runtime.default=swf6"</code> in <code>WEB-INF/lps/config/lps.properties</code>, but the demos and examples will need to be recompiled after you do this.
48 </p>
49 <h1><a name="nomenclature">A Note on Nomenclature</a></h1>
50 <p>
51 In the documentation, most instances of "Laszlo Presentation Server" (or "LPS") have been changed to say "OpenLaszlo Server". (You may discover instances of the old terms that we have missed, but be aware that those terms have been deprecated.) However, the string "LPS" still appears in the code base and in path names. Over time the term "LPS" may be expunged from the code, but there is no plan to do so now.</p>
52 <p>
53 Similarly, the terms "Laszlo Foundation Classes" and "LFC" have been deprecated in favor of "OpenLaszlo Runtime Library" and "ORL". As in the case of LPS, the older terms will persist longer in the code than in the documentation. </p>
54 <h1><a name="key-features">New Features since OpenLaszlo 3.0.2</a></h1>
55 <p>
56 Since release 3.0.2, the following features have been added to OpenLaszlo:
57 </p>
58 <ul>
59 <li>Rich Text Class</li>
60 <li>New components: hbox, vbox, and image</li>
61 <li>Flash 8 file generation</li>
62 <li>Local datasets</li>
63 <li>Browser history integration: the default HTML wrappers now include support for browser history and setcanvasAttribute()</li>
64 <li>XMLHttpRequest ("AJAX") API</li>
65 <li>setcanvasAttribute() Javascript function can optionally add browser history events</li>
66 <li>Applications default to window size</li>
67 <li>"View source" menu item</li>
68 <li>Charting and Graphing Components (Beta)</li>
69 <li>Tutorial introduction to Drawview</li>
70 <li>Version detection</li>
71 <li>Developer console enhancements</li>
72 <li>Global "hand cursor" parameter</li>
73 <li>Backtrace facility in the debugger</li>
74 <li>Other debugger improvements</li>
75 <li>Splash screen takes percentages</li>
76 <li>New goodies in the incubator</li>
77 </ul>
78 <h2>Rich Text Class</h2>
79
80 <p>The new component, &lt;richinputtext&gt;
81 provides methods for adding rich text capabilities to your
82 applications.</p>
83 <p>
84 To use it, include the line:
85 </p>
86 <pre>
87 &lt;include href="/extensions/views/richinputtext.lzx" /&gt;
88 </pre>
89 <p>
90 The <code>richinputtext</code> component deals with html-formatted text. You can specify the html formatting directly in the <code>richinputtext</code> tag, if you escape it with CDATA, like this:</p>
91 <pre>
92
93 &lt;canvas bgcolor="#EAEAEA" height="400" width="400"&gt;
94 &lt;include href="/extensions/views/richinputtext.lzx" /&gt;
95 &lt;simplelayout axis="y" spacing="4" /&gt;
96 &lt;richinputtext name="myRichText" width="300" height="100"&gt;
97 &lt;![CDATA[
98 foo &lt;b&gt;bar&lt;/b&gt; baz lum
99 ]]&gt;
100 &lt;/richinputtext&gt;
101 &lt;/canvas&gt;
102 </pre>
103 <p>
104 The class includes an object to specify the format of a
105 text object (in Javascript,
106 <code>richinputtext.setTextFormat</code>).</p>
107 <p>
108 Formatting capabilities include: </p>
109 <ul>
110 <li>Text style of bold, underline, or italics</li>
111 <li>Font type and size</li>
112 <li>Text color</li>
113 <li>Hyperlink creation, specifying a URL, and choosing a target type</li>
114 <li>Paragraph alignment: left, right, center</li>
115 <li>Block indent/outdent</li>
116 </ul>
117
118 <p>The test file
119 <code>test/extensions/test/test-richinputtext.lzx</code>
120 demonstrates several ways that the <code>richinputtext</code> class
121 can be used to apply rich formatted text. </p>
122 <h2>New components: hbox, vbox, and image</h2>
123 <p>
124 Three new components support horizontal boxes, vertical boxes and images. Sources are in lps/components/base. See the LZX Reference and the Developer's Guide chapter on Layout and Design for examples.
125 </p>
126
127 <h2>Compilation for Flash 8 player</h2>
128 <p>
129 The OpenLaszlo compiler now has an option to generate Flash 8 format files. Use the developers' console or the query parameter <code>?lzr=swf8</code>.
130 </p>
131 <h2>Local datasets</h2>
132 <p>
133 Datasets no longer have to be specified on the canvas; they can be local to a class.
134 </p>
135 <ul>
136 <li>Datasets will automatically name themselves 'localdata' if a name is not specified </li>
137 <li>Local datapath syntax is <br/>
138 datapath="local:<i>reference.to.dataset.relative.to.parent</i>:/path" <br/>
139 </li>
140 <li> The name of the dataset can be omitted from the datapath if the dataset name is the default 'localdata', e.g. 'local:classroot:/' can be used instead of 'local:classroot.localdata:/' for a dataset named localdata in the classroot</li>
141 </ul>
142 <p>
143 See the Databinding chapter of the Developer's Guide for an explanation and example code.
144 </p>
145 <h2>Browser Integration</h2>
146 <p>
147 The scheme of "wrappers" that is generated has been simplified. There's no <code>lzt=version</code> or <code>lzt=history</code> anymore &#8212;they've both been folded into the main wrappers. The default HTML wrappers now include support for browser history and <code>setcanvasAttribute()</code>.
148 </p>
149 <h2>XMLHttpRequest() API</h2>
150 <p>
151 For AJAX style applications, there now is an XMLHttpRequest class.
152 This class implements XMLHttpRequest as <a href="http://developer.apple.com/internet/webcontent/xmlhttpreq.html"> specified</a> by the <a href="http://www.whatwg.org/specs/web-apps/current-work/#scripted-http">WHATWG
153 </a> consortium.
154 </p>
155 <p>
156 <code>XMLHttpRequest()</code> implements the functionality of the &lt;dataset&gt; tag in a syntax that is more familiar to people with AJAX programming experience. If you are comfortable using datasets there is no reason to use this class.
157 </p>
158 <p>
159 In SOLO deployed applications, this class departs from the specification in these ways:</p>
160 <ul>
161 <li>Cannot set HTTP headers </li>
162 <li>Cannot access response headers</li>
163 <li>Cannot send raw POST data</li>
164 <li>Cannot send repeated query args in a POST using LoadVars</li>
165 <li>Username/password HTTP Auth args to send() not supported.</li>
166 </ul>
167
168 <p>
169 See the Databinding chapter of the Developer's Guide, and the XMLHttpRequest page in the LZX Reference Manual for more details. There is a test case in test/AJAX/request.lzx.
170 </p>
171
172
173 <h2>Applications default to window size</h2>
174 <p>The canvas size now defaults to <code>height="100%" width="100%"</code>. This means that the OpenLaszlo application will size itself to completely fill the HTML page or frame in which it is placed.
175 </p>
176
177 <h2>"View Source" right click menu item </h2>
178 <p>
179 The default canvas context (right click) menu now has a "view source"
180 item to allow you to share your LZX code if you would like to do so.
181 </p>
182 <p>See the Input Devices and Gestures chapter of the Developer's Guide for details.</p>
183 <h2>Charting and Graphing Components</h2>
184 <p>
185 A new suite of data-driven components for charting and graphing, written in LZX, is included in this release. These are some of the components:</p>
186 <ul>
187 <li>linechart.lzx</li>
188 <li>barchart.lzx</li>
189 <li>piechart.lzx</li>
190 <li>columnchart.lzx</li>
191 </ul>
192 <p>
193 There are many ancillary components, such as horizontal and vertical axes, and data labels and markers.
194 Sources are in the subdirectory <code>lps/components/charts</code> of the directory in which the OpenLaszlo SDK is located.
195 </p>
196 <p>
197 The charting and graphing components included in this release are still undergoing development and are included in this release at Beta quality only. Preliminary documentation is included in the LZX Reference.
198 </p>
199 <h2>Flash Player version detection</h2>
200 <p>
201 Version detection now forces an upgrade to the Flash Player version specified in <code>lzr=</code>. For example, <code>lzr=swf8</code> will require version 8 or higher. People browsing to your url who do not have the appropriate version of the Flash Player will be prompted to upgrade.
202 </p>
203 <h2><code>setcanvasAttribute()</code> Javascript function can optionally add browser history events</h2>
204 <p>
205 Calling the browser javascript function <code>setcanvasAttribute(name, value, true)</code> will cause a browser history event to be added. This will cause the canvas attribute to be reset as the browser's forward and back buttons are used.
206 </p>
207 <h2>Tutorial Introduction to &lt;drawview&gt;</h2>
208 <p>
209 The Developer's Guide now contains an introduction to the drawing API.
210 </p>
211 <h2>Global Hand Cursor Parameter</h2>
212 <p>A new method, <code>LzCursor.showHandCursor(true)</code>, has
213 been added which allows you to control whether or not the cursor is changed to a hand-shaped cursor when moved over clickable views.</p>
214 <p>There's also a property on &lt;view&gt; that shows/hides the hand cursor:
215
216 <code>LzView.showhandcursor</code>
217 </p>
218 <p>See the Input Devices and Gestures chapter of the Developer's Guide (the section on ("Cursor Management") for details.</p>
219 <h2>Developers' console enhancements</h2>
220 <p>
221 The "Developers' Console" application, otherwise known as "that HTML thingy at the bottom of my compiled LPS apps" has been implemented as an LZX application. As part of its implementation:</p>
222 <ul>
223 <li>You can switch between swf6, swf7 and swf8 targets by pushing a button.</li>
224 <li>You can enable or disable debugging.</li>
225 <li>SOLO deployment is simplified by the SOLO deployment "wizard", which packages all necessary files, such as <code>embed.js</code> and the "build" subdirectory, into a zip file for uploading to a server (Apache, etc). The zip file is placed in the same directory as the canvas source file.
226 </li>
227 </ul>
228 <p>
229
230 <h2>New debugger capabilities</h2>
231 <p>
232 The OpenLaszlo debugger has been upgraded with several powerful features:
233 </p>
234 <ul>
235 <li>
236 Backtracing. When enabled, the compiler will
237 instrument functions to maintain a call stack.</li>
238 <li>Detection of corrupted objects.</li>
239
240 <li>Substantially enhanced control of string formatting</li>
241
242 <li>Inspectable warnings and errors. If you click on them, you will inspect the warning or error object.</li>
243
244 <li>Ability to monitor and report when any property of an object has changed.
245 </li>
246 </ul>
247 <p>See the Developer's Guide for explanations and examples of these new features.</p>
248 <h2>The Incubator</h2>
249 <p>
250 The Incubator directory, <tt>lps/components/incubator/</tt>, 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.
251 </p><p>
252 Recent contributions to the incubator include user contributions for:</p>
253 <ul>
254 <li>base64 encoding</li>
255 <li>dragging</li>
256 <li>floating lists</li>
257 <li>gradient views</li>
258 <li>stepper component</li>
259 <li>code inspector</li>
260 </ul>
261
262 <h2>Splash ratio</h2>
263 <p>The splash ratio can be expressed as a floating point or percentage.
264 </p>
265 <h1><a name="backwards">Backwards-incompatible changes</a></h1>
266 <p>
267 As noted above, the canvas size now defaults to <code>height="100%" width="100%"</code>. This means that the OpenLaszlo application will size itself to completely fill the HTML page or frame in which it is placed. In earlier releases, OpenLaszlo applications had a fixed default height and width. Applications that depended on that default size will not work correctly. The solution is to explicitly set the canvas height and width.
268 </p>
269
270 <h1><a name="fixed-bugs">Significant Bugs Fixed</a></h1>
271 <p>
272 More than a hundred bugs have been fixed since the 3.0.2 release. Consult <a href="http://www.openlaszlo.org/jira/ ">JIRA</a> for complete information. Among the more significant fixes are the following:
273 </p>
274 <ul>
275 <li>mp3 files now work in SOLO mode. <a href="http://www.openlaszlo.org/jira/browse/LPP-487">LPP-487</a></li>
276
277 <li>The font in the LZX reference is now embedded&#8212;looks good in all browsers. <a href="http://www.openlaszlo.org/jira/browse/LPP-335">LPP-335</a></li>
278 <li>Increased memory consumption reported in some nightly builds has been fixed. <a href="http://www.openlaszlo.org/jira/browse/LPP-714">LPP-714</a></li>
279 <li>Debugger issues with swf6 have been cleaned up. <a href="http://www.openlaszlo.org/jira/browse/LPP-753">LPP-753</a></li>
280 <li>Javascript issues with Internet Explorer have been cleaned up. <a href="http://www.openlaszlo.org/jira/browse/LPP-657">LPP-657</a></li>
281 <li>All international character sets work correctly with XML-RPC. <a href="http://www.openlaszlo.org/jira/browse/LPP-716">LPP-716</a></li>
282 <li>Various errors in Laszlo Explorer have been fixed. <a href="http://www.openlaszlo.org/jira/browse/LPP-513">LPP-513</a></li>
283 <li>"onlastframe" events now work correctly in mac browsers. <a href="http://www.openlaszlo.org/jira/browse/LPP-715">LPP-715</a></li>
284 <li>Setting <code>appendChild()</code> directly on a dataset no longer breaks replication. <a href="http://www.openlaszlo.org/jira/browse/LPP-692">LPP-692</a></li>
285 </ul>
286
287
288 <h1><a name="Known">Known Defects</a></h1>
289
290
291
292
293 <p>
294 This section of the notes summarizes significant bugs and is included here for your convenience. For the most current and complete information, consult the <a href="http://www.openlaszlo.org/jira/secure/IssueNavigator.jspa?reset=true&pid=10020&fixfor=10085">JIRA</a> bug database.
295 </p>
296 <ul>
297
298 <li>Compilation Manager<ul>
299
300 <li>If you compile a file that includes a font, resource, or library in the
301 components directory, and you then create a file with the same name as the
302 included file in your application directory, the OpenLaszlo Server will not recompile the application. You will need to make a gratuitous edit to the application source to force it to recompile.</li>
303
304
305 </ul></li></ul>
306
307 <ul><li>Compiler<ul>
308
309 <li>
310 <a href="http://www.openlaszlo.org/jira/browse/LPP-808">LPP-808</a></p>
311 <p>
312 When you have an app which uses the OpenLaszlo server transcoder to include a PNG file, and you compile the app as a Flash 8 app (lzr=swf8), the image appears "fuzzy", as if it is scaling it by a small extra fraction so it no longer has integer pixel boundaries. </p>
313 <p>
314 Note that if the resource is included as a runtime SOLO PNG, this doesn't happen, so it is an interaction of the OpenLaszlo Server PNG transcoder.</p>
315 </li>
316 <li>A resource whose origin is not (0,0) may appear to have the wrong width and height.</li>
317
318 <li>Default clickable interacts poorly with classes.
319 <pre>&lt;class name="myclass" clickable="false"/&gt;
320 &lt;myclass id="bob" onclick="f()"/&gt;
321 </pre>
322 Creates a bob that is clickable. That is, setting the onclick="f()" value
323 overrides the setting in the class definition. If this isn't what you want, the
324 workaround is to write an explicit clickable on the subclass or instance:
325 <pre> &lt;class name="myclass" clickable="false"/&gt;
326 &lt;myclass id="bob" onclick="f()" clickable="false"/&gt;
327 </pre></li>
328
329
330 <li>When specifying a resource with a constraint expression, you must use either a
331 resource name (instead of a literal path) or an http URL. The following two
332 examples work:
333 <pre>&lt;node id="globals"&gt;
334 &lt;attribute name="BRAND"
335 value="http:logo.swf"
336 type="string"/&gt;
337 &lt;/node&gt;
338 &lt;view id="a" x="0" y="0" resource="${globals.BRAND}"/&gt;
339 </pre>
340 or
341 <pre>&lt;resource name="logo" value="logo.swf"/&gt;
342
343 &lt;node id="globals"&gt;
344 &lt;attribute name="BRAND"
345 value="logo"
346 type="string"/&gt;
347 &lt;/node&gt;
348 &lt;view id="a" x="0" y="0" resource="${globals.BRAND}"/&gt;
349 </pre></li>
350 <li>All canvas attributes that CAN be defined as XML attributes MUST be defined as XML attributes. For example, &lt;canvas&gt;&lt;attribute name="width" value="100"/&gt; does not have the same effect as &lt;canvas width="100"&gt;, and similarly for the other attributes such as bgcolor, font, and fontsize.
351 </li>
352
353 <li>The OpenLaszlo compiler expects .lzx files should be authored using the UTF-8 character set encoding (per the XML document standard), unless you specify another encoding explicitly in the XML declaration at the start of the file, e.g.,
354 <pre>&lt;?xml version="1.0" encoding="ISO-8859-1" ?&gt;
355 </pre>
356 </li>
357 <li>The OpenLaszlo Server supports tomcat 5.0 as a development environment. It has not yet been fully
358 tested for deployment. If you use the Tomcat as provided by Laszlo, the memory
359 parameters will be configured correctly. If you use your own version of Tomcat 5,
360 however, it may fail (due to insufficient memory) after about 35 compilations.</li>
361 <li>Kranking an application with a request parameter (e.g., ?foo=bar) will cause that parameter (e.g., foo)
362 to be serialized and reconstituted. If you try to supply a different request parameter to the kranked
363 app, Flash's 'security mechanism' will ignore the new parameter (because there is already a variable of
364 that name (e.g., foo)).
365 <p>
366 There are two suggested workarounds:
367 </p>
368 <ol>
369 <li>Do not supply the request parameters when kranking your application. This implies your application
370 must be able to initialize with the request parameters not set.</li>
371
372 <li>Use LzBrowser.getLoadUrlAsLzUrl().query to parse the request parameters and set them in your
373 application at initialization time.</li></ol></li>
374
375
376 </ul></li></ul>
377
378 <ul><li>Compiler - JavaScript<ul>
379
380 <li>The shortcut form for specifying unicode characters (e.g., \xAB) does not
381 compile correctly. As a workaround, specify unicode characters in full form
382 (e.g., \u00AB).</li>
383 <li>An expression of the form (fn)(a1, a2, ...) evaluates the expressions
384 a1, a2, ... before evaluating the expression fn, which is not the strict
385 left-to-right evaluation order required by the ECMAScript standard. As a
386 workaround use the following equivalent:
387 <pre>var temp = (fn); temp(a1, a2, ...)
388 </pre>
389 This should only be necessary if the expression fn has side-effects that affect
390 the values of the expressions a1, a2, ...</li>
391
392
393 </ul></li></ul>
394
395 <ul><li>Compiler - Schema<ul>
396
397 <li>The "from" and "to" attributes of an animator must be numeric literals
398 such as "1000" or "25.8", or live expressions such as "${parent.x}". If the
399 animated
400 attribute has a boolean type, use the live expression syntax:
401
402
403 <pre>&lt;animator attribute="visible" to="${false}"/&gt;
404 </pre>
405 (or, for greater efficiency,
406 <pre>&lt;animator attribute="visible" to="$immediately{false}"/&gt;)
407 </pre></li>
408 <li>Declaring an "onload" event as an attribute of the tag generates a compiler error:
409 <pre>&lt;class name="resourceloader"&gt;
410 &lt;view name="media" onload="parent.gotLoad(this);" visible="false"/&gt;
411 </pre>
412
413 As a workaround, use
414 <pre> &lt;method event="onload" . . .&gt;
415 </pre></li>
416 <li>The id attribute is typed wrong for datapath. A workaround is to declare the
417 attribute with a type:
418 <pre> &lt;datapath&gt;
419 &lt;attribute name="id" value="dp" type="string"/&gt;
420 &lt;/datapath&gt;
421
422 </pre></li>
423 <li>Combining the attribute properties when="once" and type="number" will cause a
424 compilation error
425 for non-constant values. Use value="$once{...}" to avoid this error.</li>
426
427
428 </ul></li></ul>
429
430
431 <ul><li>Compiler - Warnings<ul>
432
433 <li>Creating an attribute named "options" or "id" on a class or view will cause
434 conflicts with internal methods. Giving a view a "name" or "id" with the same
435 name as a user-defined class will also cause conflicts. No warning is currently
436 issued in this case, so it can be hard to identify this situation.</li>
437 <li>Forward references to classes are not permitted. The class definition must occur
438 lexically before the first instance of that class is created. The compiler will
439 not warn about this situation. For example, the following will not work:
440 <pre>&lt;canvas&gt;
441 &lt;foo/&gt;
442 &lt;class name="foo"&gt;
443 &lt;text&gt;Hello!&lt;/text&gt;
444
445 &lt;/class&gt;
446 &lt;/canvas&gt;
447 </pre>
448 However no warning is issued by the compiler in this case.</li>
449 <li>The following unmatched cases can cause compiler errors with misleading
450 line numbers:
451 <pre> &lt;view x="${/*}"/&gt;
452 &lt;view x="$immediate{/*}"/&gt;
453 &lt;view oninit="/*"/&gt;
454
455 &lt;method name="f" args="/*"/&gt;
456 &lt;method name="f"&gt;/*&lt;/method&gt;
457 &lt;script&gt;/*&lt;/script&gt;
458 </pre></li>
459 <li>Text that follows &lt;method&gt; or &lt;attribute&gt; in a component class (any tag
460 defined using the &lt;class&gt; tag) will cause a compilation warning, even if the
461 component is declared to accept text or html. For example:
462
463 <pre> &lt;inputtextbox&gt;
464 &lt;method name="foo"&gt;
465 Debug.write('xxx');
466 &lt;/method&gt;
467 mytext
468 &lt;/inputtextbox&gt;
469 </pre>
470 The correct syntax is to place the text before any &lt;method&gt; or &lt;attribute&gt; children:
471
472 <pre> &lt;inputtextbox&gt;mytext
473 &lt;method name="foo"&gt;
474 Debug.write('xxx');
475 &lt;/method&gt;
476 &lt;/inputtextbox&gt;
477 </pre></li>
478 <li>You cannot reliably use constraints to set the fontsize or font name
479 of an inputtext field.
480
481 For example, this will probably not display properly, but will not signal an
482 error at compile time.
483 <pre>&lt;canvas&gt;
484
485 &lt;class name="tester"&gt;
486 &lt;inputtext fontsize="${canvas.height}"&gt;hello &lt;/inputtext&gt;
487 &lt;/class&gt;
488 &lt;tester /&gt;
489 &lt;/canvas&gt;
490 </pre></li>
491
492 <li>If a resource referenced in a &lt;splash&gt; view is not present, an odd error message --
493 the single word "undefined" -- with half of the "u" chopped off-- appears.
494 <pre>&lt;canvas&gt;
495 &lt;splash&gt;
496 &lt;view resource="images/logo.png"/&gt;
497 &lt;/splash&gt;
498 &lt;/canvas&gt;
499
500 </pre></li>
501
502
503 </ul></li></ul>
504
505 <ul><li>Components - all<ul>
506
507 <li>Some XML escape characters cannot be used in the initial text content of input text
508 components. A workaround is to use the "text" attribute. For example, to specify
509 the string "dog &amp; cat"
510 <pre>Right:
511 &lt;simpleinputtext text="dog &amp;amp; cat"/&gt;
512
513 Wrong:
514 &lt;simpleinputtext&gt;dog &amp;amp; cat&lt;/simpleinputtext&gt;
515 </pre></li>
516 <li>Fonts do not cascade through components, and cannot be set with the &lt;style&gt; tag.
517 However, you can redefine the font named "default", which is used by components.</li>
518 <li>Adding
519 <pre>&lt;datapath replication="lazy"&gt;
520 </pre>
521
522 inside the leaf basetree
523 causes the titles of many of the intermediate-level trees (one above the leaves)
524 never to appear.
525
526 This means lazy replication can't be used to optimize the start speed of tree
527 controls.</li>
528
529
530 </ul></li></ul>
531
532 <ul><li>Components - base<ul>
533 <li>
534 <a href="http://www.openlaszlo.org/jira/browse/LPP-115">LPP-115</a>
535 <p>
536 Mouse wheel event listeners are available only in Windows versions of Flash Player.
537 </p>
538
539 </li>
540
541 <li>Tabs will not display a tabpane after datamapping changes until a tab is selected.</li>
542 <li>&lt;basebutton&gt; can't be used when canvas version=="1.0". A workaround is to remove
543 version="1.0" from the canvas for this application,
544 or to define a font named "default" in the application.</li>
545 <li>
546
547 </ul></li></ul>
548
549 <ul><li>Components - LZ<ul>
550
551 <li>&lt;tabview&gt; doesn't respect view "visible" property.</li>
552 <li>You must explicitly set a menu's width. It does not automatically calculate the
553 max menuitem and use that as a reference.
554
555 The height of a menu, however, does grow if menu items are added and deleted.</li>
556 <li>
557 For a yummy autumn soup, cook acorn and winter squash with cauliflower, onions, vegetable bullion and one ripe pear. Mix in the blender, add some light cream. Serve hot!
558 </li>
559 <li>&lt;edittext&gt; does not automatically size to the size of the font; it is always 22
560 pixels high.</li>
561
562 <li>If you set a datapath as a child of tabpane for replication, you need to set its
563 datacontrolsvisibility attribute to false or the wrong tabpane will be
564 displayed. For example:
565 <pre>&lt;tabs&gt;
566 &lt;tabpane&gt;
567 &lt;datapath xpath="[mydatapath]"&gt;
568 &lt;attribute name="datacontrolsvisibility" value="false"/&gt;
569 &lt;/datapath&gt;
570 &lt;/tabpane&gt;
571
572 &lt;/tabs&gt;
573 </pre></li>
574 <li>&lt;button&gt; face stretches when its parent view has a resource that stretches.</li>
575 <li>In some cases, the "onselect" element for a combobox is sent when the combobox
576 is initialized -- not when it is selected by the user. A workaround is to
577 include this in the combobox tag:
578 <pre> &lt;attribute name="isFirstOnselectFired" value="false" /&gt;
579
580 &lt;method event="onselect" args="d"&gt;
581 if ( !isFirstOnselectFired ) {
582 this.setAttribute( 'isFirstOnselectFired', true );
583 return false;
584 }
585 // Do whatever you were going to do onselect here.
586 &lt;/method&gt;
587
588 </pre></li>
589 <li>Replicated trees with open attributes will not display correctly.</li>
590 <li>Menubar has wrong placement in windows by default.
591 A &lt;menubar/&gt; is not placed in the 'menubar area' of a &lt;window/&gt; by default, so
592 the workaround is the following:
593 <pre>&lt;window
594 &lt;menubar ... placement="menubar" /&gt;
595 &lt;/window&gt;
596 </pre></li>
597
598 <li>Because the gridcolumn is a basecomponent (and is styleable), fonts set on a grid
599 will not cascade to its contents. Set the font on each individual column to
600 control fonts within a grid.</li>
601 <li>The user can't tab out of the grid from the last record or shift-tab out from
602 the first record.</li>
603 <li>At this release, &lt;tree&gt; does not support changes to the underlying
604 dataset. So if you have a dataset, and make a change to it, the tree won't update.</li>
605 <li>&lt;combobox&gt; doesn't send keycode with key events as expected.</li>
606 <li>Using 'onvalue' event on a combobox will not allow making something modal. For
607 example, the following code will not work as expected:
608 <pre>&lt;canvas&gt;
609
610 &lt;combobox defaulttext="Default"&gt;
611 &lt;method event="onvalue"&gt;
612 if ( this.value == null ) return;
613 gAlert.open();
614 &lt;/method&gt;
615 &lt;textlistitem&gt;A&lt;/textlistitem&gt;
616 &lt;textlistitem&gt;B&lt;/textlistitem&gt;
617
618 &lt;textlistitem&gt;C&lt;/textlistitem&gt;
619 &lt;/combobox&gt;
620
621 &lt;alert id="gAlert"&gt;Hi&lt;/alert&gt;
622 &lt;/canvas&gt;
623 </pre>
624
625 Workaround: If you use 'onselect' the mode will be released appropriately.</li>
626 <li>The z order of basewindows is not well defined.</li>
627
628
629 </ul></li></ul>
630
631
632 <ul><li>Debugger<ul>
633
634 <li>Declaring an attribute does not assign it a value. Use of an attribute with no
635 value will throw a debugger warning.</li>
636
637
638 </ul></li></ul>
639
640
641
642
643 <ul>
644 <li>Fonts
645 <ul>
646
647 <li>The Verity font has a slightly different baseline than other fonts. Be sure to
648 visually inspect your application carefully when switching from or to the Verity
649 font. </li>
650 <li>
651 Disappearing fonts&#8212;
652 Client fonts (such as the default font) disappear when rotated, and (mostly) ignore the opacity parameter.
653 This is a limitation of the Flash player. Use an embedded font if rotation or opacity is required.
654 </li>
655
656 </ul>
657 </li>
658 </ul>
659 <ul><li>Installer<ul>
660
661 <li>The installer and OpenLaszlo Server may fail to function properly in Windows if Java is moved
662 from the location where it was originally installed.</li>
663 <li>In order to change the port number that OpenLaszlo Server runs on, you need to edit
664 both $TOMCAT_HOME/conf/server.xml and $LPS_WEBAPP_HOMElz-utils/startup.var,
665 and change any instance of 8080 to something else.
666
667 Also, if you have another instance of Tomcat up and running, you may
668 want to change the shutdown port in server.xml to something other than default
669 of 8009.</li>
670
671 </ul></li></ul>
672
673 <ul><li>JGenerator<ul>
674
675 <li>The OpenLaszlo compiler uses routines from AWT. This sometimes requires that the target
676 deployment server installs X Windows.</li>
677 <li>Using a swf asset as a resource in the splash tag can cause strange problems if
678 the asset has an embedded font and the font name collides with the name used
679 for an embedded font in the LZX app.</li>
680
681
682 </ul></li></ul>
683
684 <ul><li>Krank<ul>
685 <li>
686 There is a bug in the KRANK feature in OpenLaszlo 3.0 that is a
687 regression from LPS 2.2. It was probably present in LPS 3.0b2.
688 <p>For some applications, if the application is KRANKed using an
689 OpenLaszlo development server and a browser that are running on the
690 same machine (this is the typical configuration), it may only work when
691 deployed to a browser on the same machine as the server.
692 Conversely, an application that is KRANKed from a separate client will
693 only work when deployed to a browser that is not running on the server
694 machine.
695 </p>
696 <p>
697 There are two implications:
698 </p><ol>
699 <li>The KRANK feature when used in the standard configuration will not
700 produce a deployable application. The workaround is to use a second
701 machine to KRANK from.</li>
702 <li>Some of the demos that are distributed in the SDK (portions of
703 dashboard, chat, calendar) will not work when viewed from a second
704 machine.
705 This is a rare use case (especially since the demos are present on the
706 web site, and since firewalls disallow access by default anyway), so
707 this is less serious.</li>
708 </ol>
709 </li>
710
711 <li>When running the optimizer, the source directory of the application being
712 optimized must be writable by the web server. If the server cannot write to the
713 directory, an error message will be written to the lps log.</li>
714
715
716
717 </ul></li></ul>
718
719 <ul><li>OpenLaszlo Runtime Library (formerly known as Laszlo Foundation Classes)<ul>
720 <li>
721 <p><a href="http://www.openlaszlo.org/jira/browse/LPP-823">LPP-823</a>:</p>
722 <p>
723 The word "filters" appears to be reserved under Flash 8.
724 This program doesn't work as expected:
725 <pre>
726 &lt;canvas&gt;
727 &lt;class name="filters"/&gt;
728 &lt;filters oninit="Debug.write( 'hi there' )"/&gt;
729 &lt;canvas&gt;
730 </pre>
731 <p>
732 If you change the name of the class and instance to just, say, "filter" it works fine.</p>
733 </li>
734 <li>The contents of a view with clip=true may not display properly when the size of
735 the view is changed. The contents may be stretched by one pixel. All text is
736 clip=true, and small clipped resized text may be drawn slightly blurry.</li>
737 <li>When operating under heavy processing loads, OpenLaszlo applications may send spurious
738 global mouseup and mousedown events. When this happens, the warning
739 <pre> WARNING: Sent extra global mouse event
740
741 </pre>
742 will print in the debugger.</li>
743 <li>A constraint that depends on a.b.c is only updated if the value of a.b.c
744 changes, not if a.b changes.
745
746 For example:
747 <pre> &lt;attribute name="dec" type="number" value="0"/&gt;
748 &lt;attribute name="hexString" type="string" value="${'0x'+dec.toString(16)}"/&gt;
749 </pre>
750 hexString will not be updated when setAttribute() is called on dec. As a
751 workaround, create your own event handler for the base value:
752 <pre> &lt;attribute name="dec" type="number" value="0"/&gt;
753
754 &lt;attribute name="hexString" type="string" /&gt;
755 &lt;method event="ondec"&gt;
756 hexString = '0x'+dec.toString(16);
757 &lt;/method&gt;
758 </pre></li>
759 <li>
760 Views become invisible when opacity=0
761 This produces odd effects in programs that use automatic layout; e.g.<pre>
762 &lt;canvas layout="axis: x"/&gt;
763 &lt;view width="20" height="20" bgcolor="red"/&gt;
764 &lt;view width="20" height="20" bgcolor="blue" onclick="animate('opacity', 0, 1000)"/&gt;
765 &lt;view width="20" height="20" bgcolor="gree"/&gt;
766 &lt;/canvas&gt;
767
768 </pre>
769
770 </li>
771 <li>Align and valign cannot be modified once they are set initially. To work around
772 this issue use a state with an explicit constraint (rather than align or valign)</li>
773
774 <li>&lt;animatorgroup&gt; attributes not settable after init. To work around, set the
775 individual attributes of the individual animators in the group.</li>
776 <li>A view which uses align or valign may affect its parent's size before the
777 alignment is applied. This means that using alignment in a view which is sized
778 to its content will not work reliably.</li>
779
780 <li>LzView.getMouse() doesn't work properly when stretches is enabled. To
781 work around, getMouse relative to an unstretched view.</li>
782 <li>Undocumented/unreserved globals may exist. This causes a collision with the id
783 of some nodes and views. Views and nodes with an id of o, or s will
784 eventually get overwritten.</li>
785 <li>Using LzView.bringToFront() and LzView.sendToBack() will not work properly on
786 views which whose parent is the canvas in an application which has a &lt;splash&gt;.</li>
787
788
789 <li>A multiframe swf resource that has no sound will be played at 30 fps, regardless of its specified framerate.</li>
790 <li>Most private LFC attributes begin with __LZ. However, some of them do not. In
791 general, if an attribute does not appear in the documentation, it should be
792 considered private, regardless of its name.</li>
793 <li>LzView.getAttributeRelative() hangs Flash Player when called with null second
794 argument.</li>
795 <li>The canvas does not send an onconstruct event.</li>
796
797
798 </ul></li></ul>
799
800 <ul><li>OpenLaszlo Runtime Library (formerly known as Laszlo Foundation Classes) - Data<ul>
801
802 <li>Datasets which have their request or autorequest attribute set to true will make
803 a request even if they don't have a src attribute when they init.</li>
804 <li>Using a state to create a view which is data-replicated may appear to work, but
805 the state will not be removed properly. To work around, wrap the replicated view
806 inside an extra view.
807 For example:
808 change this:
809 <pre>&lt;state&gt;&lt;view datapath="manyNodes"/&gt;
810 </pre>
811 to:
812 <pre>&lt;state&gt;&lt;view&gt;&lt;view datapath="manyNodes"/&gt;
813 </pre></li>
814 <li>Datapointer's serialize() method is slow and can hang the Flash player.</li>
815
816 <li>The dataselectionmanager only works with a lazy replicated list. Attempting to
817 use it with a node that has not replicated will not work.</li>
818 <li>Runtime HTTP requests for very long urls (&gt; 1024 chars) made from a Laszlo
819 application running in Internet Explorer can cause the all subsequent HTTP
820 requests to fail. To work around, this use the setQueryType('POST') so that
821 query string parameters are passed in the post body.</li>
822 <li>Although a LzReplicationManager and its subclass (LzLazyReplicationManager) descend from
823 LzDatapointer, they do not actually point to an LzDataNode. For this reason, they do not support
824 relative xpathQuery() or setPointer() calls.</li>
825 <li>A node's datapath attribute is null unless a datapath is given for
826 it, either as a datapath= attribute, or as a declared child. To force a
827 view to create a datapath, set its datapath to ".".</li>
828 <li>Using the $path constraint syntax will force a node to create a
829 datapath with an xpath of "." if it does not already have one. This can
830 cause unexpected results due to the fact that a datapath which does not
831 match any node will hide its view. See the datacontrolsvisibility
832 attribute of datapath.</li>
833 <li>Because the canvas can't have a datapath, $path bindings for attributes on the
834 canvas don't work.</li>
835
836 <li>$path syntax for value of attribute declared as number creates string value. As
837 a workaround, you can use the parseint() function to cast the string back to a number.</li>
838
839 <li>When setting a replication manager from a pointer, the replication manager is
840 not dynamically bound to its data since it has no xpath query to rerun when the
841 data changes. This means that, for instance, it will not re-sort when the data
842 changes. To get a dynamic binding, set an xpath for the replication manager --
843 don't set its pointer directly. Alternatively, you can reset the pointer when
844 sort values have changed.</li>
845
846
847 </ul></li></ul>
848
849 <ul><li>OpenLaszlo Runtime Library (formerly known as Laszlo Foundation Classes) - Text<ul>
850
851 <li>The dash at the end of a word does not force a wrap if the width is less than
852 the width at the dash but greater than the width at the last character before
853 the dash.</li>
854 <li>Single words in an input text field that are too long for the line will be clipped.</li>
855 <li>Input text fields do not wrap on dashes -- only on spaces.</li>
856 <li>Using the fgcolor property of the inputtext element changes the selection color
857 to the same color as the text color.</li>
858
859 <li>There is currently no way to center or right-align multiline text in Laszlo. If
860 this is absolutely necessary, use a series of single line text fields and right
861 align them.</li>
862 <li>A Laszlo text field may not display correctly if it is given an extremely long
863 line and it is multiline=false</li>
864 <li>&lt;p&gt;text&lt;/p&gt; does not display unless multiline=true.</li>
865 <li>The fontsize attribute doesn't cascade to children when reset at runtime.
866 Although font information set on a parent will cascade to its children at
867 construct-time, the binding is not active. Changing the parent's font after
868 construction (say, at constraint resolution time) will not change the child's font.</li>
869 <li>very long strings in singleline inputtext cause display problems</li>
870 <li>&lt;text&gt; and &lt;inputtext&gt; views are not designed to have subviews.</li>
871
872 <li>A &lt;text&gt; which uses the &lt;font...&gt; tag will not automatically size its height
873 properly.</li>
874 <li>fgcolor attribute has no effect on inputtext</li>
875 <li>Mouse events are not reported by &lt;edittext&gt;. They are reported by &lt;inputtext&gt;.</li>
876 <li>This doesn't work when something else has been focused:
877 this.editbox.setSelection(0);
878
879 This did work:
880 LzFocus.setFocus(this.editbox);
881 this.editbox.setSelection(0);</li>
882
883 <li>setfontstyle('bold') or setattribute('fontstyle','bold') require that you also
884 update the text. </li>
885
886
887 </ul></li></ul>
888
889 <ul><li>LFC Object System<ul>
890
891 <li>super.&lt;member&gt; is not supported and will produce a compilation error</li>
892 <li>"meth" is a reserved word previously undocumented. Creating nodes with this name
893 or id causes unpredictable behavior in lzbrowser.loadurl() and other calls.</li>
894
895 </ul></li></ul>
896
897
898
899
900
901 <ul><li>RPC - SOAP<ul>
902
903 <li>If you get a NullPointerException reported when writing SOAP-based apps, look in
904 the lps.log to find debugging information. Type mismatches in document style
905 messages can throw NullPointerExceptions.</li>
906
907
908 </ul></li></ul>
909
910
911
912 <ul><li>Server data transport<ul>
913
914 <li>LPS may maintain stale DNS mappings between hosts and IP addresses.
915 Restarting LPS will cause it to drop any such stale mappings.</li>
916 <li>When redirects are disallowed, backend 302 is reported as timeout instead of
917 datasource error.</li>
918 <li>The Persistent Connection manager can, in some cases, hold open sockets when the
919 window is closed. As stated in the documentation, the persistent connection
920 feature is provisional and should not be used in production software.</li>
921
922
923 </ul></li></ul>
924
925 <ul><li>Server globals<ul>
926
927
928 <li>LPS does not gracefully handle syntax errors in the lps.properties file. A
929 file with unexpected values for certain properties can cause the server to fail
930 its initialization.</li>
931
932
933 </ul></li></ul>
934
935 <ul><li>Server media<ul>
936
937 <li>An audio resource which is included at compile time will not play. For example,
938 this: &lt;view resource="myaudio.mpg"/&gt; won't work. To work around, load the media
939 at runtime (like this: &lt;view resource="http:myaudio.mpg"/&gt;) or use the LzAudio APIs.</li>
940 <li>LPS may fail to proxy images and data from remote web sites that block
941 proxies. Such requests will come back from the remote web sites marked as
942 Forbidden.</li>
943
944 </ul></li></ul>
945
946 <ul><li>Server misc.<ul>
947
948 <li>LPS does not work in the Turkish locale. The workaround is to add a
949 -Duser.language=en to the JAVA_OPTS in your servlet container startup.</li>
950 <li>The LZX source viewer does not display component resources</li>
951
952
953 </ul></li></ul>
954
955
956 <ul><li>Server XML<ul>
957
958 <li>The data system requires well formed XML input. However,
959 passing in XML with no root element will
960 be sent to the client (which will get undefined results when it tries to
961 process it) with no error. For example:
962
963 <pre>&lt;foo&gt;
964 &lt;........&gt;
965 &lt;/foo&gt;
966 &lt;bar&gt;
967 &lt;........&gt;
968 &lt;/bar&gt;
969 </pre></li>
970
971 </ul></li></ul>
972
973 <p class="bodytext">&copy;Copyright 2002-2005 <a href="http://www.laszlosystems.com/">Laszlo Systems, Inc.</a> All rights reserved. Unauthorized use, duplication or distribution is strictly prohibited.</p>
974 </body></html>

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26