[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
|
Re: Is it TableTreeViewer Bug????
|
- From: michalsv@xxxxxxxxxxx (Michal)
- Date: Thu, 22 Aug 2002 11:34:11 +0000 (UTC)
- Newsgroups: eclipse.tools
- Organization: http://www.eclipse.org
- User-agent: NewsPortal 0.23
Peter Burka wrote:
> "Michal" <michalsv@xxxxxxxxxxx> wrote in message
> news:ajvn2q$tjg$1@xxxxxxxxxxxxxxxx
> > Hi
> > I have a major problem and I would like to know if its a bug.
> > When using TableTreeViewer with cell editors (TextCellEditor and
> > ComboCellEditor) it doesnt show in the edit mode state (second selection)
> > the editors.
> > In case of ComboCellEditor the list of items doesnt appear and in the
> > TextCellEditor the the corsur doesnt appear and there is no selection of
> > the text.
> > I checked the code on TableViewer and it works fine. So is it a bug or I
> > doing something wrong?
> Michal,
> Could you post a small program which demonstrates the problem?
> /peter
> --
> Peter Burka
> Object Technology International, Inc.
OK I have write an example for the problem
in the Data Type should appear combo box and in the comment column should
appear TextCellEditor
Thanks for your help
Michal
package src;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.jface.viewers.CellEditor;
import org.eclipse.jface.viewers.ComboBoxCellEditor;
import org.eclipse.jface.viewers.ICellModifier;
import org.eclipse.jface.viewers.ITableLabelProvider;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.TableTreeViewer;
import org.eclipse.jface.viewers.TextCellEditor;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.TableTree;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Item;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.ui.model.WorkbenchContentProvider;
/**
* @author michal
*
* To change this generated comment edit the template variable
"typecomment":
* Window>Preferences>Java>Templates.
* To enable and disable the creation of type comments go to
* Window>Preferences>Java>Code Generation.
*/
public class TableTreeBug {
public TableTree tableTree;
public TableTreeViewer viewer;
public String[] columnLabels = { "Column Name", "Data Type", "Comments" };
public String[] dataTypes = { "Int", "String", "Group" };
public CellEditor[] editors = null;
ColumnContentProvider contentProvider;
public TableTreeBug() {
contentProvider = new ColumnContentProvider();
Shell shell = new Shell();
GridLayout layout = new GridLayout();
shell.setLayout(layout);
//////////
viewer =
new TableTreeViewer(
shell,
SWT.FULL_SELECTION
| SWT.HIDE_SELECTION
| SWT.H_SCROLL
| SWT.V_SCROLL
| SWT.BORDER);
GridData grid = new GridData(GridData.FILL_BOTH);
grid.widthHint = 450;
grid.heightHint = 200;
viewer.getControl().setLayoutData(grid);
tableTree = viewer.getTableTree();
// configure the widget
Table table = tableTree.getTable();
viewer.setContentProvider(contentProvider);
viewer.setInput(contentProvider);
viewer.setLabelProvider(new TestTableProvider());
viewer.setColumnProperties(columnLabels);
editors = new CellEditor[3];
editors[1] = new ComboBoxCellEditor(tableTree, dataTypes);
editors[2] = new TextCellEditor(tableTree);
viewer.setCellEditors(editors);
viewer.setCellModifier(cellModifier);
viewer.setColumnProperties(columnLabels);
for (int col = 0; col < 3; col++) {
TableColumn column = new TableColumn(table, SWT.NONE, col);
column.setText(columnLabels[col]);
column.setWidth(100);
column.pack();
}
table.setLinesVisible(true);
table.setHeaderVisible(true);
shell.pack();
shell.open();
Display display = shell.getDisplay();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
}
public class ColumnBaseObject {
private String name;
private String dataType = "int";
private String comments = "11";
public ColumnBaseObject(String n) {
name = n;
}
public String getName() {
return name;
}
public void setName(String n) {
name = n;
}
public String getType() {
return dataType;
}
public void setType(String t) {
dataType = t;
}
public String getComments() {
return comments;
}
public void setComments(String com) {
comments = com;
}
public Integer getIntValue() {
Integer res = null;
res = new Integer(1);
if (dataType == "")
if (dataType == "Int")
res = new Integer(1);
if (dataType == "String")
res = new Integer(1);
if (dataType == "Group")
res = new Integer(3);
return res;
}
};
private ICellModifier cellModifier = new ICellModifier() {
public Object getValue(Object element, String property) {
if (element instanceof ColumnBaseObject) {
ColumnBaseObject col = (ColumnBaseObject) element;
if (property.equals("Column Name"))
return col;
if (property.equals("Data Type")) {
Integer i = col.getIntValue();
return i;
}
if (property.equals("Comments"))
return col.getComments();
}
return element;
}
public boolean canModify(Object element, String property) {
return true;
}
public void modify(Object element, String property, Object value) {
if (element instanceof Item) {
Object ob = ((Item) element).getData();
ColumnBaseObject col = (ColumnBaseObject) ob;
if (property.equals("Data Type")) {
Integer index = (Integer) value;
col.setType(dataTypes[index.intValue()]);
viewer.refresh();
}
if (property.equals("Comments"))
col.setComments(value.toString());
contentProvider.inputChanged(viewer, col, value);
viewer.refresh();
}
}
};
public class ColumnContentProvider extends WorkbenchContentProvider {
public Object[] arr = null;
public void inputChanged(Viewer v, Object oldInput, Object newInput) {
if (oldInput instanceof ColumnBaseObject) {
// just to check update
((ColumnBaseObject)arr[0]).setComments(newInput.toString());
v.setInput(this);
v.refresh();
}
}
public void dispose() {
}
public Object[] getElements(Object parent) {
if(arr == null){
arr = new Object[3];
ColumnBaseObject col1 = new ColumnBaseObject("first");
ColumnBaseObject col2 = new ColumnBaseObject("second");
ColumnBaseObject col3 = new ColumnBaseObject("third");
arr[0] = col1;
arr[1] = col2;
arr[2] = col3;
}
return arr;
}
public Object[] getChildren(Object parent) {
return arr;
}
public boolean hasChildren(Object parent) {
return false;
}
};
class TestTableProvider
extends LabelProvider
implements ITableLabelProvider {
public Image getColumnImage(Object element, int columnIndex) {
return null;
}
public String getColumnText(Object element, int columnIndex) {
ColumnBaseObject col = (ColumnBaseObject) element;
switch (columnIndex) {
case 0 : //Column Name
return col.getName();
case 1 : // Data Type
return col.getType();
case 2 : // comment
return col.getComments();
default :
return "problem";
}
}
}
public static void main(String[] args) {
TableTreeBug bug = new TableTreeBug();
}
}