package com.topsun.posclient.sales.service; import java.util.ArrayList; import java.util.List; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.viewers.ArrayContentProvider; import org.eclipse.jface.viewers.ILabelProviderListener; import org.eclipse.jface.viewers.ITableColorProvider; import org.eclipse.jface.viewers.ITableLabelProvider; import org.eclipse.jface.viewers.TableViewer; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.graphics.ImageData; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Listener; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Table; import org.eclipse.swt.widgets.TableColumn; public class Test { public static void main(String[] args) { Display display = new Display(); Shell shell = new Shell(display); shell.setText("Test dialog"); GridLayout layout = new GridLayout(); layout.numColumns = 1; shell.setLayout(layout); TableViewer tableView = new TableViewer(shell, SWT.FULL_SELECTION); tableView.setLabelProvider(new TestLableProvider()); tableView.setContentProvider(new TestContentProvider()); Table table = tableView.getTable(); GridLayout gridLayout = new GridLayout(); gridLayout.marginBottom = 0; gridLayout.marginHeight = 0; gridLayout.marginLeft = 0; gridLayout.marginRight = 0; gridLayout.marginTop = 0; gridLayout.marginWidth = 0; table.setLayout(gridLayout); GridData data = new GridData(GridData.FILL_BOTH); table.setLayoutData(data); // table.setBackground(new Color(Display.getCurrent(), 57, 62, 63)); table.setLayoutData(new GridData(GridData.FILL_BOTH)); table.setHeaderVisible(true); List list = new ArrayList(); list.add("1"); list.add("2"); list.add("3"); list.add("4"); { TableColumn column = new TableColumn(tableView.getTable(), SWT.NONE); column.setText("11111"); column.setWidth(100); } { TableColumn column = new TableColumn(tableView.getTable(), SWT.NONE); column.setText("2222"); column.setWidth(100); } tableView.setInput(list); table.addListener(SWT.MeasureItem, new Listener() { public void handleEvent(Event event) { event.height =30; } }); tableView.refresh(); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) { display.sleep(); } } } } class TestLableProvider implements ITableLabelProvider, ITableColorProvider { private Color[] bg = new Color[] { new Color(null, 210, 249, 251), new Color(null, 251, 253, 166) }; private Image[] image = new Image[] { ImageDescriptor.createFromImageData(new ImageData("c:/blue.png")) .createImage(Display.getCurrent()), ImageDescriptor.createFromImageData(new ImageData("c:/yellow.png")) .createImage(Display.getCurrent()) }; private Color[] force = new Color[] { new Color(null, 0, 0, 0), new Color(null, 0, 0, 0) }; private Object current = null; private int currentColor = 0; @Override public void addListener(ILabelProviderListener listener) { // TODO Auto-generated method stub } @Override public void dispose() { // TODO Auto-generated method stub } @Override public boolean isLabelProperty(Object element, String property) { // TODO Auto-generated method stub return false; } @Override public void removeListener(ILabelProviderListener listener) { // TODO Auto-generated method stub } @Override public Color getForeground(Object element, int columnIndex) { return force[currentColor]; } @Override public Color getBackground(Object element, int columnIndex) { if (current != element) { currentColor = 1 - currentColor; current = element; } return bg[currentColor]; } @Override public Image getColumnImage(Object element, int columnIndex) { if (current != element) { currentColor = 1 - currentColor; current = element; } Image image = new Image(Display.getDefault(),1, 30); // return image[currentColor]; return null; } @Override public String getColumnText(Object element, int columnIndex) { switch (columnIndex) { case 0: return "HAHAHAH"; case 1: return "HAHAHAH"; case 2: return "HAHAHAH"; } return "HAHAHAH"; } } class TestContentProvider extends ArrayContentProvider { @Override public Object[] getElements(Object inputElement) { if (inputElement instanceof List) { List list = (List) inputElement; return list.toArray(); } return super.getElements(inputElement); } }