Java tutorial
// ============================================================================ // // Copyright (C) 2006-2016 Talend Inc. - www.talend.com // // This source code is available under agreement available at // %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt // // You should have received a copy of the agreement // along with this program; if not, write to Talend SA // 9 rue Pages 92150 Suresnes, France // // ============================================================================ package commons.ui.swt.tableviewer; import java.util.ArrayList; import java.util.Comparator; import java.util.Random; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.viewers.CellEditor; import org.eclipse.jface.viewers.ComboBoxCellEditor; import org.eclipse.swt.SWT; import org.eclipse.swt.custom.TableEditor; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionListener; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; 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.TableItem; import org.talend.commons.ui.swt.tableviewer.TableViewerCreator; import org.talend.commons.ui.swt.tableviewer.TableViewerCreatorColumn; import org.talend.commons.ui.swt.tableviewer.TableViewerCreator.LAYOUT_MODE; import org.talend.commons.ui.swt.tableviewer.behavior.CellEditorValueAdapter; import org.talend.commons.ui.swt.tableviewer.behavior.IColumnImageProvider; import org.talend.commons.ui.swt.tableviewer.tableeditor.CheckboxTableEditorContent; import org.talend.commons.ui.swt.tableviewer.tableeditor.TableEditorContent; import org.talend.commons.utils.data.bean.IBeanPropertyAccessors; import commons.utils.DataObject; /** * * Test class of <code>TableViewerCreator</code>. <br/> * * $Id: TestTableViewerCreator.java 7038 2007-11-15 14:05:48Z plegall $ * */ public final class TestTableViewerCreator { /** * Default Constructor. Must not be used. */ private TestTableViewerCreator() { } private static ArrayList<DataObject> list; public static void main(String[] args) { Display display = new Display(); final Shell shell1 = new Shell(display); shell1.setLayout(new GridLayout()); ImageDescriptor imageDescriptor = ImageDescriptor.createFromFile(TestTableViewerCreator.class, "error_tsk.gif"); //$NON-NLS-1$ final Image image = imageDescriptor.createImage(); final TableViewerCreator<DataObject> tableViewerCreator = new TableViewerCreator<DataObject>(shell1); tableViewerCreator.setBorderVisible(true); tableViewerCreator.setLayoutMode(LAYOUT_MODE.CONTINUOUS); tableViewerCreator.setUseCustomItemColoring(true); tableViewerCreator.setAdjustWidthValue(-50); // tableViewerCreator.setFirstVisibleColumnIsSelection(true); // tableViewerCreator.setLabelProvider(new ITableLabelProvider() { // // public Image getColumnImage(Object element, int columnIndex) { // return image; // } // // public String getColumnText(Object element, int columnIndex) { // // TODO Auto-generated method stub // return null; // } // // public void addListener(ILabelProviderListener listener) { // // TODO Auto-generated method stub // // } // // public void dispose() { // // TODO Auto-generated method stub // // } // // public boolean isLabelProperty(Object element, String property) { // // TODO Auto-generated method stub // return false; // } // // public void removeListener(ILabelProviderListener listener) { // // TODO Auto-generated method stub // // } // // }); // tableEditor.setCheckboxInFirstColumn(true); final Table table = tableViewerCreator.createTable(); GridData gridData = new GridData(GridData.FILL_HORIZONTAL, GridData.GRAB_HORIZONTAL); gridData.grabExcessHorizontalSpace = true; // gridData.horizontalAlignment = GridData.FILL_HORIZONTAL; gridData.heightHint = 200; table.setLayoutData(gridData); TableViewerCreatorColumn column = new TableViewerCreatorColumn<DataObject, String>(tableViewerCreator); column.setTitle("Selection"); //$NON-NLS-1$ column.setResizable(true); column.setModifiable(true); // column.setInitWeight(1); column.setWidth(100); column.setImageProvider(new IColumnImageProvider() { public Image getImage(Object bean) { return image; } }); column.setBeanPropertyAccessors(new IBeanPropertyAccessors<DataObject, String>() { public String get(DataObject bean) { return bean.getLibelle(); } public void set(DataObject bean, String value) { bean.setLibelle(value); } }); column = new TableViewerCreatorColumn(tableViewerCreator); // TableViewerCreatorColumn nameColumn = column; column.setTitle("Name"); //$NON-NLS-1$ column.setResizable(true); column.setModifiable(true); // column.setSortable(true); // column.setOrderWithIgnoreCase(true); column.setMinimumWidth(10); column.setWeight(20); column.setImageProvider(new IColumnImageProvider() { public Image getImage(Object bean) { return image; } }); column.setBeanPropertyAccessors(new IBeanPropertyAccessors<DataObject, String>() { public String get(DataObject bean) { return bean.getLibelle(); } public void set(DataObject bean, String value) { bean.setLibelle(value); } }); column = new TableViewerCreatorColumn<DataObject, Integer>(tableViewerCreator); column.setTitle("Integer Null Value"); //$NON-NLS-1$ column.setModifiable(true); column.setSortable(true); column.setResizable(true); column.setBeanPropertyAccessors(new IBeanPropertyAccessors<DataObject, Integer>() { public Integer get(DataObject bean) { return bean.getIntegerValue2(); } public void set(DataObject bean, Integer value) { bean.setIntegerValue2(value); } }); column.setWidth(150); final String[] valueSet = new String[] { "xxx", "yyy", "zzz" }; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ column.setCellEditor(new ComboBoxCellEditor(table, valueSet), new CellEditorValueAdapter() { public String getColumnText(CellEditor cellEditor, Object bean, Object value) { String[] items = ((ComboBoxCellEditor) cellEditor).getItems(); int index = (Integer) value; if (index >= 0 && index < items.length) { return items[index]; } else { return ""; //$NON-NLS-1$ } } }); column = new TableViewerCreatorColumn(tableViewerCreator); column.setTitle("Boolean"); //$NON-NLS-1$ column.setModifiable(false); column.setSortable(true); column.setResizable(true); column.setBeanPropertyAccessors(new IBeanPropertyAccessors<DataObject, Boolean>() { public Boolean get(DataObject bean) { return bean.isBool(); } public void set(DataObject bean, Boolean value) { bean.setBool(value); } }); column.setWidth(50); column.setTableEditorContent(new CheckboxTableEditorContent()); column = new TableViewerCreatorColumn<DataObject, Integer>(tableViewerCreator); column.setTitle("Id"); //$NON-NLS-1$ column.setModifiable(false); column.setResizable(true); column.setSortable(true); column.setMoveable(true); column.setWeight(80); column.setBeanPropertyAccessors(new IBeanPropertyAccessors<DataObject, Integer>() { public Integer get(DataObject bean) { return bean.getIntegerValue2(); } public void set(DataObject bean, Integer value) { bean.setIntegerValue2(value); } }); column.setTableEditorContent(new TableEditorContent() { public TableEditor createTableEditor(Table table) { TableEditor tableEditor = new TableEditor(table); return tableEditor; } public Control initialize(Table table, TableEditor tableEditor, TableViewerCreatorColumn currentColumn, Object currentRowObject, Object currentCellValue) { Button button = new Button(table, SWT.PUSH); // Set attributes of the button button.setText(String.valueOf(currentCellValue)); button.computeSize(SWT.DEFAULT, table.getItemHeight()); // Set attributes of the editor tableEditor.grabHorizontal = true; tableEditor.minimumHeight = button.getSize().y; tableEditor.minimumWidth = button.getSize().x; return button; } }); column = new TableViewerCreatorColumn<DataObject, Integer>(tableViewerCreator); column.setTitle("Id2"); //$NON-NLS-1$ column.setModifiable(false); column.setResizable(true); column.setSortable(true); column.setWidth(50); column.setComparator(new Comparator<DataObject>() { public int compare(DataObject o1, DataObject o2) { System.out.println(); System.out.println("o1" + o1); //$NON-NLS-1$ System.out.println("o2" + o2); //$NON-NLS-1$ return 0; } }); column.setImageProvider(new IColumnImageProvider() { public Image getImage(Object bean) { return image; } }); column.setBeanPropertyAccessors(new IBeanPropertyAccessors<DataObject, Integer>() { public Integer get(DataObject bean) { return bean.getIntegerValue2(); } public void set(DataObject bean, Integer value) { bean.setIntegerValue2(value); } }); column = new TableViewerCreatorColumn(tableViewerCreator); column.setTitle("Boolean2"); //$NON-NLS-1$ column.setModifiable(false); column.setSortable(true); column.setResizable(true); column.setBeanPropertyAccessors(new IBeanPropertyAccessors<DataObject, Boolean>() { public Boolean get(DataObject bean) { return bean.isBool(); } public void set(DataObject bean, Boolean value) { bean.setBool(value); } }); // column.setWidth(20); column.setWeight(20); column.setMinimumWidth(50); column.setTableEditorContent(new CheckboxTableEditorContent()); // column.setTableEditorContent(new TableEditorContent() { // // public TableEditor createTableEditor(Table table) { // TableEditor tableEditor = new TableEditor(table); // return tableEditor; // } // // public Control initialize(Table table, TableEditor tableEditor, TableViewerCreatorColumn currentColumn, // Object currentRowObject, Object currentCellValue) { // Composite composite = new Composite(table, SWT.PUSH); // // Set attributes of the button // composite.setBackground(new Color(null, 255, 0, 0)); // composite.setSize(100 * ((Integer) currentCellValue).intValue() / 100, table.getItemHeight()); // // // Set attributes of the editor // // tableEditor.grabHorizontal = true; // tableEditor.minimumHeight = composite.getSize().y; // tableEditor.horizontalAlignment = SWT.LEFT; // tableEditor.minimumWidth = composite.getSize().x; // return composite; // } // // }); // Listener eraseItemListener = new Listener() { // // public void handleEvent(Event event) { // // if ((event.detail & SWT.SELECTED) != 0) { // // GC gc = event.gc; // // // Rectangle rect = event.getBounds(); // // Color background = gc.getBackground(); // // gc.setBackground(table.getDisplay().getSystemColor(SWT.COLOR_RED)); // // // TODO: uncomment to see selection on linux gtk // // // ((TableItem)event.item).setBackground(null); // // gc.fillRectangle(rect); // // gc.setBackground(background); // // event.detail &= ~SWT.SELECTED; // // } // // } // // }; // table.addListener(SWT.EraseItem, eraseItemListener); Button buttonSelection = new Button(shell1, SWT.PUSH); buttonSelection.setText("buttonSelection"); //$NON-NLS-1$ buttonSelection.addSelectionListener(new SelectionListener() { public void widgetDefaultSelected(SelectionEvent e) { // TODO Auto-generated method stub } public void widgetSelected(SelectionEvent e) { table.setSelection(1); } }); Button buttonHighlightRow = new Button(shell1, SWT.PUSH); buttonHighlightRow.setText("buttonHighlightRow"); //$NON-NLS-1$ buttonHighlightRow.addSelectionListener(new SelectionListener() { public void widgetDefaultSelected(SelectionEvent e) { // TODO Auto-generated method stub } public void widgetSelected(SelectionEvent e) { TableItem tableItem1 = table.getItem(0); tableItem1.setBackground(table.getDisplay().getSystemColor(SWT.COLOR_RED)); tableItem1.setForeground(table.getDisplay().getSystemColor(SWT.COLOR_BLUE)); // tableViewerCreator.getTableViewer().refresh(); } }); Button buttonHighlightCell = new Button(shell1, SWT.PUSH); buttonHighlightCell.setText("buttonHighlightCell"); //$NON-NLS-1$ buttonHighlightCell.addSelectionListener(new SelectionListener() { public void widgetDefaultSelected(SelectionEvent e) { // TODO Auto-generated method stub } public void widgetSelected(SelectionEvent e) { TableItem tableItem2 = table.getItem(1); tableItem2.setBackground(table.getDisplay().getSystemColor(SWT.COLOR_GREEN)); tableItem2.setBackground(1, table.getDisplay().getSystemColor(SWT.COLOR_GREEN)); tableItem2.setForeground(1, table.getDisplay().getSystemColor(SWT.COLOR_BLUE)); // tableViewerCreator.getTableViewer().refresh(); } }); Button buttonHighlightMultipleCell = new Button(shell1, SWT.PUSH); buttonHighlightMultipleCell.setText("buttonHighlightMultipleCell"); //$NON-NLS-1$ buttonHighlightMultipleCell.addSelectionListener(new SelectionListener() { public void widgetDefaultSelected(SelectionEvent e) { // TODO Auto-generated method stub } public void widgetSelected(SelectionEvent e) { TableItem tableItem2 = table.getItem(1); tableItem2.setBackground(table.getDisplay().getSystemColor(SWT.COLOR_YELLOW)); tableItem2.setBackground(0, table.getDisplay().getSystemColor(SWT.COLOR_DARK_MAGENTA)); tableItem2.setForeground(0, table.getDisplay().getSystemColor(SWT.COLOR_DARK_BLUE)); tableItem2.setBackground(1, table.getDisplay().getSystemColor(SWT.COLOR_GREEN)); tableItem2.setForeground(1, table.getDisplay().getSystemColor(SWT.COLOR_BLUE)); // tableViewerCreator.getTableViewer().refresh(); } }); Button buttonBGTable = new Button(shell1, SWT.PUSH); buttonBGTable.setText("buttonBGTable"); //$NON-NLS-1$ buttonBGTable.addSelectionListener(new SelectionListener() { public void widgetDefaultSelected(SelectionEvent e) { // TODO Auto-generated method stub } public void widgetSelected(SelectionEvent e) { table.setBackground(table.getDisplay().getSystemColor(SWT.COLOR_CYAN)); table.setBackground(table.getDisplay().getSystemColor(SWT.COLOR_CYAN)); } }); Button buttonClearTable = new Button(shell1, SWT.PUSH); buttonClearTable.setText("buttonClearTable"); //$NON-NLS-1$ buttonClearTable.addSelectionListener(new SelectionListener() { public void widgetDefaultSelected(SelectionEvent e) { // TODO Auto-generated method stub } public void widgetSelected(SelectionEvent e) { table.setBackground(null); table.setForeground(null); } }); Button buttonWhiteTable = new Button(shell1, SWT.PUSH); buttonWhiteTable.setText("buttonWhiteTable"); //$NON-NLS-1$ buttonWhiteTable.addSelectionListener(new SelectionListener() { public void widgetDefaultSelected(SelectionEvent e) { // TODO Auto-generated method stub } public void widgetSelected(SelectionEvent e) { table.setBackground(table.getDisplay().getSystemColor(SWT.COLOR_WHITE)); table.setForeground(table.getDisplay().getSystemColor(SWT.COLOR_BLACK)); } }); // tableViewerCreator.setDefaultSort(nameColumn, SORT.DESC); list = new ArrayList<DataObject>(); Random random = new Random(); for (int i = 0; i < 2; i++) { DataObject listObject2 = new DataObject(); listObject2.setPrimaryIntegerValue(i); listObject2.setIntegerValue2(random.nextInt(100)); list.add(listObject2); } tableViewerCreator.init(list); shell1.setSize(800, 500); shell1.open(); while (!shell1.isDisposed()) { if (!display.readAndDispatch()) { display.sleep(); } } display.dispose(); } }