78 } |
78 } |
79 |
79 |
80 private void solve() { |
80 private void solve() { |
81 // TODO: solve |
81 // TODO: solve |
82 } |
82 } |
|
83 |
|
84 private boolean saveUnsaved() { |
|
85 boolean proceed = false; |
|
86 if (field.isAnyCellModified()) { |
|
87 int result = JOptionPane.showConfirmDialog(field, |
|
88 "Das Feld ist ungespeichert - jetzt speichern?", |
|
89 "Sudoku", JOptionPane.YES_NO_CANCEL_OPTION); |
|
90 if (result == JOptionPane.YES_OPTION) { |
|
91 if (save()) { |
|
92 proceed = true; |
|
93 } |
|
94 } else if (result == JOptionPane.NO_OPTION) { |
|
95 proceed = true; |
|
96 } |
|
97 } else { |
|
98 proceed = true; |
|
99 } |
|
100 |
|
101 return proceed; |
|
102 } |
83 |
103 |
84 @Override |
104 @Override |
85 public void actionPerformed(ActionEvent e) { |
105 public void actionPerformed(ActionEvent e) { |
86 switch (e.getActionCommand()) { |
106 switch (e.getActionCommand()) { |
|
107 case NEW: |
|
108 if (saveUnsaved()) { |
|
109 field.clear(); |
|
110 } |
|
111 break; |
87 case SAVE: |
112 case SAVE: |
88 save(); |
113 save(); |
89 break; |
114 break; |
90 case CHECK: |
115 case CHECK: |
91 check(); |
116 check(); |
92 break; |
117 break; |
93 case SOLVE: |
118 case SOLVE: |
94 solve(); |
119 solve(); |
95 break; |
120 break; |
96 case QUIT: |
121 case QUIT: |
97 if (field.isAnyCellModified()) { |
122 if (saveUnsaved()) { |
98 int result = JOptionPane.showConfirmDialog(field, |
|
99 "Das Feld ist ungespeichert - jetzt speichern?", |
|
100 "Sudoku", JOptionPane.YES_NO_CANCEL_OPTION); |
|
101 if (result == JOptionPane.YES_OPTION) { |
|
102 if (save()) { |
|
103 System.exit(0); |
|
104 } |
|
105 } else if (result == JOptionPane.NO_OPTION) { |
|
106 System.exit(0); |
|
107 } |
|
108 } else { |
|
109 System.exit(0); |
123 System.exit(0); |
110 } |
124 } |
111 break; |
125 break; |
112 case ABOUT: |
126 case ABOUT: |
113 JOptionPane.showMessageDialog(field, |
127 JOptionPane.showMessageDialog(field, |