2014-10-16 54 views
0

我有一個Eclipse插件,目前能夠使用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。

長話短說,我如何獲得包管理器中選定工作集內的項目?

回答

3

工作集接口org.eclipse.ui.IWorkingSet與接口IResource無關。

你可以嘗試一個單獨的適配器經理電話:

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

IAdaptable [] elements = workingSet.getElements(); 

在工作集的elements能項目也可以是其他的東西。遍歷元素並檢查instanceof IProject