[Laszlo-checkins] r7935 - in openlaszlo/branches/devildog: . WEB-INF/lps/lfc/compiler WEB-INF/lps/lfc/core WEB-INF/lps/lfc/data WEB-INF/lps/lfc/debugger/platform/swf WEB-INF/lps/lfc/kernel/dhtml WEB-INF/lps/lfc/kernel/swf WEB-INF/lps/lfc/views WEB-INF/lps/server/sc/src/org/openlaszlo/sc WEB-INF/lps/server/src/org/openlaszlo/data WEB-INF/lps/server/src/org/openlaszlo/js2doc docs/includes docs/src docs/src/nav docs/src/reference docs/src/xsl lps/components lps/components/incubator lps/components/lz test test/lfc/data test/smoke

dda@openlaszlo.org dda at openlaszlo.org
Thu Jan 31 08:30:58 PST 2008


Author: dda
Date: 2008-01-31 08:30:37 -0800 (Thu, 31 Jan 2008)
New Revision: 7935

Added:
   openlaszlo/branches/devildog/docs/src/reference/wrappers.xml
Modified:
   openlaszlo/branches/devildog/
   openlaszlo/branches/devildog/WEB-INF/lps/lfc/compiler/LzRuntime.lzs
   openlaszlo/branches/devildog/WEB-INF/lps/lfc/core/LzNode.lzs
   openlaszlo/branches/devildog/WEB-INF/lps/lfc/data/LzDataset.lzs
   openlaszlo/branches/devildog/WEB-INF/lps/lfc/data/LzHTTPDataProvider.lzs
   openlaszlo/branches/devildog/WEB-INF/lps/lfc/data/LzParam.lzs
   openlaszlo/branches/devildog/WEB-INF/lps/lfc/debugger/platform/swf/LzDebug.as
   openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/dhtml/LzHTTPLoader.js
   openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf/LzHTTPLoader.as
   openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf/LzLoadQueue.as
   openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf/LzMakeLoadSprite.as
   openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf/LzSprite.as
   openlaszlo/branches/devildog/WEB-INF/lps/lfc/views/LaszloView.lzs
   openlaszlo/branches/devildog/WEB-INF/lps/server/sc/src/org/openlaszlo/sc/Parser.jjt
   openlaszlo/branches/devildog/WEB-INF/lps/server/src/org/openlaszlo/data/HTTPDataSource.java
   openlaszlo/branches/devildog/WEB-INF/lps/server/src/org/openlaszlo/js2doc/Main.java
   openlaszlo/branches/devildog/docs/includes/docbook.css
   openlaszlo/branches/devildog/docs/src/build.xml
   openlaszlo/branches/devildog/docs/src/nav/toc.xml
   openlaszlo/branches/devildog/docs/src/xsl/js2doc2dbk.xsl
   openlaszlo/branches/devildog/lps/components/build.xml
   openlaszlo/branches/devildog/lps/components/incubator/newvscrollbar.lzx
   openlaszlo/branches/devildog/lps/components/lz/alert.lzx
   openlaszlo/branches/devildog/test/lfc/data/alldata.lzx
   openlaszlo/branches/devildog/test/lfc/data/testsetheaders-solo.lzx
   openlaszlo/branches/devildog/test/lfc/data/testsetheaders.lzx
   openlaszlo/branches/devildog/test/smoke/compiler.lzl
   openlaszlo/branches/devildog/test/trycatch.lzx
Log:
Merged revisions 7879-7933 via svnmerge from 
http://svn.openlaszlo.org/openlaszlo/trunk

...............
  r7880 | hqm | 2008-01-23 20:57:05 -0500 (Wed, 23 Jan 2008) | 59 lines
  
  Merged revisions 7872 via svnmerge from 
  http://svn.openlaszlo.org/openlaszlo/branches/wafflecone
  
  ........
    r7872 | hqm | 2008-01-23 13:50:26 -0500 (Wed, 23 Jan 2008) | 53 lines
    
    Change 20080123-hqm-4 by hqm at DADDY_THNKPAD67 on 2008-01-23 09:36:16 EST
        in /cygdrive/c/users/hqm/openlaszlo/wafflecone
        for http://svn.openlaszlo.org/openlaszlo/branches/wafflecone
    
    
    Summary:  updated: preserve url query string with post data requests
    
    New Features:
    
    Bugs Fixed: LPP-5368
    
    Technical Reviewer: pkang
    QA Reviewer: ptw
    Doc Reviewer:
    
    Documentation:
    
    The URL which is specified as the 'src' attribute of a dataset, such as
    
    <dataset  src="http://foo.bar.com/baz.php?myarg=1" />
    
    will be preserved in POST operations, both SOLO and proxied.
    
    All data which is set via the
    
    setQueryString
    setQueryParam
    setQueryParams
    
    will be stored in a distinct table, and will only be merged with the src url
    in the case of a GET request.
    
    For POST requests, the src full URL with its original query string will be sent,
    and all other param data will be sent www-form-encoded in the POST body.
    
    
    Note: raw post data via the "lzpostbody" arg turns out not to work in SOLO mode,
    and has never actually fully worked.
    
    
    Release Notes:
    
    Details:
    
    
    Tests:
    
    test/lfc/data/alldata.lzx DHTML/SWF
    
    amazon
    calendar proxied/solo DHTML/SWF
  ........
...............
  r7884 | ptw | 2008-01-24 17:14:21 -0500 (Thu, 24 Jan 2008) | 19 lines
  
  Change 20080124-ptw-t by ptw at dueling-banjos.local on 2008-01-24 17:08:27 EST
      in /Users/ptw/OpenLaszlo/ringding-clean
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: Disable checking uptodate of lzx-autoincludes.properties
  
  Bugs Fixed:
  LPP-3965 'Simpleboundslayout.lzx is not include when debug=false'
  
  Technical Reviewer: mamye at laszlosystems.com (pending)
  
  Details:
      The uptodate check does not work because svn does not preserve
      file dates.  Disable it for now.
  
  Tests:
      Mamye will spin a build
...............
  r7888 | dda | 2008-01-25 14:09:08 -0500 (Fri, 25 Jan 2008) | 24 lines
  
  Change 20080125-dda-n by dda at lester.local on 2008-01-25 12:03:10 EST
      in /Users/dda/laszlo/src/svn/openlaszlo/trunk-nightly
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: Remove distracting non-error from js2doc --test mode.
  
  New Features:
  
  Bugs Fixed: LPP-5378
  
  Technical Reviewer: ptw (pending)
  QA Reviewer: mayme (pending)
  Doc Reviewer: (pending)
  
  Documentation:
  
  Release Notes:
  
  Details:
      A simple coding bug causes the 'error' to be produced.
  
  Tests:
...............
  r7891 | bargull | 2008-01-25 15:03:57 -0500 (Fri, 25 Jan 2008) | 27 lines
  
  Change 20080125-bargull-2 by bargull at dell--p4--2-53 on 2008-01-25 20:51:54
      in /home/Admin/src/svn/openlaszlo/trunk
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: also newvscrollbar reports valign-warning
  
  New Features:
  
  Bugs Fixed: LPP-5166 "vscrollbar reports "y attribute ignored" warning"
  
  Technical Reviewer: (pending)
  QA Reviewer: mkratt
  Doc Reviewer: (pending)
  
  Documentation:
  
  Release Notes:
  
  Details:
  Removed "y"-attribute definition from newvscrollbar.
  
  
  Tests:
  lps/components/incubator/testnewvsvrollbar-test.lzx 
  (note: you'll get a warning about an undefined style, the style can be found in "test-edittext.lzx" and "scrolledittext-text.lzx")
...............
  r7901 | dda | 2008-01-27 17:36:43 -0500 (Sun, 27 Jan 2008) | 29 lines
  
  Change 20080126-dda-y by dda at lester.local on 2008-01-26 18:02:53 EST
      in /Users/dda/laszlo/src/svn/openlaszlo/trunk
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: script compiler: Add type to catch clause.
  
  New Features:
  
  Bugs Fixed: LPP-5381
  
  Technical Reviewer: ptw (pending)
  QA Reviewer: hminsky (pending)
  Doc Reviewer: (pending)
  
  Documentation:
  
  Release Notes:
  
  Details:
      Fix is simple - according to the ES4 grammar, the catch 'parameter' should
      look the same as a function parameter (without the possibility of an init clause).
  
      Note that when merged with devildog, this will need to be tweaked slightly
      as the grammars are now different.
      Specifically, FormalParameter() will be FormalParameterIdentifier().
  
  Tests:
...............
  r7904 | dda | 2008-01-28 11:15:09 -0500 (Mon, 28 Jan 2008) | 43 lines
  
  Change 20080128-dda-A by dda at lester.local on 2008-01-28 10:27:08 EST
      in /Users/dda/laszlo/src/svn/openlaszlo/trunk-doc
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: doc: added ref pages for HTML elements and Media
  
  New Features:
  
  Bugs Fixed: LPP-4931 (partial), LPP-4932 (partial)
  
  Technical Reviewer: (pending)
  QA Reviewer: (pending)
  Doc Reviewer: liorio (pending)
  
  Documentation: 
  
  Release Notes:
  
  Details:
      Content for these items is not extracted from classes,
      like most of the other reference doc.  For example, there is no class
      to implement the HTML <br> tag.  The content for this was kept separately
      in files in the wrappers/ directory.  Since this was in a slightly different
      format, this change copies the needed content into a file 'wrappers.xml'
      in the new format, changes the build.xml to know about this new file.
      The table of contents is updated to reference the new entries, and the
      exposed 'TODO' has been removed from the navigation.  Some slight
      adjustment to the content to find the resources they need to work right.
      A small style sheet change was needed to address the issue of when
      there is no synopsis (like this content).
  
      The static (non-live) examples do not seem to be shown correctly, but
      that is a universal problem that will be dealt in another change.
  
      Also not included is the content for two font pages, LzAudio
      (need to hunt these down).  Also LzFontManager is currently (purposely)
      omitted.  This is currently marked as a private class, although it
      apparently has a legitimate use, discussion is ongoing.
      TODOs for these items left in comments in toc.xml, but not shown.
  
  Tests:
...............
  r7908 | dda | 2008-01-28 19:18:28 -0500 (Mon, 28 Jan 2008) | 32 lines
  
  Change 20080128-dda-8 by dda at lester.local on 2008-01-28 19:06:42 EST
      in /Users/dda/laszlo/src/svn/openlaszlo/trunk-doc
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: doc: Added vbox to table of contents, and alphabetized subsections of table of contents.
  
  New Features:
  
  Bugs Fixed: LPP-5367
  
  Technical Reviewer: (pending)
  QA Reviewer: (pending)
  Doc Reviewer: liorio (pending)
  
  Documentation:
  
  Release Notes:
  
  Details:
      vbox never went away, but somehow got deleted from TOC (table of contents).
      Since the TOC is 95% alphabetized within each subsection, it seemed bad not to keep it fully so.
      The ordering of the TOC is completely independent of anything else (the
      file is hand editted).
  
      The other part of the JIRA bug is to confirm the existence of new entries
      in the Components part of the TOC.  Their location and general status is
      noted in JIRA comments.  We'll need to decide if they are truly doc-worthy,
      and should be kept in the TOC.
  
  Tests:
...............
  r7913 | dda | 2008-01-29 11:44:10 -0500 (Tue, 29 Jan 2008) | 31 lines
  
  Change 20080129-dda-r by dda at lester.local on 2008-01-29 11:33:13 EST
      in /Users/dda/laszlo/src/svn/openlaszlo/trunk-doc
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: doc: remove FIXMEs from generated output
  
  New Features:
  
  Bugs Fixed: LPP-5152
  
  Technical Reviewer: (pending)
  QA Reviewer: (pending)
  Doc Reviewer: liorio (pending)
  
  Documentation:
  
  Release Notes:
  
  Details:
      FIXMEs appearing in documentation pointed to issues that needed to be addressed
      in lzx sources.  Many of them will be resolved when 'real' classes are made,
      some of them need special handling.  This change does two things:
      - instead of emitting FIXME, something a little more descriptive is shown:
       'has setter' means the attribute has a setter, but is not declared as a 'var' attribute.
       'unknown' means the attribute exists, but is not declared in a real class.
      - during the generation of the doc, warnings are generated so we are alerted to fix these
       problems; it doesn't require eyeballing the output to know about it. 
  
  Tests:
...............
  r7916 | bargull | 2008-01-29 15:56:54 -0500 (Tue, 29 Jan 2008) | 26 lines
  
  Change 20080128-bargull-8 by bargull at dell--p4--2-53 on 2008-01-28 23:55:40
      in /home/Admin/src/svn/openlaszlo/trunk
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: replace include-tag
  
  New Features:
  
  Bugs Fixed: LPP-5385 "alert-control misses include"
  
  Technical Reviewer: (pending)
  QA Reviewer: (pending)
  Doc Reviewer: (pending)
  
  Documentation:
  
  Release Notes:
  
  Details:
  replaced include of "windowpanel" with include of "modaldialog".
  
  
  Tests:
  see bugreport
...............
  r7919 | dda | 2008-01-29 16:38:11 -0500 (Tue, 29 Jan 2008) | 25 lines
  
  Change 20080129-dda-v by dda at lester.local on 2008-01-29 15:11:33 EST
      in /Users/dda/laszlo/src/svn/openlaszlo/trunk-doc
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: doc: brought 3.0 material into <debug> reference page
  
  New Features:
  
  Bugs Fixed: LPP-4636
  
  Technical Reviewer: promanik (pending)
  QA Reviewer: (pending)
  Doc Reviewer: liorio (pending)
  
  Documentation:
  
  Release Notes:
  
  Details:
      Added the text and the example from the old refguide into the javadoc for Debug.
      Removed the TODO from the toc.
  
  Tests:
...............
  r7928 | dda | 2008-01-30 12:19:23 -0500 (Wed, 30 Jan 2008) | 32 lines
  
  Change 20080130-dda-a by dda at lester.local on 2008-01-30 12:08:47 EST
      in /Users/dda/laszlo/src/svn/openlaszlo/trunk-doc
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: doc: expose some functions/events as public according to comments from API review. (partial fix)
  
  New Features:
  
  Bugs Fixed: LPP-5011
  
  Technical Reviewer: (pending)
  QA Reviewer: (pending)
  Doc Reviewer: liorio (pending)
  
  Documentation:
  
  Release Notes:
  
  Details:
      Using the comments from http://wiki.openlaszlo.org/LFC_API_review ,
      resolved some more issues.  Since there are dozens of issues on the
      page, it's a work in progress.  I don't claim that all the issues
      in the page are solved, only that they are resolved unless they are marked
      with the red 'OPEN' marker.  And yes, there are still many OPEN items.
      The OPEN ones will be continued to be fixed
      incrementally, and the JIRA bug will be kept unresolved through this process.
  
      Changes are to javadoc only, no code changes.
  
  Tests:
...............
  r7932 | hqm | 2008-01-30 22:40:02 -0500 (Wed, 30 Jan 2008) | 26 lines
  
  Change 20080130-hqm-0 by hqm at DADDY_THNKPAD67 on 2008-01-30 22:39:12 EST
      in /cygdrive/c/users/hqm/openlaszlo/trunk/test/smoke
      for http://svn.openlaszlo.org/openlaszlo/trunk/test/smoke
  
  Summary:  parseQueryString is now a class method
  
  New Features:
  
  Bugs Fixed:
  
  Technical Reviewer: dda
  QA Reviewer: ptw
  Doc Reviewer: (pending)
  
  Documentation:
  
  Release Notes:
  
  Details:
      
  LzParam.parseQueryString got moved to be a static class method
  
  
  Tests:
...............
  r7933 | ptw | 2008-01-31 07:25:53 -0500 (Thu, 31 Jan 2008) | 34 lines
  
  Change 20080125-ptw-x by ptw at dueling-banjos.local on 2008-01-25 15:41:02 EST
      in /Users/ptw/OpenLaszlo/ringding-2
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: Yet another try at solving stretches vs. clickable
  
  Bugs Fixed:
  LPP-5372 'Mouse events available for first 100 pixels on a stretched view'
  
  Technical Reviewer: hqm (message://<8c61fad60801301500w262fa19aq92cfcb6bd08011c@mail.gmail.com>)
  QA Reviewer: pkang (pending)
  
  Details:
      LzMakeLoadSprite: DON'T call updateResourceSize (which apparently
      papered over bugs in LzSprite, and now does the wrong thing).
      Don't inline parts of the code from LzSprite#set{Width,Height},
      which leads to skew; call them.
  
      LzSprite: Add an informative debugging name. Added a bunch of
      devnotes to document the secret inner workings of the Flash player
      that Adam apparently thougth were patently obvious.  Initialize
      resource{width,height}.  Make sure you have a clip to scale before
      you try to scale it.  Correct computation of scale for stretches
      when there is no resource supplied.  Correct the computation for
      scaling of button (clickable) to compensate for the parent clip
      being stretched.  Simplify computation of updateResourceSize.
  
      LzDebug: Make the movieclip debug printer more informative.  Print
      _width and _height of movieclip when inpsecting.
  
  Tests:
      Test cases from LPP-5372, 4661 (original and one in comments), 3726
...............



Property changes on: openlaszlo/branches/devildog
___________________________________________________________________
Name: svnmerge-integrated
   - /openlaszlo/branches/wafflecone:1-5746,5818-6068,6070-6205,6207-6213,6216-6265,6267-6368,6370-6431,6433-6450,6497 /openlaszlo/trunk:1-7878
   + /openlaszlo/branches/wafflecone:1-5746,5818-6068,6070-6205,6207-6213,6216-6265,6267-6368,6370-6431,6433-6450,6497 /openlaszlo/trunk:1-7933

Modified: openlaszlo/branches/devildog/WEB-INF/lps/lfc/compiler/LzRuntime.lzs
===================================================================
--- openlaszlo/branches/devildog/WEB-INF/lps/lfc/compiler/LzRuntime.lzs	2008-01-31 16:30:18 UTC (rev 7934)
+++ openlaszlo/branches/devildog/WEB-INF/lps/lfc/compiler/LzRuntime.lzs	2008-01-31 16:30:37 UTC (rev 7935)
@@ -80,11 +80,32 @@
   var Debug;
 
   /**
-    * Automatically created when an application is
-    * compiled in debug mode (requested by either using the
-    * <xref linkend="LzCanvas"/> <code>debug='true'</code> attribute or by loading the
-    * application using the <code>?debug=true</code> option).
+    * The <tagname>debug</tagname> tag controls the initial appearance
+    * and options of the debugger when debugging is enabled.  Debugging is
+    * enabled either by including the <code>debug="true"</code> option on
+    * the <xref linkend="LzCanvas"><tagname>canvas</tagname></xref> tag,
+    * or adding the <code>?debug=true</code> query argument to the
+    * application's URL.
     *
+    * <example title="debug tag"><programlisting><![CDATA[
+    * <canvas debug="true" height="120">
+    *   <debug width="300" height="50" x="5" y="5" fontsize="8"/>
+    *   <script>
+    *   Debug.write("Hello world!");
+    *   Debug.warn('This is a hotlink: %w', {a: 1, b: 2});
+    *   </script>
+    * </canvas>]]>
+    * </programlisting></example>
+    *
+    *
+    * The debug tag controls the appearance of the debugger when
+    * debugging is on. It does not cause the application to be
+    * compiled with debugging mode enabled. Only the debug option on
+    * the canvas and the debug query parameter of the URL do this.
+    *
+    * For more information, see the
+    * <a href="${dguide}debugging.html">Debugging</a> chapter of the Guide.
+    *
     * @shortdesc The Laszlo debugger
     * @keywords private_constructor
     * @access public

Modified: openlaszlo/branches/devildog/WEB-INF/lps/lfc/core/LzNode.lzs
===================================================================
--- openlaszlo/branches/devildog/WEB-INF/lps/lfc/core/LzNode.lzs	2008-01-31 16:30:18 UTC (rev 7934)
+++ openlaszlo/branches/devildog/WEB-INF/lps/lfc/core/LzNode.lzs	2008-01-31 16:30:37 UTC (rev 7935)
@@ -1629,6 +1629,7 @@
     this.options[ key ] = val;
 }
 
+// The access for doc is public, since it is referred to several times in doc
 /**
   * Determines the immediateparent for a subnode whose parent is this node.
   * This method will only be called for subnodes which have a placement
@@ -1641,11 +1642,11 @@
   * A subclass might implement this method to cause the "placement" parameter
   * to have a different behavior or additional effects.
   *
-  * Note that this function is not currently designed to be called by anyone but
+  * <note>This function is not currently designed to be called by anyone but
   * LzNode.construct. Do not expect to be able to 'place' a view properly after
-  * it has been constructed.
+  * it has been constructed.</note>
   *
-  * @access private
+  * @access public
   * @param LzNode aSub: The new subnode
   * @param String placement: The placement attribute for the new subnode
   * @param dictionary args: The initialization args for the new subnode

Modified: openlaszlo/branches/devildog/WEB-INF/lps/lfc/data/LzDataset.lzs
===================================================================
--- openlaszlo/branches/devildog/WEB-INF/lps/lfc/data/LzDataset.lzs	2008-01-31 16:30:18 UTC (rev 7934)
+++ openlaszlo/branches/devildog/WEB-INF/lps/lfc/data/LzDataset.lzs	2008-01-31 16:30:37 UTC (rev 7935)
@@ -120,6 +120,8 @@
 
 var postbody = null;
 
+var src = null;
+
 /** When true, the server will accept
   * encoded responses for this request.  
   * Encoded responses require more work for the LPS (encoding the 
@@ -455,10 +457,7 @@
 
 /**
   * Sets the src attribute of the data request.
-  * Calling this method will cause any pre-existing query arguments to be discarded.
-  * If a query string is contained in the src argument, it will be used to
-  * set the query arguments of the current request.
-  * @param String src: A new src for data request.
+  * @param String src: A new src URL for data request.
 
   Need to handle these cases
   http:foo.html
@@ -469,12 +468,8 @@
   
   */
 
-
 function setSrc( src ) {
-    var url = new LzURL(src);
-    this.querystring = url.query;
-    url.query = null;
-    this.src = url.toString();
+    this.src = src;
     if ( this.autorequest ){
         this.doRequest() ;
     }
@@ -593,6 +588,38 @@
 }
 
 /**
+   Produce a hash table of key-value pairs.
+   In the case of a duplicated key, creates an array of values.
+*/
+static function queryStringToTable ( query ) {
+  var queries = {};
+  var parameters = query.split('&');
+  for (var i in parameters) {
+    var key = parameters[i];
+    var value = '';
+    var n = key.indexOf('=');
+    if (n > 0) {
+      value = unescape(key.substring(n+1));
+      key = key.substring(0, n);
+    }
+    if (key in queries) {
+        var prev = queries[key];
+        if (prev instanceof Array) {
+            prev.push(value);
+        } else {
+            value = [prev, value];
+            queries[key] = value;
+        }
+    } else {
+        queries[key] = value;
+    }
+  }
+  return queries;
+}
+
+
+
+/**
   * Does a request immediately using the current values.  If autorequest is true,
   * this method is called automatically when values change.
   */
@@ -612,10 +639,21 @@
     dreq.status  = dreq.READY;
     dreq.method = this.querytype;
 
-    // For back compatibility with 'lzpostbody'
+    // If this.querystring is set, use it as the source of param
+    // values. Note, this is independent of the query portion of the
+    // this.src URL. 
+    if (this.querystring) {
+        dreq.queryparams = new LzParam(this);
+        dreq.queryparams.addObject(LzParam.parseQueryString(this.querystring));
+    } else {
+        // otherwise, use the this.params value
+        dreq.queryparams = this.params;
+    }
+
+    // Support for 'lzpostbody'
     var lzpostbody = null;
-    if (this.params) {
-        lzpostbody = this.params.getValue('lzpostbody');
+    if (dreq.queryparams) {
+        lzpostbody = dreq.queryparams.getValue('lzpostbody');
     }
     if (lzpostbody != null) { 
         dreq.postbody = lzpostbody;
@@ -625,13 +663,6 @@
 
     // TODO [hqm 2007-08] does this interact with 'multirequests' flag?
     dreq.queuerequests      = this.queuerequests;
-    
-    dreq.queryparams        = this.params;
-
-    // TODO [hqm 2007-08] We didn't put 'querystring' in the dataprovider spec, should
-    // it be merged into queryparams somehow? 
-    dreq.querystring        = this.querystring;
-
     dreq.requestheaders     = this.headers;
     dreq.getresponseheaders = this.getresponseheaders;
 

Modified: openlaszlo/branches/devildog/WEB-INF/lps/lfc/data/LzHTTPDataProvider.lzs
===================================================================
--- openlaszlo/branches/devildog/WEB-INF/lps/lfc/data/LzHTTPDataProvider.lzs	2008-01-31 16:30:18 UTC (rev 7934)
+++ openlaszlo/branches/devildog/WEB-INF/lps/lfc/data/LzHTTPDataProvider.lzs	2008-01-31 16:30:37 UTC (rev 7935)
@@ -1,6 +1,6 @@
 /**
   *
-  * @copyright Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.
+  * @copyright Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.
   *            Use is subject to license terms.
   *
   * @access public
@@ -125,69 +125,70 @@
         }
 
         var qparams = dreq.queryparams;
-        var querystring = dreq.querystring;
 
-        // Append query params and query string into single query string
-        //Debug.debug('calling doRequest', this);
+        // Convert queryparams table into a URL-encoded query-style string
         var sep = '';
-        var q = '?';
+        var q = '';
         
-        var lzpostbody = dreq.postbody;
-
-
-        if (qparams != null) {
+        // If an explicit post body content arg wasn't supplied, make
+        // a url-form-encoded string from the queryparams data.
+        var postbody = dreq.postbody;
+        if (postbody == null && qparams != null) {
             var names = qparams.getNames();
             for ( var i in names ){
                 var name = names[i];
-                // Strip out special case key "lzpostbody", it declares a raw
-                // string content to post.
-                if (!proxied && name == 'lzpostbody') {
-                    lzpostbody = qparams.getValue(name);
-                } else {
-                    q += sep + name + '=' + encodeURIComponent(qparams.getValue(name));
-                    sep = '&';
-                }
+                q += sep + name + '=' + encodeURIComponent(qparams.getValue(name));
+                sep = '&';
             }
+            postbody = q;
         }
 
-        if (querystring != null && querystring.length > 0) {
-            q += sep + querystring;
-        }
-
-        var url = dreq.src
-            if (q == "?") {
-                // don't add empty args list
+        var lzurl = new LzURL(dreq.src);
+        
+        // For GET requests, merge in params data with URL query 
+        if (dreq.method == "GET") {
+            if (lzurl.query != null) {
+                lzurl.query = lzurl.query + "&" + postbody;
             } else {
-                // if there are already query args in the url, separate them with a '&'
-                if (url.indexOf('?') >= 0) {
-                    url = url + "&" + q.substring(1);
-                } else {
-                    url = url + q;
-                }
+                lzurl.query = postbody;
             }
+            postbody = null;
+        }
 
+        var cachebreak = "__lzbc__="+(new Date()).getTime();
+        // convert url back to string
+        url = lzurl.toString();
+        var url;
         if (proxied) {
             // TODO [hqm 2007-08-03] make the API for makeProxiedURL take an explicit host arg,
             // so we can set the proxy from user code
-            url = tloader.makeProxiedURL(url, dreq.method, "xmldata" , headers);
+            url = tloader.makeProxiedURL(url, dreq.method, "xmldata" , headers, postbody);
+            // We need to move the proxy string query data to the
+            // postbody, can't leave it in the URL string, it could be
+            // arbitrarily long.
+            var marker = url.indexOf('?');
+            var uquery = url.substring(marker+1, url.length);
+            var url_noquery = url.substring(0,marker);
+            url = url_noquery + '?' + cachebreak;
+            postbody = uquery;
+            //Debug.write("proxied req url: ", url, ', postbody: ',postbody)
         }  else {
-            // break the browser cache by creating an arg with a unique value
+            // break the browser cache by adding a unique string to the url
             if (!dreq.clientcacheable) {
-                var cachebreak = "__lzbc__="+(new Date()).getTime();
-                if (url.indexOf('?') >= 0) {
-                    url = url + "&" + cachebreak;
+                if (lzurl.query == null) {
+                    lzurl.query = cachebreak;
                 } else {
-                    url = url + "?" + cachebreak;
+                    lzurl.query += ("&" + cachebreak);
                 }
             }
-        }
 
-
+            url = lzurl.toString();
+        }
    
         dreq.status =  "loading";
         //Debug.write("calling tloader.open", proxied ? "POST" : dreq.method, url, "dreq.method=", dreq.method);
         tloader.open ( proxied ? "POST" : dreq.method, url, /* username */ null, /* password */ null);
-        tloader.send (/* content */ lzpostbody);
+        tloader.send (/* content */ postbody);
     }
 
     function loadSuccess ( loader, data ) { 
@@ -283,17 +284,8 @@
     var multirequest = false;
     var queuerequests = false;
 
-    // String value for single valued param.
-    // queryParams["aKey"] = "oneValue";
-    // Array value for a multi-value param
-    // queryParams["aKey"] = [ "value1", "value2", "value3" ]
-
     var queryparams = null; // : LzParam object
 
-    // TODO [hqm 2007-08] querystring should be merged with query params by the caller (lzdataset)
-    // I think..
-    var querystring = ''; // : String  
-
     var requestheaders = null; // : LzParam object
 
     var getresponsheaders = false;

Modified: openlaszlo/branches/devildog/WEB-INF/lps/lfc/data/LzParam.lzs
===================================================================
--- openlaszlo/branches/devildog/WEB-INF/lps/lfc/data/LzParam.lzs	2008-01-31 16:30:18 UTC (rev 7934)
+++ openlaszlo/branches/devildog/WEB-INF/lps/lfc/data/LzParam.lzs	2008-01-31 16:30:37 UTC (rev 7935)
@@ -1,6 +1,6 @@
 /**
   *
-  * @copyright Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.
+  * @copyright Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.
   *            Use is subject to license terms.
   *
   * @access public
@@ -59,7 +59,7 @@
   * Parse a URL query string, returns an object with key-value pairs
   * @return Object
   */
-function parseQueryString ( query ) {
+static function parseQueryString ( query ) {
   var parameters = query.split('&');
   var queries = {};
   for (var i in parameters) {

Modified: openlaszlo/branches/devildog/WEB-INF/lps/lfc/debugger/platform/swf/LzDebug.as
===================================================================
--- openlaszlo/branches/devildog/WEB-INF/lps/lfc/debugger/platform/swf/LzDebug.as	2008-01-31 16:30:18 UTC (rev 7934)
+++ openlaszlo/branches/devildog/WEB-INF/lps/lfc/debugger/platform/swf/LzDebug.as	2008-01-31 16:30:37 UTC (rev 7935)
@@ -13,7 +13,29 @@
 //
 // shut up the dumb doc tool
 /** @access private */
-MovieClip.prototype._dbg_name = function () { return String(this); };
+MovieClip.prototype._dbg_name = function () {
+  // clip scales are in percent
+  var xs = this._xscale/100;
+  var ys = this._yscale/100;
+  // Describe the clip's actual dimensions, and the 2d transform
+  // representing the x/y offset and scaling.  This is available
+  // directly in Flash 8 and above.
+  var m = this.transform.matrix;
+  if (m) {
+    return Debug.formatToString("%s [%0.2d x %0.2d]*[%0.2d %0.2d %0.2d, %0.2d %0.2d %0.2d, 0 0 1]",
+                                String(this),
+                                this._width/xs, this._height/ys,
+                                m.a, m.b, m.tx,
+                                m.c, m.d, m.ty);
+  } else {
+    // TODO: [2008-01-30 ptw] Rotation in swf7
+    return Debug.formatToString("%s [%0.2d x %0.2d]*[%0.2d 0 %0.2d, 0 %0.2d %0.2d, 0 0 1]",
+                                String(this),
+                                this._width/xs, this._height/ys,
+                                xs, this._x,
+                                ys, this._y)
+  }
+};
 
 (function () {
   // Make SWF player native prototypes print nicely
@@ -526,9 +548,8 @@
   if (si) {
     // print 'invisible' properties of MovieClip's
     if (obj instanceof MovieClip) {
-      for (var p in {_x: 0, _y: 0, _visible: true, _xscale: 100,
-                     _yscale: 100, _opacity: 100, _rotation: 0,
-                     _currentframe: 1}) {
+      for (var p in {_x: 0, _y: 0, _width: 0, _xscale: 100, _height: 0, _yscale: 100,
+            _visible: true, _opacity: 100, _rotation: 0, _currentframe: 1}) {
         names.push(p);
       }
     }
@@ -646,7 +667,7 @@
 }
 
 //* A_LZ_COPYRIGHT_BEGIN ******************************************************
-//* Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.            *
+//* Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.            *
 //* Use is subject to license terms.                                          *
 //* A_LZ_COPYRIGHT_END ********************************************************
 

Modified: openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/dhtml/LzHTTPLoader.js
===================================================================
--- openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/dhtml/LzHTTPLoader.js	2008-01-31 16:30:18 UTC (rev 7934)
+++ openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/dhtml/LzHTTPLoader.js	2008-01-31 16:30:37 UTC (rev 7935)
@@ -1,7 +1,7 @@
 /**
   * LzHTTPLoader.js
   *
-  * @copyright Copyright 2007 Laszlo Systems, Inc.  All Rights Reserved.
+  * @copyright Copyright 2007, 2008 Laszlo Systems, Inc.  All Rights Reserved.
   *            Use is subject to license terms.
   *
   * @topic Kernel
@@ -136,7 +136,7 @@
 //   @param String url: url, including query args
 //   @param  String reqtype: 'POST' or 'GET'
 //   @param Object headers: hash table of HTTP request headers
-    LzHTTPLoader.prototype.makeProxiedURL = function ( url,  reqtype, lzt, headers) {
+    LzHTTPLoader.prototype.makeProxiedURL = function ( url,  reqtype, lzt, headers, postbody) {
     var proxyurl = LzBrowser.getBaseURL( );
 
     var qargs = {
@@ -151,6 +151,12 @@
         ccache: this.options.ccache
     };
 
+    //If a postbody string is supplied, pass it to the proxy server as 'lzpostbody' arg.
+    if (postbody != null) {
+        qargs.lzpostbody = postbody;
+    }
+
+
     // Set HTTP headers
     var hname;
     var headerString = "";

Modified: openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf/LzHTTPLoader.as
===================================================================
--- openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf/LzHTTPLoader.as	2008-01-31 16:30:18 UTC (rev 7934)
+++ openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf/LzHTTPLoader.as	2008-01-31 16:30:37 UTC (rev 7935)
@@ -1,7 +1,7 @@
 /**
   * LzHTTPLoader.as
   *
-  * @copyright Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.
+  * @copyright Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.
   *            Use is subject to license terms.
   *
   * @topic Kernel
@@ -169,7 +169,8 @@
 //   @param  String reqtype: 'POST' or 'GET'
 //   @param  String lzt: LPS server Responder type, default is "xmldata"
 //   @param Object headers: hash table of HTTP request headers
-LzHTTPLoader.prototype.makeProxiedURL = function ( url,  reqtype, lzt, headers) {
+//   @param String postbody: optional, post body content
+LzHTTPLoader.prototype.makeProxiedURL = function ( url,  reqtype, lzt, headers, postbody) {
     var proxyurl = LzBrowser.getBaseURL( );
     var qargs = {
         lzt: (lzt != null) ? lzt : "xmldata",
@@ -182,6 +183,11 @@
         cache: this.options.cacheable,
         ccache: this.options.ccache
     };
+
+    //If a postbody string is supplied, pass it to the proxy server as 'lzpostbody' arg.
+    if (postbody != null) {
+        qargs.lzpostbody = postbody;
+    }
             
     // Set HTTP headers
     var hname;

Modified: openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf/LzLoadQueue.as
===================================================================
--- openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf/LzLoadQueue.as	2008-01-31 16:30:18 UTC (rev 7934)
+++ openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf/LzLoadQueue.as	2008-01-31 16:30:37 UTC (rev 7935)
@@ -1,7 +1,7 @@
 /**
   * LzLoadQueue.as
   *
-  * @copyright Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.
+  * @copyright Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.
   *            Use is subject to license terms.
   *
   * @topic Kernel
@@ -428,78 +428,99 @@
     
     //
     /*
-      We need to reparse the query string out of the url, in order to
-      set up a LoadVars object with attributes corresponding to the query args.
+      [1] If request is PROXIED, send the URL as given, with query string stripped off,
+      parsed, and each arg is set as a property on the LoadVar object.
 
-      If request is proxied, just send everything via POST
+      [2] If request is SOLO:
 
-      if SOLO,
-         check if loadobj.rawpostbody exists: 
-            if yes, send XML POST of raw data as TextNode
-         else
-             send LoadVars POST or GET request with base url 
+          [3] If it is a GET request, send URL as given with query string stripped off,
+          parsed, and each arg is set as a property on the LoadVar object.
 
+          [4] If it is a POST request, send to URL as given including query string.
+            take the rawpostbody property from loadobj, parse it, and set as properties
+            on the LoadVars object. This is as close as we can get to doing a POST.
+
+            We can't really post an arbitrary raw data string. The best we could do would
+            be to use XML sendAndLoad with a single  XML child text node, but that still
+            XML-escapes the text, so it isn't really much use.
+
     */
 
-    // We're loading an XML data object.
-    // Look for optional CGI query args string
-    // We are going to send the data up using LoadVars.sendAndLoad().
-    // We fill in this LoadVars object with any query args. 
-
     var url = loadobj.url;
+    var url_noquery = url;
     var lvar = new LoadVars();
-    //Fix up URL: [A] strip and parse out query args, add them as
-    //properties to LVAR (the LoadVars object)
+    var solo = !loadobj.proxied;
+
     var marker = url.indexOf('?');
     var uquery = "";
     
-    if (marker != -1) {
-        uquery = url.substring(marker+1, url.length);
-        url = url.substring(0,marker);
+    // If it's proxied, or a SOLO GET, strip the query args from URL and set them as
+    // properties on LoadVars obj
+    if (loadobj.proxied || !dopost) {
+        if (marker != -1) {
+            uquery = url.substring(marker+1, url.length);
+            url_noquery = url.substring(0,marker);
 
-        var uitems = LzParam.prototype.parseQueryString(uquery);
-        for ( var key in uitems) {
-            lvar[key] = uitems[key];
+            var uitems = LzParam.parseQueryString(uquery);
+            for ( var key in uitems) {
+                lvar[key] = uitems[key];
+            }
         }
     }
 
     // convert base url to absolute path, otherwise Flash is not happy
-    var reqstr = LzBrowser.toAbsoluteURL( url, loadobj.secure );
+    var reqstr;
 
-    // request methodcases:
-    // PROXIED: always POST to LPS server
-    // SOLO: GET, POST,  (and lzpostbody special case of POST with raw content)
+    if (solo && dopost) {
+        // For a SOLO POST, request the complete URL including query args
+        reqstr = LzBrowser.toAbsoluteURL( loadobj.url, loadobj.secure );
+    } else {
+        // otherwise, get the url with the query string trimmed off
+        reqstr = LzBrowser.toAbsoluteURL( url_noquery, loadobj.secure );
+    }
+
     if (loadobj.proxied) {
+        // PROXY request: proxy parameters have been stored on
+        // rawpostbody, get them out and attach them to the LoadVars
+        // obj, to POST to LPS proxy server.
+
+        var lzpostbody = loadobj.rawpostbody;
+        // Copy the postbody data onto the LoadVars, it will be POST'ed
+        var pdata = LzParam.parseQueryString(lzpostbody);
+        for ( var key in pdata) {
+            lvar[key] = pdata[key];
+        }
+
         lvar.sendAndLoad(reqstr , loadobj, "POST" );
     } else {
-        // get request headers from loader
+        // SOLO request:
+
+        // Set any specified request headers
         var header;
         var headers = loadobj.loader.requestheaders;
 
-        // SOLO load
-        if (dopost) {
+        if (!dopost) {
+            // For a GET request, all query args have been placed on
+            // the lvar object already.
+            for ( header in headers) {
+                lvar.addRequestHeader(header, headers[header]);
+            }
+            //Debug.write("GET", reqstr);
+            lvar.sendAndLoad(reqstr , loadobj, "GET" );
+        } else {
             //Debug.write("POST", reqstr);
-            var lzpostbody = loadobj.rawpostbody
-            if (lzpostbody != null) {
-                var xmlraw = new XML();
-                var tnode = xmlraw.createTextNode(lzpostbody);
-                xmlraw.appendChild(tnode);
-                for ( header in headers) {
-                    xmlraw.addRequestHeader(header, headers[header]);
-                }
-                xmlraw.sendAndLoad(reqstr, loadobj);
-            } else {
-                for ( header in headers) {
-                    lvar.addRequestHeader(header, headers[header]);
-                }
-                lvar.sendAndLoad(reqstr , loadobj, "POST" );
+            var lzpostbody = loadobj.rawpostbody;
+            // Copy the postbody data onto the LoadVars, it will be POST'ed
+            var pdata = LzParam.parseQueryString(lzpostbody);
+            for ( var key in pdata) {
+                lvar[key] = pdata[key];
             }
-        } else {
+            
             for ( header in headers) {
                 lvar.addRequestHeader(header, headers[header]);
             }
-            //Debug.write("GET", reqstr);
-            lvar.sendAndLoad(reqstr , loadobj, "GET" );
+            //Debug.write("POST", reqstr);
+            lvar.sendAndLoad(reqstr , loadobj , "POST");
         }
     }
 }

Modified: openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf/LzMakeLoadSprite.as
===================================================================
--- openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf/LzMakeLoadSprite.as	2008-01-31 16:30:18 UTC (rev 7934)
+++ openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf/LzMakeLoadSprite.as	2008-01-31 16:30:37 UTC (rev 7935)
@@ -36,6 +36,13 @@
         }
     }
 
+//     Debug.trace(v, 'setHeight');
+//     Debug.trace(v, 'setWidth');
+//     Debug.monitor(v, 'resourcewidth')
+//     Debug.monitor(v, 'resourceheight')
+//     Debug.monitor(v, '_xscale')
+//     Debug.monitor(v, '_yscale')
+    
     v.firstsrc = src;
     v.firstcache = cache;
     v.firstheaders = headers;
@@ -52,6 +59,12 @@
         v.makeContainerResource();
         if (! this.loader) v.createLoader();
     }
+
+//     var mc = v.__LZmovieClipRef;
+//     Debug.debug(mc, '_width', mc._width);
+//     Debug.debug(mc, '_height', mc._height);
+//     Debug.debug(mc, '_xscale', mc._xscale);
+//     Debug.debug(mc, '_yscale', mc._yscale);
 }
     
 /**
@@ -146,6 +159,12 @@
         }
         //this.updateAfterLoad();
     }
+
+//     var mc = this.__LZmovieClipRef;
+//     Debug.debug(mc, '_width', mc._width);
+//     Debug.debug(mc, '_height', mc._height);
+//     Debug.debug(mc, '_xscale', mc._xscale);
+//     Debug.debug(mc, '_yscale', mc._yscale);
 }
 
 //handle error
@@ -174,21 +193,9 @@
     if ( this.totalframes > 1 ){
         this.checkPlayStatus();
     }
-    this.updateResourceSize(); 
-    if ( this._setrescheight ){
-        var yscale = this.height/this.resourceheight;
-        this.__LZmovieClipRef._yscale = yscale * 100;
-    }
-    if ( this._setrescwidth ){
-        var xscale =this.width/this.resourcewidth;
-        this.__LZmovieClipRef._xscale = xscale * 100;
-    }
-    if (this.setButtonSize)
-        this.setButtonSize( "height" , this.height );
-    if (this.setButtonSize)
-        this.setButtonSize( "width" , this.width );
 
-    //Debug.write(xscale, yscale, this);
+    this.setHeight(this.hassetheight?this.height:null);
+    this.setWidth(this.hassetwidth?this.width:null);
 
     this.owner.__LZvizLoad = true; 
     this.owner.__LZupdateShown();

Modified: openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf/LzSprite.as
===================================================================
--- openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf/LzSprite.as	2008-01-31 16:30:18 UTC (rev 7934)
+++ openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf/LzSprite.as	2008-01-31 16:30:37 UTC (rev 7935)
@@ -1,3 +1,4 @@
+/* -*- mode: JavaScript; c-basic-offset: 4; -*- */
 /**
   * LzSprite.as
   *
@@ -8,6 +9,9 @@
   * @subtopic AS2
   */
 
+{
+#pragma "warnUndefinedReferences=false"
+
 var LzSprite = function(newowner, isroot, args) {
     if (newowner == null) return this;
     this.owner = newowner;
@@ -33,6 +37,20 @@
     }
 }
 
+/** @access private */
+LzSprite.prototype._dbg_name = function () {
+  var xs = this._xscale;
+  var ys = this._yscale;
+  // Describe the sprite's actual dimensions, and the 2d transform
+  // representing the x/y offset and scaling
+  // TODO: [2008-01-30 ptw] Factor rotation into transform
+  return Debug.formatToString("%s [%0.2d x %0.2d]*[%0.2d 0 %0.2d, 0 %0.2d %0.2d, 0 0 1]",
+                              String(this),
+                              this.width/xs, this.height/ys,
+                              xs, this.x,
+                              ys, this.y)
+};
+
 LzSprite.prototype.capabilities = {
     rotation: true
     // Avoid scaling canvas to percentage values - SWF already scales the viewport size, so take window size literally to avoid scaling twice
@@ -162,12 +180,27 @@
 LzSprite.prototype.x =   0;
 LzSprite.prototype.y =   0;
 LzSprite.prototype.rotation =   0;
+// @devnote The various built-in resources (the empty clip, the bg
+// clip, the button clip) are 100px square, so the clip scale (which
+// is a percentage) can be set directly to the dimension.  This is an
+// optimization of <scale in %> = ( <desired dim in px> / <resource
+// dim in px> ) * 100.  (Effectively, the built-in resources are
+// always 'stretched', but see LzSprite#_xscale).  When an explicit
+// resource is assigned, unless stretching is specified, the clip
+// takes it's dimensions from the resource and there is no scaling.
 LzSprite.prototype.width =   0;
 LzSprite.prototype.height =   0;
 LzSprite.prototype.__LZclickregion =  "LzMouseEvents";
 
+// @devnote Sprite scale is stored as a fraction, but the runtime clip
+// scale is a percentage.  Note: this scale is only maintained when
+// stretching is specified.  The scaling of the empty resource to
+// achieve the dimensions of the view is _not_ considered scaling,
+// unless stretches is specified.
 LzSprite.prototype._xscale =   1;
 LzSprite.prototype._yscale =   1;
+LzSprite.prototype.resourceheight = 0;
+LzSprite.prototype.resourcewidth = 0;
 
 //@field Number totalframes: The total number of frames for this view's
 //resource.
@@ -434,6 +467,7 @@
     var mc = this.__LZmovieClipRef.attachMovie( "swatch", "$b" + this.__LZsubUniqueNum, depth );
     childsprite.__LZbgRef = mc;
 
+    // @devnote See note at LzSprite#width for why this is correct
     childsprite.__LZbgRef._xscale = childsprite.width;
     childsprite.__LZbgRef._yscale = childsprite.height;
 
@@ -561,13 +595,15 @@
   * @param Number v: The new value for the width
   */
 LzSprite.prototype.setWidth = function ( v ){
-    //if (this.owner.id == 'photoscontainer') Debug.write('LzSprite.setWidth', this, v, this.hassetwidth);
-
+    if (this.__LZmovieClipRef == null){
+        this.makeContainerResource( );
+    }
     if ( v == null ){
         this.hassetwidth = false;
         if ( this._setrescwidth ){
             // defaults
             this._xscale = 1;
+            // clip scale is in percent
             this.__LZmovieClipRef._xscale =  100;
         }
         return;
@@ -576,12 +612,20 @@
 
     if ( this.owner.pixellock ) v = Math.floor( v );
     if ( this._setrescwidth ){
-        var xscale = this.resourcewidth == 0 ? 100 : v/this.resourcewidth;
+        // <scale as fraction> = ( <desired dim in px> / <resource dim
+        // in px> ) Note the empty resource is a 100x100px clip
+        var xscale = ((this.resourcewidth == 0) ? (v/100) : (v/this.resourcewidth));
         this._xscale = xscale;
+        // clip scale is in percent
         this.__LZmovieClipRef._xscale = xscale * 100;
         if (this.__LZrightmenuclip) this.__LZrightmenuclip._xscale = xscale * 100;
     } else {
         // If the view does not stretch, we have to resize the mask
+        // NOTE: [2008-01-24 ptw] This seems wrong.  If the view is
+        // masked, the mask is attached as a child of the resource so
+        // it will scale properly, and only its dimensions are set.
+        // BUT, I probably don't understand Flash movies. It seems
+        // that setting scale or dimension are interchangable?
         if ( this.masked ){
             this.__LZmaskClip._xscale = v;
         }
@@ -605,11 +649,15 @@
   * @param Number v: The new value for the height
   */
 LzSprite.prototype.setHeight = function ( v ){
+    if (this.__LZmovieClipRef == null){
+        this.makeContainerResource( );
+    }
     if ( v == null ){
         this.hassetheight = false;
         if ( this._setrescheight ){
             // defaults
             this._yscale = 1;
+            // clip scale is in percent
             this.__LZmovieClipRef._yscale =  100;
         }
         return;
@@ -618,15 +666,22 @@
 
     if ( this.owner.pixellock ) v = Math.floor( v );
     if ( this._setrescheight ){
-        var yscale = this.resourceheight == 0 ? 100 : v/this.resourceheight;
+        // <scale as fraction> = ( <desired dim in px> / <resource dim
+        // in px> ) Note the empty resource is a 100x100px clip
+        var yscale = ((this.resourceheight == 0) ? (v/100) : (v/this.resourceheight));
         this._yscale = yscale;
+        // clip scale is in percent
         this.__LZmovieClipRef._yscale = yscale * 100;
         if (this.__LZrightmenuclip) this.__LZrightmenuclip._yscale = yscale * 100;
     } else {
         // If the view does not stretch, we have to resize the mask
+        // NOTE: [2008-01-24 ptw] This seems wrong.  If the view is
+        // masked, the mask is attached as a child of the resource so
+        // it will scale properly, and only its dimensions are set.
+        // BUT, I probably don't understand Flash movies. It seems
+        // that setting scale or dimension are interchangable?
         if ( this.masked ){
-            if (this.__LZmaskClip && typeof(this.__LZmaskClip._yscale) != 'undefined')
-                this.__LZmaskClip._yscale = v;
+            this.__LZmaskClip._yscale = v;
         }
         if (this.__LZrightmenuclip) this.__LZrightmenuclip._yscale = v;
     }
@@ -665,14 +720,21 @@
   * Since a view does not re-measure the size of its resource once that resource
   * has loaded, this method is provided to force the view to update its size, 
   * taking into account the current size of its resource. 
+  *
+  * @devnote [2008-01-25 ptw] I am not convinced that this works in
+  * all cases because I am not sure that the Sprite scale always
+  * tracks the clip scale (c.f., the implementtation of stretches), in
+  * particular, this does not work when called from
+  * LzMakeLoadSprite.updateAfterLoad because the Sprite scale will
+  * reflect the scale of the empty clip being sized to the view
+  * (before the load started) and what we really want is the size of
+  * the loaded resource.
   */
 LzSprite.prototype.updateResourceSize = function ( ){
-    this.__LZmovieClipRef._xscale = 100;
-    this.__LZmovieClipRef._yscale = 100;
-    this.resourcewidth = this.__LZmovieClipRef._width;
-    this.resourceheight = this.__LZmovieClipRef._height;
-    this.__LZmovieClipRef._xscale = this._xscale * 100;
-    this.__LZmovieClipRef._yscale = this._yscale * 100;
+    var mc = this.__LZmovieClipRef;
+    // Get the true size by unscaling. Note: clip scale is in percent
+    this.resourcewidth = mc._width/(mc._xscale/100);
+    this.resourceheight = mc._height/(mc._yscale/100);
     this.owner.resourceload({width: this.resourcewidth, height: this.resourceheight, resource: this.resource, skiponload: true});
 }
 
@@ -834,16 +896,18 @@
 
 /**
   * @access private
+  *
+  * @devnote The button is a is a child of the view resource (either
+  * explicit or the empty resource), so will be scaled by any scale
+  * that the resource has.  To size the button resource (which is
+  * 100px square) to the view, you would normally just set its scale
+  * to the view dimension (see note at LzSprite#width), but you have
+  * to also invert its parent's scale (which is a percent) hence the
+  * (100 / <parent scale>) factor.
   */
 LzSprite.prototype._setButtonSize = function ( axis , bsize ){
     var sc ="_" + ( axis =="width" ? "x" : "y" ) + "scale" ;
-    if ( this[ "_setresc" + axis ] && this[ 'hasset' + axis ]){
-        var resdim = this.__LZmovieClipRef[ "_" + axis ];
-        if (resdim == 0) { resdim = 100; }
-        this.__LZbuttonRef[ sc ] = resdim / ( this.__LZmovieClipRef[ sc ] / 100 ) ;
-    } else {
-        this.__LZbuttonRef[ sc ] = ( 100 / this.__LZmovieClipRef[ sc ] ) * bsize;
-    }
+    this.__LZbuttonRef[ sc ] = ( 100 / this.__LZmovieClipRef[ sc ] ) * bsize;
 }
 
 /**
@@ -1624,3 +1688,4 @@
     //Debug.write('__lostFocus');
     if (this.__lzview.hasFocus) LzFocus.clearFocus();
 }
+}

Modified: openlaszlo/branches/devildog/WEB-INF/lps/lfc/views/LaszloView.lzs
===================================================================
--- openlaszlo/branches/devildog/WEB-INF/lps/lfc/views/LaszloView.lzs	2008-01-31 16:30:18 UTC (rev 7934)
+++ openlaszlo/branches/devildog/WEB-INF/lps/lfc/views/LaszloView.lzs	2008-01-31 16:30:37 UTC (rev 7935)
@@ -90,7 +90,8 @@
   * @access public
   */
 var onfocus = LzDeclaredEvent;   // From LzFocus
-/** @lzxtype event
+/** Sent onidle while view is playing its resource
+  * @lzxtype event
   * @access public
   */   
 var onframe = LzDeclaredEvent;
@@ -122,7 +123,10 @@
   * @lzxtype event
   */
 var onkeydown = LzDeclaredEvent; // From LzFocus
-/** @lzxtype event
+/** Sent when the view sets its frame (resource number) to the last
+  * frame. This can be used to find out when a streaming media clip is
+  * done playing.
+  * @lzxtype event
   * @access public
   */
 var onlastframe = LzDeclaredEvent;
@@ -132,19 +136,18 @@
 var onload = LzDeclaredEvent;
 
 /** @lzxtype event
-  * @access private
+  * @access public
   */
 var onloadperc = LzDeclaredEvent;
 
-/** <event>onerror</event>: Sent when there is an error loading the view's resource.
+/** Sent when there is an error loading the view's resource.
   * The argument sent with the event is the error string sent by the server.
   * @access public
   * @lzxtype event
   */
 var onerror = LzDeclaredEvent;
 
-/**
-  * <event>ontimeout</event>: Sent when the request to load media for the view times
+/** Sent when the request to load media for the view times
   * out
   * @lzxtype event
   * @access public
@@ -195,7 +198,8 @@
   */
 var onopacity = LzDeclaredEvent;
 
-/** @access private 
+/**
+ * Sent when a view begins playing its resource
   * @lzxtype event 
   * @access public
   */
@@ -224,7 +228,11 @@
   * @lzxtype event 
   */
 var onrotation = LzDeclaredEvent;
-/** @access public
+/**
+  * Sent when a view's resource that is capable of playing is
+  * stopped. This is only called if stop is called directly; when a resource
+  * hits its last frame, the LzView event onlastframe is called.
+  * @access public
   * @lzxtype event 
   */
 var onstop = LzDeclaredEvent;
@@ -242,7 +250,7 @@
 var onunstretchedwidth = LzDeclaredEvent;
 
 /** @lzxtype event
-  * @access private
+  * @access public
   */
 var onvisible = LzDeclaredEvent;
 

Modified: openlaszlo/branches/devildog/WEB-INF/lps/server/sc/src/org/openlaszlo/sc/Parser.jjt
===================================================================
--- openlaszlo/branches/devildog/WEB-INF/lps/server/sc/src/org/openlaszlo/sc/Parser.jjt	2008-01-31 16:30:18 UTC (rev 7934)
+++ openlaszlo/branches/devildog/WEB-INF/lps/server/sc/src/org/openlaszlo/sc/Parser.jjt	2008-01-31 16:30:37 UTC (rev 7935)
@@ -918,7 +918,7 @@
 
 void CatchClause() #CatchClause : {}
 {
-   "catch" "(" Identifier() ")" Block()
+   "catch" "(" FormalParameterIdentifier() ")" Block()
 }
 
 void FinallyClause() #FinallyClause : {}

Modified: openlaszlo/branches/devildog/WEB-INF/lps/server/src/org/openlaszlo/data/HTTPDataSource.java
===================================================================
--- openlaszlo/branches/devildog/WEB-INF/lps/server/src/org/openlaszlo/data/HTTPDataSource.java	2008-01-31 16:30:18 UTC (rev 7934)
+++ openlaszlo/branches/devildog/WEB-INF/lps/server/src/org/openlaszlo/data/HTTPDataSource.java	2008-01-31 16:30:37 UTC (rev 7935)
@@ -3,7 +3,7 @@
  * ****************************************************************************/
 
 /* J_LZ_COPYRIGHT_BEGIN *******************************************************
-* Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.              *
+* Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.              *
 * Use is subject to license terms.                                            *
 * J_LZ_COPYRIGHT_END *********************************************************/
 
@@ -423,32 +423,31 @@
             boolean hasQuery = (query != null && query.length() > 0);
     
             if (isPost) {
-                if (hasQuery) {
-                    final String postbodyparam = "lzpostbody=";
-                    if (query.startsWith(postbodyparam)) {
-                        // Get the unescaped query string
-                        String v = uri.getQuery().substring(postbodyparam.length());
-                        ((EntityEnclosingMethod)request).setRequestBody(v);
-                    } else {
-                        StringTokenizer st = new StringTokenizer(query, "&");
-                        while (st.hasMoreTokens()) {
-                            String it = st.nextToken();
-                            int i = it.indexOf("=");
-                            if (i > 0) {
-                                String n = it.substring(0, i);
-                                String v = it.substring(i + 1, it.length());
-                                // POST encodes values during request
-                                ((PostMethod)request).addParameter(n, URLDecoder.decode(v, "UTF-8"));
-                            } else {
-                                mLogger.warn(
-/* (non-Javadoc)
- * @i18n.test
- * @org-mes="ignoring bad token (missing '=' char) in query string: " + p[0]
- */
-                        org.openlaszlo.i18n.LaszloMessages.getMessage(
-                                HTTPDataSource.class.getName(),"051018-429", new Object[] {it})
-);
-                            }
+                String postbody = req.getParameter("lzpostbody");
+                // If there is a lzpostbody arg, use it as the POST request body,
+                // and copy the query arg from the client-supplied URL to the proxy request URL
+                if (postbody != null) {
+                    ((EntityEnclosingMethod)request).setRequestBody(postbody);
+                    request.setQueryString(query);
+                } else if (hasQuery) {
+                    StringTokenizer st = new StringTokenizer(query, "&");
+                    while (st.hasMoreTokens()) {
+                        String it = st.nextToken();
+                        int i = it.indexOf("=");
+                        if (i > 0) {
+                            String n = it.substring(0, i);
+                            String v = it.substring(i + 1, it.length());
+                            // POST encodes values during request
+                            ((PostMethod)request).addParameter(n, URLDecoder.decode(v, "UTF-8"));
+                        } else {
+                            mLogger.warn(
+                                /* (non-Javadoc)
+                                 * @i18n.test
+                                 * @org-mes="ignoring bad token (missing '=' char) in query string: " + p[0]
+                                 */
+                                org.openlaszlo.i18n.LaszloMessages.getMessage(
+                                    HTTPDataSource.class.getName(),"051018-429", new Object[] {it})
+                                         );
                         }
                     }
                 }

Modified: openlaszlo/branches/devildog/WEB-INF/lps/server/src/org/openlaszlo/js2doc/Main.java
===================================================================
--- openlaszlo/branches/devildog/WEB-INF/lps/server/src/org/openlaszlo/js2doc/Main.java	2008-01-31 16:30:18 UTC (rev 7934)
+++ openlaszlo/branches/devildog/WEB-INF/lps/server/src/org/openlaszlo/js2doc/Main.java	2008-01-31 16:30:37 UTC (rev 7935)
@@ -3,7 +3,7 @@
  * ****************************************************************************/
 
 /* J_LZ_COPYRIGHT_BEGIN *******************************************************
-* Copyright 2006-2007 Laszlo Systems, Inc.  All Rights Reserved.              *
+* Copyright 2006-2008 Laszlo Systems, Inc.  All Rights Reserved.              *
 * Use is subject to license terms.                                            *
 * J_LZ_COPYRIGHT_END *********************************************************/
 
@@ -236,7 +236,7 @@
                                              Set runtimeOptions,
                                              List runtimeAliases,
                                              List buildOptions) {
-        boolean result = false;
+        boolean result = true;
         try {
             File sourceFile = new File(sourceName);
             String sourceContents = FileUtils.readFileString(sourceFile);
@@ -249,6 +249,7 @@
             String expect = FileUtils.readFileString(expectFile);
             
         } catch (java.io.IOException exc) {
+            result = false;
             exc.printStackTrace();
         }
 

Modified: openlaszlo/branches/devildog/docs/includes/docbook.css
===================================================================
--- openlaszlo/branches/devildog/docs/includes/docbook.css	2008-01-31 16:30:18 UTC (rev 7934)
+++ openlaszlo/branches/devildog/docs/includes/docbook.css	2008-01-31 16:30:37 UTC (rev 7935)
@@ -64,6 +64,7 @@
     left:60%;
     max-width: 40%;
     margin-top: -80px;
+    min-height: 80px;
     padding: 5pt;
     text-align: right; 
 }

Modified: openlaszlo/branches/devildog/docs/src/build.xml
===================================================================
--- openlaszlo/branches/devildog/docs/src/build.xml	2008-01-31 16:30:18 UTC (rev 7934)
+++ openlaszlo/branches/devildog/docs/src/build.xml	2008-01-31 16:30:37 UTC (rev 7935)
@@ -329,7 +329,7 @@
     <copy todir="${local.output.dir}/resources" failonerror="false">
       <fileset dir="${local.build.dir}/resources"/>
     </copy>
-  	
+
     <mkdir dir="${developers.output.dir}/includes"/>
     <copy todir="${developers.output.dir}/includes" failonerror="false">
       <fileset dir="${docs.output.dir}/includes"/>
@@ -565,9 +565,17 @@
       <param name="merge.file" expression="${reference.build.dir}/embednew.xml"/>
     </style>
     
+    <style style="xsl/js2doc-append.xsl"
+           in="${reference.build.dir}/LaszloLibrary-4.js2doc"
+           out="${reference.build.dir}/LaszloLibrary-5.js2doc">
+      <xmlcatalog refid="commonDTDs"/>
+      <xmlcatalog refid="docbook.local.xsl"/>
+      <param name="merge.file" expression="${reference.src.dir}/wrappers.xml"/>
+    </style>
+    
     <!-- make certain information explicit to ease processing by js2doc2dbk.xsl -->
     <style style="xsl/js2doc-verbose.xsl"
-           in="${reference.build.dir}/LaszloLibrary-4.js2doc"
+           in="${reference.build.dir}/LaszloLibrary-5.js2doc"
            out="${reference.build.dir}/LaszloLibrary-verbose.js2doc">
       <xmlcatalog refid="commonDTDs"/>
       <xmlcatalog refid="docbook.local.xsl"/>

Modified: openlaszlo/branches/devildog/docs/src/nav/toc.xml
===================================================================
--- openlaszlo/branches/devildog/docs/src/nav/toc.xml	2008-01-31 16:30:18 UTC (rev 7934)
+++ openlaszlo/branches/devildog/docs/src/nav/toc.xml	2008-01-31 16:30:37 UTC (rev 7935)
@@ -3,6 +3,7 @@
         <item title="attribute"  href="tag.attribute.html" />
         <item title="canvas (LzCanvas)" href="LzCanvas.html" />
         <item title="event"  href="tag.event.html" />
+        <item title="import" href="tag.import.html" />
         <item title="include" href="tag.include.html" />
         <item title="library" href="tag.library.html" />
         <!-- TODO handle changing this to dhtml-specific when this is run in dhtml runtime [bshine 10.17.2007] -->        
@@ -10,14 +11,13 @@
         <item title="LzContextMenuItem" href="LzContextMenuItem+swf7+swf8+swf9.html" />
         <item title="splash" href="tag.splash+as2.html" />
         <item title="view" href="LzView.html" />
-        <item title="import" href="tag.import.html" />
     </category>
     <category title="View Basics">
+        <item title="drawview (LzDrawView)" href="lz.drawview.html"/>
         <item title="inputtext" href="LzInputText.html" />
         <item title="LzCanvasGradient" href="LzCanvasGradient.html" />        
         <item title="text (LzText)" href="LzText.html" />
         <item title="view (LzView)" href="LzView.html"/>              
-        <item title="drawview (LzDrawView)" href="lz.drawview.html"/>
     </category>
     <category title="Components">       
         <item title="alert" href="lz.alert.html" />
@@ -35,6 +35,7 @@
         <item title="grid" href="lz.grid.html" />
         <item title="gridcolumn" href="lz.gridcolumn.html" />
         <item title="gridtext" href="lz.gridtext.html" />
+        <item title="hbox" href="lz.hbox.html" />                
         <item title="hscrollbar" href="lz.hscrollbar.html" />
         <item title="list" href="lz.list.html" />
         <item title="listitem" href="lz.listitem.html" />
@@ -61,10 +62,10 @@
         <item title="textlistitem" href="lz.textlistitem.html" />
         <item title="textstyle" href="lz.textstyle.html" />
         <item title="tree" href="lz.tree.html" />
+        <item title="vbox" href="lz.vbox.html" />                
         <item title="vscrollbar" href="lz.vscrollbar.html" />
         <item title="window" href="lz.window.html" />
         <item title="windowpanel" href="lz.windowpanel.html" />
-        <item title="hbox" href="lz.hbox.html" />                
     </category>
     
     <category title="Layouts">
@@ -101,32 +102,47 @@
     
     
     <category title="HTML Markup">
-        <item title="TODO [BUG LPP-4931]" />
         <item title="LzTextFormat" href="lz.LzTextFormat.html" />
+        <item title="a" href="tag-a.html"/>
+        <item title="b" href="tag-b.html"/>
+        <item title="br" href="tag-br.html"/>
+        <!-- TODO: [2008-01-28 dda] <item title="font" href="tag-font.html"/> -->
+        <item title="i" href="tag-i.html"/>
+        <item title="img" href="tag-img.html"/>
+        <item title="p" href="tag-p.html"/>
+        <item title="pre" href="tag-pre.html"/>
+        <item title="u" href="tag-u.html"/>
     </category>
     
     <category title="Media" >
-        <item title="TODO [BUG LPP-4932]" />
+        <item title="audio" href="tag-audio.html"/>
+        <!-- TODO: [2008-01-28 dda] <item title="font (LzFont)" href="lz.LzFont.html" /> -->
+        <item title="face" href="tag-face.html"/>
+        <item title="frame" href="tag-frame.html"/>
+        <item title="image" href="lz.image.html"/>
+        <!-- TODO: [2008-01-28 dda] <item title="LzAudio" href="lz.LzAudio.html" /> -->
+        <item title="resource" href="tag-resource.html"/>
+        <!-- LzFontManager ???  -->
     </category>
     
     <category title="Data">
         <item title="TBD REVIEW" />
-        <item title="LzDataElement" href="LzDataElement.html" />
-        <item title="LzDataNode" href="LzDataNode.html" />
         <item title="datapath (LzDatapath)" href="LzDatapath.html" />
         <item title="datapointer (LzDatapointer)" href="LzDatapointer.html" />
-        <item title="LzDataProvider" href="LzDataProvider.html" />
-        <item title="LzDataRequest" href="LzDataRequest.html" />
         <item title="dataselectionmanager (LzDataSelectionManager)" href="LzDataSelectionManager.html" />
         <item title="dataset (LzDataset)" href="LzDataset.html" />
         <item title="datasource (LzDatasource)" href="LzDatasource.html" />
+        <item title="defaultdataprovider" href="defaultdataprovider.html" />        
+        <item title="httpdataprovider" href="httpdataprovider.html" />
+        <item title="LzConnectionDatasource+swf7+swf8+swf9" href="LzConnectionDatasource+swf7+swf8+swf9.html" />        
+        <item title="LzDataElement" href="LzDataElement.html" />
+        <item title="LzDataNode" href="LzDataNode.html" />
+        <item title="LzDataProvider" href="LzDataProvider.html" />
+        <item title="LzDataRequest" href="LzDataRequest.html" />
         <item title="LzDataText" href="LzDataText.html" />
         <item title="LzHTTPDataProvider" href="LzHTTPDataProvider.html" />
         <item title="LzHTTPDataRequest" href="LzHTTPDataRequest.html" />
         <item title="LzHTTPDatasource" href="LzHTTPDatasource.html" />        
-        <item title="defaultdataprovider" href="defaultdataprovider.html" />        
-        <item title="httpdataprovider" href="httpdataprovider.html" />
-        <item title="LzConnectionDatasource+swf7+swf8+swf9" href="LzConnectionDatasource+swf7+swf8+swf9.html" />        
     </category>
     
     <category title="Scripting">
@@ -140,9 +156,9 @@
         <item title="stylesheet (LzCSSStylesheet)" href="LzCSSStyleSheet.html" />
     </category>
     <category title="States">
-        <item title="state (LzState)" href="LzState.html" />
         <item title="dragstate" href="lz.dragstate.html" />
         <item title="resizestate" href="lz.resizestate.html" />
+        <item title="state (LzState)" href="LzState.html" />
     </category>
     
     <category title="Base Classes">
@@ -221,7 +237,7 @@
     </category>
     
     <category title="Development">
-        <item title="debug (Debug) [LPP-4936]" href="Debug+debug.html"/>
+        <item title="debug (Debug)" href="Debug+debug.html"/>
         <item title="SyncTester" href="lz.SyncTester.html" />
         <item title="Test" href="lz.Test.html" />
         <item title="TestCase" href="lz.TestCase.html" />

Copied: openlaszlo/branches/devildog/docs/src/reference/wrappers.xml (from rev 7933, openlaszlo/trunk/docs/src/reference/wrappers.xml)

Modified: openlaszlo/branches/devildog/docs/src/xsl/js2doc2dbk.xsl
===================================================================
--- openlaszlo/branches/devildog/docs/src/xsl/js2doc2dbk.xsl	2008-01-31 16:30:18 UTC (rev 7934)
+++ openlaszlo/branches/devildog/docs/src/xsl/js2doc2dbk.xsl	2008-01-31 16:30:37 UTC (rev 7935)
@@ -37,6 +37,7 @@
 
 <!ENTITY readonly       '(@modifiers="readonly" or @modifiers="read-only" or @keywords="read-only" or @keywords="readonly")'>
 <!ENTITY final          '(@modifiers="final" or @keywords="final")'>
+<!ENTITY virtual        '(@modifiers="virtual" or @keywords="virtual")'>
 <!ENTITY unwritable     '(@modifiers="readonly" or @modifiers="read-only" or @keywords="read-only" or @keywords="readonly" or @modifiers="final" or @keywords="final")'>
 
 <!ENTITY isevent          '((doc/tag[@name="lzxtype"]/text) = "event" or @type="LzEvent")'>
@@ -1281,9 +1282,28 @@
           <xsl:when test="&final; and ($isinstancevar or $isinitarg)">initialize-only</xsl:when>
           <xsl:when test="&readonly;">readonly</xsl:when>          
           <xsl:when test="not(&unwritable;) and $isinstancevar">read/write</xsl:when>
-          <xsl:when test="not(&unwritable;) and not($isinstancevar) and not($issetter)">(FIXME: declare attribute (non-setter))</xsl:when>
-          <xsl:when test="not(&unwritable;) and not($isinstancevar) and $issetter">(FIXME: declare attribute (setter))</xsl:when>          
-          <xsl:otherwise>(FIXME: otherwise) <xsl:if test="&final;">final</xsl:if> <xsl:if test="&readonly;">readonly</xsl:if></xsl:otherwise>
+          <xsl:when test="not(&unwritable;) and &virtual;">read/write (virtual)</xsl:when>
+          <xsl:when test="not(&unwritable;) and not($isinstancevar) and not($issetter)">
+            <!-- happens when an old style class is encountered -->
+            <xsl:message>
+              Unknown attribute category (no setter) for <xsl:value-of select="/ancestor-or-self::property//@id" /> : <xsl:value-of select="@name" />
+            </xsl:message>
+            unknown
+          </xsl:when>
+          <xsl:when test="not(&unwritable;) and not($isinstancevar) and $issetter">
+            <!-- usually happens when there is a setter with no declared var -->
+            <xsl:message>
+              Unknown attribute category (has setter with no var) for <xsl:value-of select="ancestor-or-self::property//@id" /> : <xsl:value-of select="@name" />
+            </xsl:message>
+            has setter
+          </xsl:when>
+          <xsl:otherwise>
+            <xsl:message>
+              Unknown attribute category (otherwise) for <xsl:value-of select="ancestor-or-self::property//@id" /> : <xsl:value-of select="@name" />
+            </xsl:message>
+            <xsl:if test="&final;">final</xsl:if>
+            <xsl:if test="&readonly;">readonly</xsl:if>
+          </xsl:otherwise>
         </xsl:choose>        
         <xsl:if test="&isevent;">
           event

Modified: openlaszlo/branches/devildog/lps/components/build.xml
===================================================================
--- openlaszlo/branches/devildog/lps/components/build.xml	2008-01-31 16:30:18 UTC (rev 7934)
+++ openlaszlo/branches/devildog/lps/components/build.xml	2008-01-31 16:30:37 UTC (rev 7935)
@@ -45,9 +45,10 @@
 
   <target name="build" description="Build all the components, unless they're already up to date"
           depends="init">
-    <fail
-        message="${autoincludes.file} is out of date with respect to components:  run `ant autoincludes` in the lps/components directory and check in the new version"
-        unless="autoincludes.uptodate" />
+<!-- TODO: [2008-01-24 ptw] This does not work at present because svn does not preserve file dates -->
+<!--     <fail -->
+<!--         message="${autoincludes.file} is out of date with respect to components:  run `ant autoincludes` in the lps/components directory and check in the new version" -->
+<!--         unless="autoincludes.uptodate" /> -->
   </target>
 
   <target name="all"

Modified: openlaszlo/branches/devildog/lps/components/incubator/newvscrollbar.lzx
===================================================================
--- openlaszlo/branches/devildog/lps/components/incubator/newvscrollbar.lzx	2008-01-31 16:30:18 UTC (rev 7934)
+++ openlaszlo/branches/devildog/lps/components/incubator/newvscrollbar.lzx	2008-01-31 16:30:37 UTC (rev 7935)
@@ -39,7 +39,7 @@
              <view resource="newvscrollbar_ythumbbottom_rsc"/>
              <stableborderlayout axis="y"/>
              <!-- note: stableborderlayout only acts on the first three views -->
-             <view resource="newvscrollbar_ythumbgripper_rsc" y="2" x="2"
+             <view resource="newvscrollbar_ythumbgripper_rsc" x="2"
                  height="${Math.min(200, parent.height-16)}" width="11"
                  clip="true" valign="middle"/>
         </basescrollthumb>
@@ -89,7 +89,7 @@
 </class>
 </library>
 <!-- * X_LZ_COPYRIGHT_BEGIN ***************************************************
-* Copyright 2006 Laszlo Systems, Inc.  All Rights Reserved.                   *
+* Copyright 2006-2008 Laszlo Systems, Inc.  All Rights Reserved.                   *
 * Use is subject to license terms.                                            *
 * X_LZ_COPYRIGHT_END ****************************************************** -->
 <!-- @LZX_VERSION@                                                         -->

Modified: openlaszlo/branches/devildog/lps/components/lz/alert.lzx
===================================================================
--- openlaszlo/branches/devildog/lps/components/lz/alert.lzx	2008-01-31 16:30:18 UTC (rev 7934)
+++ openlaszlo/branches/devildog/lps/components/lz/alert.lzx	2008-01-31 16:30:37 UTC (rev 7935)
@@ -1,6 +1,6 @@
 <library>
     <include href="lz/button.lzx" />
-    <include href="lz/windowpanel.lzx" />
+    <include href="lz/modaldialog.lzx" />
     <include href="utils/layouts/simplelayout.lzx"/>
     <include href="utils/layouts/resizelayout.lzx"/>
 
@@ -144,7 +144,7 @@
     </class>
  </library>
 <!-- * X_LZ_COPYRIGHT_BEGIN ***************************************************
-* Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.              *
+* Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.              *
 * Use is subject to license terms.                                            *
 * X_LZ_COPYRIGHT_END ****************************************************** -->
 <!-- @LZX_VERSION@                                                         -->

Modified: openlaszlo/branches/devildog/test/lfc/data/alldata.lzx
===================================================================
--- openlaszlo/branches/devildog/test/lfc/data/alldata.lzx	2008-01-31 16:30:18 UTC (rev 7934)
+++ openlaszlo/branches/devildog/test/lfc/data/alldata.lzx	2008-01-31 16:30:37 UTC (rev 7935)
@@ -20,7 +20,7 @@
     <include href="testsetheaders-solo.lzx"/>
     <include href="testrawpost.lzx"/>
     <include href="testput.lzx"/>
-    <include href="testrawpost-solo.lzx"/>
+<!--     <include href="testrawpost-solo.lzx"/> -->
     <include href="testheaderresponse.lzx"/>
     <include href="testclientcachebreaker.lzx"/>
     <include href="sendheaders.lzx"/>
@@ -42,7 +42,10 @@
         <TestSetHeadersSOLO/>
         <TestRawPost/>
         <TestPut/>
+<!--
+    This just can't work in Flash 7/8 - the text will always be XML escaped
         <TestRawPostSOLO/>
+-->
         <TestResponseHeaders/>
 
         <TestClientCacheBreaker/>
@@ -51,6 +54,6 @@
     </TestSuite>
 </canvas>
 <!-- * X_LZ_COPYRIGHT_BEGIN ***************************************************
-* Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.              *
+* Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.              *
 * Use is subject to license terms.                                            *
 * X_LZ_COPYRIGHT_END ****************************************************** -->

Modified: openlaszlo/branches/devildog/test/lfc/data/testsetheaders-solo.lzx
===================================================================
--- openlaszlo/branches/devildog/test/lfc/data/testsetheaders-solo.lzx	2008-01-31 16:30:18 UTC (rev 7934)
+++ openlaszlo/branches/devildog/test/lfc/data/testsetheaders-solo.lzx	2008-01-31 16:30:37 UTC (rev 7935)
@@ -1,30 +1,31 @@
 <library>
   <include href="lzunit/lzunit.lzx" />
 
-  <dataset name="edata" src="http:echo.jsp"  proxied="false"
-           getresponseheaders="true" 
-           timeout="120000"/>
+  <dataset name="edata_solo" src="http:echo.jsp"  proxied="false"
+           getresponseheaders="true"  
+           timeout="5000"/>
 
-  <class name="TestSetHeadersSOLO" extends="TestCase">
+  <class name="TestSetHeadersSOLO" extends="TestCase" >
     <attribute name="dpready" value="false"/>
     <attribute name="t2del" value="false"/>
     <attribute name="waitcnt" value="0"/>
 
-    <datapointer xpath="edata:/echo" name="dp" 
-                 oninit="Debug.write('sending edata request'); parent.sendit()" />
+    <datapointer xpath="edata_solo:/echo" name="dp" 
+                 oninit="Debug.write('sending edata_solo request'); parent.sendit()" />
 
-    <handler reference="edata" name="ondata">
-       Debug.write('testcase got edata ondata');
+    <handler reference="edata_solo" name="ondata">
+       Debug.write('testcase got edata_solo ondata');
        this.dpready = true;
     </handler>
 
     <method name="sendit">
-      Debug.write("testsetheaders.lzx sending edata");
-      edata.setHeader("content-type", "pink-elephants/xml");
-      edata.setHeader("my-personal-header", "vanilla/with-chocolate-syrup");
-      edata.setHeader("my-other-personal-header", "milk chocolate with almonds");
-      edata.setQueryType("POST");
-      edata.doRequest();
+      Debug.write("testsetheaders.lzx sending edata_solo");
+      edata_solo.setHeader("content-type", "pink-elephants/xml");
+      edata_solo.setHeader("my-personal-header", "vanilla/with-chocolate-syrup");
+      edata_solo.setHeader("my-other-personal-header", "milk chocolate with almonds");
+      edata_solo.setQueryParam("flash", "has some bugs");
+      edata_solo.setQueryType("POST");
+      edata_solo.doRequest();
     </method>
 
     <method name="test1">
@@ -34,7 +35,7 @@
               this.t2del = new LzDelegate( this , 'test1' );
           }
 
-          if ( this.waitcnt++ > 1000 ){
+          if ( this.waitcnt++ > 100 ){
               fail( "testsetheaders: Didn't get async data" );
           } else {
               LzIdle.callOnIdle( this.t2del );
@@ -57,7 +58,7 @@
 
 </library>
 <!-- * X_LZ_COPYRIGHT_BEGIN ***************************************************
-* Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.              *
+* Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.              *
 * Use is subject to license terms.                                            *
 * X_LZ_COPYRIGHT_END ****************************************************** -->
 

Modified: openlaszlo/branches/devildog/test/lfc/data/testsetheaders.lzx
===================================================================
--- openlaszlo/branches/devildog/test/lfc/data/testsetheaders.lzx	2008-01-31 16:30:18 UTC (rev 7934)
+++ openlaszlo/branches/devildog/test/lfc/data/testsetheaders.lzx	2008-01-31 16:30:37 UTC (rev 7935)
@@ -21,6 +21,7 @@
     <method name="sendit">
       Debug.write("testsetheaders.lzx sending edata");
       edata.setHeader("content-type", "pink-elephants/xml");
+      edata.setQueryParam("flash8", "has bugs");
       edata.setQueryType("POST");
       edata.doRequest();
     </method>
@@ -55,7 +56,7 @@
 
 </library>
 <!-- * X_LZ_COPYRIGHT_BEGIN ***************************************************
-* Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.              *
+* Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.              *
 * Use is subject to license terms.                                            *
 * X_LZ_COPYRIGHT_END ****************************************************** -->
 

Modified: openlaszlo/branches/devildog/test/smoke/compiler.lzl
===================================================================
--- openlaszlo/branches/devildog/test/smoke/compiler.lzl	2008-01-31 16:30:18 UTC (rev 7934)
+++ openlaszlo/branches/devildog/test/smoke/compiler.lzl	2008-01-31 16:30:37 UTC (rev 7935)
@@ -2,7 +2,7 @@
     Compiler Tests
 -->
 <!-- * X_LZ_COPYRIGHT_BEGIN ***************************************************
-     * Copyright 2001-2006 Laszlo Systems, Inc.  All Rights Reserved.              *
+     * Copyright 2001-2006, 2008 Laszlo Systems, Inc.  All Rights Reserved.              *
      * Use is subject to license terms.                                            *
      * X_LZ_COPYRIGHT_END ****************************************************** -->
 
@@ -33,8 +33,7 @@
              // Verify runtime matches requested
              var url = LzBrowser.getLoadURLAsLzURL();
              if (url.query != null) {
-               // TODO: [2005-11-22 ptw] This should be a class method
-               var query = LzParam.prototype.parseQueryString(url.query);
+               var query = LzParam.parseQueryString(url.query);
              }
              if (query.hasOwnProperty('lzr')) {
                  assertEquals($runtime, query.lzr, "$runtime matches query arg");

Modified: openlaszlo/branches/devildog/test/trycatch.lzx
===================================================================
--- openlaszlo/branches/devildog/test/trycatch.lzx	2008-01-31 16:30:18 UTC (rev 7934)
+++ openlaszlo/branches/devildog/test/trycatch.lzx	2008-01-31 16:30:37 UTC (rev 7935)
@@ -32,7 +32,7 @@
         flawed.func();
         status1.setText("after func, should not see!");
     }
-    catch (ex) {
+    catch (ex:String) {
         status2.setText("OKAY 2: exception text = " + ex);
     }
     finally {
@@ -43,6 +43,6 @@
   </script>
 </canvas>
 <!-- * X_LZ_COPYRIGHT_BEGIN ***************************************************
-* Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.              *
+* Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.              *
 * Use is subject to license terms.                                            *
 * X_LZ_COPYRIGHT_END ****************************************************** -->



More information about the Laszlo-checkins mailing list