Затмение: древовидное представление и табличное представление - PullRequest
2 голосов
/ 05 августа 2009

Я хочу знать, возможно ли использовать одни и те же поставщики контента и меток для дерева и таблицы в представлениях Eclipse или у них должны быть отдельные поставщики контента и меток. Я пытаюсь использовать провайдеров контента и меток, которые я написал для дерева для таблицы, но я ничего не вижу в табличном представлении.

Спасибо.

Ответы [ 2 ]

2 голосов
/ 05 августа 2009

Вы МОЖЕТЕ использовать того же поставщика этикеток.

Вы НЕ МОЖЕТЕ использовать одного и того же провайдера контента, поскольку провайдер контента дерева должен реализовывать ITreeContentProvider, который не «совместим» с интерфейсом IStructuredContentProvider, который должен быть реализован провайдером контента таблицы.

Под «не совместимостью» я подразумеваю, что реализация метода IStructuredContentProvider.getElements (Object inputElement) в TreeContentProvider должна возвращать только объекты «root», тогда как она должна возвращать все объекты для поставщика содержимого списка.

0 голосов
/ 05 августа 2009

Вы можете поделиться поставщиками.Ваш 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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...