Previous | Next

2 History

Before outliner we had to use the old tree implementation. The old tree implementation is based on a content model. It created frames for each visible row and cell. This was a big overhead and was hurting overall performance. Especially scrolling performance was horrible.
One of the main consumers of the tree widget is thread pane in the mailnews component. Thread pane is special, since it has to display a lot of message headers (typically up to 10,000). The old tree really sucked for this purpose. Each message header had to be created as a content (actually it was created and destroyed lazily) and then frames were constructed.
This was a good reason to implement a new lightweight contentless widget - outliner (actually, the outliner now has an optional content model). This widget uses only one frame for its body, so it is very efficient and fast. (Do you remember the first outliner testcase ? It has been capable of displaying 5,000,000 rows).
Outliner has proven to be fast, and both developers and users quickly aclimated to it. (it can't display user defined content, like checkboxes etc.) To make it more usable developers have created two builtin outliner view implementations - RDF builder view (aka rdfliner) and content model view.

Previous | Next