/src/main/java/com/bog/view/Menus.java

https://gitlab.com/bog/qbic · Java · 128 lines · 99 code · 27 blank · 2 comment · 0 complexity · beb90783dc83c80bd700255550f0c9e0 MD5 · raw file

  1. package com.bog.view;
  2. import javafx.scene.control.Menu;
  3. import javafx.scene.control.MenuItem;
  4. import javafx.scene.control.MenuBar;
  5. import javafx.scene.layout.BorderPane;
  6. import javafx.event.ActionEvent;
  7. import javafx.event.EventHandler;
  8. import javafx.scene.input.KeyCombination;
  9. import javafx.scene.input.KeyCharacterCombination;
  10. import javafx.scene.input.KeyCodeCombination;
  11. import javafx.scene.input.KeyCode;
  12. public class Menus
  13. {
  14. private BorderPane border;
  15. private MenuBar menu_bar;
  16. private Menu file_menu;
  17. private MenuItem new_file;
  18. private MenuItem save;
  19. private MenuItem open;
  20. private MenuItem quit;
  21. private Menu brainfuck_menu;
  22. private MenuItem execute;
  23. public Menus(BorderPane border)
  24. {
  25. this.border = border;
  26. this.menu_bar = new MenuBar();
  27. this.border.setTop(this.menu_bar);
  28. // File Menu
  29. {
  30. this.file_menu = new Menu("File");
  31. this.new_file = new MenuItem("New");
  32. this.save = new MenuItem("Save");
  33. this.save.setDisable(true);
  34. this.open = new MenuItem("Open");
  35. this.quit = new MenuItem("Quit");
  36. this.file_menu.getItems().addAll(this.new_file
  37. , this.save
  38. , this.open
  39. , this.quit);
  40. }
  41. // brainfuck menu
  42. {
  43. this.brainfuck_menu = new Menu("Brainfuck");
  44. this.execute = new MenuItem("Execute");
  45. this.brainfuck_menu.getItems().addAll(this.execute);
  46. }
  47. this.menu_bar.getMenus().addAll(this.file_menu
  48. , this.brainfuck_menu);
  49. disableTabRelated(true);
  50. initKeys();
  51. }
  52. private void initKeys()
  53. {
  54. KeyCombination.Modifier ctrl;
  55. ctrl = KeyCombination.CONTROL_DOWN;
  56. KeyCharacterCombination k0;
  57. k0 = new KeyCharacterCombination ("N", ctrl);
  58. this.new_file.setAccelerator(k0);
  59. KeyCharacterCombination k1;
  60. k1 = new KeyCharacterCombination ("S", ctrl);
  61. this.save.setAccelerator(k1);
  62. KeyCharacterCombination k2;
  63. k2 = new KeyCharacterCombination ("O", ctrl);
  64. this.open.setAccelerator(k2);
  65. KeyCharacterCombination k3;
  66. k3 = new KeyCharacterCombination ("Q", ctrl);
  67. this.quit.setAccelerator(k3);
  68. KeyCodeCombination k4;
  69. k4 = new KeyCodeCombination(KeyCode.F5);
  70. this.execute.setAccelerator(k4);
  71. }
  72. public void setNewFileAction(EventHandler<ActionEvent> e)
  73. {
  74. this.new_file.setOnAction(e);
  75. }
  76. public void setSaveAction(EventHandler<ActionEvent> e)
  77. {
  78. this.save.setOnAction(e);
  79. }
  80. public void setOpenAction(EventHandler<ActionEvent> e)
  81. {
  82. this.open.setOnAction(e);
  83. }
  84. public void setQuitAction(EventHandler<ActionEvent> e)
  85. {
  86. this.quit.setOnAction(e);
  87. }
  88. public void setExecuteAction(EventHandler<ActionEvent> e)
  89. {
  90. this.execute.setOnAction(e);
  91. }
  92. public void disableTabRelated(boolean disable)
  93. {
  94. this.save.setDisable(disable);
  95. this.execute.setDisable(disable);
  96. }
  97. public void disableSave(boolean disable)
  98. {
  99. this.save.setDisable(disable);
  100. }
  101. }