1.1 --- a/src/de/uapcore/sudoku/ActionHandler.java Sat Jan 26 19:34:31 2013 +0100 1.2 +++ b/src/de/uapcore/sudoku/ActionHandler.java Sun Jan 27 15:03:57 2013 +0100 1.3 @@ -28,6 +28,9 @@ 1.4 1.5 import java.awt.event.ActionEvent; 1.6 import java.awt.event.ActionListener; 1.7 +import java.io.File; 1.8 +import java.io.IOException; 1.9 +import javax.swing.JFileChooser; 1.10 import javax.swing.JOptionPane; 1.11 1.12 /** 1.13 @@ -57,19 +60,60 @@ 1.14 } 1.15 1.16 private boolean chooseSaveFilename() { 1.17 - // TODO: fileselector 1.18 - return false; 1.19 + JFileChooser fc = new JFileChooser("."); 1.20 + fc.setMultiSelectionEnabled(false); 1.21 + if (fc.showSaveDialog(field) == JFileChooser.APPROVE_OPTION) { 1.22 + File f = fc.getSelectedFile(); 1.23 + if (f.exists()) { 1.24 + int result = JOptionPane.showConfirmDialog(field, 1.25 + "Bereits existierende Datei überschreiben?", "Sudoku", 1.26 + JOptionPane.YES_NO_OPTION); 1.27 + if (result == JOptionPane.YES_OPTION) { 1.28 + doc.setFilename(f.getAbsolutePath()); 1.29 + return true; 1.30 + } else { 1.31 + return false; 1.32 + } 1.33 + } else { 1.34 + doc.setFilename(f.getAbsolutePath()); 1.35 + return true; 1.36 + } 1.37 + } else { 1.38 + return false; 1.39 + } 1.40 } 1.41 1.42 - private boolean save() { 1.43 - if (!doc.isFilenameSet()) { 1.44 + private void open() { 1.45 + JFileChooser fc = new JFileChooser("."); 1.46 + fc.setMultiSelectionEnabled(false); 1.47 + if (fc.showOpenDialog(field) == JFileChooser.APPROVE_OPTION) { 1.48 + File f = fc.getSelectedFile(); 1.49 + doc.setFilename(f.getAbsolutePath()); 1.50 + try { 1.51 + doc.load(field); 1.52 + } catch (IOException e) { 1.53 + JOptionPane.showMessageDialog(field, 1.54 + "Datei konnte nicht geladen werden: "+e.getMessage(), 1.55 + "Sudoku", JOptionPane.ERROR_MESSAGE); 1.56 + } 1.57 + } 1.58 + } 1.59 + 1.60 + private boolean save(boolean rename) { 1.61 + if (!doc.isFilenameSet() || rename) { 1.62 if (!chooseSaveFilename()) { 1.63 return false; 1.64 } 1.65 } 1.66 if (solver.check(field)) { 1.67 field.setAllCellsModified(false); 1.68 - // TODO: save to file 1.69 + try { 1.70 + doc.save(field); 1.71 + } catch (IOException e) { 1.72 + JOptionPane.showMessageDialog(field, 1.73 + "Datei konnte nicht gespeichert werden: "+e.getMessage(), 1.74 + "Sudoku", JOptionPane.ERROR_MESSAGE); 1.75 + } 1.76 return true; 1.77 } else { 1.78 JOptionPane.showMessageDialog(field, 1.79 @@ -100,7 +144,7 @@ 1.80 "Das Feld ist ungespeichert - jetzt speichern?", 1.81 "Sudoku", JOptionPane.YES_NO_CANCEL_OPTION); 1.82 if (result == JOptionPane.YES_OPTION) { 1.83 - if (save()) { 1.84 + if (save(false)) { 1.85 proceed = true; 1.86 } 1.87 } else if (result == JOptionPane.NO_OPTION) { 1.88 @@ -121,8 +165,14 @@ 1.89 field.clear(); 1.90 } 1.91 break; 1.92 + case OPEN: 1.93 + open(); 1.94 + break; 1.95 case SAVE: 1.96 - save(); 1.97 + save(false); 1.98 + break; 1.99 + case SAVE_AS: 1.100 + save(true); 1.101 break; 1.102 case CHECK: 1.103 check();