5.3.11.9 EllipsisTreeIterator Objects

###
5.3.11.9 EllipsisTreeIterator Objects

`EllipsisTreeIterator` objects are created by using the `ellipsis` attribute on an `<al-tree>` tag. Ellipsis trees are a variant of lazy trees where nodes at shallower levels are progressively collapsed into ellipses as the user opens deeper nodes. The user can reopen the collapsed nodes by selecting an ellipsis.

They support all the methods of the `LazyTreeIterator` (5.3.11.8), as well as the following methods:

`node_type`( | )

  Returns `0` for a regular node, or `1` for nodes that have been collapsed into an ellipsis. This is actually implemented on the `LazyTreeIterator`, but will always return `0` there.

`EllipsisTreeIterator` objects also have the following private methods and members:

`_noellipsis_alias`
  Records the last ellipsis to be selected by the user, and is used to suppress the generate of an ellipsis at that location next time the tree is rendered.

`node_use_ellipsis`( | ctx, node)

  Returns `TRUE` if it is acceptable to render the specified `node` as an ellipsis. If the node's alias matches `_noellipsis_alias`, `FALSE` is return, otherwise `TRUE` is returned if any of the node's children are open.

The behaviour of the `set_backdoor` and `get_backdoor` methods has been extended to recognise a `treeellipsis` op. This is used to process browser requests to open an ellipsis (it sets the `_noellipsis_alias` member.