2014-10-16 42 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