每次选择项目时获取所选项目名称

时间:2014-10-09 07:30:53

标签: java eclipse-plugin eclipse-rcp

我正在使用ISelection来获取所选的项目名称。

public static IProject getCurrentProject() {    
        IProject project = null;    
        ISelectionService selectionService = Workbench.getInstance().getActiveWorkbenchWindow().getSelectionService();    

        ISelection selection = selectionService.getSelection();    


        if(selection instanceof IStructuredSelection) {    
            Object element = ((IStructuredSelection)selection).getFirstElement();    

            if (element instanceof IResource) {    
                project= ((IResource)element).getProject();    

            }  
            else if (element instanceof IJavaElement) {    
                IJavaProject jProject= ((IJavaElement)element).getJavaProject();    
                project = jProject.getProject();    
            }



        }

        return project;  
    }

问题是此函数仅在第一次执行时返回项目名称。

当我在按钮事件上调用它时,我得到一个空指针异常,看起来该元素为null。

每次调用此函数时,我必须更改以获取所选项目名称?

1 个答案:

答案 0 :(得分:2)

Workbench是一个内部类,您不能使用它Eclipse API Rules of Engagement。使用:

PlatformUI.getWorkbench()

获取IWorkbench实例。

ISelectionService.getSelection返回当前活动部分中的选择,因此如果您从编辑器或视图中调用此选项,那么您将获得选择,而不是包/项目资源管理器中的选择。

您可以致电ISelectionService.getSelection("part id")以获取特定部分的选择 - 但您必须计算部件ID。

您可以使用ISelectionService.addPostSelectionListener告知所有部分选择的变化。