首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >获取IStructuredSelection (eclipse-rcp)的父元素?

获取IStructuredSelection (eclipse-rcp)的父元素?
EN

Stack Overflow用户
提问于 2009-05-29 22:32:44
回答 2查看 4.8K关注 0票数 3

我在一个视图中有一个TreeViewer,并且需要获取选定项的父项(如果它存在)。似乎什么都不起作用,谷歌也没有给出答案。

代码语言:javascript
运行
复制
mBacktestTree.addDoubleClickListener(new IDoubleClickListener() {
                public void doubleClick(DoubleClickEvent event) {
                IWorkbenchPage page = getSite().getPage();
                TreeViewer tree = (TreeViewer) event.getSource();
                Object selectObject = ((IStructuredSelection) tree.getSelection()).getFirstElement();

// now how can I get the parent of selectObject?
EN

回答 2

Stack Overflow用户

发布于 2009-05-30 08:24:16

您可以从ITreeSelection获取父对象。例如。

代码语言:javascript
运行
复制
public class DirectoryView extends ViewPart 
{
    public void createPartControl(Composite parent) 
    {
        TreeViewer treeViewer = new TreeViewer(parent);
        treeViewer.setContentProvider(new DirectoryProvider());
        treeViewer.setInput(new File(System.getProperty("user.home"))); 
        treeViewer.addDoubleClickListener(new IDoubleClickListener() 
        {                    
            public void doubleClick(DoubleClickEvent event) 
            {
                ITreeSelection selection = ((ITreeSelection)event.getSelection());
                System.out.println(selection.getPaths()[0].getParentPath().getLastSegment());
            }
        });
    }   

    class DirectoryProvider implements ITreeContentProvider
    {
        public Object[] getChildren(Object parentElement) 
        {
            File[] folders = ((File) parentElement).listFiles();
            return folders == null ? new File[0] : folders;
        }

        public Object getParent(Object element) 
        {
            return ((File) element).getParent();
        }

        public boolean hasChildren(Object element) 
        {
            return getChildren(element).length >0;
        }

        public Object[] getElements(Object inputElement) 
        {
            return getChildren(inputElement);
        }

        public void dispose() 
        {
            // ignore
        }

        public void inputChanged(Viewer viewer, Object oldInput, Object newInput) 
        {
            // ignore
        }
    }

    public void setFocus() 
    {
        // ignore
    }
}
票数 7
EN

Stack Overflow用户

发布于 2009-08-28 14:12:05

您还可以从树内容提供商那里获取父级:

代码语言:javascript
运行
复制
mBacktestTree.addDoubleClickListener(new IDoubleClickListener() {
                    public void doubleClick(DoubleClickEvent event) {
                            IWorkbenchPage page = getSite().getPage();
                            TreeViewer tree = (TreeViewer) event.getSource();
                            Object selectObject = ((IStructuredSelection)tree.getSelection()).getFirstElement();

ITreeContentProvider tcp =tree.getContentProvider();
Object parent = tcp.getParent(selectObject);
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/928429

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档