如何调用检查树选择对话框的监听器

时间:2014-01-20 11:21:33

标签: java eclipse eclipse-plugin

我有一个 org.eclipse.ui.dialogs.CheckedTreeSelectionDialog ,如下面的代码。

final CheckedTreeSelectionDialog checkedTreeSelectionDialog = new
 CheckedTreeSelectionDialog(new Shell(),new ActionLabelProvider(), new
ActionContentProvider());

ActionLabelProvider 实现 org.eclipse.jface.viewers.ILabelProvider ActionContentProvider 实现 org.eclipse.jface.viewers.ITreeContentProvider

我最初选择了一些元素,有些元素不在CheckedTreeSelectionDialog中。

当对话框打开时,如果我检查未选中的元素,我想显示一条消息。

我该怎么做?

1 个答案:

答案 0 :(得分:1)

创建CheckedTreeSelectionDialog的子类并添加 addCheckStateListener ,使用以下代码。

// When user checks a checkbox in the tree

import org.eclipse.jface.viewers.CheckStateChangedEvent;
import org.eclipse.jface.viewers.CheckboxTreeViewer;
import org.eclipse.jface.viewers.ICheckStateListener;
import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.dialogs.CheckedTreeSelectionDialog;

public class MyCheckedTreeSelectionDialog extends CheckedTreeSelectionDialog {

    public MyCheckedTreeSelectionDialog(Shell parent, ILabelProvider labelProvider, ITreeContentProvider contentProvider) {
        super(parent, labelProvider, contentProvider);
    }

    @Override
    protected CheckboxTreeViewer getTreeViewer() {
        CheckboxTreeViewer treeViewer = super.getTreeViewer();
        treeViewer.addCheckStateListener(new ICheckStateListener() {
            public void checkStateChanged(CheckStateChangedEvent event) {

                if (event.getChecked()) {
                    // Given element is checked
                } else {
                    // Given element is un-checked
                   // Your message here
                }
            }
        });

        return treeViewer;
}

}