55 solver = new Solver(); |
58 solver = new Solver(); |
56 doc = new DocumentHandler(); |
59 doc = new DocumentHandler(); |
57 } |
60 } |
58 |
61 |
59 private boolean chooseSaveFilename() { |
62 private boolean chooseSaveFilename() { |
60 // TODO: fileselector |
63 JFileChooser fc = new JFileChooser("."); |
61 return false; |
64 fc.setMultiSelectionEnabled(false); |
62 } |
65 if (fc.showSaveDialog(field) == JFileChooser.APPROVE_OPTION) { |
63 |
66 File f = fc.getSelectedFile(); |
64 private boolean save() { |
67 if (f.exists()) { |
65 if (!doc.isFilenameSet()) { |
68 int result = JOptionPane.showConfirmDialog(field, |
|
69 "Bereits existierende Datei überschreiben?", "Sudoku", |
|
70 JOptionPane.YES_NO_OPTION); |
|
71 if (result == JOptionPane.YES_OPTION) { |
|
72 doc.setFilename(f.getAbsolutePath()); |
|
73 return true; |
|
74 } else { |
|
75 return false; |
|
76 } |
|
77 } else { |
|
78 doc.setFilename(f.getAbsolutePath()); |
|
79 return true; |
|
80 } |
|
81 } else { |
|
82 return false; |
|
83 } |
|
84 } |
|
85 |
|
86 private void open() { |
|
87 JFileChooser fc = new JFileChooser("."); |
|
88 fc.setMultiSelectionEnabled(false); |
|
89 if (fc.showOpenDialog(field) == JFileChooser.APPROVE_OPTION) { |
|
90 File f = fc.getSelectedFile(); |
|
91 doc.setFilename(f.getAbsolutePath()); |
|
92 try { |
|
93 doc.load(field); |
|
94 } catch (IOException e) { |
|
95 JOptionPane.showMessageDialog(field, |
|
96 "Datei konnte nicht geladen werden: "+e.getMessage(), |
|
97 "Sudoku", JOptionPane.ERROR_MESSAGE); |
|
98 } |
|
99 } |
|
100 } |
|
101 |
|
102 private boolean save(boolean rename) { |
|
103 if (!doc.isFilenameSet() || rename) { |
66 if (!chooseSaveFilename()) { |
104 if (!chooseSaveFilename()) { |
67 return false; |
105 return false; |
68 } |
106 } |
69 } |
107 } |
70 if (solver.check(field)) { |
108 if (solver.check(field)) { |
71 field.setAllCellsModified(false); |
109 field.setAllCellsModified(false); |
72 // TODO: save to file |
110 try { |
|
111 doc.save(field); |
|
112 } catch (IOException e) { |
|
113 JOptionPane.showMessageDialog(field, |
|
114 "Datei konnte nicht gespeichert werden: "+e.getMessage(), |
|
115 "Sudoku", JOptionPane.ERROR_MESSAGE); |
|
116 } |
73 return true; |
117 return true; |
74 } else { |
118 } else { |
75 JOptionPane.showMessageDialog(field, |
119 JOptionPane.showMessageDialog(field, |
76 "Das Feld kann mit Fehlern nicht gespeichert werden!", |
120 "Das Feld kann mit Fehlern nicht gespeichert werden!", |
77 "Sudoku", JOptionPane.ERROR_MESSAGE); |
121 "Sudoku", JOptionPane.ERROR_MESSAGE); |
98 if (field.isAnyCellModified()) { |
142 if (field.isAnyCellModified()) { |
99 int result = JOptionPane.showConfirmDialog(field, |
143 int result = JOptionPane.showConfirmDialog(field, |
100 "Das Feld ist ungespeichert - jetzt speichern?", |
144 "Das Feld ist ungespeichert - jetzt speichern?", |
101 "Sudoku", JOptionPane.YES_NO_CANCEL_OPTION); |
145 "Sudoku", JOptionPane.YES_NO_CANCEL_OPTION); |
102 if (result == JOptionPane.YES_OPTION) { |
146 if (result == JOptionPane.YES_OPTION) { |
103 if (save()) { |
147 if (save(false)) { |
104 proceed = true; |
148 proceed = true; |
105 } |
149 } |
106 } else if (result == JOptionPane.NO_OPTION) { |
150 } else if (result == JOptionPane.NO_OPTION) { |
107 proceed = true; |
151 proceed = true; |
108 } |
152 } |