[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Newsgroup Home]
[news.eclipse.platform.swt] Re: SWT table

Hi, 

Thanks for the first reply, but no thats not the problem. I think something is wrong with my version of swt or something. 

Here is another class I wrote for testing and I have set the layout for the shell there. Even put a Group to see whether anything even gets added. And then created a simple table to chk things out. Code for my application table is also there which you can comment an unchk. But both of them dont appear. Plz do have a quick look again if you see anything wrong. I am still a newbie to SWT.

I can't believe why glitches like this are haunting me.


import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;
import java.util.Vector;

import org.eclipse.jface.viewers.ColumnWeightData;
import org.eclipse.jface.viewers.ILabelProviderListener;
import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.ITableLabelProvider;
import org.eclipse.jface.viewers.TableLayout;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.swt.widgets.TableItem;

import ed.inf.proofgeneral.pgipdatastructure.BrokerStatus;



public class Testing
{

	public Testing()
	{
		super();
		// TODO Auto-generated constructor stub
	}

	
	
	private TableViewer buildAndLayoutTable(Table table)
	{
		TableViewer tableViewer = new TableViewer(table);
		TableLayout layout = new TableLayout();
		layout.addColumnData(new ColumnWeightData(35, 40, true));
		layout.addColumnData(new ColumnWeightData(40, 50, true));
		layout.addColumnData(new ColumnWeightData(25, 30, true));
		table.setLayout(layout);
		TableColumn nameColumn = new TableColumn(table, SWT.CENTER);
		nameColumn.setText("Prover Name");
		TableColumn idColumn = new TableColumn(table, SWT.CENTER);
		idColumn.setText("Prover ID");
		TableColumn statusColumn = new TableColumn(table, SWT.CENTER);
		statusColumn.setText("Status");
		table.setHeaderVisible(true);
		table.setLinesVisible(true);
		return tableViewer;
	}	
	
	private void attachLabelProvider(TableViewer viewer)
	{
		viewer.setLabelProvider(new ITableLabelProvider()
		{
			public String getColumnText(Object element, int index)
			{
				switch (index)
				{
					case 0:
						return ((ProverTableItem) element).provername;
					case 1:
						return ((ProverTableItem) element).proverid;
					case 2:
						return ((ProverTableItem) element).status;
					default:
						return "";
				}
			}

			public Image getColumnImage(Object element, int columnIndex)
			{
				return null;
			}

			public void addListener(ILabelProviderListener listener)
			{
			}

			public void dispose()
			{
			}

			public boolean isLabelProperty(Object element, String property)
			{
				return false;
			}

			public void removeListener(ILabelProviderListener listener)
			{
			}
		});
		
	}

	private void attachContentProvider(TableViewer viewer)
	{
		// TODO Auto-generated method stub
		viewer.setContentProvider(new IStructuredContentProvider()
		{
			public Object[] getElements(Object input)
			{
				Vector result = new Vector();
				if (input instanceof BrokerStatus)
				{
					BrokerStatus brokerStatus = (BrokerStatus) input;
					HashMap hm = brokerStatus.getRunningprovers();
					Set keyset = hm.keySet();
					ProverTableItem tableItem;
					for (Iterator i = keyset.iterator(); i.hasNext();)
					{
						Object proverid = i.next();
						tableItem = new ProverTableItem((String)hm.get(proverid)
														,(String)proverid
														,"Running");
						result.add(tableItem);
					}
					hm = brokerStatus.getKnownprovers();
					keyset = hm.keySet();
					for (Iterator i = keyset.iterator(); i.hasNext();)
					{
						Object proverid = i.next();
						tableItem = new ProverTableItem((String)hm.get(proverid)
														,"Not running yet"
														,"Not running yet");
						result.add(tableItem);
					}
				}
				return result.toArray();
			}

			public void dispose()
			{
			}

			public void inputChanged(Viewer viewer, Object oldInput,
					Object newInput)
			{
				// TODO Auto-generated method stub

			}
		});
	}
	
	
	/**
	 * @param args
	 */
	public static void main(String[] args)
	{
		// TODO Auto-generated method stub

		Display display = new Display();
		Shell shell = new Shell(display);
		FillLayout flayout = new FillLayout(SWT.VERTICAL|SWT.HORIZONTAL);
		shell.setLayout(flayout);
		Group group = new Group(shell,SWT.SHADOW_ETCHED_IN);
		group.setText("Group Label");
		
		Testing t = new Testing();
		Composite ourComposite = new Composite(group,SWT.NONE);
		GridLayout layout = new GridLayout(1,false);
		ourComposite.setLayout(layout);
		ourComposite.setFont(shell.getFont());
		layout.marginHeight = layout.marginWidth = 10;
		GridData data = new GridData(SWT.FILL,SWT.FILL, true, true );
		data.widthHint = 200;
		ourComposite.setLayoutData(data);
		
//		Set up the table layout
		TableLayout tablelayout = new TableLayout();
		tablelayout.addColumnData(new ColumnWeightData(33, 75, true));
		tablelayout.addColumnData(new ColumnWeightData(33, 75, true));
		tablelayout.addColumnData(new ColumnWeightData(33, 75, true));
		Table table = new Table(ourComposite, SWT.SINGLE);
		table.setLayout(tablelayout);
//		Add columns to the table
		TableColumn column1 = new TableColumn(table, SWT.CENTER);
		column1.setWidth(30);
		TableColumn column2 = new TableColumn(table, SWT.CENTER);
		column2.setWidth(30);
		TableColumn column3 = new TableColumn(table, SWT.CENTER);
		column3.setWidth(30);
		TableItem item = new TableItem(table, SWT.NONE);
		item.setText( new String[] { "column 1",
		"column 2",
		"column 3" } );
		item = new TableItem(table, SWT.NONE);
		item.setText( new String[] { "a", "b", "c" } );
		table.setVisible(true);
		table.setLinesVisible(true);
		
/////////////////////////////////////////////////////////////////////////////////////
/////////////////Code sample 2 Uncomment to chk///////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////
		
//		Table proverTable = new Table(ourComposite,  SWT.FULL_SELECTION);
//		data = new GridData(SWT.FILL,SWT.FILL, true, true );
//		proverTable.setLayoutData(data);
//		proverTable.setFont(shell.getFont());
//		TableViewer viewer = t.buildAndLayoutTable(proverTable);
//		
//		t.attachContentProvider(viewer);
//		t.attachLabelProvider(viewer);
//		BrokerStatus b = new BrokerStatus();
//		b.addRunningProver("123","1123");
////		viewer.setInput(SessionManager.getDefault().getBrokerStatus());		
//		viewer.setInput(b);		
		

		shell.update();
		shell.pack();
		shell.open();
		while (!shell.isDisposed())
		{
			if (!display.readAndDispatch())
				display.sleep();
		}
		display.dispose();
	}	
	
	class ProverTableItem
	{
		public String provername;
		public String proverid;
		public String status;
		public ProverTableItem( String n, String i, String s)
		{
			provername = n;
			proverid = i;
			status = s;
		}
	}
	
}