Вы можете поделиться поставщиками.Ваш ContentProvider должен реализовать как IStructuredContentProvider, так и ITreeContentProvider.Я предполагаю, что обычно вы захотите иметь отдельных поставщиков контента.
В примере дерево покажет только один уровень с элементами (все элементы являются корнями).Таблица покажет только одну строку.
Пример:
//ContentProvider for Tree and Table
public static class CommonContentProvider extends ArrayContentProvider
implements ITreeContentProvider {
@Override
public Object[] getChildren(final Object arg0) {
return null;
}
@Override
public Object getParent(final Object arg0) {
return null;
}
@Override
public boolean hasChildren(final Object arg0) {
return false;
}
}
public static void testCommonProviderTreeTable(final Composite c) {
final Collection<String> input = Arrays.asList(new String[] { "hi",
"hola" });
final IContentProvider contentProvider = new CommonContentProvider();
final IBaseLabelProvider labelProvider = new LabelProvider() {
@Override
public String getText(final Object element) {
return element.toString();
}
};
final TreeViewer tree = new TreeViewer(c, SWT.NONE);
tree.setContentProvider(contentProvider);
tree.setLabelProvider(labelProvider);
tree.setInput(input);
final TableViewer table = new TableViewer(c, SWT.NONE);
table.setContentProvider(contentProvider);
table.setLabelProvider(labelProvider);
table.setInput(input);
}