2012-04-06 5 views
0

Мне нужно создать динамические кнопки на главной панели инструментов. Я нашел решение, но я могу создать только одну кнопку (динамический элемент вклада - класс, расширяющийся ContributionItem). Но мне нужно создать несколько кнопок, но я не могу найти решение.Элементы панели инструментов динамически

Я сражаюсь с задачей создания плагина, который анализирует XML-файл, содержащий структуру меню и панелей инструментов. Мы уже сделали этот плагин для Visual Studio. Его довольно легко в принципе, но я быстро нашел, что не для Eclipse. Существует одна маленькая, но важная инаковость. Плагины реализованы декларативно в Eclipse. Файл plugin.xml является основой инфраструктуры плагина, Java-код является просто вспомогательным.

Клиент хочет обновить меню и панель инструментов всякий раз, когда выбранный проект изменен. Eclipse не хватает нескольких функций, необходимых для выполнения задачи. Главное меню и основная панель инструментов написаны при запуске Eclipse, а затем их вряд ли можно перестроить.

+0

Вы могли бы быть более конкретным. Например. на главную панель инструментов или где? В Eclipse мы обычно используем декларативный вклад в любую панель инструментов. –

+0

Я обновил свой пост. –

ответ

0

По моему мнению, вы хотите иметь разные кнопки на главной панели инструментов в зависимости от выбора проводника проекта (например, проект 1 - это проект java, другой - javascript и т. Д.). Сначала вам придется внести свой вклад в основную панель инструментов. Я думаю, что есть несколько учебных пособий, поэтому Google поможет. Основные шаги: 1. создать команду (org.eclipse.ui.commmands) 2. создать обработчик (org.eclipse.ui.handlers) с ранее объявленным идентификатором команды 3. внести вклад в основную панель инструментов (org.eclipse.ui.menus) с menucontribution и commandId со следующей позициейURI: панель инструментов: org.eclipse.ui.main.toolbar? after = misc

отображение/скрытие, включение/отключение элемента меню/кнопки также может быть сделано декларативно или «смешанным». Декларативно означает, например. используя enabledWhen/visibleWhen ... Смешанные средства с использованием тестера свойств (org.eclipse.core.expressions.propertyTester). С этим вы можете определить свою «логику включения» в Java-коде.

+0

Я боролся последние два месяца с Google. Все учебные пособия предполагали наличие некоторого постоянного набора команд, объявленных в дескрипторе плагина. Но мне нужно создать все это динамически, и это кажется неразрешимой проблемой. Я вообще не могу объявить какой-либо предмет. Я не знаю команд заранее. Работает несколько вещей. Всплывающее меню работает, но я не могу зарегистрировать динамическое всплывающее меню для каждого вида или редактора. Главное меню работает, но оно должно быть построено, когда Eclipse завершает запуск. Дальнейшие изменения модели данных меню выглядят неопределенно. Я не могу контролировать обновление представления. –

+0

(Примечание: для регистрации всплывающего меню для всех представлений одна из моих задач. Я уже разместил эти вопросы: [Глобальный контекстный приемник контекста или как зарегистрировать контекстное меню для всех зарегистрированных просмотров] (http://stackoverflow.com/questions/9988349/global-context-menu-listener-or-else-how-to-register-context-menu-for-all-views), [Динамическое всплывающее меню для всех просмотров] (http://stackoverflow.com/questions/10087095/dynamic-popup-menu-for-all-views) и [вклад динамического меню с привязкой клавиш] (http://stackoverflow.com/questions/10028967/dynamic-menu-contribution-with-key-bindings/10100755)) –

0

В Eclipse e4 пользовательский интерфейс создается на основе модели на основе EMF. Application.e4xmi служит базой для этой модели. Взносы в модель могут быть сделаны с помощью фрагментов, которые снова являются XML или через процессоры. Процессоры написаны на Java и используют службы e4, такие как служба детали, для изменения модели во время выполнения.

Я думаю, что вы хотите написать процессор, который анализирует ваш собственный XML и соответствующим образом изменяет модель eclipse e4.

Смежные вопросы