Eclipse RCP предоставляет множество стандартных опций меню, которые используются самой Eclipse IDE. К ним относятся стандартные параметры меню, такие как « Выход» , « Сохранить» , « Вырезать / Копировать / Вставить» , а также специальные параметры рабочей среды, такие как « Сброс перспективы» и « Показать виды» .
Примечание: пост ниже на самом деле неверен, что на мой взгляд хорошо. Действительно, можно использовать командную среду для добавления стандартных опций меню Eclipse IDE. Вместо того, чтобы снять пост, который я считаю неэтичным, пожалуйста, прочитайте пост, а затем примечание в конце для разъяснения.
Короче говоря, почти все опции меню, которые вы видите в Eclipse IDE, доступны для использования в ваших приложениях RCP. И я говорю большинству команд, начинающих с Eclipse RCP, пройти через меню Eclipse IDE и составить список тех опций, которые имеют смысл для их применения.
Итак, как мы можем добавить эти пункты меню в наши приложения?
Использование действий
Традиционно, пункты меню Eclipse IDE добавляются как действия в ActionBarAdvisor. На действия Eclipse можно ссылаться как на константы в классе ActionFactory, и добавление опции меню выглядит следующим образом:
IAction saveAction = ActionFactory.SAVE.create(window);
fileMenu.add(saveAction)
Использование команд
За последние несколько лет большинство разработчиков Eclipse RCP перешли от действий к командам . Команды и связанные с ними обработчики и меню обеспечивают четкое разделение между пользовательским интерфейсом и проблемами, не связанными с пользовательским интерфейсом. В рамках перехода к командам Eclipse RCP теперь предоставляет нам опции меню Eclipse IDE в виде набора расширений, определенных в комплекте org.eclipse.ui.
Команды указывают на обработчики, которые реализуют поведение, связанное с опциями меню. Мы можем, если захотим, создать расширения org.eclipse.ui.menus, которые ссылаются непосредственно на эти команды. Это позволило бы нам определить все наше меню, используя декларативный синтаксис.
Какой подход мы должны использовать?
Итак, вопрос в том, стоит ли выбирать командный подход? Ответ (только для пунктов меню Eclipse IDE) — нет. Использование точки расширения org.eclipse.ui.menus для добавления параметров меню Eclipse IDE проблематично, так как мы теряем доступ к атрибутам внешнего вида. В частности, константы ActionFactory предоставляют нам следующие атрибуты меню:
- метка
- подсказка
- изображение (включено и отключено)
- контекст справки
Не только это, но и действия предоставляют нам эти значения как внешние строки с поддержкой интернационализации. Таким образом, хотя действия на самом деле являются старым способом выполнения действий, комбинация ActionFactory / ActionBarAdvisor по-прежнему является предпочтительным способом использования параметров меню Eclipse IDE.
Когда я должен использовать команды?
Ну, вы определенно должны использовать командный подход для своих собственных опций меню. Кроме того, команды Eclipse IDE по-прежнему полезны, если вы хотите связать с ними свои собственные пункты меню. Вы можете ссылаться на стандартные параметры Eclipse IDE в меню просмотра, шпаргалках, диалоговых окнах и т. Д.
Наконец, вы должны знать, что действия, производимые ActionFactory, фактически связаны с командами и обработчиками за кулисами. Это означает, что даже если вы используете действия для определения параметров меню, вы все равно можете предоставить свои собственные обработчики для них.
Пояснение: что я упустил при написании этого поста, так это то, что команды Eclipse IDE содержат локализованный текст, который будет отображаться в вашем меню, если вы оставите метку меню пустой. Кроме того, изображения появятся в меню, и они добавляются через точку расширения org.eclipse.ui.commandImages.
Мне все еще неясно, как обрабатываются подсказки или контексты справки, но вы можете получить почти весь путь с помощью командной структуры. Поэтому, на мой взгляд, лучшая практика для новых приложений Eclipse RCP заключается в использовании командной структуры для всех параметров меню и прекращении использования ActionBarAdvisor.
Спасибо Ларсу Фогелю за исправление!
Пояснение №2. Изучив это дальше, выяснилось, что для некоторых стандартных опций меню Eclipse IDE требуется, чтобы действие ActionFactory было создано и зарегистрировано до того, как команды будут работать. Однако вам не нужно использовать действия для создания пунктов меню в ActionBarAdvisor. Для получения дополнительной информации см. Эту запись Bugzilla .