Я работаю над гибридом 3.8-e4 (т.е. у нас есть зависимости Luna, но мы пока не используем Application.e4xmi ). Итак, мы в основном запускаем компактный слой.
С учетом сказанного было бы неплохо найти программный способ e4 для размещения этих неприятных представлений в папке редактора.
1.) Проблема
Я хочу разместить общую папку представления в области редактора, чтобы каждое представление, открытое во время выполнения, было открыто там.
(фото украдено из этого вопроса )
2.1) Возможное исправление №1: Использование plugin.xml
Создайте расширение перспективы и добавьте каждое возможное представление к этому расширению со стеком отношений над относительным org.eclipse.ui.editorss . Это немного неудобно, если у вас слишком много представлений, ожидающих открытия, и если проект быстро масштабируется. Я также заметил, что идентификаторы представления с подстановочными знаками здесь не работают.
Если у вас будет время добавить каждый возможный вид к расширению перспективы, это сработает. Хотя, ЕСЛИ вы открываете представление, которое здесь не добавлено (то есть: открывается в другой папке), то каждое последующее открытое представление будет открываться в предыдущей папке, а НЕ в области редактора (запросите дополнительные объяснения, если вы этого не сделаете. возьми).
2.2) Возможное исправление № 2: Использование кода в фабрике перспективы
В IPerspectiveFactory
, у нас действительно есть доступ к IPageLayout
, который оказывается org.eclipse.ui.internal.e4.compatibility.ModeledPageLayout
(материал e4).
Теперь это ModeledPageLayout
разумная реализация, но без документации и странных общедоступных API. Это дает возможность наложить вид на любого другого родственника
modeledPageLayout.stackView("newView0", IPageLayout.ID_EDITOR_AREA);
Это будет программная версия 2.1 . Также здесь возникает та же проблема. Если представление открыто в другом месте, приведенный выше код становится бесполезным.
Интересно, что stackView
API не поддерживает подстановочные знаки (в то время как другие, например, поддерживают addView
).
2.3) Возможное исправление № 3: Обходные пути yaaay!
У меня много перспектив и много разных папок в каждой. Все размещено точно.
Поскольку Eclipse предлагает API-интерфейсы для получения всех идентификаторов представлений отовсюду в системе, я хочу сделать следующее для каждой перспективы: каждый идентификатор представления, который не был добавлен в конкретную папку, будет добавлен в область редактора (т.е. , стек редактора) .
Это будет мое последнее средство, если только кто-нибудь не предложит более удобное и экономное время решение.
Помните, что программная альтернатива e4 более гибкая!
3.) Связанные вопросы
- Eclipse RCP - Открыть просмотр в папке редактора
- Eclipse RCP - объединение представления с областью редактора?
- Пользовательская перспектива Eclipse с изначально невидимым видом, размещенным в области редактора
- Вопрос Google, ответ Ларса
В версии e4 они будут считаться устаревшими.
4.) Связанная ошибка в Bugzilla Eclipse:
К этой недавней ошибке, обнаруженной мной , прикреплен небольшой SSCCE. Шаги по воспроизведению этого описаны в этом комментарии , поэтому я не собираюсь копировать и вставлять их здесь.