Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Eclipse Projects » Standard Widget Toolkit (SWT) » SWT table
SWT table [message #462485] Wed, 12 October 2005 22:32 Go to next message
Eclipse UserFriend
Originally posted by: ahsanfz.hotmail.com

Hye,

I have been banging my head with SWT table. I want it to appear in a preference page. Following is the code which I modified to run as swt application.

The problem is I can't get the table to appear whatever i do. Neither as a standlone application nor on preference page. Can someone point out what I am doing wrong.

Ahsan




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

import org.eclipse.jface.preference.FieldEditor;
import org.eclipse.jface.preference.FieldEditorPreferencePage;
import org.eclipse.jface.preference.FileFieldEditor;
import org.eclipse.jface.preference.IPreferenceStore;
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.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Layout;
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 org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;

import ed.inf.proofgeneral.ProofGeneralPlugin;
import ed.inf.proofgeneral.pgipdatastructure.BrokerStatus;
import ed.inf.proofgeneral.sessionmanager.SessionManager;

/**
* @author Elemental
*
*/
public class ProversPrefsPage //extends FieldEditorPreferencePage implements IWorkbenchPreferencePage
{

private TableViewer viewer;

/**
*
*/
public ProversPrefsPage()
{
}

protected void createFieldEditors()
{
createWidgets(getFieldEditorParent());
}

public void init(IWorkbench workbench)
{
// TODO Auto-generated method stub

}

public Composite ourComposite;
private void createWidgets(Composite parent)
{
ourComposite = new Composite(parent,SWT.NONE);
GridLayout layout = new GridLayout(2,false);
ourComposite.setLayout(layout);
ourComposite.setFont(parent.getFont());
layout.marginHeight = layout.marginWidth = 0;
GridData data = new GridData(SWT.FILL,SWT.FILL, true, true );
data.widthHint = 200;
ourComposite.setLayoutData(data);

Table proverTable = new Table(ourComposite, SWT.CENTER | SWT.BORDER | SWT.FULL_SELECTION);
data = new GridData(SWT.FILL,SWT.FILL, true, true );
proverTable.setLayoutData(data);
proverTable.setFont(parent.getFont());
viewer = buildAndLayoutTable(proverTable);

attachContentProvider(viewer);
attachLabelProvider(viewer);
BrokerStatus b = new BrokerStatus();
b.addRunningProver("123","1123");
// viewer.setInput(SessionManager.getDefault().getBrokerStatus( ));
viewer.setInput(b);
//Sample code if one wants to add a pop menu for prover actions here.
// MenuManager popupMenu = new MenuManager();
// IAction newRowAction = new NewRowAction();
// popupMenu.add(newRowAction);
// Menu menu = popupMenu.createContextMenu(table);
// table.setMenu(menu);
// viewer.setInput(CONTENT);


}

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

}
});
}

private TableViewer buildAndLayoutTable(Table table)
{
TableViewer tableViewer = new TableViewer(table);
TableLayout layout = new TableLayout();
layout.addColumnData(new ColumnWeightData(35, 75, true));
layout.addColumnData(new ColumnWeightData(40, 75, true));
layout.addColumnData(new ColumnWeightData(25, 75, 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;
}

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;
}
}

public static void main(String[] args)
{

Display display = new Display();
Shell shell = new Shell(display);
ProversPrefsPage r = new ProversPrefsPage();
r.createWidgets(shell);
shell.update();
shell.pack();
shell.open();
while (!shell.isDisposed())
{
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();
}


}
Re: SWT table [message #462508 is a reply to message #462485] Thu, 13 October 2005 09:37 Go to previous messageGo to next message
Robert Bacs is currently offline Robert BacsFriend
Messages: 165
Registered: July 2009
Senior Member
Hi,

You forgot to set a layout on your shell.

shell.setLayout(new GridLayout());

Regards,
Boby

"Elemental" <ahsanfz@hotmail.com> wrote in message
news:3680915.1129156407585.JavaMail.root@cp1.javalobby.org...
> Hye,
>
> I have been banging my head with SWT table. I want it to appear in a
preference page. Following is the code which I modified to run as swt
application.
>
> The problem is I can't get the table to appear whatever i do. Neither as a
standlone application nor on preference page. Can someone point out what I
am doing wrong.
>
> Ahsan
>
>
>
>
> import java.util.HashMap;
> import java.util.Iterator;
> import java.util.Set;
> import java.util.Vector;
>
> import org.eclipse.jface.preference.FieldEditor;
> import org.eclipse.jface.preference.FieldEditorPreferencePage;
> import org.eclipse.jface.preference.FileFieldEditor;
> import org.eclipse.jface.preference.IPreferenceStore;
> 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.GridData;
> import org.eclipse.swt.layout.GridLayout;
> import org.eclipse.swt.widgets.Composite;
> import org.eclipse.swt.widgets.Display;
> import org.eclipse.swt.widgets.Layout;
> 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 org.eclipse.ui.IWorkbench;
> import org.eclipse.ui.IWorkbenchPreferencePage;
>
> import ed.inf.proofgeneral.ProofGeneralPlugin;
> import ed.inf.proofgeneral.pgipdatastructure.BrokerStatus;
> import ed.inf.proofgeneral.sessionmanager.SessionManager;
>
> /**
> * @author Elemental
> *
> */
> public class ProversPrefsPage //extends FieldEditorPreferencePage
implements IWorkbenchPreferencePage
> {
>
> private TableViewer viewer;
>
> /**
> *
> */
> public ProversPrefsPage()
> {
> }
>
> protected void createFieldEditors()
> {
> createWidgets(getFieldEditorParent());
> }
>
> public void init(IWorkbench workbench)
> {
> // TODO Auto-generated method stub
>
> }
>
> public Composite ourComposite;
> private void createWidgets(Composite parent)
> {
> ourComposite = new Composite(parent,SWT.NONE);
> GridLayout layout = new GridLayout(2,false);
> ourComposite.setLayout(layout);
> ourComposite.setFont(parent.getFont());
> layout.marginHeight = layout.marginWidth = 0;
> GridData data = new GridData(SWT.FILL,SWT.FILL, true, true );
> data.widthHint = 200;
> ourComposite.setLayoutData(data);
>
> Table proverTable = new Table(ourComposite, SWT.CENTER | SWT.BORDER |
SWT.FULL_SELECTION);
> data = new GridData(SWT.FILL,SWT.FILL, true, true );
> proverTable.setLayoutData(data);
> proverTable.setFont(parent.getFont());
> viewer = buildAndLayoutTable(proverTable);
>
> attachContentProvider(viewer);
> attachLabelProvider(viewer);
> BrokerStatus b = new BrokerStatus();
> b.addRunningProver("123","1123");
> // viewer.setInput(SessionManager.getDefault().getBrokerStatus( ));
> viewer.setInput(b);
> //Sample code if one wants to add a pop menu for prover actions here.
> // MenuManager popupMenu = new MenuManager();
> // IAction newRowAction = new NewRowAction();
> // popupMenu.add(newRowAction);
> // Menu menu = popupMenu.createContextMenu(table);
> // table.setMenu(menu);
> // viewer.setInput(CONTENT);
>
>
> }
>
> 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
>
> }
> });
> }
>
> private TableViewer buildAndLayoutTable(Table table)
> {
> TableViewer tableViewer = new TableViewer(table);
> TableLayout layout = new TableLayout();
> layout.addColumnData(new ColumnWeightData(35, 75, true));
> layout.addColumnData(new ColumnWeightData(40, 75, true));
> layout.addColumnData(new ColumnWeightData(25, 75, 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;
> }
>
> 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;
> }
> }
>
> public static void main(String[] args)
> {
>
> Display display = new Display();
> Shell shell = new Shell(display);
> ProversPrefsPage r = new ProversPrefsPage();
> r.createWidgets(shell);
> shell.update();
> shell.pack();
> shell.open();
> while (!shell.isDisposed())
> {
> if (!display.readAndDispatch())
> display.sleep();
> }
> display.dispose();
> }
>
>
> }
Re: SWT table [message #462510 is a reply to message #462508] Thu, 13 October 2005 10:18 Go to previous messageGo to next message
Eclipse UserFriend
Originally posted by: ahsanfz.hotmail.com

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;
}
}

}
Re: SWT table [message #462514 is a reply to message #462510] Thu, 13 October 2005 11:27 Go to previous messageGo to next message
Eclipse UserFriend
Originally posted by: ahsanfz.hotmail.com

I think I figured out the problem but the behaviour is not as I expected.

If I just add the line setBounds or setSize than the table starts to appear. But I have set the data of the composite that holds the table to SWT.FILL and have done the same for the table so it should take up all the space and should appear by default.

Any thoughts by anyone.

Regards.
Re: SWT table [message #462557 is a reply to message #462514] Thu, 13 October 2005 16:20 Go to previous message
Robert Bacs is currently offline Robert BacsFriend
Messages: 165
Registered: July 2009
Senior Member
Now you forgot to set a layout for the Group widget.
If you create a widget always set on it a layout too, otherwise use
setBounds().

Regards,
Boby

"Elemental" <ahsanfz@hotmail.com> wrote in message
news:15377267.1129202865471.JavaMail.root@cp1.javalobby.org...
> I think I figured out the problem but the behaviour is not as I expected.
>
> If I just add the line setBounds or setSize than the table starts to
appear. But I have set the data of the composite that holds the table to
SWT.FILL and have done the same for the table so it should take up all the
space and should appear by default.
>
> Any thoughts by anyone.
>
> Regards.
Previous Topic:It's a bug ? Why ? java.lang.StackOverflowError getShell()
Next Topic:How does one pronounce SWT?
Goto Forum:
  


Current Time: Sat Apr 20 03:45:29 GMT 2024

Powered by FUDForum. Page generated in 0.03385 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top