package com.dgex.offspring.application.ui.blocks; import org.eclipse.jface.viewers.TableViewer; import org.eclipse.jface.viewers.TableViewerColumn; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.TableColumn; import com.dgex.offspring.nxtCore.service.INxtService; public class BlockTableViewer extends TableViewer { private final BlockLazyContentProvider contentProvider; public BlockTableViewer(Composite parent, INxtService nxt) { super(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.BORDER | SWT.VIRTUAL); contentProvider = new BlockLazyContentProvider(this); // TODO implement hash function on NXT model objects setUseHashlookup(true); setContentProvider(contentProvider); setInput(nxt); setItemCount(nxt.getBlockCount()); createColumns(); getTable().setHeaderVisible(true); getTable().setLinesVisible(true); refresh(); } private void createColumns() { for (int id : BlockTable.getColumns()) { TableViewerColumn viewerColumn = new TableViewerColumn(this, SWT.NONE); TableColumn column = viewerColumn.getColumn(); viewerColumn.setLabelProvider(BlockTable.createLabelProvider(id)); column.setText(BlockTable.getColumnLabel(id)); column.setAlignment(BlockTable.getColumnAlignment(id)); column.setResizable(BlockTable.getColumnResizable(id)); column.setWidth(BlockTable.getColumnWidth(id)); } } }