Получение активного рабочего набора программно в Eclipse

#java #eclipse #eclipse-plugin

#java #eclipse #eclipse-плагин

Вопрос:

Может кто-нибудь, пожалуйста, скажите мне, как получить текущий или активный рабочий набор, а также получить все проекты в рабочем наборе в IProject type? Я пытаюсь достичь этого, используя приведенный ниже код —

 IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
IWorkbenchPage page = window.getActivePage();
IWorkingSetManager manager = window.getWorkbench().getWorkingSetManager();
IWorkingSet[] workingSets = manager.getWorkingSets();
 

Это даст мне все рабочие наборы, которые присутствуют в eclipse? IWorkingSet.getElements() предоставляет все детали проекта в типе IAdaptable, который я не могу привести в IProject?

Заранее благодарю вас!

Ответ №1:

Вы преобразуете IAdaptable значение в IProject :

 IProject project = (IProject)adaptable.getAdapter(IProject.class);
 

Я не уверен, предоставляет ли элемент working set адаптер напрямую IProject , вам может потребоваться использовать:

 IResource resource = (IResource)adaptable.getAdapter(IResources.class);

if (resource instanceof IProject)
 {
 }
 

Комментарии:

1. Спасибо @greg-449. Это сработало отлично. Я многому учусь у вас. Активный рабочий набор должен присутствовать в первом списке рабочих наборов, возвращаемых функцией getRecentWorkingSets(), по крайней мере, в соответствии с теорией, представленной в библиографии eclipse, но он не работал. В любом случае, большое вам спасибо за вашу своевременную помощь.

2. IWorkbenchPage имеет getWorkingSet , но это устарело, поскольку глобальный рабочий набор теперь не рекомендуется, вместо этого отдельные представления имеют отдельный активный рабочий набор.

3. Извините за задержку ответа.. Конечно, теперь я понимаю.. vogella rcp tutorials — хорошее начало для этих тем