Я пишу простой плагин Eclipse, но у меня есть проблема: когда пользователь щелкает правой кнопкой мыши узел (может быть, проект, файл, модуль компиляции Java или другие), я хочу получить проект, которому он принадлежит .
Пример кода:
public class MyAction implements IObjectActionDelegate {
private IProject project;
public void selectionChanged(IAction action, ISelection selection) {
this.project = getSelectedProject(selection);
}
public static IProject getSelectedProject(Object obj) throws Exception {
if (obj == null) {
return null;
}
if (obj instanceof IResource) {
return ((IResource) obj).getProject();
} else if (obj instanceof IStructuredSelection) {
return getSelectedProject(((IStructuredSelection) obj).getFirstElement());
}
return null;
}
}
Это работает в большинстве случаев, но иногда, например, я щелкаю правой кнопкой мыши по файлу Java, выбор будет ICompilationUnit
. Хотя я могу добавить еще if
в getSelectedProject
, но я не думаю, что это хорошая идея.
Есть ли способ получить в проекте выбранные объекты, какие объекты были выбраны? Я не хочу добавлять их один за другим.