Обновите плагин вида из действия в плагине текстового редактора

У меня есть два плагина eclipse (пользовательский плагин текстового редактора и плагин вида как два разных проекта). В текстовом редакторе есть действие, которое создает индекс "функций" всех зависимых исходных файлов. В конце этого действия я хотел бы показать индекс (список "функций") в средстве просмотра таблиц плагина представления. Что бы вы сказали, лучший способ достичь этого? По мнению не должен слушать редактор. Он должен обновляться только при запуске действия из плагина редактора.

Я экспортировал пакет из плагина редактора и экспортировал другой пакет из плагина представления, поскольку плагин текстового редактора должен ссылаться на тип представления, чтобы заполнить tableViewer в плагине представления, а плагин представления должен ссылаться на тип редактора в contentProvider tableviewer. Но я получаю ошибку пути сборки:

Цикл был обнаружен в пути сборки проекта

Как я могу решить это? Или, если это плохой подход, у меня есть лучший способ?

Благодарю.

тк.

1 ответ

Решение

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

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

По сути, я бы сделал то же самое, что и для представления Outline, и позволил самому редактору предоставлять содержимое представления посредством адаптации. Представление Outline делает это путем отслеживания текущего редактора, и всякий раз, когда новый редактор "виден", представление Outline пытается адаптировать IEditorPart в IContentOutlinePage, Редактор отвечает за виджеты и слушатели SWT и т. Д., Которые понадобятся на странице просмотра для этого конкретного редактора... Внимательно посмотрите на JavaDoc для ContentOutline - это довольно хорошее описание протоколов.

Если у вас есть несколько "открытых" редакторов, то в новом представлении будет автоматически отображаться соответствующая информация для активного редактора, а не "только" редактор, который был активен в последний раз, когда вы выполняли свое действие.

С этой схемой ваше действие будет просто

  • Показать (и активировать) новый вид. Это можно сделать через IWorkbenchPage.showView(...),
  • Запросите страницу предоставления, чтобы обновить свой вид...
Другие вопросы по тегам