package com.dgex.offspring.application.ui.home;
import org.eclipse.e4.ui.di.UISynchronize;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.TableViewerColumn;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
public class BuyOrderTableViewer extends TableViewer {
private final BuyOrderContentProvider contentProvider;
private final BuyOrderComparator comparator;
public BuyOrderTableViewer(Composite parent, UISynchronize sync) {
super(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION
| SWT.BORDER);
this.contentProvider = new BuyOrderContentProvider(sync);
this.comparator = new BuyOrderComparator();
setUseHashlookup(false);
setContentProvider(contentProvider);
setComparator(comparator);
createColumns();
/* Pack the columns */
for (TableColumn column : getTable().getColumns())
column.pack();
Table table = getTable();
table.setHeaderVisible(true);
table.setLinesVisible(true);
}
private void createColumns() {
for (int id : BuyOrderTable.getColumns()) {
TableViewerColumn viewerColumn = new TableViewerColumn(this, SWT.NONE);
TableColumn column = viewerColumn.getColumn();
viewerColumn.setEditingSupport(new BuyOrderEditingSupport(this, id));
viewerColumn.setLabelProvider(BuyOrderTable.createLabelProvider(id));
column.addSelectionListener(getSelectionAdapter(column, id));
column.setText(BuyOrderTable.getColumnLabel(id));
column.setAlignment(BuyOrderTable.getColumnAlignment(id));
column.setResizable(BuyOrderTable.getColumnResizable(id));
column.setWidth(BuyOrderTable.getColumnWidth(id));
}
}
private SelectionAdapter getSelectionAdapter(final TableColumn column,
final int index) {
SelectionAdapter selectionAdapter = new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
comparator.setColumn(index);
int dir = comparator.getDirection();
getTable().setSortDirection(dir);
getTable().setSortColumn(column);
refresh();
}
};
return selectionAdapter;
}
}