Динамически добавлять столбцы в JFace TableViewer
В рамках моего проекта я читаю в файле CSV и хочу отобразить его в SWT, используя JFace TableViewer
, Очевидно, что количество столбцов может варьироваться от файла к файлу, поэтому я не знаю, сколько столбцов есть заранее.
Мой код, который читает файл, выглядит примерно так:
final CSVDataInput in = new CSVDataInput(comboLocation.getText(), separators[selection]);
final Iterator<String[]> it = in.iterator();
final List<String[]> data = new ArrayList<String[]>();
while (it.hasNext()) {
data.add(it.next());
count++;
}
Теперь я немного растерялся в отношении передачи этих данных TableViewer
в чистом виде. Я хотел бы знать, есть ли предопределенные поставщики контента и / или ярлыков для такого случая. Это кажется довольно простым для меня, но до сих пор я не мог найти ничего подходящего для моего случая из коробки. Я возился с ITableLabelProvider
какое-то время, но это не так.
Так что будет лучшим способом решения этой проблемы?
То, как я делаю это прямо сейчас, это определить обычай ColumnLabelProvider
, Это выглядит примерно так:
private class CSVColumnLabelProvider extends ColumnLabelProvider {
private int column;
public CSVColumnLabelProvider(int column) {
this.column = column;
}
@Override
public String getText(Object element) {
return ((String[]) element)[column];
}
}
Затем я должен назначить экземпляр этого класса для каждого столбца, например:
tableViewerColumn.setLabelProvider(new CSVColumnLabelProvider(column++));
Я не думаю, что это особенно хорошее решение, и мне, вероятно, не хватает леса для всех деревьев, потому что это похоже на проблему с более чистым решением.
Заранее спасибо!