package javademo.swt.viewer.tableviewer; import java.util.ArrayList; import java.util.List; import javademo.swt.viewer.Person; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.jface.viewers.TableViewer; import org.eclipse.swt.SWT; import org.eclipse.swt.events.MouseAdapter; import org.eclipse.swt.events.MouseEvent; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Table; import org.eclipse.swt.widgets.TableColumn; import org.fanhongtao.swt.BaseShell; import org.fanhongtao.swt.SWTUtils; /** * @author Fan Hongtao * @created 2010-11-8 */ public class TableViewerTest extends BaseShell { private TableViewer viewer; private List<Person> list; /* (non-Javadoc) * @see org.fanhongtao.swt.BaseShell#createContents(org.eclipse.swt.widgets.Shell) */ @Override public void createContents(Shell shell) { shell.setLayout(new GridLayout()); list = new ArrayList<Person>(); list.add(new Person("Tom", 15, "male")); list.add(new Person("Rose", 16, "famale")); list.add(new Person("Alice", 17, "famale")); list.add(new Person("Alex", 18, "male")); viewer = new TableViewer(shell, SWT.FULL_SELECTION); String[] columnNames = new String[] { "Name", "Age", "Gender" }; int[] columnWidth = new int[] { 100, 100, 200 }; Table table = viewer.getTable(); table.setLayoutData(new GridData(GridData.FILL_BOTH)); for (int i = 0; i < columnNames.length; i++) { TableColumn column = new TableColumn(table, SWT.LEFT); column.setText(columnNames[i]); column.setWidth(columnWidth[i]); } table.setHeaderVisible(true); table.setLinesVisible(true); viewer.setContentProvider(new PersonContentProvider()); viewer.setLabelProvider(new PersonLabelProvider()); viewer.setInput(list); // @see PersonContentProvider#getElements table.addMouseListener(new MouseAdapter() { @Override public void mouseDoubleClick(MouseEvent e) { StructuredSelection sel = (StructuredSelection)viewer.getSelection(); Person person = (Person)sel.getFirstElement(); SWTUtils.showMessage(getShell(), SWT.OK, "Selected person", person.toString()); } }); } public static void main(String[] args) { new TableViewerTest().run("Table Viewer Test"); } }