Действия
(Actions) это различные реализации интерфейса IAction. Это команды,
которые обычно инициализируются визуальными элементами пользовательского
интерфейса, такими как кнопки, элементы меню, кнопки панелей
инструментов и др. При активизации конечным пользователем элементов
пользовательского интерфейса вызывается метод IAction.run() в котором
выполняется некоторая связанная с действием единица работы. Действия
включают некоторый набор атрибутов, который может использоваться
связанными с ним элементами графического интерфейса (Наименование,
комментарий, изображение иконки и др.). Действия могут одновременно
связываться с несколькими элементами управления, что существенно
упрощает конфигурирование команд. Например это могут быть действия
системного меню продублированные в панели быстрого запуска. Изменение
атрибутов действия автоматически отражается на всех связанных с ним
элементах графического интерфейса.
Для реализации множества типовых операций, которые присутствуют в большинстве приложений, можно подключить уже реализованные в базовой реализации платформы eclipse действия (Actions) интерфейса IWorkbenchAction. Отправной точкой для исследования как это делается может послужить класс org.eclipse.ui.internal.ide.WorkbenchActionBuilder.
Добавим действия по завершению работы программы и информационного диалога «About» в системное меню. Переписанный класс ApplicationActionBarAdvisor будет иметь вид:
public class ApplicationActionBarAdvisor extends ActionBarAdvisor {
private IWorkbenchAction quitAction;
private IWorkbenchAction aboutAction;
public ApplicationActionBarAdvisor(IActionBarConfigurer configurer) {
super(configurer);
}
protected void makeActions(IWorkbenchWindow window) {
quitAction = ActionFactory.QUIT.create(window);
register(quitAction);
aboutAction = ActionFactory.ABOUT.create(window);
register(aboutAction);
}
protected void fillMenuBar(IMenuManager menuBar) {
// File menu
menuBar.add(createFileMenu());
// Add a group marker indicating where action set menus will appear.
menuBar.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS));
// Help menu
menuBar.add(createHelpMenu());
}
/**
* Creates and returns the File menu.
*/
private IContributionItem createFileMenu() {
MenuManager menu = new MenuManager("&File",
IWorkbenchActionConstants.M_FILE); //$NON-NLS-1$
menu.add(quitAction);
return menu;
}
/**
* Creates and returns the Help menu.
*/
private IContributionItem createHelpMenu() {
MenuManager menu = new MenuManager("&Help",
IWorkbenchActionConstants.M_HELP);
menu.add(aboutAction);
return menu;
}
/**
* Dispose actions.
*
* @see org.eclipse.ui.application.ActionBarAdvisor#dispose()
*/
public void dispose() {
quitAction = null;
aboutAction = null;
super.dispose();
}
}
![]() |
Объявление переменных действий. |
![]() |
Инициализация переменных действий из списка доступных системных команд при помощи фабрики ActionFactory. |
![]() |
Создание главного меню. |
![]() |
Создание меню "File" |
![]() |
Создание меню "Help" |
![]() |
Освобождение ресурсов |
Сравнительно небольшой фрагмент кода, а в результате мы получили системное меню с возможностью завершать работу программы, а так же вызов информационного диалога "About".
Рисунок 4.3. Меню выхода из программы

Рисунок 4.4. Пустой информационный диалог "About"
