Eclipse Tableviewer problem
Hejsa.Jeg har et problem med en Tableviewer og en Table, som ikke gider at vise noget data på skærmen. Som i kan læse i det nedenstående kode, så bruger jeg en liste af objekter som input til min tableviewer, hvor jeg har min contenthandler, som giver den en liste af de objekter. Derudover har jeg en TableLableProvider, hvor jeg håndterer getColumnText(..), og returnerer de tekster den har brug for. Jeg har prøvet at steppe igennem, og det ser ud til at den bruger objekter og handler som den skal, men den viser ikke noget i tabellen.
Jeg tror virkelig jeg gør noget galt i behandling med tabellen/vieweren.. Please help :)
private TableViewer viewer;
private IAdapterFactory adapterFactory = new EventAdapterFactory();;
private Table theTable;
//private Action modifyAction;
private EventListHolder theList;
TableColumn column;
private String[] columnNames = new String[]{"Name"};
public EventlogView() {
super();
}
public EventListHolder getEventList() {
return this.theList;
}
public void createPartControl(Composite parent) {
Platform.getAdapterManager().registerAdapters(adapterFactory, EventItem.class);
initializeList();
createTable(parent);
createTableViewer();
viewer.setContentProvider(new EventContentProvider());
viewer.setLabelProvider(new EventListLabelProvider());
viewer.setInput(theList);
parent.layout();
parent.redraw();
}
private void initializeList() {
theList = new EventListHolder();
EventGroup g = new EventGroup("Group 1", "1");
for(int i = 1; i <= 10; i++) {
theList.addEvent(new EventData(g, "Item "+i,"data for item "+i, "data for item "+i));
}
}
public java.util.List getColumnNames() {
return Arrays.asList(columnNames);
}
public void setFocus() {
// TODO Auto-generated method stub
}
public void selectionChanged(SelectionChangedEvent event) {
System.out.println("hejsa");
}
private void createTable(Composite parent) {
int style = SWT.SINGLE | SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL |
SWT.FULL_SELECTION | SWT.HIDE_SELECTION;
final int NUMBER_COLUMNS = 1;
theTable = new Table(parent, style);
GridData gridData = new GridData(GridData.FILL_BOTH);
gridData.grabExcessVerticalSpace = true;
gridData.horizontalSpan = 1;
theTable.setLayoutData(gridData);
theTable.setLinesVisible(true);
theTable.setHeaderVisible(true);
// 1st column with task Description
column = new TableColumn(theTable, SWT.LEFT, 0);
column.setText("Name");
column.setWidth(400);
// Add listener to column so tasks are sorted by description when clicked
column.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
System.out.println("Sorting on Name");
//viewer.setSorter(new ExampleTaskSorter(ExampleTaskSorter.DESCRIPTION));
}
});
}
private void createTableViewer() {
viewer = new TableViewer(theTable,SWT.BORDER|SWT.MULTI|SWT.V_SCROLL);
viewer.setUseHashlookup(true);
viewer.setColumnProperties(columnNames);
// Create the cell editors
CellEditor[] editors = new CellEditor[columnNames.length];
// Column 1 : Description (Free text)
TextCellEditor textEditor = new TextCellEditor(theTable);
((Text) textEditor.getControl()).setTextLimit(60);
editors[0] = textEditor;
// Assign the cell editors to the viewer
viewer.setCellEditors(editors);
// Set the cell modifier for the viewer
viewer.setCellModifier(new EventCellModifier(this));
// Set the default sorter for the viewer
//tableViewer.setSorter(new ExampleTaskSorter(ExampleTaskSorter.DESCRIPTION));
}
/**
* Providing content for the Table. It implements the ITaskListViewer
* interface since it must register changeListeners with the
* ExampleTaskList
*/
class EventContentProvider implements IStructuredContentProvider, IEventListViewer {
public void inputChanged(Viewer v, Object oldInput, Object newInput) {
if (newInput != null)
((EventListHolder) newInput).addChangeListener(this);
if (oldInput != null)
((EventListHolder) oldInput).removeChangeListener(this);
}
public void dispose() {
theList.removeChangeListener(this);
}
// Return the tasks as an array of Objects
public Object[] getElements(Object parent) {
return theList.getEvents().toArray();
}
/* (non-Javadoc)
* @see ITaskListViewer#addTask(ExampleTask)
*/
public void addEvent(EventItem item) {
viewer.add(item);
}
/* (non-Javadoc)
* @see ITaskListViewer#removeTask(ExampleTask)
*/
public void removeEvent(EventItem item) {
viewer.remove(item);
}
/* (non-Javadoc)
* @see ITaskListViewer#updateTask(ExampleTask)
*/
public void updateEvent(EventItem item) {
viewer.update(item, null);
}
}
