Wednesday, September 30, 2009

Ordering is significant in constructing a TableViewer

Context
I wanted to create a table viewer (3 columns) with my own content and label provider.


Problem
I found out that, if I set the content provider and label provider before I added all the columns to the table viewer, it would show no content, or only the columns that I added before I set the label provider.


Code


    TableViewer tableViewer = new TableViewer(tabFolder, SWT.BORDER | SWT.FULL_SELECTION);
    TableViewerColumn tableViewerColumn1 = new TableViewerColumn(tableViewer, SWT.NONE);
   ...

    //call setters before all columns are added, which will cause no content display for the column 2 and 3 

    tableViewer.setLabelProvider(new UserAssignmentLabelProvider());
    tableViewer.setContentProvider(new UserManagementContentProvider());
    tableViewer.setInput(...);

          ...
    TableViewerColumn tableViewerColumn2 = new TableViewerColumn(tableViewer, SWT.NONE);

         ..
    TableViewerColumn tableViewerColumn3 = new TableViewerColumn(tableViewer, SWT.NONE);
   ...
    tableViewer.setLabelProvider(new UserAssignmentLabelProvider());
    tableViewer.setContentProvider(new UserManagementContentProvider());
    tableViewer.setInput(...);

No comments:

Post a Comment