Как получить "активный редактор" в плагине Eclipse?

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

PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor()

Это работает в большинстве случаев, кроме случаев, когда нажата зеленая кнопка "Продолжить":

Кнопки отладчика

Если я использую ярлык F8, то активный редактор обновляется, как и ожидалось.

Кажется, что свойство активного редактора не обновляется, пока вкладка редактора не окажется в фокусе (чего не происходит при нажатии кнопки "Продолжить").

Есть ли другой способ, которым я могу воспользоваться, чтобы получить "видимый редактор"?

Заранее спасибо.

Алан

3 ответа

  1. Редактор активен только тогда, когда у него есть фокус, поэтому то, что вы получаете, является правильным выводом API. Пользователь вашего плагина не будет запускать его в режиме отладки, поэтому для конечного пользователя это не проблема
  2. В качестве альтернативы, чтобы получить все открытые редакторы, вы можете сделать следующее:

PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getEditorReferences()

IWorkbenchPage interface has anisPartVisible()`метод, который указывает, является ли указанная часть видимой. Результат не зависит от того, является ли указанная часть активной в данный момент, т.е. имеет фокус или нет.

Однако, чтобы найти видимый, но в настоящее время не активный редактор, может быть недостаточно просто вызвать этот метод на странице активной рабочей среды. Вместо этого вам может понадобиться перебрать все окна рабочей среды и проверить видимость вашего редактора на странице каждого из них.

Вопрос похож на вопрос, размещенный по ссылке ниже. Одним из способов достижения этого является отслеживание того, какой редактор был ранее открыт, путем создания Part Listener. Eclipse Plugin - Как заставить последнего работать над редактором

Другие вопросы по тегам