MultiPageEditor: Как отобразить дерево просмотра

Я впервые разрабатываю MultiPageEditorгде одна страница должна отображать checkboxTreeViewer, но я не заставляю его работать. Также другая страница с примером метки не работает. Я делаю что-то совершенно не так? Вот мой код до сих пор:

public class PlcEditor extends MultiPageEditorPart implements
        IResourceChangeListener, PropertyChangeListener {

....

@Override
    protected void createPages() {
        // Configuration Page
        createConfigurationPage();

        // Product Page
        createProductPage();
    }

    private void createConfigurationPage() {
        Composite container = new Composite(getContainer(), SWT.NONE);
        FillLayout layout = new FillLayout();
        container.setLayout(layout);
        tv = new CheckboxTreeViewer(container, SWT.MULTI | SWT.H_SCROLL
                | SWT.V_SCROLL);
        tv.getTree().setLayoutData(new GridData(GridData.FILL_BOTH));
        tv.setAutoExpandLevel(2);
        tv.setContentProvider(new ConfigurationContentProvider());
        tv.setLabelProvider(new ConfigurationLabelProvider());
        tv.setExpandPreCheckFilters(true);
        tv.setInput("root");
        tv.addCheckStateListener(new ICheckStateListener() {
            public void checkStateChanged(CheckStateChangedEvent event) {
                // If the item is checked or not. . .
                if (event.getChecked()) {
                    // . . . check all its children
                    tv.setSubtreeChecked(event.getElement(), true);
                } else {
                    // . . . uncheck all its children
                    tv.setSubtreeChecked(event.getElement(), false);
                }
            }
        });
        int index = addPage(container);
        setPageText(index, "Configuration");
    }

    private void createProductPage() {
        Composite container = new Composite(getContainer(), SWT.NONE);
        Label label = new Label(container, SWT.BORDER);
        label.setLocation(100, 50);
        label.setText("Concrete Product");
        int index = addPage(container);
        setPageText(index, "Product");
    }
....

По крайней мере, ярлык должен работать?

Ура, Фил

1 ответ

В createProductPage Вы не устанавливаете макет на Composite который останавливает его отображение.

На быстрый тест здесь я добавил SWT.BORDER в дерево просмотра, и он заполняет страницу, так что, возможно, ваш контент-провайдер не работает.

Другие вопросы по тегам