Прежде всего, круговые ссылки между плагинами не допускаются.Поэтому, когда вам нужно поделиться двунаправленной информацией между плагинами, вам часто приходится рефакторировать проблему, чтобы иметь шаблон слушателя для одного из направлений.
В этом случае я бы использовал ту же структуру для вашеговид, используемый для существующего вида Outline.Таким образом, ваше представление должно быть подклассом PageBookView
, который имеет довольно простой протокол для того, чтобы участвующий редактор мог предоставлять данные для представления.
По сути, я бы сделал то же самое, что и для представления Outline, и позволил бысам редактор обеспечивает содержание представления посредством адаптации.Представление Outline делает это путем отслеживания текущего редактора, и всякий раз, когда новый редактор «виден», представление Outline пытается адаптировать IEditorPart
к IContentOutlinePage
.Редактор отвечает за виджеты и прослушиватели SWT и т. Д., Которые понадобятся на странице просмотра для этого конкретного редактора ... Внимательно посмотрите на JavaDoc для ContentOutline
- это довольно хорошее описание задействованных протоколов.
Если у вас есть несколько «открытых» редакторов, то в новом представлении будет автоматически отображаться соответствующая информация для активного редактора, а не «просто» редактор, который был активен в последний раз, когда вы выполняли свое действие.
При этой схеме ваше действие будет просто
- Показывать (и активировать) новый вид.Это можно сделать с помощью
IWorkbenchPage.showView(...)
. - Запросить страницу предоставления для обновления своего представления ...