Модули могут добавлять собственные наборы действий, панели и различные ярлыки к имеющимся проекциям с помощью точки расширения org.eclipse.ui.perspectiveExtensions.
К имеющимся проекциям также можно добавлять дополнения, заданные для новых проекций (группы действий, записи мастеров, макет панелей, ярлыки панелей и ярлыки проекций). Важное различие состоит в том, что эти дополнения указаны в коде plugin.xml, а не настраиваются в IPageLayout.
В следующем фрагменте кода показано, как JDT расширяет проекцию отладки платформы.
<extension point="org.eclipse.ui.perspectiveExtensions"> <perspectiveExtension targetID="org.eclipse.debug.ui.DebugPerspective"> <actionSet id="org.eclipse.jdt.debug.ui.JDTDebugActionSet"/> <view id="org.eclipse.jdt.debug.ui.DisplayView" relative="org.eclipse.debug.ui.ExpressionView" relationship="stack"/> <view id="org.eclipse.jdt.ui.PackageExplorer" relative="org.eclipse.debug.ui.DebugView" relationship="stack" visible="false"/> <view id="org.eclipse.jdt.ui.TypeHierarchy" relative="org.eclipse.debug.ui.DebugView" relationship="stack" visible="false"/> <view id="org.eclipse.search.SearchResultView" relative="org.eclipse.debug.ui.ConsoleView" relationship="stack" visible="false"/> <viewShortcut id="org.eclipse.jdt.debug.ui.DisplayView"/> </perspectiveExtension> </extension>
targetID - это ИД проекции, к которой модуль добавляет новое поведение. Параметр actionSet идентифицирует ИД ранее объявленного набора действий, который следует добавить к целевой проекции. Для этого применяется код, схожий с использованием IPageLayout.addActionSet в IPerspectiveFactory.
Добавление панели к проекции немного более сложно, так как необходимо объявить сведения о разметке страницы проекции. Атрибут visible контролирует, будет ли добавленная панель показана при открытии проекции. Помимо предоставления ИД добавленной панели, следует указать в качестве ссылки для размещения новой панели и ИД уже существующей панели проекции (относительной панели). Параметр relationship задает связь макета новой панели и относительной панели.
Указание perspectiveShortcut означает, что другая проекция (заданная по ИД) должна быть добавлена к меню Окно->Открыть проекцию... целевой проекции. Для этого применяется код, схожий с вызовом IPageLayout.addPerspectiveShortcut в исходном определении проекции в IPerspectiveFactory. Модули могут также добавлять ярлыки панелей и новые ярлыки мастеров таким же образом.
Можно также задать одну или несколько панелей в качестве showInPart. Панели следует указать по ИД, используемому в их дополнениях расширения org.eclipse.ui.views. Это позволяет управлять тем, какие панели доступны в меню Навигация > Показать в. Возможность указывать панель для меню "Показать в" в коде расширения позволяет добавлять новые панели в качестве целей в меню "показать в" других проекций. В разделе Связывание панелей и редакторов можно найти дополнительные сведения о возможностях функции "Показать в"
Полное определение точек расширения содержится в разделе org.eclipse.ui.perspectiveExtensions.