MultiPageEditor:如何显示treeviewer

时间:2013-11-05 23:30:19

标签: java eclipse swt jface multipage

我第一次开发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 个答案:

答案 0 :(得分:0)

createProductPage中,您没有在Composite上设置停止显示的布局。

在这里进行快速测试时,我将SWT.BORDER添加到树查看器中,它正在填充页面,因此您的内容提供商可能无法正常工作。