Приложение Eclipse dsl не может скрывать неиспользуемую перспективу

58
7

Я работаю над приложением eclipse, которое предоставляет IDE для внутренней DSL. DSL-инфраструктура создается платформой xtext (2.7.3). Я хотел бы скрыть несколько перспектив, которые не полезны для конечного пользователя моего приложения (Java, Debug, PDE и т.д.). Я нашел один подход через действия. Я создал следующий фрагмент файла plugin.xml

<extension
point="org.eclipse.ui.activities">
<activity id="hauweg" name="hauweg-den-xxxx">
<!-- this makes sure the matching stuff will never be enabled -->
<enabledWhen>
<with variable="true">
<equals value="false"/>
</with>
</enabledWhen>
</activity>
<!-- match all perspectives except org.eclipse.ui.resourcePerspective -->
<activityPatternBinding activityId="hauweg" pattern=".*DebugPerspective"/>
<activityPatternBinding activityId="hauweg" pattern=".*JavaPerspective"/>
<activityPatternBinding activityId="hauweg" pattern=".*JavaHierarchyPerspective"/>
<activityPatternBinding activityId="hauweg" pattern=".*JavaBrowsingPerspective"/>
<activityPatternBinding activityId="hauweg" pattern=".*PDEPerspective"/>
<activityPatternBinding activityId="hauweg" pattern=".*TeamSynchronizingPerspective"/>
</extension>
xxx.xxx.xxx.ui, большая часть этого плагина генерируется платформой xtext Плагин xxx.xxx.xxx.product, содержащий конфигурацию eclipse продукта

Я попытался поместить упомянутый фрагмент в файл plugin.xml, но это мне не помогает. Также я хотел бы узнать следующие пункты:

могу ли я сделать это программно? могу ли я сделать это только декларативным образом? Должен ли я использовать оба указанных способа? Какой плагин должен содержать это объявление?

Я использую Eclipse 4 (Luna).

спросил(а) 2015-02-11T14:30:00+03:00 5 лет, 8 месяцев назад
1
Решение
80

Ваш enabledWhen недействителен, удалите это. Если вы не укажете запись defaultEnablement для активности, которую она по умолчанию отключает.

Программно вы можете использовать:

IWorkbenchActivitySupport workbenchActivitySupport = PlatformUI.getWorkbench().getActivitySupport();

IActivityManager activityManager = workbenchActivitySupport.getActivityManager();

для получения интерфейсов поддержки действий и интерфейса управления деятельностью, которые дают вам некоторый контроль над действиями - но вам все равно необходимо определить их в файле plugin.xml

Если вы создаете RCP Eclipse, вы можете просто не включать JDT и другие плагины в свою RCP-сборку. В этом случае вам не нужно будет подавлять перспективы.

ответил(а) 2015-02-11T14:58:00+03:00 5 лет, 8 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема