package nl.utwente.viskell.ui;
import javafx.scene.control.Menu;
import javafx.scene.control.MenuBar;
import javafx.scene.control.MenuItem;
import javafx.scene.input.KeyCode;
import javafx.scene.input.KeyCodeCombination;
import javafx.scene.input.KeyCombination;
/**
* A top menu bar with global actions
*/
public class MacTopMenu extends MenuBar {
public MacTopMenu(MenuActions menuActions) {
super();
useSystemMenuBarProperty().set(true);
// Viskell menu items on mac - preferences and quit
final Menu appMenu = new Menu("Viskell");
MenuItem preferencesMenuItem = new MenuItem("Preferences");
preferencesMenuItem.setAccelerator(new KeyCodeCombination(KeyCode.COMMA, KeyCombination.SHORTCUT_DOWN));
preferencesMenuItem.setOnAction(menuActions::showPreferences);
MenuItem quitMenuItem = new MenuItem("Quit");
quitMenuItem.setAccelerator(new KeyCodeCombination(KeyCode.Q, KeyCombination.SHORTCUT_DOWN));
quitMenuItem.setOnAction(menuActions::onQuit);
appMenu.getItems().addAll(preferencesMenuItem, quitMenuItem);
// File menu
final Menu fileMenu = new Menu("_File");
fileMenu.setMnemonicParsing(true);
fileMenu.getItems().addAll(menuActions.fileMenuItems());
// View menu
final Menu viewMenu = new Menu("_View");
viewMenu.setMnemonicParsing(true);
MenuItem menuInspector = new MenuItem("Inspector");
menuInspector.setAccelerator(new KeyCodeCombination(KeyCode.I, KeyCombination.SHORTCUT_DOWN));
menuInspector.setOnAction(menuActions::showInspector);
MenuItem fullscreen = new MenuItem("Toggle Fullscreen");
fullscreen.setAccelerator(new KeyCodeCombination(KeyCode.F, KeyCombination.SHORTCUT_DOWN));
fullscreen.setOnAction(menuActions::toggleFullScreen);
MenuItem zoomIn = new MenuItem("Zoom In");
zoomIn.setAccelerator(new KeyCodeCombination(KeyCode.PLUS, KeyCombination.SHORTCUT_DOWN));
zoomIn.setOnAction(menuActions::zoomIn);
// FIXME The shortcut inexplicably doesn't work on a Mac!
MenuItem zoomOut = new MenuItem("Zoom Out");
zoomOut.setAccelerator(new KeyCodeCombination(KeyCode.MINUS, KeyCombination.SHORTCUT_DOWN));
zoomOut.setOnAction(menuActions::zoomOut);
viewMenu.getItems().addAll(menuInspector, fullscreen, zoomIn, zoomOut);
// Help Menu
final Menu helpMenu = new Menu("_Help");
helpMenu.setMnemonicParsing(true);
getMenus().addAll(appMenu, fileMenu, viewMenu, helpMenu);
}
}