/**
* Marabou - Audio Tagger
* Copyright (C) 2012 - 2016 Jan-Hendrik Peters
* https://github.com/hennr/marabou
* Marabou is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public
* License along with this program. If not, see
* <http://www.gnu.org/licenses/gpl-3.0.html>.
*/
package com.github.marabou.ui.view;
import static com.github.marabou.helper.I18nHelper.i18n;
import com.github.marabou.ui.controller.MainMenuController;
import com.github.marabou.helper.*;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.*;
/**
* This class creates and fills (if init is invoked) a menu object which will be
* used as SWT.BAR menu in the main window.
*/
public class MainMenu extends BaseGuiClass {
private final ImageLoader imageLoader;
private Menu menu;
private MainMenuController mainMenuController;
public MainMenu(MainMenuController mainMenuController) {
this.mainMenuController = mainMenuController;
this.menu = new Menu(shell, SWT.BAR);
this.imageLoader = new ImageLoader();
}
public Menu getMenu() {
return menu;
}
public void init() {
// File
MenuItem file = new MenuItem(menu, SWT.CASCADE);
file.setText(i18n("&File"));
Menu fileMenu = new Menu(shell, SWT.DROP_DOWN);
file.setMenu(fileMenu);
// File -> Open File
MenuItem openFileItem = new MenuItem(fileMenu, SWT.PUSH);
openFileItem.setText(i18n("Open &file\t Ctrl+F"));
openFileItem.setAccelerator(SWT.CTRL + 'F');
openFileItem.setImage(imageLoader.getImage(AvailableImage.AUDIO_ICON));
// listener for File -> open file
openFileItem.addListener(SWT.Selection, event -> mainMenuController.handleOpenFileEvent());
// File -> open directory
MenuItem openDirectoryItem = new MenuItem(fileMenu, SWT.PUSH);
openDirectoryItem.setText(i18n("Open &directory\t Ctrl+D"));
openDirectoryItem.setAccelerator(SWT.CTRL + 'D');
openDirectoryItem.setImage(imageLoader.getImage(AvailableImage.FOLDER_ICON));
// listener for File -> open directory
openDirectoryItem.addListener(SWT.Selection, event -> mainMenuController.handleOpenDirectoryEvent());
// File -> save current file
MenuItem saveItem = new MenuItem(fileMenu, SWT.PUSH);
saveItem.setText(i18n("&Save\t Ctrl+S"));
saveItem.setAccelerator(SWT.CTRL + 'S');
saveItem.setImage(imageLoader.getImage(AvailableImage.SAVE_ICON));
saveItem.addListener(SWT.Selection, event -> mainMenuController.handleSaveSelectedFilesEvent());
// File -> Exit
MenuItem exitItem = new MenuItem(fileMenu, SWT.PUSH);
exitItem.setImage(imageLoader.getImage(AvailableImage.EXIT_ICON));
exitItem.setText(i18n("&Exit\t Alt+F4"));
// listener for File -> Exit
exitItem.addListener(SWT.Selection, event -> mainMenuController.handleExitEvent(shell));
// Help
MenuItem help = new MenuItem(menu, SWT.CASCADE);
help.setText(i18n("&Help"));
Menu helpMenu = new Menu(shell, SWT.DROP_DOWN);
help.setMenu(helpMenu);
MenuItem aboutItem = new MenuItem(helpMenu, SWT.PUSH);
aboutItem.setText(i18n("&About\t F1"));
aboutItem.setAccelerator(SWT.F1);
aboutItem.setImage(imageLoader.getImage(AvailableImage.HELP_ICON));
// listener for Help -> About
aboutItem.addListener(SWT.Selection, event -> mainMenuController.handleShowAboutWindow());
// separator
new MenuItem(menu, SWT.SEPARATOR);
// Buttons
MenuItem saveButton = new MenuItem(menu, SWT.PUSH);
saveButton.setImage(imageLoader.getImage(AvailableImage.SAVE_ICON));
saveButton.addListener(SWT.Arm, event -> mainMenuController.handleSaveSelectedFilesEvent());
}
}