Hallo alle zusammen
Nachdem ich schon öfters mit den Viewer gearbeitet habe dachte ich so eine Tabelle (TableViewer) ist dann ja auch kein Problem...falsch gedacht.
Aus mir unerfindlichen Gründen, ist die Spalte (columnIndex) in meinem LabelProvider immer 0 (was schon irgendwie nicht sein kann) und zusätzlich ist die Tabelle dann trotzdem komplett leer. Der ContentProvider liefert (laut Debugger) aber 2 Elemente.
Hier mal ein Ausschnitt
Ich habe bereits mehrere Snippets durchgeschaut, konnte aber keinen Fehler finden.
Danke
Nachdem ich schon öfters mit den Viewer gearbeitet habe dachte ich so eine Tabelle (TableViewer) ist dann ja auch kein Problem...falsch gedacht.
Aus mir unerfindlichen Gründen, ist die Spalte (columnIndex) in meinem LabelProvider immer 0 (was schon irgendwie nicht sein kann) und zusätzlich ist die Tabelle dann trotzdem komplett leer. Der ContentProvider liefert (laut Debugger) aber 2 Elemente.
Hier mal ein Ausschnitt
Java:
protected void createFormContent(IManagedForm managedForm) {
...
Composite oilClient = toolkit.createComposite(oilSection, SWT.NONE); // Die Tabelle soll in eine Section
oilClient.setLayout(new GridLayout());
Table table = createTable(oilClient);
TableViewer tableViewer = new TableViewer(table, SWT.SINGLE | SWT.V_SCROLL);
tableViewer.setUseHashlookup(true);
// tableViewer.setColumnProperties(columnNames);
tableViewer.setContentProvider(new TableContentProvider ());
tableViewer.setLabelProvider(new TableLabelProvider());
tableViewer.setInput(vehicle.getOils());
oilSection.setClient(oilClient);
}
private Table createTable(Composite parent){
Table table = new Table(parent, SWT.SINGLE | SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.HIDE_SELECTION);
GridData gridData = new GridData(GridData.FILL_BOTH);
gridData.grabExcessVerticalSpace = true;
gridData.grabExcessHorizontalSpace = true;
gridData.horizontalSpan = 3;
table.setLayoutData(gridData);
table.setLinesVisible(true);
table.setHeaderVisible(true);
TableColumn column = new TableColumn(table, SWT.NONE, 0);
column.setText("Art des Öls");
column.setWidth(200);
column = new TableColumn(table, SWT.NONE, 1);
column.setText("Spezifikation");
column.setWidth(150);
column = new TableColumn(table, SWT.NONE, 2);
column.setText("Liter");
column.setWidth(50);
return table;
}
/**
*
*
*/
private class TableContentProvider implements IStructuredContentProvider {
public Object[] getElements(Object inputElement) {
return vehicle.getOils().toArray();
}
public void dispose() {
}
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
}
}// end (local) class
/**
*
*
*/
private class TableLabelProvider extends LabelProvider implements ITableLabelProvider {
public Image getColumnImage(Object element, int columnIndex) {
return null;
}
public String getColumnText(Object element, int columnIndex) {
Oil oil = (Oil)element;
String result = "";
switch(columnIndex){ // der columnIndex ist immer 0?
case 0:
result = oil.getName();
break;
case 1:
result = oil.getSpecification();
break;
case 2:
result = oil.getAmount_in_liter();
break;
}
return result;
}
}// end (local) class
Ich habe bereits mehrere Snippets durchgeschaut, konnte aber keinen Fehler finden.
Danke