...
...

RCP файловый менеджер. Действия (Actions) системного меню

Действия (Actions) представляют собой различные реализации интерфейса IAction. Это команды, которые обычно инициализируются визуальными элементами пользовательского интерфейса — такими, как кнопки, элементы меню, кнопки панелей инструментов и др. При активизации конечным пользователем элементов пользовательского интерфейса вызывается метод IAction.run(), в котором выполняется некоторая связанная с действием единица работы.

Действия включают некоторый набор атрибутов, который может использоваться связанными с ним элементами графического интерфейса (наименование, комментарий, изображение иконки и др.). Действия могут одновременно связываться с несколькими элементами управления, что существенно упрощает конфигурирование команд. Например, это могут быть действия системного меню, продублированные в панели быстрого запуска. Изменение атрибутов действия автоматически отражается на всех связанных с ним элементах графического интерфейса. Для реализации множества типовых операций, которые присутствуют в большинстве приложений, можно подключить уже реализованные в базовой реализации платформы eclipse действия (Actions) интерфейса IWorkbenchAction. Отправной точкой для исследования, как это делается в реализации eclipse IDE, может послужить класс 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.


Рис. 1. Меню выхода из программы


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

Полное описание процесса разработки проекта доступно по адресу: сайт

Сергей Бердачук, berdachuk@berdaflex.com

© Компьютерная газета

полезные ссылки
Корпусные камеры видеонаблюдения
IP камеры видеонаблюдения
Термокожухи для камер видеонаблюдения