From: Erik V. <ev...@us...> - 2009-12-27 23:06:13
|
Update of /cvsroot/rails/18xx/rails/util In directory sfp-cvsdas-1.v30.ch3.sourceforge.com:/tmp/cvs-serv17986/rails/util Modified Files: ListAndFixSavedFiles.java Log Message: Added Save, Load and Trim menu items Index: ListAndFixSavedFiles.java =================================================================== RCS file: /cvsroot/rails/18xx/rails/util/ListAndFixSavedFiles.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** ListAndFixSavedFiles.java 27 Dec 2009 18:30:53 -0000 1.1 --- ListAndFixSavedFiles.java 27 Dec 2009 23:06:03 -0000 1.2 *************** *** 12,16 **** --- 12,24 ---- import java.io.File; import java.io.FileInputStream; + import java.io.FileOutputStream; + import java.io.FileWriter; + import java.io.IOException; import java.io.ObjectInputStream; + import java.io.ObjectOutputStream; + import java.io.PrintWriter; + import java.text.SimpleDateFormat; + import java.util.ArrayList; + import java.util.Date; import java.util.List; import java.util.Map; *************** *** 34,37 **** --- 42,46 ---- import rails.game.ConfigurationException; + import rails.game.DisplayBuffer; import rails.game.Game; import rails.game.GameManager; *************** *** 50,55 **** private JMenuBar menuBar; private JMenu fileMenu, editMenu; ! private JMenuItem saveItem, loadItem, printItem; ! private JMenuItem findItem, findBackItem, findNextItem, findPrevItem; protected static Logger log = --- 59,70 ---- private JMenuBar menuBar; private JMenu fileMenu, editMenu; ! private JMenuItem saveItem, loadItem; ! private JMenuItem trimItem; ! ! private List<Object> savedObjects = new ArrayList<Object>(512); ! private List<PossibleAction> executedActions; ! ! private static String saveDirectory; ! private String filepath; protected static Logger log = *************** *** 78,82 **** Config.setConfigFile(myConfigFile); System.out.println("Configuration file = " + myConfigFile); ! System.out.println("Save directory = " + Config.get("save.directory")); new ListAndFixSavedFiles (); --- 93,98 ---- Config.setConfigFile(myConfigFile); System.out.println("Configuration file = " + myConfigFile); ! saveDirectory = Config.get("save.directory"); ! System.out.println("Save directory = " + saveDirectory); new ListAndFixSavedFiles (); *************** *** 133,146 **** fileMenu.add(saveItem); ! printItem = new ActionMenuItem(LocalText.getText("PRINT")); ! printItem.setActionCommand("PRINT"); ! printItem.setMnemonic(KeyEvent.VK_P); ! printItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P, ActionEvent.ALT_MASK)); ! printItem.addActionListener(this); ! printItem.setEnabled(false); ! fileMenu.add(printItem); menuBar.add(fileMenu); setJMenuBar(menuBar); --- 149,163 ---- fileMenu.add(saveItem); ! trimItem = new ActionMenuItem("Trim"); ! trimItem.setActionCommand("TRIM"); ! trimItem.setMnemonic(KeyEvent.VK_T); ! trimItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_T, ActionEvent.ALT_MASK)); ! trimItem.addActionListener(this); ! trimItem.setEnabled(true); ! editMenu.add(trimItem); menuBar.add(fileMenu); + menuBar.add(editMenu); setJMenuBar(menuBar); *************** *** 150,156 **** setSize(400, 400); setLocation(600, 400); ! setTitle(LocalText.getText("GameReportTitle")); - final JFrame frame = this; addKeyListener(this); --- 167,172 ---- setSize(400, 400); setLocation(600, 400); ! setTitle("List and fix saved files"); addKeyListener(this); *************** *** 158,162 **** setVisible(true); ! String saveDirectory = Config.get("save.directory"); JFileChooser jfc = new JFileChooser(); jfc.setCurrentDirectory(new File(saveDirectory)); --- 174,184 ---- setVisible(true); ! saveDirectory = Config.get("save.directory"); ! load(); ! ! } ! ! private void load() { ! JFileChooser jfc = new JFileChooser(); jfc.setCurrentDirectory(new File(saveDirectory)); *************** *** 165,169 **** File selectedFile = jfc.getSelectedFile(); ! String filepath = selectedFile.getPath(); saveDirectory = selectedFile.getParent(); --- 187,191 ---- File selectedFile = jfc.getSelectedFile(); ! filepath = selectedFile.getPath(); saveDirectory = selectedFile.getParent(); *************** *** 180,186 **** --- 202,210 ---- Object object = ois.readObject(); + savedObjects.add(object); if (object instanceof String) { add((String)object+" saved file "+filename); object = ois.readObject(); + savedObjects.add(object); } else { add("Reading Rails (pre-1.0.7) saved file "+filename); *************** *** 189,192 **** --- 213,217 ---- add("File was saved at "+(String)object); object = ois.readObject(); + savedObjects.add(object); } *************** *** 195,205 **** --- 220,235 ---- long saveFileVersionID = GameManager.saveFileVersionID; String name = (String) ois.readObject(); + savedObjects.add(name); add("Saved game="+name); + Map<String, String> selectedGameOptions = (Map<String, String>) ois.readObject(); + savedObjects.add(selectedGameOptions); for (String key : selectedGameOptions.keySet()) { add("Option "+key+"="+selectedGameOptions.get(key)); } + List<String> playerNames = (List<String>) ois.readObject(); + savedObjects.add(playerNames); int i=1; for (String player : playerNames) { *************** *** 213,218 **** } ! List<PossibleAction> executedActions = (List<PossibleAction>) ois.readObject(); i=1; for (PossibleAction action : executedActions) { --- 243,249 ---- } ! executedActions = (List<PossibleAction>) ois.readObject(); + savedObjects.add(executedActions); i=1; for (PossibleAction action : executedActions) { *************** *** 248,254 **** public void actionPerformed(ActionEvent actor) { String command = actor.getActionCommand(); ! if ("LOAD".equalsIgnoreCase(command)) { ! } } public void keyPressed(KeyEvent e) { } --- 279,335 ---- public void actionPerformed(ActionEvent actor) { String command = actor.getActionCommand(); ! if ("TRIM".equalsIgnoreCase(command)) { ! String result = JOptionPane.showInputDialog("Enter last action number to be retained"); ! if (Util.hasValue(result)) { ! try { ! int index = Integer.parseInt(result); ! List<PossibleAction> toRemove = executedActions.subList(index, executedActions.size()); ! toRemove.clear(); ! ! } catch (NumberFormatException e) { ! ! } ! } ! } else if ("SAVE".equalsIgnoreCase(command)) { ! save(); ! } else if ("LOAD".equalsIgnoreCase(command)) { ! load(); ! } } + + private void save() { + JFileChooser jfc = new JFileChooser(); + if (Util.hasValue(saveDirectory)) { + jfc.setCurrentDirectory(new File(saveDirectory)); + } + if (Util.hasValue(filepath)) { + jfc.setSelectedFile(new File(filepath)); + } + if (jfc.showSaveDialog(this) == JFileChooser.APPROVE_OPTION) { + File selectedFile = jfc.getSelectedFile(); + filepath = selectedFile.getPath(); + saveDirectory = selectedFile.getParent(); + + try { + try { + ObjectOutputStream oos = + new ObjectOutputStream(new FileOutputStream(new File( + filepath))); + for (Object object : savedObjects) { + oos.writeObject(object); + } + oos.close(); + } catch (IOException e) { + log.error("Save failed", e); + DisplayBuffer.add(LocalText.getText("SaveFailed", e.getMessage())); + } + } catch (Exception e) { + System.out.println ("Error whilst writing file "+filepath); + e.printStackTrace(); + } + } + + } + public void keyPressed(KeyEvent e) { } |