因此,无论视图或编辑器中当前的选择是什么,我都有一些代码来获取项目-我知道它不完整,但对大多数人来说应该这样做-希望它能有所帮助:
@Override
public final Object execute(ExecutionEvent event) throws ExecutionException {
ISelection selection = HandlerUtil.getActiveMenuSelection(event);
IResource resource = Activator.getSelectedResource(selection);
IProject project = resource.getProject();
//do something
return null;
}
public static IResource getSelectedResource(ISelection selection) {
if (selection instanceof TreeSelection) {
Object selectedElement = ((TreeSelection) selection).getFirstElement();
if (selectedElement instanceof IResource) {
return (IResource) selectedElement;
} else if (selectedElement instanceof IPackageFragmentRoot) {
return ((IPackageFragmentRoot) selectedElement).getResource();
} else if (selectedElement instanceof IJavaProject) {
return ((IJavaProject) selectedElement).getProject();
}
} else if (selection instanceof TextSelection) {
IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
IEditorPart editor = page.getActiveEditor();
if (editor.getEditorInput() instanceof IFileEditorInput fei) {
return fei.getFile();
}
}
return null;
}