package edu.ualberta.med.biobank.widgets.infotables; import java.util.List; import org.eclipse.jface.viewers.IDoubleClickListener; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.TableColumn; import edu.ualberta.med.biobank.common.formatters.NumberFormatter; import edu.ualberta.med.biobank.gui.common.widgets.BgcLabelProvider; public class ReportResultsTableWidget<T> extends ReportTableWidget<T> { public ReportResultsTableWidget(Composite parent, List<T> collection, String[] headings) { this(parent, collection, headings, 24); } public ReportResultsTableWidget(Composite parent, List<T> collection, String[] headings, int rowsPerPage) { super(parent, collection, headings, rowsPerPage); disableColumnMoving(); } @Override public BgcLabelProvider getLabelProvider(final boolean formatNumbers) { return new BgcLabelProvider() { @Override public String getColumnText(Object element, int columnIndex) { if (element instanceof Object[]) { Object[] row = (Object[]) element; // first column is always the id of the entity (or one of // them) columnIndex++; if (columnIndex < row.length) { Object cell = row[columnIndex]; if (cell == null) return ""; //$NON-NLS-1$ if (formatNumbers && cell instanceof Number) return NumberFormatter.format((Number) cell); return cell.toString(); } } return element.toString(); } }; } public void addDoubleClickListener(IDoubleClickListener listener) { tableViewer.addDoubleClickListener(listener); } public void removeDoubleClickListener(IDoubleClickListener listener) { tableViewer.removeDoubleClickListener(listener); } @Override protected boolean isEditMode() { return false; } private void disableColumnMoving() { for (TableColumn tableColumn : tableViewer.getTable().getColumns()) { tableColumn.setMoveable(false); } } }