Проекции

Мы уже познакомились с некоторыми доступными способами управления функциональностью модулей в рабочей среде. Панели можно отображать или скрывать с помощью меню Окно >Показать панель. Наборы действий можно скрывать или показывать с помощью меню Окно >Настроить проекцию.... Эти функции помогают организовать рабочую среду.

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

Проекции реализованы с помощью   IPerspectiveFactoryРеализация IPerspectiveFactory настраивает IPageLayout, предоставляя сведения, описывающие проекцию и разметку ее страницы проекции.

Макет компонента рабочей среды

Одной из основных задач IPageLayout является описание расположения редактора и панелей в окне рабочей среды. Обратите внимание, что эти макеты отличаются от класса Layout в SWT. Несмотря на то, что IPageLayout и Layout решают схожие задачи (изменение размеров и расположения виджетов в крупных областях), необязательно быть знакомым с концепциями SWT для создания макета страницы проекции.

Макет страницы проекции инициализируется в одной области для отображения редактора. Фабрика проекции отвечает за добавление дополнительных панелей, относящихся к редактору. Панели добавляются к макету относительно другой части (верх, низ, левый или правый край). Заменитель (пустые места) можно добавлять вместо первоначально скрытых элементов.

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

IPageLayout также позволяет определить доступные действия и ярлыки внутри проекции.   

Связь панелей и редакторов с "Показать в"

Проекции и IPageLayout также упрощают навигацию между редактором и связанными с ним панелями.  Обычно панели служат как вспомогательное средство, позволяющее находить объекты для работы с ними в редакторах.  Однако также удобна и обратная операция:  пользователь, работающий с объектом в редакторе может просмотреть этот объект внутри панели.  Это можно сделать с помощью меню Навигация >Показать в рабочей среды.  Эта команда позволяет перейти к одной из связанных панелей в контексте редактируемого (или выбранного) объекта.  Например, текущий файл и можно открыть в навигаторе ресурсов.

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

Такая навигация позволяет быстро переключаться между панелями и открывать панель, в обычных условиях не отображающуюся в определенной проекции.  Например, пользователь, работающий в проекции Java, может использовать меню Навигатор >Показать в для просмотра редактируемого Java-файла в окне навигатора.

Источник функции Показать в

Для работы с меню Навигатор >Показать в из редактора или панели для переключения на другую панель, следует использовать IShowInSource.  Ваш компонент может предоставить IShowInSource напрямую с помощью протокола (getShowInSource()) или в качестве адаптера.  IShowInSourceпозволяет компоненту предоставить контекст (ShowInContext), который используется целевым объектом для отображения источника .  В качестве контекста Показать в для редактора обычно отображается вводный элемент.  Для панели контекст - это обычно выбранный элемент.  И выбранный, и элемент ввода предоставляются ShowInContext, чтобы предоставить целевому объекту определенную гибкость при определении способа отображения источника. 

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

Для панелей необходимо реализовать IShowInSource для правильной работы меню Навигация > Показать в.

Целевой объект Показать в

Необходимо реализовать IShowInTarget если требуется, чтобы панель была допустимой целью для операции "Показать в".  Цель отвечает за отображение заданного контекста подходящим для презентации способом.   Например, панель Навигатор развертывает свое дерево для выбора ресурса и отображает ресурс, указанный в контексте.   

Цель должна вначале проверить выбранный элемент в ShowInContext перед тем как решить, что отображать, так как здесь содержится более подробная информация.  Элемент ввода должен отображаться, только если не указан какой-либо выбранный элемент.

Представление подходящих целей

Как определяется список доступных целей?  Можно указать доступные цели для проекции в IPageLayout.  Не забывайте, что функция "Показать в" может отобразить панель, еще не представленную в проекции.  Используя IPageLayout.addShowInPart можно указать цель "Показать в " с помощью ИД.  Таким образом, можно задать цели без создания панелей.