Home » Eclipse Projects » Standard Widget Toolkit (SWT) » SWT table
SWT table [message #462485] |
Wed, 12 October 2005 22:32 |
Eclipse User |
|
|
|
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 |
Robert Bacs 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 |
Eclipse User |
|
|
|
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 |
Eclipse User |
|
|
|
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.
|
|
| |
Goto Forum:
Current Time: Sat Apr 20 03:45:29 GMT 2024
Powered by FUDForum. Page generated in 0.03385 seconds
|