-
Notifications
You must be signed in to change notification settings - Fork 1
Table
A Table is a container adapter that allows a Set to operate on a whole list of objects. If a Set will allow get/set access to an object, a Table of that Set will allow get/set access to a list of these objects. A Table is to a Grid Control as a Set is to a List Control. Both provide data content for the Control to display and edit.
The table manages a short list of property sets. Each set manages the display and editing of content for a single row of data. As the user scrolls through a data set, the table provides a sliding window of visible rows over the larger data set.
The table is implemented as a template, allowing it to accept a specific property set and type specific row set which contains the list of scrollable objects. The table exposes the same interface, regardless of implementation, allowing the Grid control to display content while blissfully unaware of the type specifics underneath.
The row set is yet another template that implements a counted AVL tree. This allows fast O[ log N ] retrieval by a key or absolute row index. The table actually manages a collection of row sets. One row set per column, maximum. Clicking a column heading in the grid control causes the table to select a different row set. The table also manages toggling display of rows in ascending / descending order.