Author: pbr Date: 2007-09-05 09:53:49 -0700 (Wed, 05 Sep 2007) New Revision: 6362
Added: openlaszlo/branches/wafflecone/WEB-INF/lps/lfc/helpers/LzDataSelectionManager.lzs Modified: openlaszlo/branches/wafflecone/WEB-INF/lps/lfc/helpers/Library.lzs openlaszlo/branches/wafflecone/WEB-INF/lps/lfc/helpers/LzSelectionManager.lzs openlaszlo/branches/wafflecone/test/data/selectionmanager.lzx Log: Change 20070903-sallen-6 by [EMAIL PROTECTED] on 2007-09-03 16:04:47 PDT in /cygdrive/c/laszlo/svn/openlaszlo/branches/wafflecone for http://svn.openlaszlo.org/openlaszlo/branches/wafflecone Summary: split selectionmanager and dataselectionmanager into two files (for readability) and fixed bug in test file Bugs Fixed: LPP-4638 selectionmanager test broken Technical Reviewer: (pending) QA Reviewer: (pending) Doc Reviewer: (pending) Documentation: Release Notes: Details: Tests: ran test/data/selectionmanager.lzx Files: M test/data/selectionmanager.lzx A WEB-INF/lps/lfc/helpers/LzDataSelectionManager.lzs M WEB-INF/lps/lfc/helpers/Library.lzs M WEB-INF/lps/lfc/helpers/LzSelectionManager.lzs Changeset: http://svn.openlaszlo.org/openlaszlo/patches/20070903-sallen-6.tar Modified: openlaszlo/branches/wafflecone/WEB-INF/lps/lfc/helpers/Library.lzs =================================================================== --- openlaszlo/branches/wafflecone/WEB-INF/lps/lfc/helpers/Library.lzs 2007-09-05 12:53:39 UTC (rev 6361) +++ openlaszlo/branches/wafflecone/WEB-INF/lps/lfc/helpers/Library.lzs 2007-09-05 16:53:49 UTC (rev 6362) @@ -1,7 +1,7 @@ /** * Library.lzs * - * @copyright Copyright 2001-2006 Laszlo Systems, Inc. All Rights Reserved. + * @copyright Copyright 2001-2007 Laszlo Systems, Inc. All Rights Reserved. * Use is subject to license terms. * * @access private @@ -9,6 +9,7 @@ #include "helpers/LzFont.lzs" #include "helpers/LzSelectionManager.lzs" +#include "helpers/LzDataSelectionManager.lzs" #include "helpers/LzCommand.lzs" if ($as2) { Added: openlaszlo/branches/wafflecone/WEB-INF/lps/lfc/helpers/LzDataSelectionManager.lzs Property changes on: openlaszlo/branches/wafflecone/WEB-INF/lps/lfc/helpers/LzDataSelectionManager.lzs ___________________________________________________________________ Name: svn:mime-type + text/plain Name: svn:eol-style + native Modified: openlaszlo/branches/wafflecone/WEB-INF/lps/lfc/helpers/LzSelectionManager.lzs =================================================================== --- openlaszlo/branches/wafflecone/WEB-INF/lps/lfc/helpers/LzSelectionManager.lzs 2007-09-05 12:53:39 UTC (rev 6361) +++ openlaszlo/branches/wafflecone/WEB-INF/lps/lfc/helpers/LzSelectionManager.lzs 2007-09-05 16:53:49 UTC (rev 6362) @@ -270,182 +270,4 @@ } // End of LzSelectionManager -/** - * Implements same functionality as a normal selection manager, but without - * storing view references, which become invalid as views created by a datapath - * that uses lazy replication do. Does this by storing subview numbers. - * - * @lzxname dataselectionmanager - */ -class LzDataSelectionManager extends LzSelectionManager { - -/** @access private - * @modifiers override - */ -static var tagname = 'dataselectionmanager'; - -/** - * Makes the given view selected - * @access protected - * @param LzView o: The view to be selected - */ -function makeSelected ( o ){ - var so = o.datapath.p; - if ( this.manager == null ) this.manager = o.cloneManager; - if ( so.sel ) return; - so.sel = true; - this.selected.push( so ); - o.datapath[ this.sel ]( true ); - - if ( this.manager == null ){ - //just one "clone", mark it! - this.singleClone = o; - } -} - -/** - * Unselect the given view - * @param LzView o: The view to be unselected - */ -function unselect ( o ){ - if ( this.manager == null ) this.manager = o.cloneManager;//try to get a cloneManager - - var so = o.datapath.p; - so.sel = false; - for ( var i = this.selected.length-1 ; i >= 0; i-- ){ - if ( this.selected[ i ] == so ) { - this.selected.splice( i , 1 ); - break; - } - } - o.datapath[ this.sel ]( false ); - - if ( o == this.singleClone ) this.singleClone = null;//clear "singleClone" -} - -/** - * Selects the range between the datapath that was lastselected and the newly - * selected view - * @access private - * @param LzDataPath s: The datapath that was at top of the selection stack - * @param LzView e: The newly selected view - */ -function selectRange ( s , e ){ - if ( this.manager == null ){ - this.manager = e.cloneManager; - - //maybe we've got now clones - if ( this.manager == null ){ - //still no clones? - //so it's nothing to do, just hope so... - if ( $debug ){ - Debug.write( "selectRange failed, no clones" ); - } - return; - } - } - - var nodes = this.manager.nodes; - - var st = -1; - var en = -1; - var i = 0; - var ennode = e.datapath.p; - //find the start and end in the sort array of parents - - while ( ( st == -1 || en == -1 ) && i < nodes.length ){ - if ( nodes[ i ] == s ){ - st = i; - } - if ( nodes[ i ] == ennode ){ - en = i; - } - i++; - } - - - var dir = st > en ? -1 : 1; - - this.clearSelection(); - - this.lastRange = s; - - //couldn't find -- wierd - if ( st == -1 || en == -1 ) return; - - for ( var i = st; i != en + dir; i += dir ) { - var p = nodes[ i ]; - p.sel = true; - this.selected.push( p ); - this.__LZsetSelected( p, true ); - } -} - -/** - * Returns a list of datapointers, which point to the selected records - * @return Array: A list of datapointers - */ -function getSelection (){ - var r = []; - for ( var i = 0; i < this.selected.length ; i++ ){ - r.push( new LzDatapointer( null , {pointer : this.selected[i] })); - } - return r; -} - -/** - * Unselects everything that is currently selected and clears the selection - * list - * - */ -function clearSelection ( ){ - while ( this.selected.length ){ - var p = this.selected.pop(); - p.sel = false; - this.__LZsetSelected( p , false ); - } - this.lastRange = null; -} - -/** - * Tests whether the given view is selected - * @param LzView o: The view to test for selectedness - * @return Boolean: The selectedness of the input object. - */ -function isSelected ( o){ - if ( this.manager == null ) this.manager = o.cloneManager;//try to get a cloneManager - - return o.datapath.p.sel; -} - -/** - * sets the selected attribute of the data, if there is a clone, it will - * call setselected on the clone - * @param LzDataElement p: the node we want to set - * @param Boolean val: new value for selected - * @access private - */ -function __LZsetSelected ( p, val ){ - if ( this.manager != null ){ - var cl = this.manager.getCloneForNode( p, true ); - if ( cl ){ - cl.datapath[this.sel]( val ); - } else { // no clone on screen - p.sel = val; - } - } else {//no clones - //if caller is selectRange, then "this.manager" won't be "null" - //but if caller is clearSelection, "this.manager" could be "null", but then "val" is definitely "false" - if ( !val ){ - if ( this.singleClone != null && this.singleClone.datapath.p == p ){ - this.singleClone.datapath[this.sel]( false ); - this.singleClone = null; - return;//job is done... - } - } - p.sel = val;//default action - } -} - -} // End of LzDataSelectionManager Modified: openlaszlo/branches/wafflecone/test/data/selectionmanager.lzx =================================================================== --- openlaszlo/branches/wafflecone/test/data/selectionmanager.lzx 2007-09-05 12:53:39 UTC (rev 6361) +++ openlaszlo/branches/wafflecone/test/data/selectionmanager.lzx 2007-09-05 16:53:49 UTC (rev 6362) @@ -1,19 +1,25 @@ -<canvas width="200" height="200"> +<canvas width="500" height="300"> <dataset name="mydata" type="http" src="http:../resources/xml/800_forms.xml" request="true"/> + <text x="10" width="${canvas.width-20}" multiline="true"> + Click on an item in the list, it should appear yellow to indicate that the + dataselectionmanager is working. Selecting another item should de-select the first. + Scrolling should retain selection. + </text> + <class name="selectme" onclick="immediateparent.selector.select(this)" height="17" width="100" bgcolor="white"> <text datapath="text()"/> - <method name="setselected" args="isselected"> + <method name="setSelected" args="isselected"> if (isselected) setAttribute('bgcolor', yellow); else setAttribute('bgcolor', white); </method> </class> - <view height="70" clip="true"> + <view y="50" height="70" clip="true"> <view> <dataselectionmanager name="selector"/> - <selectme> + <selectme id="v"> <datapath xpath="mydata:/resultset/row/reporter/" replication="lazy"/> </selectme> <simplelayout/> @@ -21,4 +27,7 @@ <scrollbar/> </view> </canvas> - +<!-- * X_LZ_COPYRIGHT_BEGIN *************************************************** +* Copyright 2001-2007 Laszlo Systems, Inc. All Rights Reserved. * +* Use is subject to license terms. * +* X_LZ_COPYRIGHT_END ****************************************************** --> _______________________________________________ Laszlo-checkins mailing list [email protected] http://www.openlaszlo.org/mailman/listinfo/laszlo-checkins
