r21321: - Allow pruning all of the children of a node without removing the node
authorDerrell Lipman <derrell@samba.org>
Tue, 13 Feb 2007 20:35:48 +0000 (20:35 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 19:48:10 +0000 (14:48 -0500)
  itself.

- By default, create only one meta column if only the tree is displayed.  If
  additional columns are displayed, then put all of them in a separate meta
  column, and the tree in the first meta column by itself.
(This used to be commit 6c86cd416b64e97071f6bbd2d63f33a950a28ec0)

webapps/qooxdoo-0.6.5-sdk/frontend/framework/source/class/qx/ui/treevirtual/SimpleTreeDataModel.js
webapps/qooxdoo-0.6.5-sdk/frontend/framework/source/class/qx/ui/treevirtual/TreeVirtual.js

index f9ff3a97581393f1b6e99bf9523f76c144536176..875eeea6eccb9356e8d4b0b93bd90bf2e218329c 100644 (file)
@@ -405,35 +405,42 @@ qx.Proto.addLeaf = function(parentNodeId,
 
 
 /**
- * Prune the tree by removing the specified node, and, if the node has
- * children, recursively all of its children.
+ * Prune the tree by removing, recursively, all of a node's children.  If
+ * requested, also remove the node itself.
  *
  * @param nodeId {Integer}
  *   The node id, previously returned by {@link #addLeaf} or {@link
  *   #addBranch}, of the node (and its children) to be pruned from the tree.
+ *
+ * @param bSelfAlso {Boolean}
+ *   If <i>true</i> then remove the node identified by <i>nodeId</i> as well
+ *   as all of the children.
  */
-qx.Proto.prune = function(nodeId)
+qx.Proto.prune = function(nodeId, bSelfAlso)
 {
   // First, recursively remove all children
   for (var i = 0; i < this._nodeArr[nodeId].children.length; i++)
   {
-    this.prune(this._nodeArr[nodeId].children[i]);
+    this.prune(this._nodeArr[nodeId].children[i], true);
   }
 
-  // Delete ourself from our parent's children list
-  var node = this._nodeArr[nodeId];
-  qx.lang.Array.remove(this._nodeArr[node.parentNodeId].children, nodeId);
-
-  // Delete ourself from the selections list, if we're in it.
-  if (this._selections[nodeId])
+  if (bSelfAlso)
   {
-    delete this._selections[nodeId];
-  }
+    // Delete ourself from our parent's children list
+    var node = this._nodeArr[nodeId];
+    qx.lang.Array.remove(this._nodeArr[node.parentNodeId].children, nodeId);
 
-  // We can't splice the node itself out, because that would muck up the
-  // nodeId == index correspondence.  Instead, just replace the node with
-  // null so its index just becomes unused.
-  this._nodeArr[nodeId] = null;
+    // Delete ourself from the selections list, if we're in it.
+    if (this._selections[nodeId])
+    {
+      delete this._selections[nodeId];
+    }
+
+    // We can't splice the node itself out, because that would muck up the
+    // nodeId == index correspondence.  Instead, just replace the node with
+    // null so its index just becomes unused.
+    this._nodeArr[nodeId] = null;
+  }
 };
 
 
index c32cb15f25d5392d36996fbc5a73789be44d0104..3b7df7d4cae03cf5bc78bd0395e8b21634a7928e 100644 (file)
@@ -71,7 +71,7 @@ function(headings)
 
   // Set sizes
   this.setRowHeight(16);
-  this.setMetaColumnCounts([1, -1]);
+  this.setMetaColumnCounts(headings.length > 1 ? [ 1, -1 ] : [ 1 ]);
 
   // Set the data cell render.  We use the SimpleTreeDataCellRenderer for the
   // tree column, and our DefaultDataCellRenderer for all other columns.