+1.

Hard coding the bound to 100 is arbitrary and not right. This should not be
part of the framework, especially since this code effects every node
expansion/collapse.

Venkata

On Thu, Aug 21, 2008 at 2:17 PM, Kamran Kashanian <[EMAIL PROTECTED]
> wrote:

> There is some code in the Trinidad UIXTree which is intended to prevent the
> user from doing an unbounded "Expand All" on large trees (see
> UIXTree.broadcast() method. Specifically
> HierarchyUtils.__handleBroadcast()).
>
> The code counts the number of newly expanded nodes and if it is > 100 then
> it counts the total number of nodes in the tree and if the total is also >
> 100, it prevents an expand all and only expands two levels.
>
> There are several issues with this:
>
> 1) This code is executed on every expand/collapse event and can be
> expensive. Counting 100 nodes in the RowKeySet and in the tree (see
> TableUtils._getSizeOfTree()) can force the model to do additional data
> fetches beyond what is currently displayed in the view port. Also the number
> 100 is completely arbitary.
>
> 2) There is no way to for this code to know if the user did an "Expand All"
> or just did something to cause 100 nodes to expand. For example "Expand All
> Below", or just select 100 nodes and do "Expand" from a menu. In these cases
> the user will get unexpcted results (only two levels will expand)
>
> 3) Preventing the user from doing an Expand All should really be part of
> application logic and has no place in the framework. Normally the
> application would display a warning and ask the user if they really want to
> do an expand all in response to a user action
>
>
> [Proposal]
>
> I would like to propose that this code be removed from UIXTree. I will
> submit a patch if there are no strong objections.  This *is* a change in the
> Trinidad tree functionality, and I am not sure how it impacts current users.
>
>
> Thanks
> Kamran
>
>

Reply via email to