In the previous version of the library (in SVN, not git; not included in commit history), the tree layout was defined by an XML template, with a callback for formatting when the threaded operation for loading child nodes had completed.
Problems with the old method:
- Most of the logic was hard coded into a
UserControl with a private TreeView so you couldn't do anything with the actual tree control. This is pretty much the issue - you have no control.
- Attempting to handle node Font from the formatting callback caused
OutOfMemoryException for large data due to GDI objects exceeding 10,000 (a fault of the WinForms TreeView in fact).
- Efficiency issues relating to the way queries were constructed and executed. This has been resolved with the current library.
Aims:
- Still provide the killer feature of having a fully searchable tree based on any field anywhere in the data that is very responsive (whether this is threaded or not).
- Disconnect the UI from the definition and fetching of the tree (obviously). This will allow using other UI toolkits with the hierarchical data without code duplication.
- Provide modular code to swap in a different fetch strategy so the UI is oblivious to whether the data has come from a database via the standard dbqf functionality or whether the strategy is just supplying nodes itself (e.g. some nodes may not be backed by data like a root node labelled 'Invoices').
- Add DTO for serialisation of tree definition if plausible to do so (it'll probably needs it's own basic fetch strategy to accompany it)
- Nice to have: provide a user-editable tree configurator.
In the previous version of the library (in SVN, not git; not included in commit history), the tree layout was defined by an XML template, with a callback for formatting when the threaded operation for loading child nodes had completed.
Problems with the old method:
UserControlwith a privateTreeViewso you couldn't do anything with the actual tree control. This is pretty much the issue - you have no control.OutOfMemoryExceptionfor large data due to GDI objects exceeding 10,000 (a fault of the WinFormsTreeViewin fact).Aims: