Eclipse Plugin: добавлен новый элемент в контекстное меню, вызываемое правой кнопкой мыши, как определить имя файла / путь? - PullRequest
0 голосов
/ 01 сентября 2018

ExecutionEvent в методе execute, который запускается при выборе нового элемента в меню, похоже, не ссылается на файл, по которому щелкнули правой кнопкой мыши. Интересно, нужно ли мне добавить прослушиватель для этого, и если это так, это помешает методу выполнения.

1 Ответ

0 голосов
/ 01 сентября 2018

То, что вы получаете в событии, это текущий выбор, который может быть файлом или чем-то другим, в зависимости от того, как вы определили меню «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

...