src/de/uapcore/sudoku/ActionHandler.java

changeset 6
5bab2e971333
parent 5
8ddf4af937d7
child 7
2c0a2766461c
equal deleted inserted replaced
5:8ddf4af937d7 6:5bab2e971333
26 26
27 package de.uapcore.sudoku; 27 package de.uapcore.sudoku;
28 28
29 import java.awt.event.ActionEvent; 29 import java.awt.event.ActionEvent;
30 import java.awt.event.ActionListener; 30 import java.awt.event.ActionListener;
31 import java.io.File;
32 import java.io.IOException;
33 import javax.swing.JFileChooser;
31 import javax.swing.JOptionPane; 34 import javax.swing.JOptionPane;
32 35
33 /** 36 /**
34 * 37 *
35 * @author mike 38 * @author mike
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 }
119 case NEW: 163 case NEW:
120 if (saveUnsaved()) { 164 if (saveUnsaved()) {
121 field.clear(); 165 field.clear();
122 } 166 }
123 break; 167 break;
168 case OPEN:
169 open();
170 break;
124 case SAVE: 171 case SAVE:
125 save(); 172 save(false);
173 break;
174 case SAVE_AS:
175 save(true);
126 break; 176 break;
127 case CHECK: 177 case CHECK:
128 check(); 178 check();
129 break; 179 break;
130 case SOLVE: 180 case SOLVE:

mercurial