[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Newsgroup Home]
[news.eclipse.platform.rcp] Re: Is it possible to have grouping of records in a table?

Brian Berry wrote:
Satheesh Babu wrote:

Hi,

I've a requirement where I've a list of records sorted by item. I want to have some kind of totalling on quantity, like below.

Item          Location                     Qty
----------------------------------------------
+ Mouse                                     15
              Godown                        10
              Store Floor                    5
+ KeyBoard                                   7
              Store Floor                    7


Each line is a record. When I click on +, it is like collapsing and expanding the detail information. I am not sure if it is possible to do this in RCP.


Regards

This is simple to do. You need to create a TreeViewer and add TreeColumns to it as shown below. Also, dont forget to implement a content provider and label provider based on your input object. Your content provider should implement ITreeContentProvider and your label provider should implement ITableLabelProvider. Also, if you are adding the tree to a GridLayout then you will probably also want to do something like viewer.setLayoutData(new GridData()) after the viewer is setup.


TreeColumn treeColumn = null;
TreeViewer viewer = null;

viewer = new TreeViewer(parent, SWT.BORDER | SWT.FULL_SELECTION | SWT.H_SCROLL | SWT.V_SCROLL));

viewer.getTree().setHeaderVisible(true);
treeColumn = new TreeColumn(viewer.getTree(), SWT.LEFT);
treeColumn.setText("Item");
treeColumn.setWidth(75);;
treeColumn.setResizable(true);
treeColumn = new TreeColumn(viewer.getTree(), SWT.LEFT);
treeColumn.setText("Location");
treeColumn.setWidth(150);;
treeColumn.setResizable(true);


treeColumn = new TreeColumn(viewer.getTree(), SWT.LEFT);
treeColumn.setText("Qty");
treeColumn.setWidth(75);;
treeColumn.setResizable(true);
viewer.setContentProvider(new YourContentProvider());
viewer.setLabelProvider(new YourLabelProvider());
viewer.setInput( someInput );
I made a typo in the last post. Regarding the GridData, it would be viewer.getTree().setLayoutData(new GridData())