Waldo
Waldo

Reputation: 319

Sort JFace Treeviewer multiple column

I'd like the user to be able to sort the TreeViewer anytime he wants to just by clicking the column header. However I don't know the proper way to do it.

I discovered that we can use ViewerComparator to sort different elements. However, I don't know how to set a listener to be able to ascending or descending sort properly.

Is there a way to have an ARROW automaticly with JFace Library to let the user choose descending or ascending in the column sort ?

Regards, Waldo

Upvotes: 4

Views: 1035

Answers (1)

greg-449
greg-449

Reputation: 111216

This isn't really automatic.

You need to call TreeColumn.addSelectionListener to add a selection listener to deal with the clicks on the tree column headers.

You will then need to get the Tree from the TreeViewer with

Tree tree = viewer.getTree();

and then call

tree.setSortColumn(treeColumn);

to set the indicated main sort column and

tree.setSortDirection(SWT.UP) // or SWT.DOWN

to set the indicated sort direction.

Call

viewer.refresh();

to make the viewer redo the sorting.

You will need to track the column(s) to sort on in your comparator.

Upvotes: 4

Related Questions