我正在使用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。
每次调用此函数时,我必须更改以获取所选项目名称?
答案 0 :(得分:2)
Workbench
是一个内部类,您不能使用它Eclipse API Rules of Engagement。使用:
PlatformUI.getWorkbench()
获取IWorkbench
实例。
ISelectionService.getSelection
返回当前活动部分中的选择,因此如果您从编辑器或视图中调用此选项,那么您将获得选择,而不是包/项目资源管理器中的选择。
您可以致电ISelectionService.getSelection("part id")
以获取特定部分的选择 - 但您必须计算部件ID。
您可以使用ISelectionService.addPostSelectionListener
告知所有部分选择的变化。