-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSudokuMenuBar.java
101 lines (85 loc) · 3.04 KB
/
SudokuMenuBar.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
import java.util.LinkedHashMap;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JMenuBar;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
/**
* An objects that extends JMenuBar for automatic construction of the menu bar
* for the sudoku gui.
*/
public class SudokuMenuBar extends JMenuBar implements ActionListener {
/** Please warnings... */
private static final long serialVersionUID = 0L;
SudokuGUI gui;
JMenu menuFile;
JMenu menuGame;
JMenu menuHelp;
LinkedHashMap<JMenuItem, Procedure> miFile;
LinkedHashMap<JMenuItem, Procedure> miGame;
LinkedHashMap<JMenuItem, Procedure> miHelp;
/**
* Construct a sudoku menu bar
* @param sgui The sudoku gui this is related to
*/
public SudokuMenuBar(SudokuGUI sgui) {
super();
gui = sgui;
menuFile = new JMenu("File");
menuGame = new JMenu("Game");
menuHelp = new JMenu("Help");
miFile = new LinkedHashMap<JMenuItem, Procedure>();
miGame = new LinkedHashMap<JMenuItem, Procedure>();
miHelp = new LinkedHashMap<JMenuItem, Procedure>();
miFile.put(new JMenuItem("Open sudoku"),
() -> { gui.open(); });
miFile.put(new JMenuItem("Save sudoku"),
() -> { gui.save(); });
miFile.put(new JMenuItem("Info"),
() -> { gui.showInfo(); });
miFile.put(new JMenuItem("Quit"), () -> {
if (JOptionPane.showConfirmDialog(null, "Quit program now ?\n",
"Quit", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION)
System.exit(0);
});
miGame.put(new JMenuItem("Reset (R)"),
() -> { gui.reset(); });
miGame.put(new JMenuItem("Validate (V)"),
() -> { gui.validateContent(); });
miGame.put(new JMenuItem("Play one move (O)"),
() -> { gui.playOnce(); });
miGame.put(new JMenuItem("Solve (S)"),
() -> { gui.solveGame(); });
miHelp.put(new JMenuItem("Shortcuts"),
() -> { gui.showShortCuts(); });
miHelp.put(new JMenuItem("About files..."),
() -> { gui.showHelpFiles(); });
for (var x : miFile.keySet()) {
menuFile.add(x);
x.addActionListener(this);
}
for (var x : miGame.keySet()) {
menuGame.add(x);
x.addActionListener(this);
}
for (var x : miHelp.keySet()) {
menuHelp.add(x);
x.addActionListener(this);
}
add(menuFile);
add(menuGame);
add(menuHelp);
}
@Override
public void actionPerformed(ActionEvent e) {
Object o = e.getSource();
if (miFile.containsKey(o)) {
miFile.get(o).run();
} else if (miGame.containsKey(o)) {
miGame.get(o).run();
} else if (miHelp.containsKey(o)) {
miHelp.get(o).run();
}
}
}