Manuel Selva
Manuel Selva

Reputation: 19050

How listen for check box in JFace Table Viewer

I am using a Table Viewer with check boxes as following:

final TableViewer legendViewer = new TableViewer(parent, SWT.CHECK);

What is THE solution to listen to check boxes selection/unselection in this viewer ?

Thanks in advance, Manu

Upvotes: 8

Views: 8312

Answers (3)

Campa
Campa

Reputation: 4505

Expanding @Tonny's answer, here's the listener you would use:

tableViewer.getTable().addListener(SWT.Selection, (e) -> {      
    if (e.detail == SWT.CHECK) {
        MyModel modelObj = (MyModel) e.item.getData();
        TableItem item = (TableItem) e.item;
        System.out.println("ITEM CHECKED -> " + item.getChecked());
    }
});

You see, you can cast the widget to TableItem to understand whether the user has either checked or unchecked the checkbox.


Still, as @Claimos' says, I would just use a JFace CheckboxTableViewer.

Upvotes: 0

Claimos
Claimos

Reputation: 206

Take a look at class CheckboxTableViewer derived from TableViewer which simplifies the use of a TableViewer with the SWT.CHECK style.

Add an implementaion of ICheckStateListener to your CheckboxTableViewer via addCheckStateListener(). The only method you have to implement is checkStateChanged(CheckStateChangedEvent event) where event contains all necessary information about the state change.

If you need only one column you can create a CheckboxTableViewer like this:

CheckboxTableViewer myTableViewer = CheckboxTableViewer.newCheckList(parent, style);

Upvotes: 13

Tonny Madsen
Tonny Madsen

Reputation: 12718

You listen for SWT.Selection events on the Table and check for event.detail == SWT.CHECK...

See this example for actual code....

Upvotes: 9

Related Questions