在进行eclipse插件开发的时候,我们经常需要知道当前选中的项目是什么,以便针对项目做一些处理。通过当前项目,我们更可以得到项目中的任何目录和文件。所以获得当前项目的是很有用的。
google了一下这方面的资料。基本都说是通过ISelection来获得。可是ISelection却没说从哪里来,一般都是当做抽象方法的参数,在我们实现方法时传给我们。可是这样很不爽,我们可能经常会需要在没有ISelection参数的方法中获得当前project对象。
没关系,使用下面这段代码就可以让我们在我们插件里的任何地方得到当前项目:
java 代码
-
public static IProject getCurrentProject(){
-
ISelectionService selectionService =
-
Workbench.getInstance().getActiveWorkbenchWindow().getSelectionService();
-
-
ISelection selection = selectionService.getSelection();
-
-
IProject project = null;
-
if(selection instanceof IStructuredSelection) {
-
Object element = ((IStructuredSelection)selection).getFirstElement();
-
-
if (element instanceof IResource) {
-
project= ((IResource)element).getProject();
-
} else if (element instanceof PackageFragmentRootContainer) {
-
IJavaProject jProject =
-
((PackageFragmentRootContainer)element).getJavaProject();
-
project = jProject.getProject();
-
} else if (element instanceof IJavaElement) {
-
IJavaProject jProject= ((IJavaElement)element).getJavaProject();
-
project = jProject.getProject();
-
}
-
}
-
return project;
-
}
通过前面这两句解决了获得当前selection的问题,接下来就顺畅了。
java 代码
-
ISelectionService selectionService =
-
Workbench.getInstance().getActiveWorkbenchWindow().getSelectionService();
-
-
ISelection selection = selectionService.getSelection();
附件: