【问题标题】:Eclipse Plugin: get contents of working setEclipse 插件:获取工作集的内容
【发布时间】:2014-12-12 01:32:11
【问题描述】:

我有一个 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。

长话短说,我如何将项目放入包管理器中选定的工作集中?

【问题讨论】:

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


    【解决方案1】:

    工作集接口org.eclipse.ui.IWorkingSet与IResource接口无关。

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

    IWorkingSet workingSet = (IWorkingSet)adapterManager.getAdapter(projectObg, IWorkingSet.class);
    
    IAdaptable [] elements = workingSet.getElements();
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-14
      • 2014-06-01
      • 2018-05-20
      • 1970-01-01
      • 2012-01-07
      • 2011-07-12
      • 2013-05-16
      • 1970-01-01
      相关资源
      最近更新 更多