Phase 6 updates

Phase 6 · Slice 38 ·

Tree controllers and MultiColumnTreeView

  • BaseTreeViewController, TreeViewController and DefaultTreeViewController<T> over the tree's model: root and all ids (each root's children, then the root, as Unity lists them), parents, children, child indices, depth, existence, expanding and collapsing by id and index, Move (to a parent, -1 for the roots, at a child index), TryRemoveItem, AddItem, rows and ids, and typed data and TreeViewItemData by id and index. A tree view has no controller until SetRootItems makes one for the items' type, as in Unity.
  • MultiColumnTreeView with MultiColumnTreeViewController and DefaultMultiColumnTreeViewController<T>: the columns' header and rows (the tree item class after the collection's), the primary column's cell holding the tree's indents, toggle and content, each column's cell bound with the row's index; default sorting orders siblings under their parents by the sorted columns' comparisons, which get the items' indices in the tree's order (all expanded).
  • Tree rows' parts are made and found through the view (a plain tree's in the row, a multi-column tree's in its primary cell).
  • Checked by ui_toolkit_tree_columns (6000.3): the controller's queries, expanding by index, typed data, moves, collapsing; the multi-column tree's rows, structure, cell widths, expanding and sorting.
  • Next: resizing multi-column views' columns by dragging; ContextualMenuPopulateEvent and the header's menu.