andrey
7 May 2008, 6:10 PM
Hi,
I would expect that ViewerCell.getItem(), as called from within CellLabelProvider.update(ViewerCell), would return the current TableItem, but it returns null instead:
CellLabelProvider labelProvider = new CellLabelProvider() {
public void update(ViewerCell cell) {
TableItem item = (TableItem)cell.getItem(); // Returns null - why?
}
}
tableViewer.getViewerColumn(0).setLabelProvider(labelProvider);
Looking at the beta2 TableViewer.java, there is this code:
protected void renderItem(Object element, int index) {
int cols = table.getColumnCount();
String[] values = new String[cols];
String[] toolTips = new String[cols];
for (int j = 0; j < cols; j++) {
CellLabelProvider lp = getCellLabelProvider(j);
viewerCell.reset(element, null, j, table.getColumn(j).getId());
lp.update(viewerCell);
values[j] = viewerCell.getText();
toolTips[j] = viewerCell.getToolTipText();
}
TableItem item = new TableItem(values);
item.setData(element);
item.setCellToolTips(toolTips);
table.insert(item, index);
update(element);
}
Notice that the viewerCell.reset() call is passing null as the item and then the TableItem is created later but never updated in the ViewerCell - is this right?
BTW, if ViewerCell.getItem() did return the current TableItem, then this would be a way to set the widget for a column (until ViewerCell.setWidget() is supported as it was in MyGWT 5.2).
Thanks,
Andre
I would expect that ViewerCell.getItem(), as called from within CellLabelProvider.update(ViewerCell), would return the current TableItem, but it returns null instead:
CellLabelProvider labelProvider = new CellLabelProvider() {
public void update(ViewerCell cell) {
TableItem item = (TableItem)cell.getItem(); // Returns null - why?
}
}
tableViewer.getViewerColumn(0).setLabelProvider(labelProvider);
Looking at the beta2 TableViewer.java, there is this code:
protected void renderItem(Object element, int index) {
int cols = table.getColumnCount();
String[] values = new String[cols];
String[] toolTips = new String[cols];
for (int j = 0; j < cols; j++) {
CellLabelProvider lp = getCellLabelProvider(j);
viewerCell.reset(element, null, j, table.getColumn(j).getId());
lp.update(viewerCell);
values[j] = viewerCell.getText();
toolTips[j] = viewerCell.getToolTipText();
}
TableItem item = new TableItem(values);
item.setData(element);
item.setCellToolTips(toolTips);
table.insert(item, index);
update(element);
}
Notice that the viewerCell.reset() call is passing null as the item and then the TableItem is created later but never updated in the ViewerCell - is this right?
BTW, if ViewerCell.getItem() did return the current TableItem, then this would be a way to set the widget for a column (until ViewerCell.setWidget() is supported as it was in MyGWT 5.2).
Thanks,
Andre