[Laszlo-checkins] r7879 - in openlaszlo/branches/devildog: . WEB-INF/lps/lfc/core WEB-INF/lps/lfc/views WEB-INF/lps/misc WEB-INF/lps/server/src/org/openlaszlo/compiler build-tools docs/src/developers docs/src/developers/programs docs/src/nav laszlo-explorer/coverpages lps/components

dda@openlaszlo.org dda at openlaszlo.org
Wed Jan 23 17:53:01 PST 2008


Author: dda
Date: 2008-01-23 17:52:48 -0800 (Wed, 23 Jan 2008)
New Revision: 7879

Added:
   openlaszlo/branches/devildog/build-tools/build-autoincludes.sh
   openlaszlo/branches/devildog/docs/src/developers/programs/viewvisibility.lzx
   openlaszlo/branches/devildog/lps/components/build.xml
Removed:
   openlaszlo/branches/devildog/docs/src/developers/programs/databinding-$17.lzx
Modified:
   openlaszlo/branches/devildog/
   openlaszlo/branches/devildog/WEB-INF/lps/lfc/core/LzNode.lzs
   openlaszlo/branches/devildog/WEB-INF/lps/lfc/core/UserClass.lzs
   openlaszlo/branches/devildog/WEB-INF/lps/lfc/views/LaszloView.lzs
   openlaszlo/branches/devildog/WEB-INF/lps/misc/lzx-autoincludes.properties
   openlaszlo/branches/devildog/WEB-INF/lps/server/src/org/openlaszlo/compiler/NodeModel.java
   openlaszlo/branches/devildog/build.xml
   openlaszlo/branches/devildog/docs/src/developers/browser-integration.dbk
   openlaszlo/branches/devildog/docs/src/developers/databinding.dbk
   openlaszlo/branches/devildog/docs/src/developers/language-preliminaries.dbk
   openlaszlo/branches/devildog/docs/src/developers/media-resources.dbk
   openlaszlo/branches/devildog/docs/src/developers/methods-events-attributes.dbk
   openlaszlo/branches/devildog/docs/src/developers/performance.dbk
   openlaszlo/branches/devildog/docs/src/developers/programs/databinding-$14.lzx
   openlaszlo/branches/devildog/docs/src/developers/video.dbk
   openlaszlo/branches/devildog/docs/src/nav/toc.xml
   openlaszlo/branches/devildog/laszlo-explorer/coverpages/components_cover.html
Log:
Merged revisions 7841-7878 via svnmerge from 
http://svn.openlaszlo.org/openlaszlo/trunk

.......
  r7846 | lou | 2008-01-17 08:06:40 -0500 (Thu, 17 Jan 2008) | 22 lines
  
  Change 20080117-lou-W by lou at loumac.local on 2008-01-17 08:57:23 AST
      in /Users/lou/src/svn/openlaszlo/trunk
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: fix link to the style reference in Laszlo Explorer.
  
  Bugs Fixed: LPP-4322
  
  Technical Reviewer: (pending)
  QA Reviewer: (pending)
  Doc Reviewer: (pending)
  
  Details: Change the link so it goes directly to the lz.style.html page.
  Not that this is not an ideal fix. What should really happen is the link
  should take you to the reference, with the navigation pane on the left and
  the style page on the right. Because the navigation is actually an lzx
  application, I don't think this is possible, so I did the next best thing.
      
  
  Tests: test link
.......
  r7851 | lou | 2008-01-18 07:51:10 -0500 (Fri, 18 Jan 2008) | 22 lines
  
  Change 20080118-lou-J by lou at loumac.local on 2008-01-18 08:43:18 AST
      in /Users/lou/src/svn/openlaszlo/trunk
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: fix live example order in the databinding chapter of the dguide
  
  Bugs Fixed: LPP-3936
  
  Technical Reviewer: (pending)
  QA Reviewer: (pending)
  Doc Reviewer: (pending)
  
  Details: At some point, an example was inserted in this chapter, which threw
  off the order of all following examples. Fix the order of the examples so
  they appear in the proper sections.
  
  One example file contained the wrong example; revert to the 3.4 version.
      
  
  Tests: check that the examples match the 3.4 doc
.......
  r7852 | ptw | 2008-01-18 09:10:19 -0500 (Fri, 18 Jan 2008) | 27 lines
  
  Change 20080116-ptw-P by ptw at dueling-banjos.local on 2008-01-16 14:45:41 EST
      in /Users/ptw/OpenLaszlo/ringding-clean
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: Generate autoincludes mapping from components
  
  Bugs Fixed:
  LPP-3695 'Simpleboundslayout.lzx is not include when debug=false'
  
  Technical Reviewer: philip at pbrdev.com (Message-Id: <20080118012600.56F3E56CF5 at hemicuda.laszlosystems.com>)
  QA Reviewer: mkratt (pending)
  
  Details:
      build-autoincludes:  Shell script to grep over components source,
      find the tags that are defined and create a table of tag -> source
      file.
  
      components/build.xml:  Verify that file is up to date with
      components and fail the build if it is not (advising how to use
      the tool to update the file).
  
      build.xml: invoke components/build
  
  Tests:
      ant runlzunit, test case from Jira
.......
  r7860 | lou | 2008-01-19 06:47:00 -0500 (Sat, 19 Jan 2008) | 24 lines
  
  Change 20080119-lou-4 by lou at loumac.local on 2008-01-19 07:37:40 AST
      in /Users/lou/src/svn/openlaszlo/trunk
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: fix typos in the dguide reported by an alert user
  
  Bugs Fixed: LPP-5369
  
  Technical Reviewer: (pending)
  QA Reviewer: (pending)
  Doc Reviewer: (pending)
  
  Details: 
  These typos were reported by a user for revision 4.0.8 on an
  OpenLaszlo forum: http://forum.openlaszlo.org//showthread.php?t=11411
  
  Most of these typos have already been fixed in the nightly build.
  
  Verified those typos that had already been fixed and fixed those that 
  hadn't been. 
  
  Tests: visual verify
.......
  r7862 | lou | 2008-01-19 09:04:08 -0500 (Sat, 19 Jan 2008) | 19 lines
  
  Change 20080119-lou-x by lou at loumac.local on 2008-01-19 09:57:12 AST
      in /Users/lou/src/svn/openlaszlo/trunk
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: remove appendix a from the reference
  
  Bugs Fixed: LPP-4938
  
  Technical Reviewer: (pending)
  QA Reviewer: (pending)
  Doc Reviewer: (pending)
  
  Details: appendix a was going to be a list of lzx reserved words.
  Since there is really no such thing a an lzx reserved word, we
  don't need this appendix.   
  
  Tests: visual verify
.......
  r7864 | lou | 2008-01-21 10:18:50 -0500 (Mon, 21 Jan 2008) | 26 lines
  
  Change 20080121-lou-G by lou at loumac.local on 2008-01-21 11:04:32 AST
      in /Users/lou/src/svn/openlaszlo/trunk
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: removed all references to datacontrolsvisibility from the dguide
  
  Bugs Fixed: LPP-5349
  
  Technical ptw
  QA Reviewer: (pending)
  Doc Reviewer: (pending)
  
  Details: Data Access and Binding chapter of the dguide, section 8.2. Forcing visibility 
  of datamapped views:
  
  Replace discussion of datacontrolsvisibility with discussion of visibility attribute
  of view.
  
  Replace datacontrolsvisibility live example with view visibility example.
      
  Tests:
  trunk/docs/src/developers $ grep datacontrols *.dbk
  trunk/docs/src/developers/tutorials $ grep datacontrols *.dbk
  trunk/docs/src/developers/programs $ grep datacontrols *.lzx
.......
  r7866 | ptw | 2008-01-21 15:48:53 -0500 (Mon, 21 Jan 2008) | 23 lines
  
  Change 20080121-ptw-u by ptw at dueling-banjos.local on 2008-01-21 12:41:46 EST
      in /Users/ptw/OpenLaszlo/ringding
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: Compile <event> as instance var with proper type and default value
  
  Bugs Fixed:
  LPP-1587 'ECMA4: Compile LZX declarations as JS declarations' (partial)
  
  Technical Reviewer: dda at ddanderson.com (pending)
  QA Reviewer: henry.minsky at gmail.com (pending)
  
  Details:
      LzNode, UserClass: remove processing of (now obsolete) $events
      attr.
  
      NodeModel:  Compile <event> as instance var with proper type and
      default value
  
  Tests:
      smokecheck, amazon, ant lzunit
.......
  r7868 | ptw | 2008-01-22 07:57:17 -0500 (Tue, 22 Jan 2008) | 23 lines
  
  Change 20080122-ptw-p by ptw at dueling-banjos.local on 2008-01-22 07:42:43 EST
      in /Users/ptw/OpenLaszlo/ringding
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: Declare anonymous setters as methods at compile time
  
  Bugs Fixed:
  LPP-1587 'ECMA4: Compile LZX declarations as JS declarations' (partial)
  
  Technical Reviewer: dda at ddanderson.com (pending)
  QA Reviewer: henry.minsky at gmail.com (pending)
  
  Details:
      LzNode, UserClass: $setters is now a map of attribute name to
      setter method name (not function expressions that need to be
      dynamically installed as methods).
  
      NodeModel: Translate setter bodies into methods in the 'lzc' namespace.
  
  Tests:
      smokecheck, amazon, ant lztest
.......
  r7878 | dda | 2008-01-23 18:00:26 -0500 (Wed, 23 Jan 2008) | 42 lines
  
  Change 20080123-dda-l by dda at lester.local on 2008-01-23 10:46:42 EST
      in /Users/dda/laszlo/src/svn/openlaszlo/trunk-doc
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: Set doc visibility for methods/events/attributes in LzNode, LzView
  
  New Features:
  
  Bugs Fixed: LPP-5011
  
  Technical Reviewer: max (pending)
  QA Reviewer: (pending)
  Doc Reviewer: lou (pending)
  
  Documentation: LzNode and LzView should be very close to 3.4 doc now.
     See details below.
  
  Release Notes:
  
  Details:
    Attempted to do a side by side comparison of what was missing in 4.x
    doc vs. 3.4 doc.  When discrepencies found, used http://wiki.openlaszlo.org/LFC_API_review
    as a guide, if it wasn't specifically mentioned (like the many events in LzView),
    I added in the missing items.  In only a few cases this means that there
    is now an item without doc, e.g. the 'onplay' event, which didn't have any
    doc before.
  
    There's a couple cases that probably need more clarification:
  
   -  LzNode.determinePlacement - max says 'this still exists',
      I left it private because of this in the content:
           Note that this function is not currently designed to be called by anyone but LzNode.construct....
   
   -  LzView.layout had doc in 3.4, in 4.1 there is a (new?) LzView.layouts attribute,
      but LzView.layout did not appear in the doc.  It looks like 'layouts' is the
      preferred mechanism with layout now be used either internally? or for backward
      compatibility?  I left LzView.layout to be unmarked (therefore private and not shown).
  
  
  Tests:
.......



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-7840
   + /openlaszlo/branches/wafflecone:1-5746,5818-6068,6070-6205,6207-6213,6216-6265,6267-6368,6370-6431,6433-6450,6497 /openlaszlo/trunk:1-7878

Modified: openlaszlo/branches/devildog/WEB-INF/lps/lfc/core/LzNode.lzs
===================================================================
--- openlaszlo/branches/devildog/WEB-INF/lps/lfc/core/LzNode.lzs	2008-01-23 23:00:26 UTC (rev 7878)
+++ openlaszlo/branches/devildog/WEB-INF/lps/lfc/core/LzNode.lzs	2008-01-24 01:52:48 UTC (rev 7879)
@@ -893,7 +893,7 @@
   * LzNodes may override or extend this method to change the
   * meaning of attached subnodes.
   *
-  * @access protected
+  * @access public
   *
   * @param Array carr: an array of children where the structure of each child [c]
   * takes the form:
@@ -1106,7 +1106,6 @@
 var setters ={
     name : "setName" ,
     id : "setID" ,
-    $events : "__LZsetEvents" ,
     $refs : "__LZstoreRefs" ,
     $delegates : "__LZstoreDelegates" ,
     options: "__LZsetOptions",
@@ -1142,13 +1141,23 @@
   * @access private
   */
 function __LZsetSetters ( o ) {
+  if (! this.hasOwnProperty('setters')) {
+    this.setters = new LzInheritedHash(this.setters);
+  }
+  if ('put' in this.setters) {
     for ( var s in o ){
-        var attrSet = "_anonSet" + s;
-        this.__LZaddSetter( s , attrSet );
-        this[ attrSet ] = o[ s ];
+      // inlined: this.__LZaddSetter( s , o[s] );
+      this.setters.put(s, o[s]);
     }
+  } else {
+    for ( var s in o ){
+      // inlined: this.__LZaddSetter( s , o[s] );
+      this.setters[s] = o[s];
+    }
+  }
 }
 
+
 /**
   * @access private
   */
@@ -1559,17 +1568,6 @@
 }
 
 /**
-  * @access private
-  */
-function __LZsetEvents ( eventNames ){
-    var n = eventNames.length;
-    for (var i = 0; i < n; i++) {
-        var ename = eventNames[i];
-        this[ename] = LzDeclaredEvent;
-    }
-}
-
-/**
   * A list of CSS property names and values that configure the
   * behavior of objects, such as data binding and view layouts, that
   * operate on this view.
@@ -1647,7 +1645,7 @@
   * LzNode.construct. Do not expect to be able to 'place' a view properly after
   * it has been constructed.
   *
-  * @access protected
+  * @access private
   * @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
@@ -1724,6 +1722,7 @@
   * @param String prop: named property
   * @return LzView: the first view which has a non-null value for <param>prop</param>
   * or <i>null</i> if none is found
+  * @access private
   */
 function searchParents ( prop ){
     var sview = this;

Modified: openlaszlo/branches/devildog/WEB-INF/lps/lfc/core/UserClass.lzs
===================================================================
--- openlaszlo/branches/devildog/WEB-INF/lps/lfc/core/UserClass.lzs	2008-01-23 23:00:26 UTC (rev 7878)
+++ openlaszlo/branches/devildog/WEB-INF/lps/lfc/core/UserClass.lzs	2008-01-24 01:52:48 UTC (rev 7879)
@@ -183,28 +183,15 @@
 
 
     var haveone = false;
-    if ('$events' in attrs) {
-        var events = attrs.$events;
-        var classname = newproto.classname;
-        var elen = events.length;
-        for ( var k = 0; k < elen; k++ ){
-            var eventName = events[k];
-            newproto.addProperty(eventName, LzDeclaredEvent);
-        }
 
-        delete attrs.$events;
-    }
-
     var customsetters = '$setters' in attrs ? attrs.$setters : null;
     if (customsetters) {
-    delete attrs.$setters;
-    
-    for ( var s in customsetters ){
-        var attrSet = "_anonSet" + s;
-        newproto.addProperty(attrSet, customsetters[ s ]);
-        newproto.setters[ s ] = attrSet;
+      delete attrs.$setters;
+
+      for ( var s in customsetters ){
+          newproto.setters[ s ] = customsetters[ s ];
+      }
     }
-    }
 
     // TODO: [2006-05-25 ptw] Share this crud with LzNode
     // LzNode class initializer assures that we already have a

Modified: openlaszlo/branches/devildog/WEB-INF/lps/lfc/views/LaszloView.lzs
===================================================================
--- openlaszlo/branches/devildog/WEB-INF/lps/lfc/views/LaszloView.lzs	2008-01-23 23:00:26 UTC (rev 7878)
+++ openlaszlo/branches/devildog/WEB-INF/lps/lfc/views/LaszloView.lzs	2008-01-24 01:52:48 UTC (rev 7879)
@@ -64,7 +64,7 @@
 static var tagname = 'view';
 
 /** Event called when this view adds a subview   
-  * @access private
+  * @access public
   * @lzxtype event
   */
 var onaddsubview = LzDeclaredEvent;
@@ -73,11 +73,13 @@
 /** The onblur script is executed when an element loses focus either
   * by the pointing device or by tabbing navigation.
   * @lzxtype event
+  * @access public
   */
 var onblur = LzDeclaredEvent;
 /** The onclick script is executed when the pointing device button is
   * clicked over an element.
   * @lzxtype event  
+  * @access public
   */
 var onclick = LzDeclaredEvent;
 /** @access private */
@@ -85,21 +87,28 @@
 /** The onfocus script is executed when an element receives focus
   * either by the pointing device or by tabbing navigation.
   * @lzxtype event  
+  * @access public
   */
 var onfocus = LzDeclaredEvent;   // From LzFocus
-/** @lzxtype event */   
+/** @lzxtype event
+  * @access public
+  */   
 var onframe = LzDeclaredEvent;
 
 /** Event for changes to view's <attribute>height</attribute> property 
   * @lzxtype event
+  * @access public
   */
 var onheight = LzDeclaredEvent;
-/** @lzxtype event */   
+/** @lzxtype event
+  * @access private
+  */   
 var onimload = LzDeclaredEvent;
 
 /** The onkeyup script is executed when this view has the focus and a
   * key is released. This event is sent with the keycode for the key that 
   * went up.
+  * @access public
   * @lzxtype event
   */
 var onkeyup = LzDeclaredEvent;   // From LzFocus
@@ -109,19 +118,27 @@
   * key that is held down.  If you want the script executed only
   * once, use onkeyup. This event is sent with the keycode for the key that is
   * down.
+  * @access public
   * @lzxtype event
   */
 var onkeydown = LzDeclaredEvent; // From LzFocus
-/** @lzxtype event */
+/** @lzxtype event
+  * @access public
+  */
 var onlastframe = LzDeclaredEvent;
-/** @lzxtype event */
+/** @lzxtype event
+  * @access public
+  */
 var onload = LzDeclaredEvent;
-/** @lzxtype event */
+
+/** @lzxtype event
+  * @access private
+  */
 var onloadperc = LzDeclaredEvent;
 
 /** <event>onerror</event>: 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 private
+  * @access public
   * @lzxtype event
   */
 var onerror = LzDeclaredEvent;
@@ -130,10 +147,12 @@
   * <event>ontimeout</event>: Sent when the request to load media for the view times
   * out
   * @lzxtype event
+  * @access public
   */
 var ontimeout = LzDeclaredEvent;
 /** The onmousedown script is executed when the pointing device button is
   * pressed over an element.
+  * @access public
   * @lzxtype event
   */
 var onmousedown = LzDeclaredEvent;
@@ -141,12 +160,14 @@
 /** The onmouseout script is executed when the point device is moved
   * so that is is no longer over an element.
   * @lzxtype event
+  * @access public
   */
 var onmouseout = LzDeclaredEvent;
 
 /** The onmouseover script is executed when the pointing device is
   * moved onto an element.
   * @lzxtype event  
+  * @access public
   */
 var onmouseover = LzDeclaredEvent;
 
@@ -163,23 +184,27 @@
 /** The onmouseup script is executed when the pointing device button is
   * released over an element.
   * @lzxtype event
+  * @access public
   */
 var onmouseup = LzDeclaredEvent;
 
 /** 
   * Sent when a view changes its opacity 
   * @lzxtype event
+  * @access public
   */
 var onopacity = LzDeclaredEvent;
 
 /** @access private 
   * @lzxtype event 
+  * @access public
   */
 var onplay = LzDeclaredEvent;
 
 /** 
   * Event called when this view removes a subview 
   * @lzxtype event
+  * @access public
   */ 
 var onremovesubview = LzDeclaredEvent;
 
@@ -199,7 +224,7 @@
   * @lzxtype event 
   */
 var onrotation = LzDeclaredEvent;
-/** @access private 
+/** @access public
   * @lzxtype event 
   */
 var onstop = LzDeclaredEvent;
@@ -215,8 +240,12 @@
   * @lzxtype event 
   */
 var onunstretchedwidth = LzDeclaredEvent;
-/** @lzxtype event */
+
+/** @lzxtype event
+  * @access private
+  */
 var onvisible = LzDeclaredEvent;
+
 /** @access private 
   * @lzxtype event 
   */
@@ -224,11 +253,13 @@
 
 /** event for changes to view's <attribute>width</attribute> property 
  * @lzxtype event 
+ * @access public
  */
 var onwidth = LzDeclaredEvent;
 
 /** event for changes to view's <attribute>x</attribute> property 
  * @lzxtype event
+  * @access public
  */
 var onx = LzDeclaredEvent;
 /** @access private 
@@ -238,6 +269,7 @@
 
 /** event for changes to view's <attribute>y</attribute> property 
   * @lzxtype event
+  * @access public
   */
 var ony = LzDeclaredEvent;
 /** @access private 
@@ -255,6 +287,7 @@
   * ondblclick event, will simply send two click events.
   * The view's doubleclick time can be adjusted by setting its
   * DOUBLE_CLICK_TIME attribute
+  * @access public
   * @lzxtype event
   */
 var ondblclick = LzDeclaredEvent;
@@ -268,7 +301,7 @@
   * Base level constructor for views. See <method
   * classname="LzNode">construct</method> for more on this.
   * 
-  * @access protected
+  * @access public
   */
 function construct ( parent , args) {
     //Debug.write('LzView.construct', parent, args);
@@ -337,7 +370,7 @@
   * Called right before the view is shown. See <method
   * classname="LzNode">init</method> for more.
   * 
-  * @access protected
+  * @access public
   */
 function init( ) {
     //this.__LZmovieClipRef._visible = this.visible;
@@ -350,7 +383,7 @@
 
 /**
   * Called when a subview is added to the view.
-  * @access protected
+  * @access private
   * @param LzView s: The new subview
   */
 function addSubview ( s ){
@@ -451,7 +484,7 @@
   * at runtime.
   * @type String
   * @lzxtype expression
-  * @access private
+  * @access public
   */
 var source;
 /** 
@@ -544,6 +577,17 @@
 /** Show or hide the handcursor for this view, if clickable */
 setters.showhandcursor =   "setShowHandCursor";
 
+/** A CSS property when declared in the tag: value sequence of layout
+  * parameters, which are used to create a layout that is attached to
+  * this view. If there is a class property, it names the class of the
+  * layout; otherwise <tagname>simplelayout</tagname> is used.
+  * Examples: 
+  * <code>axis: x</code>, <code>class: constantlayout</code>; 
+  * <code>axis: y</code>; <code>axis: x; spacing: 5</code>.
+  * @type Object
+  * @lzxtype css
+  * @access public
+  */
 var layout; 
 setters.layout =   "setLayout";
 
@@ -838,10 +882,12 @@
 var resource = null;
 
 /**
+  * The width of the resource that this view attached
   * @keywords readonly
   */
 var resourcewidth = null;
 /**
+  * The height of the resource that this view attached
   * @keywords readonly
   */
 var resourceheight = null;
@@ -989,6 +1035,7 @@
   * <code>axis: y</code>; <code>axis: x; spacing: 5</code>.
   * @type Object
   * @lzxtype css
+  * @access public
   */
 var layouts = null;
 
@@ -1721,8 +1768,8 @@
 
 /**
   * Returns the width of the view.
-  * @keywords protected 
-  * @deprecated
+  * @keywords private
+  * @deprecated use the width attribute directly
   */
 function getWidth (){
     return this.width;
@@ -1730,8 +1777,8 @@
 
 /**
   * Returns the height of the view.
-  * @keywords protected 
-  * @deprecated
+  * @keywords private
+  * @deprecated use the height attribute directly
   */
 function getHeight (){
     return this.height;
@@ -2661,6 +2708,7 @@
   * proxied by the LPS server; made directly to the URL; or should be passed to
   * the next policy function in the list. The default policy function returns
   * the value of canvas.proxied
+  * @access private
   */
 static function addProxyPolicy ( f ){
    LzView.__LZproxypolicies.push ( f );
@@ -2673,6 +2721,7 @@
   * @param Function f: The function to remove from the policy list
   * @return Boolean: Returns true if the function was found and removed, false
   * if not
+  * @access private
   */
 static function removeProxyPolicy ( f ){
     var pol = LzView.__LZproxypolicies;
@@ -2712,14 +2761,12 @@
 }
 
 /**
-  * LzView.getNextSelection
   * Override to specify the next view to be focused
-  * @access private
+  * @access public
   */
 function getNextSelection() {
 }
 /**
-  * LzView.getPrevSelection
   * Override to specify the previous view to be focused
   * @access public
   */

Modified: openlaszlo/branches/devildog/WEB-INF/lps/misc/lzx-autoincludes.properties
===================================================================
--- openlaszlo/branches/devildog/WEB-INF/lps/misc/lzx-autoincludes.properties	2008-01-23 23:00:26 UTC (rev 7878)
+++ openlaszlo/branches/devildog/WEB-INF/lps/misc/lzx-autoincludes.properties	2008-01-24 01:52:48 UTC (rev 7879)
@@ -1,130 +1,222 @@
-#===============================================================================
-# LPS properties file for development
-#===============================================================================
-# * P_LZ_COPYRIGHT_BEGIN ******************************************************
-# * Copyright 2001-2004, 2007 Laszlo Systems, Inc.  All Rights Reserved.            *
-# * Use is subject to license terms.                                          *
-# * P_LZ_COPYRIGHT_END ********************************************************
-
-basebutton: /base/basebutton.lzx
-multistatebutton: /base/multistatebutton.lzx
-basecomponent: /base/basecomponent.lzx
-statictext: /base/basecomponent.lzx
-basevaluecomponent: /base/basevaluecomponent.lzx
-baseform: /base/baseform.lzx
-submit: /base/submit.lzx
-baseformitem: /base/baseformitem.lzx
-baselist: /base/baselist.lzx
-baselistitem: /base/baselistitem.lzx
-basescrollbar: /base/basescrollbar.lzx
-baseslider: /base/baseslider.lzx
-basesliderthumb: /base/baseslider.lzx
-baseslidertrack: /base/baseslider.lzx
-basetabs: /base/basetabs.lzx
-basetabslider: /base/basetabslider.lzx
-basetabelement: /base/basetabelement.lzx
-basetrackgroup: /base/basetrackgroup.lzx
-basetree: /base/basetree.lzx
-basewindow: /base/basewindow.lzx
-basecombobox: /base/basecombobox.lzx
-basedatacombobox: /base/basedatacombobox.lzx
-resizeview_x: /base/resizeview.lzx
-resizeview_y: /base/resizeview.lzx
-style: /base/style.lzx
-swatchview: /base/swatchview.lzx
-basegrid: /base/basegrid.lzx
-basedatepicker: /base/basedatepicker.lzx
-basedatepickerday: /base/basedatepickerday.lzx
-basedatepickerweek: /base/basedatepickerweek.lzx
-
-
-constantlayout: /utils/layouts/constantlayout.lzx
-resizelayout: /utils/layouts/resizelayout.lzx
-simplelayout: /utils/layouts/simplelayout.lzx
-stableborderlayout: /utils/layouts/stableborderlayout.lzx
-wrappinglayout: /utils/layouts/wrappinglayout.lzx
-reverselayout: /utils/layouts/reverselayout.lzx
-dragstate: /utils/states/dragstate.lzx
-resizestate: /utils/states/resizestate.lzx
-
-inittimer: /utils/diagnostic/inittimer.lzx
-frametimer: /utils/diagnostic/frametimer.lzx
-versioninfo: /utils/diagnostic/versioninfo.lzx
-inspector: /utils/diagnostic/inspector/inspector.lzx
-
-checkbox: /lz/checkbox.lzx
-button: /lz/button.lzx
-combobox: /lz/combobox.lzx
-datacombobox: /lz/datacombobox.lzx
-menu: /lz/menu.lzx
-menubar: /lz/menu.lzx
-menuitem: /lz/menu.lzx
-menuseparator: /lz/menu.lzx
-radiogroup: /lz/radio.lzx
-radiobutton: /lz/radio.lzx
-slider: /lz/slider.lzx
-slidertrack: /lz/slider.lzx
-sliderthumb: /lz/slider.lzx
-scrollbar: /lz/scrollbar.lzx
-hscrollbar: /lz/hscrollbar.lzx
-vscrollbar: /lz/vscrollbar.lzx
-window: /lz/window.lzx
-modaldialog: /lz/window.lzx
-alert: /lz/window.lzx
-edittext: /lz/edittext.lzx
-simpleinputtext: /lz/simpletext.lzx
-form: /lz/form.lzx
-tabs: /lz/tabs.lzx
-tabpane: /lz/tabs.lzx
-tabbar: /lz/tabs.lzx
-list: /lz/list.lzx
-listitem: /lz/listitem.lzx
-textlistitem: /lz/textlistitem.lzx
-basefloatinglist: /lz/basefloatinglist.lzx
-floatinglist: /lz/floatinglist.lzx
-plainfloatinglist: /lz/plainfloatinglist.lzx
-windowpanel: /lz/windowpanel.lzx
-tabslider: /lz/tabslider.lzx
-tabelement: /lz/tabelement.lzx
-tree: /lz/tree.lzx
-grid: /lz/grid.lzx
-datepicker: /lz/datepicker.lzx
-
-whitestyle: /base/defaultstyles.lzx
-silverstyle: /base/defaultstyles.lzx
-bluestyle: /base/defaultstyles.lzx
-greenstyle: /base/defaultstyles.lzx
-goldstyle: /base/defaultstyles.lzx
-purplestyle: /base/defaultstyles.lzx
-
-javarpc: /rpc/javarpc.lzx
-sessionrpc: /rpc/sessionrpc.lzx
-webapprpc: /rpc/webapprpc.lzx
-soap: /rpc/soap.lzx
-xmlrpc: /rpc/xmlrpc.lzx
-
-richinputtext: /extensions/views/richinputtext.lzx
-
-html: /extensions/html.lzx
-drawview: /extensions/drawview.lzx
-
-rtmpconnection: /extensions/av/rtmpconnection.lzx
-mediastream: /extensions/av/mediastream.lzx
-mediadevice: /extensions/av/mediadevice.lzx
-camera: /extensions/av/camera.lzx
-microphone: /extensions/av/microphone.lzx
-videoview: /extensions/av/videoview.lzx
-
-rtmpstatus: /av/rtmpstatus.lzx
-
-hbox: /base/hbox.lzx
-vbox: /base/vbox.lzx
-image: /base/image.lzx
-
-barchart: /charts/barchart/barchart.lzx
-linechart: /charts/linechart/linechart.lzx
-piechart: /charts/piechart/piechart.lzx
-columnchart: /charts/columnchart/columnchart.lzx
-
-lazyreplicator: /utils/replicator/lazyreplicator.lzx
-replicator: /utils/replicator/replicator.lzx
+# DO NOT EDIT THIS FILE
+# This file is generated by the `ant autoincludes` task in the lps/components direcory
+# Copyright 2008 Laszlo Systems, Inc.  All Rights Reserved.  Use is subject to license terms.
+alert: lz/alert.lzx
+axis: charts/common/axis.lzx
+axisstyle: charts/styles/chartstyle.lzx
+barchart: charts/barchart/barchart.lzx
+barchartplotarea: charts/barchart/barchartplotarea.lzx
+basebutton: base/basebutton.lzx
+basebuttonrepeater: base/basebuttonrepeater.lzx
+basecombobox: base/basecombobox.lzx
+basecomponent: base/basecomponent.lzx
+basedatacombobox: base/basedatacombobox.lzx
+basedatacombobox_item: base/basedatacombobox.lzx
+basedatepicker: base/basedatepicker.lzx
+basedatepickerday: base/basedatepickerday.lzx
+basedatepickerweek: base/basedatepickerweek.lzx
+basefloatinglist: lz/basefloatinglist.lzx
+basefocusview: base/basefocusview.lzx
+baseform: base/baseform.lzx
+baseformitem: base/baseformitem.lzx
+basegrid: base/basegrid.lzx
+basegridcolumn: base/basegridcolumn.lzx
+basegridrow: base/basegridrow.lzx
+baselist: base/baselist.lzx
+baselistitem: base/baselistitem.lzx
+basescrollarrow: base/basescrollbar.lzx
+basescrollbar: base/basescrollbar.lzx
+basescrollthumb: base/basescrollbar.lzx
+basescrolltrack: base/basescrollbar.lzx
+baseslider: base/baseslider.lzx
+basesliderthumb: base/baseslider.lzx
+baseslidertrack: base/baseslider.lzx
+basestyle: charts/styles/chartstyle.lzx
+basetab: base/basetabs.lzx
+basetabelement: base/basetabelement.lzx
+basetabpane: base/basetabs.lzx
+basetabpanecontent: base/basetabs.lzx
+basetabs: base/basetabs.lzx
+basetabsbar: base/basetabs.lzx
+basetabscontent: base/basetabs.lzx
+basetabslider: base/basetabslider.lzx
+basetrackgroup: base/basetrackgroup.lzx
+basetree: base/basetree.lzx
+basevaluecomponent: base/basevaluecomponent.lzx
+basewindow: base/basewindow.lzx
+basezoomarea: charts/addon/zoomarea.lzx
+bluestyle: base/defaultstyles.lzx
+browser: extensions/test/html.lzx
+button: lz/button.lzx
+camera: extensions/av/camera.lzx
+chart: charts/common/chart.lzx
+chartactionhelper: charts/common/rectangularchart.lzx
+chartbgstyle: charts/styles/chartstyle.lzx
+chartstyle: charts/styles/chartstyle.lzx
+checkbox: lz/checkbox.lzx
+colorbox: utils/diagnostic/inspector/inspector.lzx
+colormenu: utils/diagnostic/inspector/colormenu.lzx
+colormenuitem: utils/diagnostic/inspector/colormenu.lzx
+colorspot: utils/diagnostic/inspector/colormenu.lzx
+columnchart: charts/columnchart/columnchart.lzx
+columnchartplotarea: charts/columnchart/columnchartplotarea.lzx
+combobox: lz/combobox.lzx
+constantboundslayout: utils/layouts/constantboundslayout.lzx
+constantlayout: utils/layouts/constantlayout.lzx
+curve: extensions/test/drawing.lzx
+custombaseslider: charts/addon/slider/slider.lzx
+databar: charts/common/databar.lzx
+datacolumn: charts/common/dataseries.lzx
+datacombobox: lz/datacombobox.lzx
+datalabel: charts/common/datalabel.lzx
+datalistselector: base/datalistselector.lzx
+datamarker: charts/common/datamarker.lzx
+datapoints: charts/common/datapoints.lzx
+dataseries: charts/common/dataseries.lzx
+datastyle: charts/styles/chartstyle.lzx
+datastylelist: charts/styles/chartstyle.lzx
+datatip: charts/common/datatip.lzx
+datepicker: lz/datepicker.lzx
+datepickercombobox: lz/datepicker.lzx
+datepickerday: lz/datepicker.lzx
+datepickerlistitem: lz/datepicker.lzx
+datepickerweek: lz/datepicker.lzx
+debugger_shadow_bottom: debugger/debugger.lzx
+debugger_shadow_right: debugger/debugger.lzx
+dragstate: utils/states/dragstate.lzx
+edittext: lz/edittext.lzx
+floatinglist: lz/floatinglist.lzx
+focusoverlay: base/basefocusview.lzx
+form: lz/form.lzx
+frametimer: utils/diagnostic/frametimer.lzx
+goldstyle: base/defaultstyles.lzx
+greenstyle: base/defaultstyles.lzx
+grid: lz/grid.lzx
+gridcolumn: lz/gridcolumn.lzx
+gridtext: lz/gridtext.lzx
+hbox: base/hbox.lzx
+horizontalaxis: charts/common/horizontalaxis.lzx
+hscrollbar: lz/hscrollbar.lzx
+html: extensions/html.lzx
+image: base/image.lzx
+inittimer: utils/diagnostic/inittimer.lzx
+inspector: utils/diagnostic/inspector/inspector.lzx
+item: utils/diagnostic/inspector/inspector.lzx
+javarpc: rpc/javarpc.lzx
+label: charts/common/label.lzx
+labelstyle: charts/styles/chartstyle.lzx
+legend: charts/common/legend.lzx
+legenditem: charts/common/legend.lzx
+linechart: charts/linechart/linechart.lzx
+linechartplotarea: charts/linechart/linechartplotarea.lzx
+linestyle: charts/styles/chartstyle.lzx
+list: lz/list.lzx
+listitem: lz/listitem.lzx
+listselector: base/listselector.lzx
+marker: charts/common/legend.lzx
+mediadevice: extensions/av/mediadevice.lzx
+mediastream: extensions/av/mediastream.lzx
+menu: lz/menu.lzx
+menuarrow: lz/menu.lzx
+menubar: lz/menu.lzx
+menubutton: lz/menu.lzx
+menufloatinglist: lz/menu.lzx
+menuitem: lz/menu.lzx
+menuseparator: lz/menu.lzx
+menutrackgroup: lz/menu.lzx
+microphone: extensions/av/microphone.lzx
+modaldialog: lz/modaldialog.lzx
+mred: lz/mr-ed.lzx
+multistatebutton: base/multistatebutton.lzx
+netparam: extensions/av/rtmpconnection.lzx
+netremotecall: extensions/av/rtmpconnection.lzx
+param: rpc/rpc.lzx
+piechart: charts/piechart/piechart.lzx
+piechartplotarea: charts/piechart/piechartplotarea.lzx
+piepiece: charts/piechart/piepiece.lzx
+plainfloatinglist: lz/plainfloatinglist.lzx
+plotstyle: charts/styles/chartstyle.lzx
+pointstyle: charts/styles/chartstyle.lzx
+propedit: utils/diagnostic/inspector/inspector.lzx
+purplestyle: base/defaultstyles.lzx
+radiobutton: lz/radio.lzx
+radiogroup: lz/radio.lzx
+rangeslider: charts/addon/slider/slider.lzx
+rectangularchart: charts/common/rectangularchart.lzx
+regionstyle: charts/styles/chartstyle.lzx
+remotecall: rpc/rpc.lzx
+resizelayout: utils/layouts/resizelayout.lzx
+resizestate: utils/states/resizestate.lzx
+resizestatemin: utils/states/resizestatemin.lzx
+resizeview_x: base/resizeview.lzx
+resizeview_y: base/resizeview.lzx
+reverselayout: utils/layouts/reverselayout.lzx
+rpc: rpc/rpc.lzx
+rtmpconnection: extensions/av/rtmpconnection.lzx
+rtmpstatus: av/rtmpstatus.lzx
+scrollbar: lz/scrollbar.lzx
+sessionrpc: rpc/sessionrpc.lzx
+silverstyle: base/defaultstyles.lzx
+simpleboundslayout: utils/layouts/simpleboundslayout.lzx
+simpleinputtext: lz/simpletext.lzx
+simplelayout: utils/layouts/simplelayout.lzx
+simpleslider: charts/addon/slider/slider.lzx
+slider: lz/slider.lzx
+sliderknob: charts/addon/slider/slider.lzx
+sliderthumb: lz/slider.lzx
+slidertrack: lz/slider.lzx
+soap: rpc/soap.lzx
+stableborderlayout: utils/layouts/stableborderlayout.lzx
+statictext: base/basecomponent.lzx
+strokestyle: charts/styles/strokestyle.lzx
+style: base/style.lzx
+styleparser: charts/styles/styleparser.lzx
+submit: base/submit.lzx
+swatchview: base/swatchview.lzx
+tab: lz/tabs.lzx
+tabelement: lz/tabelement.lzx
+tabpane: lz/tabs.lzx
+tabs: lz/tabs.lzx
+tabsbar: lz/tabs.lzx
+tabscontent: lz/tabs.lzx
+tabslider: lz/tabslider.lzx
+textformat: extensions/views/LzTextFormat.lzx
+textlistitem: lz/textlistitem.lzx
+tickmarklabel: charts/common/tickmarklabel.lzx
+ticks: charts/addon/slider/slider.lzx
+tickstyle: charts/styles/chartstyle.lzx
+toggletext: utils/diagnostic/inspector/inspector.lzx
+tree: lz/tree.lzx
+treeselector: base/treeselector.lzx
+valueline: charts/common/valueline.lzx
+valuelinestyle: charts/styles/chartstyle.lzx
+valuepoints: charts/common/valuepoints.lzx
+valuepointstyle: charts/styles/chartstyle.lzx
+valueregion: charts/common/valueregion.lzx
+valueregionstyle: charts/styles/chartstyle.lzx
+vbox: base/vbox.lzx
+versioninfo: utils/diagnostic/versioninfo.lzx
+verticalaxis: charts/common/verticalaxis.lzx
+videolibraryicon: av/videolibraryicon.lzx
+videolibrarypopup: av/videolibrarypopup.lzx
+videoplayer: av/videoplayer.lzx
+videoscreen: av/videoscreen.lzx
+videoslider: av/videoslider.lzx
+videothumbnail: av/videothumbnail.lzx
+videotogglebutton: av/videotogglebutton.lzx
+videoview: extensions/av/videoview.lzx
+videovolumebutton: av/videovolumebutton.lzx
+viewlistmanager: charts/common/viewspoolmanager.lzx
+viewslist: charts/common/viewspoolmanager.lzx
+viewspool: charts/common/viewspoolmanager.lzx
+viewspoolmanager: charts/common/viewspoolmanager.lzx
+virtualdrawview: charts/common/virtualdrawview.lzx
+vscrollbar: lz/vscrollbar.lzx
+webapprpc: rpc/webapprpc.lzx
+whitestyle: base/defaultstyles.lzx
+window: lz/window.lzx
+windowpanel: lz/windowpanel.lzx
+wrappinglayout: utils/layouts/wrappinglayout.lzx
+xdragstate: charts/addon/slider/slider.lzx
+xmlrpc: rpc/xmlrpc.lzx
+zoomarea: charts/addon/zoomarea.lzx

Modified: openlaszlo/branches/devildog/WEB-INF/lps/server/src/org/openlaszlo/compiler/NodeModel.java
===================================================================
--- openlaszlo/branches/devildog/WEB-INF/lps/server/src/org/openlaszlo/compiler/NodeModel.java	2008-01-23 23:00:26 UTC (rev 7878)
+++ openlaszlo/branches/devildog/WEB-INF/lps/server/src/org/openlaszlo/compiler/NodeModel.java	2008-01-24 01:52:48 UTC (rev 7879)
@@ -1,3 +1,4 @@
+/* -*- mode: Java; c-basic-offset: 4; -*- */
 /* ***************************************************************************
  * NodeModel.java
  * ***************************************************************************/
@@ -53,8 +54,10 @@
     /** A set {eventName: String -> True) of names of event handlers
      * declared with <method event="xxx"/>. */
     protected ComparisonMap delegates = new ComparisonMap();
+    /* Unused */
     protected ComparisonMap events = new ComparisonMap();
     protected ComparisonMap references = new ComparisonMap();
+    /* Unused */
     protected ComparisonMap paths = new ComparisonMap();
     protected ComparisonMap setters = new ComparisonMap();
     protected ComparisonMap styles = new ComparisonMap();
@@ -721,7 +724,7 @@
                       ComparisonMap attrs, ComparisonMap events,
                       ComparisonMap references, ComparisonMap paths,
                       ComparisonMap styles) {
-        if (cattr.type == cattr.ATTRIBUTE) {
+        if (cattr.type == cattr.ATTRIBUTE || cattr.type == cattr.EVENT) {
             if (attrs.containsKey(name, caseSensitive)) {
                 env.warn(
 /* (non-Javadoc)
@@ -1485,10 +1488,10 @@
                 ,element);
         }
 
-
-        // We about just the event names, so the runtime can set them
-        // to the default event sentinel object.
-        events.put(name, "");
+        // An event is really just an attribute with an implicit
+        // default (sentinal) value
+        CompiledAttribute cattr = new CompiledAttribute(CompiledAttribute.EVENT, "LzDeclaredEvent");
+        addAttribute(cattr, name, attrs, events, references, paths, styles);
     }
 
     void addAttributeElement(Element element) {
@@ -1608,20 +1611,25 @@
 
         // Add entry for attribute setter function
         String setter = element.getAttributeValue("setter");
-        // Backward compatibility
-        if (setter == null) {
-            setter = element.getAttributeValue("onset");
-        }
+
         if (setter != null) {
             String srcloc =
                 CompilerUtils.sourceLocationDirective(element, true);
+            // By convention 'anonymous' setters are put in the 'lzc'
+            // namespace with the name set_<property name>
+            String settername = "$lzc$" + "set_" + name;
             // Maybe we need a new type for "function"?
-            String setterfn =
-                srcloc + "function " +
-                parent_name + "_" + name + "_onset" +
-                " (" + name + ") {" +
-                "\n#pragma 'withThis'\n" +
-                srcloc + setter + "\n}";
+            Function setterfn = new
+                Function(
+                    settername,
+                    // the lone argument to a setter is named after
+                    // the attribute
+                    name,
+                    "\n#beginContent\n" +
+                    "\n#pragma 'withThis'\n" +
+                    srcloc + 
+                    setter +  "\n#endContent",
+                    srcloc);
 
             if (setters.get(name) != null) {
                 env.warn(
@@ -1630,7 +1638,10 @@
                     element);
             }
 
-            setters.put(name, setterfn);
+            // TODO: [2008-01-21 ptw] some day this will be coalesed
+            // into just creating a method named `"set" + name`
+            attrs.put(settername, setterfn);
+            setters.put(name, ScriptCompiler.quote(settername));
         }
     }
 
@@ -1703,14 +1714,6 @@
         if (!delegateList.isEmpty()) {
             attrs.put("$delegates", delegateList);
         }
-        if (!events.isEmpty()) {
-            List eventsList = new ArrayList();
-            for (Iterator iter = events.keySet().iterator(); iter.hasNext();) {
-                String eventName = (String) iter.next();
-                eventsList.add(ScriptCompiler.quote(eventName));
-            }
-            attrs.put("$events", eventsList);
-        }
         if (!references.isEmpty()) {
             attrs.put("$refs", references);
         }

Copied: openlaszlo/branches/devildog/build-tools/build-autoincludes.sh (from rev 7878, openlaszlo/trunk/build-tools/build-autoincludes.sh)

Modified: openlaszlo/branches/devildog/build.xml
===================================================================
--- openlaszlo/branches/devildog/build.xml	2008-01-23 23:00:26 UTC (rev 7878)
+++ openlaszlo/branches/devildog/build.xml	2008-01-24 01:52:48 UTC (rev 7879)
@@ -388,6 +388,7 @@
       <ant target="clean-classes" />
       <ant dir="${webapp-lps-home}/lfc"      target="clean" />
       <ant dir="lps/includes/source"         target="clean" />
+      <ant dir="lps/components"              target="clean" />
       <ant dir="${webapp-lps-home}/schema"   target="clean" />
       <ant dir="${webapp-lps-home}/server"   target="clean" />
       <ant dir="demos"          target="clean" />
@@ -528,6 +529,7 @@
       <ant dir="${webapp-lps-home}/lfc" target="build"/>
       <!-- Also uses server script compiler -->
       <ant dir="lps/includes/source"    target="build" />
+      <ant dir="lps/components"         target="build" />
       
       <property name="build.done" value="true" />
   </target>

Modified: openlaszlo/branches/devildog/docs/src/developers/browser-integration.dbk
===================================================================
--- openlaszlo/branches/devildog/docs/src/developers/browser-integration.dbk	2008-01-23 23:00:26 UTC (rev 7878)
+++ openlaszlo/branches/devildog/docs/src/developers/browser-integration.dbk	2008-01-24 01:52:48 UTC (rev 7879)
@@ -252,7 +252,7 @@
         <programlisting>
     lps/includes/source/embednew.js</programlisting>
         <para>The source for 
-    <literal>embednew.js</literal>isshipped compressed as</para>
+    <literal>embednew.js</literal> is shipped compressed as</para>
         <programlisting>
     lps/includes/embed-compressed.js.</programlisting>
         <para>The comments/API documentation are in the source file and

Modified: openlaszlo/branches/devildog/docs/src/developers/databinding.dbk
===================================================================
--- openlaszlo/branches/devildog/docs/src/developers/databinding.dbk	2008-01-23 23:00:26 UTC (rev 7878)
+++ openlaszlo/branches/devildog/docs/src/developers/databinding.dbk	2008-01-24 01:52:48 UTC (rev 7879)
@@ -574,7 +574,7 @@
 <example role="live-example">
    <title>Ondata event</title>
    <programlisting language="lzx">
-   <textobject><textdata fileref="programs/databinding-$16.lzx"/></textobject> 
+   <textobject><textdata fileref="programs/databinding-$14.lzx"/></textobject> 
    </programlisting>
 </example>
 
@@ -595,7 +595,7 @@
 <example role="live-example">
    <title>Using rerunxpath attribute</title>
    <programlisting language="lzx">
-   <textobject><textdata fileref="programs/databinding-$17.lzx"/></textobject> 
+   <textobject><textdata fileref="programs/databinding-$16.lzx"/></textobject> 
    </programlisting>
 </example>
 
@@ -606,28 +606,37 @@
 first one is declared with <literal>rerunxpath="true"</literal>, and therefore it points to the actual first data node, while the 
 second one remembers the node it was referencing initially, and never gets updated.</para>
 <para/></section><section><title>Forcing visibility of datamapped views</title>
-<para>By default, any view whose datapath does not match any data will not be visible. However, sometimes it is 
-desirable to override this behavior, specifying that a datamapped view should be visible regardless of whether or 
-not it has data. A typical example of this is a panel containing placeholder views mapped to dynamically retrieved 
-data records, that need to be visible at all times. This is accomplished by defining the view's datapath with the 
-<indexterm><primary>datacontrolsvisibility</primary></indexterm><sgmltag class="attribute">datacontrolsvisibility</sgmltag> attribute and setting its value to <literal>false</literal>.</para>
+<para>By default, a view that is databound will have a <literal>visibility</literal> attribute of <literal>
+collapse</literal>, 
+which will cause it not to be visible when it has no data, that is, when the xpath does not match 
+any entries in the dataset.</para>
+<para>However, sometimes it is desirable to override this behavior, specifying that a datamapped 
+view should be visible regardless of whether or not it has data. A typical example of this is a panel 
+containing placeholder views mapped to dynamically retrieved data records, that need to be visible at 
+all times. You do this by setting the view's <literal>visibility</literal> attribute to <literal>visible</literal>.</para>
 
-<para>The following example illustrates the usage of this attribute. The green square view's datapath initially has 
-no data, but its datapath is declared with <indexterm><primary>datacontrolsvisibility</primary></indexterm><sgmltag class="attribute">datacontrolsvisibility</sgmltag> set to false, and thus it is always visible.
-The red square's datapath initially matches nothing, and <indexterm><primary>dataControlsVisibility</primary></indexterm><sgmltag class="attribute">dataControlsVisibility</sgmltag> is left at its default value of <literal>true</literal>,
-and as expected, the view is not shown. But after we add another node to the dataset, the datapath has a match, and
-the view becomes visible. The blue square is declared with a matching datapath, so it is made visible.</para>
+<para>The following example allows you to explore the effect of different settings of the <literal>
+visibility</literal> 
+attribute when the databinding of a view does and does not match. There are three 'stoplights', 
+the red bulb has <literal>visibility="hidden"</literal>, the yellow bulb has <literal>visibility="collapse"
+</literal> and the green bulb 
+has <literal>visibility="visible"</literal>. This means the green light will always be on, the yellow light will be 
+on when there is data and the red light will never be on. When initially loaded, there is only 
+data for the first stoplight, the second and third stoplights have no matching data. Clicking on 
+the Add Data button will add another entry to the <literal>dataset</literal> causing the second (and third if you 
+click again) stoplight to have data. The text describes the current state of each bulb's <literal>visibility</literal> 
+and <literal>visible</literal> attributes. You can see the <literal>visible</literal> attribute of the 
+second and third yellow lights change 
+when you Add Data. You can also press the Toggle Visibility on each light bulb to cycle through the 
+different <literal>visibility</literal> settings to see how they affect the <literal>visible</literal> attribute 
+depending on the presence or absence of data.</para>
 <example role="live-example">
    <title>Visibility of datamapped views</title>
    <programlisting language="lzx">
-   <textobject><textdata fileref="programs/databinding-$18.lzx"/></textobject> 
+   <textobject><textdata fileref="programs/viewvisibility.lzx"/></textobject> 
    </programlisting>
 </example>
 
-
-<para>Lastly, <indexterm><primary>datacontrolsvisibility</primary></indexterm><sgmltag class="attribute">datacontrolsvisibility</sgmltag> is read-only, which means that changing it at runtime has 
-no effect, and is expected to be declared as a separate attribute.</para>
-
 <para/></section><section><title>Update timing (order of data initialization)</title>
 <para>Because data contained by static datasets is compiled into the application, it is available immediately. 
 Therefore any datapointers that have a static dataset as part of their paths will send the ondata event before
@@ -643,7 +652,7 @@
 <example role="live-example">
    <title>Proper handling of data updates</title>
    <programlisting language="lzx">
-   <textobject><textdata fileref="programs/databinding-$19.lzx"/></textobject> 
+   <textobject><textdata fileref="programs/databinding-$18.lzx"/></textobject> 
    </programlisting>
 </example>
 
@@ -662,7 +671,7 @@
 <example role="live-example">
    <title>Using datapointer's iterator methods</title>
    <programlisting language="lzx">
-   <textobject><textdata fileref="programs/databinding-$20.lzx"/></textobject> 
+   <textobject><textdata fileref="programs/databinding-$19.lzx"/></textobject> 
    </programlisting>
 </example>
 
@@ -676,7 +685,7 @@
 <example role="live-example">
    <title>Using setPointer</title>
    <programlisting language="lzx">
-   <textobject><textdata fileref="programs/databinding-$21.lzx"/></textobject> 
+   <textobject><textdata fileref="programs/databinding-$20.lzx"/></textobject> 
    </programlisting>
 </example>
 
@@ -690,7 +699,7 @@
 <example role="live-example">
    <title>Dereferencing datapaths</title>
    <programlisting language="lzx">
-   <textobject><textdata fileref="programs/databinding-$22.lzx"/></textobject> 
+   <textobject><textdata fileref="programs/databinding-$21.lzx"/></textobject> 
    </programlisting>
 </example>
 
@@ -701,7 +710,7 @@
 <example role="live-example">
    <title>Datapath iteration</title>
    <programlisting language="lzx">
-   <textobject><textdata fileref="programs/databinding-$23.lzx"/></textobject> 
+   <textobject><textdata fileref="programs/databinding-$22.lzx"/></textobject> 
    </programlisting>
 </example>
 
@@ -715,7 +724,7 @@
 <example role="live-example">
    <title>Datapath iteration workaround</title>
    <programlisting language="lzx">
-   <textobject><textdata fileref="programs/databinding-$24.lzx"/></textobject> 
+   <textobject><textdata fileref="programs/databinding-$23.lzx"/></textobject> 
    </programlisting>
 </example>
 

Modified: openlaszlo/branches/devildog/docs/src/developers/language-preliminaries.dbk
===================================================================
--- openlaszlo/branches/devildog/docs/src/developers/language-preliminaries.dbk	2008-01-23 23:00:26 UTC (rev 7878)
+++ openlaszlo/branches/devildog/docs/src/developers/language-preliminaries.dbk	2008-01-24 01:52:48 UTC (rev 7879)
@@ -582,7 +582,7 @@
 <para/></section></section>
 <!-- add id tag to section so we can link to here. IORIO 22 oct 2007 -->
 <section id="combine-tags-script">
-><title>Combining Tags and Script in LZX Programs</title> 
+<title>Combining Tags and Script in LZX Programs</title> 
 
 <para>As mentioned earlier, virtually all nontrivial LZX programs contain both (XML) tags and script. Tags are used declaratively, that is, to define objects and their attributes. Script is used procedurally, that is, to explicitly define a series of steps. Although the two kinds of code are liberally intermixed within LZX — for example, script can appear within tags — each syntax locally maintains its integrity.</para> 
 

Modified: openlaszlo/branches/devildog/docs/src/developers/media-resources.dbk
===================================================================
--- openlaszlo/branches/devildog/docs/src/developers/media-resources.dbk	2008-01-23 23:00:26 UTC (rev 7878)
+++ openlaszlo/branches/devildog/docs/src/developers/media-resources.dbk	2008-01-24 01:52:48 UTC (rev 7879)
@@ -21,11 +21,9 @@
     <indexterm>
       <primary>videoview</primary>
     </indexterm>
-    <sgmltag class="element">videoview</sgmltag>s. Please see 
-    <xref linkend="video" />for a discussion of streaming
+    <sgmltag class="element">videoview</sgmltag>s. See 
+    <xref linkend="video" /> for a discussion of streaming
     media.</para>
-    <para>For a discussion of streaming media, see 
-    <xref linkend="video" />.</para>
   </section>
   <section>
     <title>Supported media types</title>

Modified: openlaszlo/branches/devildog/docs/src/developers/methods-events-attributes.dbk
===================================================================
--- openlaszlo/branches/devildog/docs/src/developers/methods-events-attributes.dbk	2008-01-23 23:00:26 UTC (rev 7878)
+++ openlaszlo/branches/devildog/docs/src/developers/methods-events-attributes.dbk	2008-01-24 01:52:48 UTC (rev 7879)
@@ -17,7 +17,7 @@
 </para>
 <para>
 In LZX you use  attributes, events, and handlers to describe how your application responds to user input or other changes.
-In general, and to a first approximation, when an<emphasis role="em">attribute</emphasis> changes value, it can generate an <emphasis role="em">event </emphasis>. (See below for an qualification of when setting an attribute's value does and does not cause and event to be sent.) You can additionally declare events with an <indexterm><primary>event</primary></indexterm><sgmltag class="element">&lt;event&gt;</sgmltag><remark role="fixme">[unknown tag]</remark>
+In general, and to a first approximation, when an <emphasis role="em">attribute</emphasis> changes value, it can generate an <emphasis role="em">event </emphasis>. (See below for an qualification of when setting an attribute's value does and does not cause and event to be sent.) You can additionally declare events with an <indexterm><primary>event</primary></indexterm><sgmltag class="element">&lt;event&gt;</sgmltag><remark role="fixme">[unknown tag]</remark>
 <!--unknown tag: event-->
   tag.
 Your application's response to that event is determined by the associated<glossterm>event handler</glossterm>, which is
@@ -46,7 +46,7 @@
  or <indexterm><primary>view</primary></indexterm><sgmltag class="element">&lt;view&gt;</sgmltag><remark role="fixme">[unknown tag]</remark>
 <!--unknown tag: view-->
  (or classes derived from them).   When defining a method, you must specify
-a value for the <indexterm><primary>name</primary></indexterm><sgmltag class="attribute">name</sgmltag>attribute. The value of the 
+a value for the <indexterm><primary>name</primary></indexterm><sgmltag class="attribute">name</sgmltag> attribute. The value of the 
 <indexterm><primary>name</primary></indexterm><sgmltag class="attribute">name</sgmltag> attribute represents the name by which you will call this method in script. When you call the method, you use its name followed by open and close parentheses -- any arguments to the method would be placed within the parentheses.
 </para>
 <para>
@@ -386,11 +386,9 @@
 &lt;/view&gt;
 </programlisting>
 
-<para>Attributes can be an element of a tag or a property of a JavaScript
-  class. Attributes that are properties of t
-
-Attributes are usually declared and set in tags, but they can also
-  be set and read in script.  However, not <emphasis role="em">all</emphasis> attributes can be set in script,
+<para>An attribute can be an element of a tag or a property of a JavaScript
+  class. Attributes that are properties of tags are usually declared and set in those tags, but they can also
+  be set and read in script. However, not <emphasis role="em">all</emphasis> attributes can be set in script,
   similarly not all attributes can be in tags. Attributes are
   characterized based on this behavior into five categories, as explained below.</para>
 
@@ -422,7 +420,7 @@
 The <indexterm><primary>attribute</primary></indexterm><sgmltag class="element">&lt;attribute&gt;</sgmltag> tag is useful for writing classes as well as for performing complicated
  constraints of existing attributes.</para>
 
-<para>In script, the values of most attributes are can be retrieved using
+<para>In script, the values of most attributes can be retrieved using
 dot syntax:</para>
 
 <example role="live-example">

Modified: openlaszlo/branches/devildog/docs/src/developers/performance.dbk
===================================================================
--- openlaszlo/branches/devildog/docs/src/developers/performance.dbk	2008-01-23 23:00:26 UTC (rev 7878)
+++ openlaszlo/branches/devildog/docs/src/developers/performance.dbk	2008-01-24 01:52:48 UTC (rev 7879)
@@ -441,7 +441,7 @@
 <para>The compiler directive has two forms.  The <indexterm><primary>class</primary></indexterm><sgmltag class="attribute">class</sgmltag> attribute is a single class.  The <indexterm><primary>classes</primary></indexterm><sgmltag class="attribute">classes</sgmltag> attribute is a list of class names, so that this</para>
 <programlisting>
 &lt;?lzc class="c1" inline-only="true"?&gt;
-&lt;?lzc class="c1" inline-only="true"?&gt;</programlisting>
+&lt;?lzc class="c2" inline-only="true"?&gt;</programlisting>
 <para>can be abbreviated as this:</para>
 <programlisting>
   &lt;?lzc classes="c1 c2" inline-only="true"?&gt;

Modified: openlaszlo/branches/devildog/docs/src/developers/programs/databinding-$14.lzx
===================================================================
--- openlaszlo/branches/devildog/docs/src/developers/programs/databinding-$14.lzx	2008-01-23 23:00:26 UTC (rev 7878)
+++ openlaszlo/branches/devildog/docs/src/developers/programs/databinding-$14.lzx	2008-01-24 01:52:48 UTC (rev 7879)
@@ -1,28 +1,53 @@
-
-<canvas height="150" debug="true">
-  <debug x="150"/>
-  <dataset name="onion">
-    <layer order="1"><layer><layer>core</layer></layer></layer>
-  </dataset>
-
-  <view datapath="onion:/layer">
-     <simplelayout spacing="5"/>
-     <view width="${100 / this.data}" height="${100 / this.data}" 
-           bgcolor="0x09d055" datapath="@order" 
-           opacity="${Math.min(1, this.data / 3)}"/>
-    
-    <button text="Peel next layer">
-      <handler name="onclick">
-        with (parent.datapath) {
-          Debug.write(data)
-          if (!selectChild()) this.setAttribute('enabled', false) 
-          else setNodeAttribute('order', Number(p.parentNode.attributes['order']) + 1)
-         }
+<canvas height="200" >
+  <dataset name="numbers"/>
+  <datapointer name="top" xpath="numbers:/"/>
+  
+  <datapointer name="numptr">
+    <handler name="ondata" args="d">
+      // d is LzDataElement object 
+      result.update(d.nodeName)
+    </handler>
+  </datapointer>
+  
+  <simplelayout spacing="5"/>
+  <text>Type in a number and press the button or the Enter key</text>
+  <view>
+    <simplelayout spacing="10" axis="x"/>
+    <edittext name="input">
+      <handler name="onkeyup" args="k">
+        if ( k == 13 ) {
+          parent.bSend.compute();
+        }
       </handler>
+    </edittext>
+    <button name="bSend" text="Add">
+      <handler name="onclick" method="compute"/>
+        <method name="compute">
+        top.addNode(parent.input.getText())
+        var end = top.xpathQuery('*/last()')
+        numptr.setXPath('numbers:/*[' + end + ']')
+        parent.input.clearText()
+      </method>
     </button>
+</view>
+<view height="100" >
+    <text bgcolor="0xcecece" datapath="numbers:/*/name()"/>
+    <wrappinglayout axis="y" spacing="3"/>
   </view>
+  
+  <view>
+    <attribute name="sum" value="$once{0}"/>
+    <simplelayout axis="x"/>
+    <text><b>AVG: </b></text>
+    <text id="result" fgcolor="blue" fontstyle="bold">
+      <method name="update" args="v">
+        parent.sum += Number(v)
+        this.setText(parent.sum / top.p.childNodes.length)
+      </method>
+    </text>
+  </view>
 </canvas>
 <!-- * X_LZ_COPYRIGHT_BEGIN ***************************************************
-* Copyright 2007 Laszlo Systems, Inc.  All Rights Reserved.                   *
+* Copyright 2008 Laszlo Systems, Inc.  All Rights Reserved.                   *
 * Use is subject to license terms.                                            *
 * X_LZ_COPYRIGHT_END ****************************************************** -->

Deleted: openlaszlo/branches/devildog/docs/src/developers/programs/databinding-$17.lzx

Copied: openlaszlo/branches/devildog/docs/src/developers/programs/viewvisibility.lzx (from rev 7878, openlaszlo/trunk/docs/src/developers/programs/viewvisibility.lzx)

Modified: openlaszlo/branches/devildog/docs/src/developers/video.dbk
===================================================================
--- openlaszlo/branches/devildog/docs/src/developers/video.dbk	2008-01-23 23:00:26 UTC (rev 7878)
+++ openlaszlo/branches/devildog/docs/src/developers/video.dbk	2008-01-24 01:52:48 UTC (rev 7879)
@@ -11,10 +11,10 @@
 s. For discussion of that topic, see <xref linkend="media-resources"/>. The video APIs described in this chapter work only in OpenLaszlo applications that are compiled for the Flash runtime target.
 </para>
 
-<para>OpenLaszlo video APIs give you access to the full functionality of media players such as the <ulink url="http://www.adobe.com/products/flashmediaserver/">Flash Media Server</ulink> and the <ulink url="http://www.osflash.org/red5">Red5</ulink> media player. When you OpenLaszlo program is connected to a media server over a Real Time Media Protocol connection, you can not only receive and play audio and video (in mp3 and flv formats), you can also record your own audio and video locally and send it to the server, where it can be stored or shared in real time with other client programs.
+<para>OpenLaszlo video APIs give you access to the full functionality of media players such as the <ulink url="http://www.adobe.com/products/flashmediaserver/">Flash Media Server</ulink> and the <ulink url="http://www.osflash.org/red5">Red5</ulink> media player. When your OpenLaszlo program is connected to a media server over a Real Time Media Protocol connection, you can not only receive and play audio and video (in mp3 and flv formats), you can also record your own audio and video locally and send it to the server, where it can be stored or shared in real time with other client programs.
 </para>
 <para>
-In contrast to RTMP, files that are streamed over an HTTP connection allow more limited limited functionality.</para>
+In contrast to RTMP, files that are streamed over an HTTP connection allow more limited functionality.</para>
 
 <para>This chapter explains the concepts of controlling streaming media over an HTTP connection and and bi-directional communication with a media server over an RTMP connection. </para>
 

Modified: openlaszlo/branches/devildog/docs/src/nav/toc.xml
===================================================================
--- openlaszlo/branches/devildog/docs/src/nav/toc.xml	2008-01-23 23:00:26 UTC (rev 7878)
+++ openlaszlo/branches/devildog/docs/src/nav/toc.xml	2008-01-24 01:52:48 UTC (rev 7879)
@@ -228,8 +228,8 @@
         <item title="TestResult" href="lz.TestResult.html" />
         <item title="TestSuite" href="lz.TestSuite.html" />        
     </category>
-    <category title="Appendices">
+ <!--    <category title="Appendices">
         <item title="Reserved Words [TODO LPP-4937]" />
-    </category>
-    <!-- Copyright 2007 Laszlo Systems -->     
+    </category> -->
+    <!-- Copyright 2008 Laszlo Systems -->     
 </toc>

Modified: openlaszlo/branches/devildog/laszlo-explorer/coverpages/components_cover.html
===================================================================
--- openlaszlo/branches/devildog/laszlo-explorer/coverpages/components_cover.html	2008-01-23 23:00:26 UTC (rev 7878)
+++ openlaszlo/branches/devildog/laszlo-explorer/coverpages/components_cover.html	2008-01-24 01:52:48 UTC (rev 7879)
@@ -30,7 +30,7 @@
     look of the OpenLaszlo components, see:
   </p>
   <ul>
-     <li><a href="../../docs/reference/index.html?style.html"
+     <li><a href="../../docs/reference/lz.style.html"
         target="laszlo-reference">Style Reference</a></li>
      <li><a href="../../docs/component-design/index.html"
         target="laszlo-components-design">Component Design Guide</a>

Copied: openlaszlo/branches/devildog/lps/components/build.xml (from rev 7878, openlaszlo/trunk/lps/components/build.xml)



More information about the Laszlo-checkins mailing list