package rocks.inspectit.ui.rcp.editor.table; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.widgets.Table; import org.eclipse.swt.widgets.TableColumn; import rocks.inspectit.shared.all.communication.DefaultData; import rocks.inspectit.shared.cs.communication.comparator.ResultComparator; import rocks.inspectit.ui.rcp.editor.viewers.AbstractViewerComparator; /** * Local table viewer comparator uses provided comparators to sort specific columns. * * @author Ivan Senic * * @param <T> * Type for which comparator is created. */ public class TableViewerComparator<T extends DefaultData> extends AbstractViewerComparator<T> { /** * Adds a column to this comparator so it can be used to sort by. * * @param column * The {@link TableColumn} implementation. comparatorProvider The id of the * {@link TableColumn} (user-defined). * @param comparator * Comparator that will be used for the given column. */ public final void addColumn(final TableColumn column, final ResultComparator<T> comparator) { column.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { toggleSortColumn(comparator); Table table = column.getParent(); table.setSortColumn(column); table.setSortDirection(getSortState().getSwtDirection()); } }); } }