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

106

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

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


1.) Проблема

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

Просмотреть в папке редактора

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


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

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

SS файла plugin.xml с перспективными расширениями

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


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

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

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

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

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

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


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

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

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

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

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


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

В версии e4 они будут считаться устаревшими.


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

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

GGrec
источник
Я думаю, что это маловероятно, если включен код совместимости 3.x. Возможно, вы сможете разместить представление в области редактора с помощью API-интерфейсов e4, но я ожидаю, что это запутает код совместимости.
greg-449
1
Если вы не пользуетесь редакторами, просто минимизируйте общую область и создайте макет так, как хотите.
bebbo 05
перейти к более свежей версии, где это работает из коробки.
bebbo 05
@bebbo Я пользуюсь редакторами и не могу сразу все перенести на e4. Корпоративное программное обеспечение. :-)
GGrec

Ответы:

1

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


источник
любое предложение с ответом pripr может быть написано как комментарий вместо нового ответа.
Махалакшми