我有一个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及其成员()方法,而不是伪编码WorkingSetClass和getProjects(),但是instanceof返回false。
长话短说,如何在包管理器中的选定工作集中获取项目?
工作集接口org.eclipse.ui.IWorkingSet
与这些IResource
接口无关。
您可以尝试单独的适配器管理器调用:
IWorkingSet workingSet = (IWorkingSet)adapterManager.getAdapter(projectObg, IWorkingSet.class);
IAdaptable [] elements = workingSet.getElements();
将elements
在工作组可以项目也可以是其他的东西。遍历元素并检查instanceof IProject
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句