2014-10-16 10 views
0

У меня есть плагин Eclipse, который в настоящее время находится в состоянии получить выбранные проекты в рабочей области с помощьюEclipse Plugin: получить содержимое рабочего набора

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() вместо псевдокодиза WorkSetClass и getProjects(), но instanceof возвращает false.

Короче говоря, как мне получить проекты внутри выбранного рабочего набора в диспетчере пакетов?

ответ

3

Интерфейс рабочего набора org.eclipse.ui.IWorkingSet не имеет отношения к интерфейсам IResource.

Вы могли бы попробовать отдельный менеджер адаптер вызов:

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

IAdaptable [] elements = workingSet.getElements(); 

elements в рабочем наборе могут быть проекты, но могут быть и другие вещи. Прокрутите элементы и проверьте на instanceof IProject.

 Смежные вопросы

  • Нет связанных вопросов^_^