3
3
import javax.swing.JMenu;
4
4
import javax.swing.JMenuItem;
5
import java.awt.event.MouseEvent;
6
import java.awt.event.MouseListener;
7
import java.awt.event.KeyEvent;
8
import java.awt.event.KeyListener;
6
10
public refines class Gui {
8
protected JMenu createOptionsMenu() {
9
JMenu optionsMenu = Super().createOptionsMenu();
10
optionsMenu.add(createSolutionMenuItem());
14
protected JMenuItem createSolutionMenuItem() {
15
Solver solver = new Solver();
16
JMenuItem solutionMenuItem = new JMenuItem();
17
solutionMenuItem.setText("Solution");
18
solutionMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,
19
Event.CTRL_MASK, true));
20
solutionMenuItem.addActionListener(listenerFactory
21
.getSolutionListener(solver));
22
return solutionMenuItem;
12
private static final int GLASS_PANE_ALPHA = 200;
14
public void setBusy(boolean busy) {
16
getGlassPane().setVisible(true);
18
getGlassPane().setVisible(false);
22
refines Gui(ListenerFactory listenerFactory) {
23
JPanel glassPane = new JPanel(new BorderLayout());
24
glassPane.setBackground(
25
new Color(Color.BLACK.getRed(), Color.BLACK.getGreen(),
26
Color.BLACK.getBlue(), GLASS_PANE_ALPHA));
27
glassPane.addMouseListener(new MouseListener() {
29
public void mousePressed(MouseEvent e) {
32
public void mouseReleased(MouseEvent e) {
35
public void mouseEntered(MouseEvent e) {
38
public void mouseExited(MouseEvent e) {
41
public void mouseClicked(MouseEvent e) {
45
glassPane.addKeyListener(new KeyListener() {
47
public void keyTyped(KeyEvent e) {
50
public void keyPressed(KeyEvent e) {
53
public void keyReleased(KeyEvent e) {
57
JLabel label = new JLabel("Busy...", JLabel.CENTER);
58
label.setForeground(Color.white);
59
glassPane.add(label, BorderLayout.CENTER);
60
setGlassPane(glassPane);
63
protected JMenu createOptionsMenu() {
64
JMenu optionsMenu = Super().createOptionsMenu();
65
optionsMenu.add(createSolutionHintMenuItem());
69
protected JMenuItem createSolutionHintMenuItem() {
70
JMenuItem solutionMenuItem = new JMenuItem();
71
solutionMenuItem.setText("Solution Hint");
72
solutionMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,
73
Event.CTRL_MASK, true));
74
solutionMenuItem.addActionListener(listenerFactory
75
.getSolutionHintListener());
76
return solutionMenuItem;
b'\\ No newline at end of file'