Eclipse RCP - Открыть представление в области редактора (гибрид 3.8/e4)

Я работаю над гибридом 3.8-e4 (у нас есть зависимости Luna, но мы не используем Application.e4xmi, пока). Таким образом, мы в основном запускаем компактный слой.

С учетом сказанного было бы неплохо найти программный способ e4 для того, чтобы складывать эти неприятные представления в папку редактора.


1.) Задача

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

View in editor folder

(pic украден из этого вопроса)


2.1) Возможное исправление №1: Использование plugin.xml

Создайте расширение перспективы и добавьте каждое возможное представление к этому расширению, с связью стека над относительными org.eclipse.ui.editorss. Это немного неудобно, если у вас слишком много просмотров, ожидающих открытия, и если проект быстро масштабируется. Я также заметил, что идентификаторы группового вида здесь не работают.

SS of the plugin.xml with perspective extensions

Если вы обнаружите, что время для добавления каждого возможного вида в перспективное расширение, это сработает. Хотя, если вы открываете представление, которое здесь не добавлено (то есть: открывается в другой папке), то каждое последующее открытое представление будет открыто в предыдущей папке, а НЕ в области редактора (запросите дополнительное объяснение, если вы не получите его).


2.2) Возможное исправление № 2: Использование кода в перспективе factory

В IPerspectiveFactory у нас есть доступ к IPageLayout, который оказывается org.eclipse.ui.internal.e4.compatibility.ModeledPageLayout (e4 stuff).

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

modeledPageLayout.stackView("newView0", IPageLayout.ID_EDITOR_AREA);

Это будет программная версия 2.1. Кроме того, здесь возникает одна и та же проблема. Если представление открывается где-то в другом месте, код выше становится бесполезным.

Интересно, что API stackView не поддерживает подстановочные знаки (в то время как другие, такие как addView do).


2.3) Возможное исправление № 3: Обходные пути yaaay!

У меня много перспектив и множество разных папок в каждом. Все точно установлено.

Так как Eclipse предлагает API-интерфейсам для получения всех идентификаторов вида повсюду вокруг системы, я хочу сделать следующее, для каждой точки зрения: каждый идентификатор вида, который не был добавлен в определенную папку, будет добавлен к область редактора (например, папка редактора, стек редактора).

Это было бы моим последним средством, если кто-то не предложит более удобное и экономящее время решение.

Помните, что программная альтернатива e4 более гибкая!


3.) Связанные вопросы

Они были бы устаревшими для выпуска e4.


4.) Связанная ошибка в Eclipse Bugzilla:

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

Ответ 1

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