package waelti.statistics.actions; import org.eclipse.jface.viewers.TableViewer; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import waelti.statistics.views.ColumnSorter; /** * Sorts the columns of a TableViewer in a simple manner. It does not consider any sorting done * before. * * @author michael waelti */ public class ColumnSorterAdapter extends SelectionAdapter { private TableViewer viewer; private int index; private boolean reverse = false; public ColumnSorterAdapter(TableViewer viewer, int index){ this.viewer = viewer; this.index = index; } public void widgetSelected(SelectionEvent event){ // debugPopUp(event); ColumnSorter sorter = (ColumnSorter) this.viewer.getSorter(); if (sorter == null) { sorter = new ColumnSorter(0); viewer.setSorter(sorter); } if (sorter.getIndex() == this.index) { reverse = reverse ? false : true; // flip flop. sorter.setReverse(reverse); } else { // start with top down sorting. sorter.setIndex(this.index); reverse = false; sorter.setReverse(false); } this.viewer.refresh(); // sort } }