双击树查看器上的侦听器

时间:2014-04-04 11:41:35

标签: java swt

我在树查看器上有一个选择更改的侦听器,其中如果我根据所选项单击树中的项目,则组合查看器的选择会相应地更改。

现在我需要在同一个树上实现双击功能,以便树展开并折叠隐藏选择更改的侦听器的功能。现在优先级是选择更改的侦听器,因此即使我向同一个树添加双击侦听器,也会触发选择更改事件。有没有办法在同一棵树上同时拥有选择更改侦听器(用于选择更改事件)和双击侦听器(扩展/折叠树项)?

IDoubleClickListener的代码

public class TreeViewerDblClkListener implements IDoubleClickListener {

@Override
public void doubleClick(DoubleClickEvent event) {
    Object obj = event.getSource();
    if (obj instanceof TreeViewer) {
        TreeViewer viewer = (TreeViewer) obj;
        ISelection selection = viewer.getSelection();
        if (selection instanceof IStructuredSelection) {
            Object item = ((IStructuredSelection) selection).getFirstElement();
            if (viewer.getExpandedState(item)) {
                viewer.collapseToLevel(item, AbstractTreeViewer.ALL_LEVELS);
            } else {
                viewer.expandToLevel(item, 1);
            }
        }
    }
}
}

它会抛出一个断言失败的异常。

org.eclipse.core.runtime.AssertionFailedException: null argument:
at org.eclipse.core.runtime.Assert.isNotNull(Assert.java:85)
at org.eclipse.core.runtime.Assert.isNotNull(Assert.java:73)
at org.eclipse.jface.viewers.AbstractTreeViewer.getExpandedState(AbstractTreeViewer.java:1202)
at com.commons.viewers.TreeViewerDblClkListener.doubleClick(TreeViewerDoubleClickListener.java:20)
at org.eclipse.jface.viewers.StructuredViewer$1.run(StructuredViewer.java:845)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)

有人知道这里发生了什么吗?

0 个答案:

没有答案