BERDAFLEX Software Systems
Главная > Eclipse > Книги > Eclipse RCP. Файловый менеджер

2. Действия (Actions) системного меню

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

Для реализации множества типовых операций, которые присутствуют в большинстве приложений, можно подключить уже реализованные в базовой реализации платформы eclipse действия (Actions) интерфейса IWorkbenchAction. Отправной точкой для исследования как это делается может послужить класс org.eclipse.ui.internal.ide.WorkbenchActionBuilder.

Добавим действия по завершению работы программы и информационного диалога «About» в системное меню. Переписанный класс ApplicationActionBarAdvisor будет иметь вид:

public class ApplicationActionBarAdvisor extends ActionBarAdvisor {

    private IWorkbenchAction quitAction;                   (1)

    private IWorkbenchAction aboutAction;

    public ApplicationActionBarAdvisor(IActionBarConfigurer configurer) {
        super(configurer);
    }

    protected void makeActions(IWorkbenchWindow window) {
        quitAction = ActionFactory.QUIT.create(window);    (2)
        register(quitAction);

        aboutAction = ActionFactory.ABOUT.create(window);
        register(aboutAction);
    }

    protected void fillMenuBar(IMenuManager menuBar) {     (3)
        // 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() {           (4)
        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() {           (5)
        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() {                                (6)
        quitAction = null;
        aboutAction = null;
        super.dispose();
    }
}
1

Объявление переменных действий.

2

Инициализация переменных действий из списка доступных системных команд при помощи фабрики ActionFactory.

3

Создание главного меню.

4

Создание меню "File"

5

Создание меню "Help"

6

Освобождение ресурсов

Сравнительно небольшой фрагмент кода, а в результате мы получили системное меню с возможностью завершать работу программы, а так же вызов информационного диалога "About".

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

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

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

Пустой информационный диалог "About"
Rambler's Top100 Рейтинг@Mail.ru