簡體   English   中英

如何從工作集中獲取項目(IProject)?

[英]How to get projects (IProject) from Working Sets?

在下一個代碼中,默認情況下,我將從項目Workspace中獲得項目所需的信息,但是我需要針對工作集的項目進行更改。

    IWorkspace workspace = ResourcesPlugin.getWorkspace();

     // Get the root of the workspace
    IWorkspaceRoot root = workspace.getRoot(); 

    // Get all projects in the workspace
    IProject[] projects = root.getProjects(); 

    // Loop over all projects
    for (IProject project : projects) {
        try {
            if (project.getName().equals("RemoteSystemsTempFiles"))
            {
                System.out.println("Ignored project");
                //setSystemName(project.getName());
            }
            else
            {
                // Load the data model by extracting APIs declaration (Imports)
                printProjectInfo(project);
            }
        } catch (CoreException e) {
            e.printStackTrace();
        }
    }

因此,我找到了答案,但在循環后返回時,我收到許多信息,例如:

- ProjectName (not open) 

要么

- ProjectName
   src
      <default> (...)
        src (...)
    src.tryone (...)
   C:\Program Files\Java\jre1.8.0_31\lib\resources.jar (not open)

返回該信息的代碼是:

     IWorkingSetManager manager = PlatformUI.getWorkbench().getWorkingSetManager();

    IWorkingSet [] allWorkingSets = manager.getAllWorkingSets();

    for (IWorkingSet aWorkingset : allWorkingSets) {

        IAdaptable[] elems = aWorkingset.getElements();
        System.out.println("Working set " + aWorkingset.getName() + " has "+ elems.length + " projects.");
        for (IAdaptable elem : elems) {
                System.out.println("Working set " + aWorkingset.getName()+ " contains " + elem.toString());
        }
    }

因此,簡要地說,我想知道如何以與工作區項目相同或相似的方式從工作集中獲取IProject?

在每個IAdaptable元素調用上

IResource resource = (IResource)elem.getAdapter(IResource.class);

它將返回元素表示的任何資源(某些工作集包含其他內容,因此結果可能為null)。

然后你可以打電話

IProject project = resource.getProject();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM