То, что вы получаете в событии, это текущий выбор, который может быть файлом или чем-то другим, в зависимости от того, как вы определили меню «enabledWhen». Вы можете получить файл из списка.
IStructuredSelection selection = HandlerUtil.getCurrentStructuredSelection(event);
if (!selection.isEmpty()) {
IFile file = Adapters.adapt(selection.getFirstElement(), IFile.class, true);
if (file != null) {
... your code
}
}
В некоторых случаях адаптер для IFile
недоступен, но адаптер для IResource
есть. В этом случае используйте:
IResource resource = Adapters.adapt(selection.getFirstElement(), IResource.class);
if (resource instanceof IFile) {
IFile file = (IFile)resource;
}
Примечание: getCurrentStructuredSelection
и Adapters
- относительно новые API. В старых версиях Eclipse вам понадобится немного более сложный код.
HandlerUtil
- это org.eclipse.ui.handlers.HandlerUtil
в плагине org.eclipse.ui.workbench
, Adapters
- это org.eclipse.core.runtime.Adapters