home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2005 December / maximum-cd-2005-12.iso / Software / Apps / FirefoxSetup1.0.7.exe / browser.xpi / bin / chrome / browser.jar / content / browser / cookieviewer / treeUtils.js < prev   
Encoding:
Text File  |  2004-10-18  |  3.8 KB  |  126 lines

  1.  
  2. function DeleteAllFromTree
  3.     (tree, view, table, deletedTable, removeButton, removeAllButton) {
  4.  
  5.   // remove all items from table and place in deleted table
  6.   for (var i=0; i<table.length; i++) {
  7.     deletedTable[deletedTable.length] = table[i];
  8.   }
  9.   table.length = 0;
  10.  
  11.   // redisplay
  12.   var oldCount = view.rowCount;
  13.   view.rowCount = 0;
  14.   tree.treeBoxObject.rowCountChanged(0, -oldCount);
  15.  
  16.  
  17.   // disable buttons
  18.   document.getElementById(removeButton).setAttribute("disabled", "true")
  19.   document.getElementById(removeAllButton).setAttribute("disabled","true");
  20. }
  21.  
  22. function DeleteSelectedItemFromTree
  23.     (tree, view, table, deletedTable, removeButton, removeAllButton) {
  24.   // Turn off tree selection notifications during the deletion
  25.   tree.treeBoxObject.view.selection.selectEventsSuppressed = true;
  26.  
  27.   // remove selected items from list (by setting them to null) and place in deleted list
  28.   var selections = GetTreeSelections(tree);
  29.   for (var s=selections.length-1; s>= 0; s--) {
  30.     var i = selections[s];
  31.     deletedTable[deletedTable.length] = table[i];
  32.     table[i] = null;
  33.   }
  34.  
  35.   // collapse list by removing all the null entries
  36.   for (var j=0; j<table.length; j++) {
  37.     if (table[j] == null) {
  38.       var k = j;
  39.       while ((k < table.length) && (table[k] == null)) {
  40.         k++;
  41.       }
  42.       table.splice(j, k-j);
  43.       view.rowCount -= k - j;
  44.       tree.treeBoxObject.rowCountChanged(j, j - k);
  45.     }
  46.   }
  47.  
  48.   // update selection and/or buttons
  49.   if (table.length) {
  50.  
  51.     // update selection
  52.     var nextSelection = (selections[0] < table.length) ? selections[0] : table.length-1;
  53.     tree.treeBoxObject.view.selection.select(nextSelection);
  54.     tree.treeBoxObject.ensureRowIsVisible(nextSelection);
  55.  
  56.   } else {
  57.  
  58.     // disable buttons
  59.     document.getElementById(removeButton).setAttribute("disabled", "true")
  60.     document.getElementById(removeAllButton).setAttribute("disabled","true");
  61.  
  62.   }
  63.   tree.treeBoxObject.view.selection.selectEventsSuppressed = false;
  64. }
  65.  
  66. function GetTreeSelections(tree) {
  67.   var selections = [];
  68.   var select = tree.treeBoxObject.selection;
  69.   if (select) {
  70.     var count = select.getRangeCount();
  71.     var min = new Object();
  72.     var max = new Object();
  73.     for (var i=0; i<count; i++) {
  74.       select.getRangeAt(i, min, max);
  75.       for (var k=min.value; k<=max.value; k++) {
  76.         if (k != -1) {
  77.           selections[selections.length] = k;
  78.         }
  79.       }
  80.     }
  81.   }
  82.   return selections;
  83. }
  84.  
  85. function SortTree(tree, view, table, column, lastSortColumn, lastSortAscending, updateSelection) {
  86.  
  87.   // remember which item was selected so we can restore it after the sort
  88.   var selections = GetTreeSelections(tree);
  89.   var selectedNumber = selections.length ? table[selections[0]].id : -1;
  90.  
  91.   // determine if sort is to be ascending or descending
  92.   var ascending = (column == lastSortColumn) ? !lastSortAscending : true;
  93.  
  94.   // do the sort or re-sort
  95.   var compareFunc = function compare(first, second) {
  96.     return first[column].toLowerCase().localeCompare(second[column].toLowerCase());
  97.   }
  98.   table.sort(compareFunc);
  99.   if (!ascending)
  100.     table.reverse();
  101.  
  102.   // restore the selection
  103.   var selectedRow = -1;
  104.   if (selectedNumber>=0 && updateSelection) {
  105.     for (var s=0; s<table.length; s++) {
  106.       if (table[s].id == selectedNumber) {
  107.         // update selection
  108.         // note: we need to deselect before reselecting in order to trigger ...Selected()
  109.         tree.treeBoxObject.view.selection.select(-1);
  110.         tree.treeBoxObject.view.selection.select(s);
  111.         selectedRow = s;
  112.         break;
  113.       }
  114.     }
  115.   }
  116.  
  117.   // display the results
  118.   tree.treeBoxObject.invalidate();
  119.   if (selectedRow >= 0) {
  120.     tree.treeBoxObject.ensureRowIsVisible(selectedRow)
  121.   }
  122.  
  123.   return ascending;
  124. }
  125.  
  126.