Вопрос

Каковы различия между Действиями и командами в контексте Eclipse RCP?Я знаю, что они оба вносят свой вклад в пункты меню, но какой из них лучше?И почему?

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

Спасибо

Это было полезно?

Решение

Вы читали eclipse wiki Часто задаваемые вопросы В чем разница между командой и действием?

Вероятно, вы уже понимаете, что Действия и команды в основном выполняют одно и то же:Они вызывают выполнение определенного фрагмента кода.Они запускаются, в основном, с помощью артефактов в пользовательском интерфейсе

Основная забота о Действия это тот самый проявление и код - все это хранится в Действии.
Несмотря на некоторое разделение делегатов действий, они по-прежнему связаны с базовым действием.События выбора передаются в Actions, чтобы они могли изменять свое включенное состояние (программно) на основе текущего выбора.Это не очень элегантно.Кроме того, чтобы разместить действие на определенной детали workbench, вы должны использовать несколько точек расширения.

Команды в значительной степени решить все эти проблемы.Основная идея заключается в том, что Команда - это просто абстрактная идея некоторого кода, который должен быть выполнен.Фактическая обработка кода осуществляется, ну, обработчиками.Обработчики активируются определенным состоянием workbench.Это состояние запрашивается выражениями ядра платформы.Это означает, что нам нужна только одна глобальная команда сохранения, которая ведет себя по-разному в зависимости от того, какой обработчик активен в данный момент.

properties of a command

Это Статья детализирует различия

Действия:

  • В Пользовательский интерфейс и обработка всегда связаны.Вы никак не можете отделить друг друга
  • Хотя действия могут быть добавлены в разные части рабочей среды (всплывающее меню / панель инструментов), все они были различные точки расширения и таким образом, вы в конечном итоге дублируете XML в нескольких местах.Хуже всего то, что не все точки расширения ожидают одинаковой конфигурации.
  • Указание действий в нескольких местах - это кошмар технического обслуживания.Если вам нужно изменить значок действия, вам нужно изменить его во всех местах.
  • Другая проблема с дублированием действий в plugin.xml заключается в том, что в памяти будет создано несколько экземпляров одних и тех же действий.

Команды включают больше точек расширения, но:

  • Обработчик может быть объявлен отдельно от Команды.Это позволяет несколько объявлений обработчика для одной и той же команды.
  • В Активный , когда для всех обработчиков вычисляются и выбирается тот, который возвращает true для наиболее конкретного условия.Все эти вещи являются выполняется даже без загрузки вашего обработчика в память.Даже без загрузки вашего плагина!
  • Определение параметров сводится к возврату карты отображаемых имен и идентификаторов.Имя будет отображаться на странице привязки клавиш, а идентификатор будет использоваться для вызова команды при нажатии последовательности клавиш.
  • Определите IExecutionListener, который является просто наблюдателем за выполнением команды, поэтому он не может ни наложить на нее вето, ни внести какие-либо изменения в событие

Другие советы

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

Для чего-то простого я бы выбрал действия.

И помните, что это действие может быть устаревшим в более поздней версии Eclipse.Я бы посоветовал вам использовать Command с самого начала.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top