Java 每次选择项目时获取所选项目名称
我正在使用ISelection获取所选项目名称Java 每次选择项目时获取所选项目名称,java,eclipse-plugin,eclipse-rcp,Java,Eclipse Plugin,Eclipse Rcp,我正在使用ISelection获取所选项目名称 public static IProject getCurrentProject() { IProject project = null; ISelectionService selectionService = Workbench.getInstance().getActiveWorkbenchWindow().getSelectionService(); ISelecti
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;
}
问题在于,此函数仅在第一次执行时返回项目名称
当我在按钮事件上调用它时,我得到一个空指针异常,并且元素似乎是空的
每次调用此函数时,我必须更改哪些内容才能获得所选的项目名称?
Workbench
是一个内部类,您不能使用它。使用:
获取IWorkbench
实例
ISelectionService.getSelection
返回当前活动部件中的选择,因此如果从编辑器或视图调用此选项,则会在其中获得选择,而不是在Package/Project explorer中获得选择
您可以调用ISelectionService.getSelection(“零件id”)
来获取特定零件中的选择,但您必须计算零件id
您可以使用
iSelectService.addPostSelectionListener
了解所有部分选择中的更改。我正在开发一个插件,这就是我使用Workbench的原因,我尝试在插件运行的地方获取所选项目名,我的函数返回所选项目名,但只是在第一次执行时(加载插件中的视图时)…我需要解决这个问题…除了核心Eclipse代码之外,Workbench在任何地方都是不可接受的。它是一个内部类,可以在不通知的情况下进行更改。可能在您第一次运行代码时,Package Explorer是活动部分,您得到了选择。在另一次运行时,其他部分是活动部分,它有一个空选择。每个部分都有自己的单独选择。
PlatformUI.getWorkbench()