Eclipse插件:获取工作集的内容

时间:2014-10-16 15:41:38

标签: java eclipse eclipse-plugin selection working-set

我有一个eclipse插件,目前能够使用

在工作区中获取所选项目
IStructuredSelection structured = (IStructuredSelection) iServiceServiceObject.getSelection("org.eclipse.jdt.ui.PackageExplorer");
Object[] selectedProjectObjects = structured.toArray();
    for (Object projectObj : selectedProjectObjects) {
    IAdapterManager adapterManager = Platform.getAdapterManager();
    IResource resource = (IResource) adapterManager.getAdapter(projectObj, IResource.class);
    if (resource instanceof IProject) {
        IProject project = (IProject) resource;
        // using the project in some way

我想添加一个功能,也可以选择整个工作集并处理其中的所有项目。有没有办法说出来

if(resource instanceof WorkingSetClass){
    WorkingSetClass wsc = (WorkingSetClass) 
    IProject[] projects = wsc.getProjects()

问题是,文档说"所有已知的子接口(IResource):IContainer,IFile,IFolder,IProject,IWorkspaceRoot"。我尝试使用IContainer及其members()方法而不是伪编码的WorkingSetClass和getProjects(),但是instanceof返回false。

简而言之,如何在包管理器中的选定工作集中获取项目?

1 个答案:

答案 0 :(得分:3)

工作集接口org.eclipse.ui.IWorkingSetIResource接口无关。

您可以尝试单独的适配器管理器调用:

IWorkingSet workingSet = (IWorkingSet)adapterManager.getAdapter(projectObg, IWorkingSet.class);

IAdaptable [] elements = workingSet.getElements();

工作集中的elements可以是项目,但可能是其他内容。循环遍历元素并检查instanceof IProject