Scrolling inside a tree view
Original Publication Date: 2009-Jul-27
Included in the Prior Art Database: 2009-Jul-27
A Tree view is a useful way to present large amounts of data whilst allowing the user to explore a small part of it. Tree views work best when the number of leaf elements at each level is small and thus fits easily onto a screen. It there are huge numbers of leaves, thousands for example, it can take a long time to expand the containing node and then the screen is dominated by the leaves of that node. This paper describes a novel approach to handling this problem by introducing 'expander' items.
Scrolling inside a tree view
A tree view is a very useful way to explore many forms of data since most data has the basic characteristic that each object has a primary owner. The problem comes when a tree view is used to display data in which some objects have huge numbers of contents. There are two issues that normally cause the standard tree view to be less than ideal. Firstly an expansion which contains large numbers of elements will tend to dominate the view and causes a large amount of scrolling to allow the user to find what they are looking for. More importantly it usually causes severe performance problems as the infrastructure tries to cope with building the string view of the contained objects. These problems are particularly severe when attempting to view data that comes from a Java* system dump. In this case there may be a handful of threads, runtime options, environment variables etc. but a huge number of Java objects. Showing the objects as part of the tree would simply swamp the viewer. The problem is even more serious if the data is held remotely from the viewer. In that case all the data for the expanded items must be communicated from the server to the user interface and somehow rendered onto the screen even though the vast majority of it will end up not visible. In general it is important to minimise the amount of transmitted data especially if there is a good chance that the user will be swamped by it anyway.
Previous solutions have concentrated on providing filtering to reduce the amount of data but this is seldom very usable since it is hard to predict the filtering that will be required before expanding the container. The solution proposed here avoids this by simply providing expansion items at each end of the displayed range.
Let's take a simple tree view
the proposed solution converts that to the following view
4 .. .20,245 the expander to show the next few items and if that expander is clicked we show the following
0 .. 2. the expander to show the previous few items
6 ... 20,245 the expander to show more items
The expanders are only shown if appropriate; ether there are more items to be displayed or the list doesn't start at the first item. Clicking on the expander immediately causes the objects to be scrolled in the appropriate direction. Clearly
we can separately control the number of displayed items and the amount of overlap to preserve when scrolling. The text on the expander can of course take the simple form shown; an indicatio...