Я работаю над гибридом 3.8-e4 (у нас есть зависимости Luna, но мы не используем Application.e4xmi, пока). Таким образом, мы в основном запускаем компактный слой.
С учетом сказанного было бы неплохо найти программный способ e4 для того, чтобы складывать эти неприятные представления в папку редактора.
1.) Задача
Я хочу разместить общую папку вида в области редактора, чтобы каждый вид, который открывается во время выполнения, будет открыт там.
(pic украден из этого вопроса)
2.1) Возможное исправление №1: Использование plugin.xml
Создайте расширение перспективы и добавьте каждое возможное представление к этому расширению, с связью стека над относительными org.eclipse.ui.editorss. Это немного неудобно, если у вас слишком много просмотров, ожидающих открытия, и если проект быстро масштабируется. Я также заметил, что идентификаторы группового вида здесь не работают.
Если вы обнаружите, что время для добавления каждого возможного вида в перспективное расширение, это сработает. Хотя, если вы открываете представление, которое здесь не добавлено (то есть: открывается в другой папке), то каждое последующее открытое представление будет открыто в предыдущей папке, а НЕ в области редактора (запросите дополнительное объяснение, если вы не получите его).
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.) Связанные вопросы
- Eclipse RCP - Открыть представление в папке редактора
- Eclipse RCP - Укладка вида с помощью области редактора?
- Пользовательская перспектива Eclipse, с первоначально невидимым представлением, уложенным в область редактора
- Вопрос Google, ответ Ларса
Они были бы устаревшими для выпуска e4.
4.) Связанная ошибка в Eclipse Bugzilla:
Эта недавняя ошибка, открытая мной, имеет вложение с небольшим SSCCE. Шаги, чтобы воспроизвести это, описаны в этот комментарий, поэтому я не буду копировать их здесь.