Обновите плагин вида из действия в плагине текстового редактора - PullRequest
1 голос
/ 02 июля 2011

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

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

В пути сборки проекта обнаружен цикл

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

Спасибо.

ки.

1 Ответ

1 голос
/ 03 июля 2011

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

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

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

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

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

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