Prechádzať zdrojové kódy

Wrap view menu in object.
Add accelerator.
Move menu objects into package.

Sam Jaffe 5 rokov pred
rodič
commit
9a29f7daaa

+ 4 - 9
src/main/lombok/org/leumasjaffe/recipe/view/RecipeManagerFrame.java

@@ -4,13 +4,14 @@ import javax.swing.JFrame;
 
 import org.leumasjaffe.recipe.controller.FileController;
 import org.leumasjaffe.recipe.model.RecipeCard;
+import org.leumasjaffe.recipe.view.menu.FileMenu;
+import org.leumasjaffe.recipe.view.menu.ViewMenu;
 
 import lombok.AccessLevel;
 import lombok.experimental.FieldDefaults;
 
 import javax.swing.JMenuBar;
 import javax.swing.JMenu;
-import javax.swing.JCheckBoxMenuItem;
 
 @SuppressWarnings("serial")
 @FieldDefaults(level=AccessLevel.PRIVATE, makeFinal=true)
@@ -27,15 +28,9 @@ public class RecipeManagerFrame extends JFrame implements FileController.ViewMod
 		JMenu mnFile = new FileMenu(this, fileController);
 		menuBar.add(mnFile);
 		
-		JMenu mnView = new JMenu("View");
+		JMenu mnView = new ViewMenu(this);
 		menuBar.add(mnView);
-		
-		JCheckBoxMenuItem chckbxmntmReadOnly = new JCheckBoxMenuItem("Read Only");
-		mnView.add(chckbxmntmReadOnly);
-		chckbxmntmReadOnly.addActionListener(e -> {
-			((RecipeCardPanel) getContentPane()).setEnabled(!chckbxmntmReadOnly.getState());
-		});
-		
+				
 		fileController.create();
 
 		pack();

+ 1 - 1
src/main/lombok/org/leumasjaffe/recipe/view/FileMenu.java

@@ -1,4 +1,4 @@
-package org.leumasjaffe.recipe.view;
+package org.leumasjaffe.recipe.view.menu;
 
 import java.awt.Toolkit;
 import java.awt.event.InputEvent;

+ 28 - 0
src/main/lombok/org/leumasjaffe/recipe/view/menu/ViewMenu.java

@@ -0,0 +1,28 @@
+package org.leumasjaffe.recipe.view.menu;
+
+import java.awt.Toolkit;
+import java.awt.event.KeyEvent;
+
+import javax.swing.JCheckBoxMenuItem;
+import javax.swing.JFrame;
+import javax.swing.JMenu;
+import javax.swing.KeyStroke;
+
+import org.leumasjaffe.recipe.view.RecipeCardPanel;
+
+@SuppressWarnings("serial")
+public class ViewMenu extends JMenu {
+	static final int MASK = Toolkit.getDefaultToolkit().getMenuShortcutKeyMask();
+
+	public ViewMenu(JFrame parent) {
+		super("View");
+		
+		JCheckBoxMenuItem chckbxmntmReadOnly = new JCheckBoxMenuItem("Read Only");
+		add(chckbxmntmReadOnly);
+		chckbxmntmReadOnly.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_L, MASK));
+		chckbxmntmReadOnly.addActionListener(e -> {
+			((RecipeCardPanel) parent.getContentPane()).setEnabled(!chckbxmntmReadOnly.getState());
+		});
+	}
+
+}

+ 2 - 1
src/test/java/org/leumasjaffe/recipe/view/FileMenuTest.java

@@ -1,4 +1,4 @@
-package org.leumasjaffe.recipe.view;
+package org.leumasjaffe.recipe.view.menu;
 
 import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertTrue;
@@ -13,6 +13,7 @@ import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
 import org.leumasjaffe.recipe.controller.FileController;
+import org.leumasjaffe.recipe.view.SwingTestCase;
 import org.mockito.Mock;
 import org.mockito.junit.jupiter.MockitoExtension;