package com.lexisnexis.ui.datahygiene; import org.eclipse.jface.viewers.ILabelProviderListener; import org.eclipse.jface.viewers.IStructuredContentProvider; import org.eclipse.jface.viewers.ITableLabelProvider; import org.eclipse.jface.viewers.TableViewer; import org.eclipse.jface.viewers.Viewer; import org.eclipse.swt.SWT; import org.eclipse.swt.custom.CTabFolder; import org.eclipse.swt.custom.CTabItem; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.layout.FillLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Table; import org.eclipse.swt.widgets.TableColumn; import com.lexisnexis.ui.constants.Constants; public class DataHygieneTable { private TableViewer tv; private DataHygieneRecordList dataList; public DataHygieneTable(String fileName) { dataList = new DataHygieneRecordList(fileName); } public void run() { Display display = new Display(); Shell shell = new Shell(display); shell.setLayout(new FillLayout()); configureShell(shell); final CTabFolder folder = new CTabFolder(shell, SWT.BORDER); createContents(folder); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) { display.sleep(); } } display.dispose(); } protected void configureShell(Shell shell) { shell.setSize(950, 400); } /** * Add the columns to the table * @param table * @param parent */ public void addColumns(Table table, Shell parent){ for(int i = 0; i < Constants.ARRAY_DATA_HYGIENE_COL_HEADERS.length; i++){ TableColumn item = new TableColumn(table, SWT.LEFT); item.setText(Constants.ARRAY_DATA_HYGIENE_COL_HEADERS[i]); if(Constants.ARRAY_DATA_HYGIENE_COL_HEADERS[i].equals(Constants.KEY_DATA_HYGIENE_ERROR_MSG)) { item.setWidth(400); } else { item.setWidth(150); } } } public void createContents(CTabFolder folder) { CTabItem item = new CTabItem(folder, SWT.CLOSE); item.setText(Constants.DATA_HYGIENE_TITLE); Composite comp = new Composite(folder, SWT.NONE); comp.setLayout(new FillLayout()); tv = new TableViewer(comp); tv.setContentProvider(new DataHygieneContentProvider()); tv.setLabelProvider(new DataHygieneLabelProvider()); final Table table = tv.getTable(); addColumns(table, comp.getShell()); //Add Column Headers and Link Listener to table tv.setInput(dataList); //comp.getShell().setText(Constants.DATA_HYGIENE_TITLE); table.setHeaderVisible(true); table.setLinesVisible(true); item.setControl(comp); } public class DataHygieneContentProvider implements IStructuredContentProvider{ @Override public void dispose() { // TODO Auto-generated method stub } @Override public void inputChanged(Viewer arg0, Object arg1, Object arg2) { // TODO Auto-generated method stub } @Override public Object[] getElements(Object arg0) { return ((DataHygieneRecordList)arg0).getDataHygieneRecordsList().toArray(); } } public class DataHygieneLabelProvider implements ITableLabelProvider{ @Override public void addListener(ILabelProviderListener arg0) { // TODO Auto-generated method stub } @Override public void dispose() { //Nothing to dispose } @Override public boolean isLabelProperty(Object arg0, String arg1) { // TODO Auto-generated method stub return false; } @Override public void removeListener(ILabelProviderListener arg0) { // TODO Auto-generated method stub } @Override public Image getColumnImage(Object arg0, int arg1) { return null; } @Override public String getColumnText(Object arg0, int arg1) { DataHygieneRow objDataHygieneRow = (DataHygieneRow)arg0; String text = ""; switch(arg1) { case 0: text = String.valueOf(objDataHygieneRow.getSource()); break; case 1: text = String.valueOf(objDataHygieneRow.getFieldName()); break; case 2: text = String.valueOf(objDataHygieneRow.getErrorMessage()); break; case 3: text = String.valueOf(objDataHygieneRow.getCount()); break; case 4: text = String.valueOf(objDataHygieneRow.getSourceGroupCount()); break; } return text; } } public static void main(String[] args) { String fileName = "C:\\spoon demos\\new\\salt\\out_hygine\\Hygiene_ValidityErrors.csv"; new DataHygieneTable(fileName).run(); } }