home *** CD-ROM | disk | FTP | other *** search
/ PC Professionell 2005 August / PCpro_2005_08.ISO / files / firefox / ScrapBook.xpi / chrome / scrapbook.jar / content / tree.js < prev    next >
Encoding:
JavaScript  |  2005-06-04  |  2.8 KB  |  106 lines

  1. /**************************************************
  2. // tree.js
  3. // Implementation file for scrapbook.xul, manage.xul, output.xul, trade.xul
  4. // 
  5. // Description: 
  6. // Author: Gomita
  7. // Contributors: 
  8. // 
  9. // Version: 
  10. // License: see LICENSE.txt
  11. **************************************************/
  12.  
  13.  
  14.  
  15. var SBtree;
  16.  
  17.  
  18.  
  19.  
  20. var SBtreeUtil = {
  21.  
  22.     singleExpand : false,
  23.  
  24.     init : function(xulID, isContainer)
  25.     {
  26.         SBtree = document.getElementById(xulID);
  27.         SBtree.database.AddDataSource(SBRDF.data);
  28.         this.singleExpand = SBcommon.getBoolPref("scrapbook.tree.singleexpand", false);
  29.         if ( isContainer ) document.getElementById("ScrapBookTreeRule").setAttribute("iscontainer", true);
  30.         SBtree.builder.rebuild();
  31.     },
  32.  
  33.     onClickDefault : function(aEvent)
  34.     {
  35.         if ( aEvent.button != 0 || aEvent.ctrlKey || aEvent.shiftKey ) return;
  36.         var obj = {};
  37.         SBtree.treeBoxObject.getCellAt(aEvent.clientX, aEvent.clientY, {}, {}, obj);
  38.         if ( !obj.value || obj.value == "twisty" ) return;
  39.         var curIdx = SBtree.currentIndex;
  40.         if ( SBtree.view.isContainer(curIdx) )
  41.         {
  42.             SBtree.view.toggleOpenState(curIdx);
  43.             if ( this.singleExpand ) SBtreeUtil.collapseOtherFolders(curIdx);
  44.         }
  45.     },
  46.  
  47.     toggleAllFolders : function(forceClose)
  48.     {
  49.         var willOpen = true;
  50.         for ( var i = 0; i < SBtree.view.rowCount; i++ )
  51.         {
  52.             if ( !SBtree.view.isContainer(i) ) continue;
  53.             if ( SBtree.view.isContainerOpen(i) ) { willOpen = false; break; }
  54.         }
  55.         if ( forceClose ) willOpen = false;
  56.         if ( willOpen ) {
  57.             for ( var i = 0; i < SBtree.view.rowCount; i++ )
  58.             {
  59.                 if ( SBtree.view.isContainer(i) && !SBtree.view.isContainerOpen(i) ) SBtree.view.toggleOpenState(i);
  60.             }
  61.         } else {
  62.             for ( var i = SBtree.view.rowCount - 1; i >= 0; i-- )
  63.             {
  64.                 if ( SBtree.view.isContainer(i) && SBtree.view.isContainerOpen(i) ) SBtree.view.toggleOpenState(i);
  65.             }
  66.         }
  67.     },
  68.  
  69.     collapseOtherFolders : function(curIdx)
  70.     {
  71.         var ascIdxList = {};
  72.         ascIdxList[curIdx] = true;
  73.         while ( curIdx >= 0 )
  74.         {
  75.             curIdx = SBtree.builderView.getParentIndex(curIdx);
  76.             ascIdxList[curIdx] = true;
  77.         }
  78.         for ( var i = SBtree.view.rowCount - 1; i >= 0; i-- )
  79.         {
  80.             if ( !ascIdxList[i] && SBtree.view.isContainer(i) && SBtree.view.isContainerOpen(i) ) {
  81.                 SBtree.view.toggleOpenState(i);
  82.             }
  83.         }
  84.     },
  85.  
  86.     getSelection : function(idx2res, rule)
  87.     {
  88.         var retArray = [];
  89.         for ( var rc = 0; rc < SBtree.view.selection.getRangeCount(); rc++ )
  90.         {
  91.             var start = {}, end = {};
  92.             SBtree.view.selection.getRangeAt(rc, start, end);
  93.             for ( var i = start.value; i <= end.value; i++ )
  94.             {
  95.                 if ( rule == 1 && !SBtree.view.isContainer(i) ) continue;
  96.                 if ( rule == 2 && SBtree.view.isContainer(i) ) continue;
  97.                 retArray.push( idx2res ? SBtree.builderView.getResourceAtIndex(i) : i );
  98.             }
  99.         }
  100.         return retArray;
  101.     },
  102.  
  103. };
  104.  
  105.  
  106.