package timeflow.app; import timeflow.util.*; import java.io.*; import java.util.*; public class AppState { private static final String FILE = "settings/info.txt"; private File currentFile, currentDir; private LinkedList recentFiles = new LinkedList(); public AppState() { if (!new File(FILE).exists()) { System.err.println("No existing settings file found."); return; } try { for (String line : IO.lines(FILE)) { String[] t = line.split("\t"); String command = t[0]; String arg = t[1]; if ("CURRENT_FILE".equals(command)) { currentFile = new File(arg); } else if ("RECENT_FILE".equals(command)) { recentFiles.add(new File(arg).getAbsoluteFile()); } else if ("CURRENT_DIR".equals(command)) { currentDir = new File(arg); } } } catch (Exception e) { e.printStackTrace(System.out); } } public List getRecentFiles() { return (List) recentFiles.clone(); } public File getCurrentFile() { return currentFile; } public void setCurrentFile(File currentFile) { this.currentFile = currentFile.getAbsoluteFile(); // if list is big, remove one at end. if (recentFiles.size() > 10) { recentFiles.removeLast(); } // put at front of list if (recentFiles.contains(this.currentFile)) { recentFiles.remove(this.currentFile); } recentFiles.addFirst(this.currentFile); // set current dir, too. this.currentDir = currentDir; } public File getCurrentDir() { return currentDir; } public void setCurrentDir(File currentDir) { this.currentDir = currentDir; } public void save() { try { FileOutputStream fos = new FileOutputStream(FILE); PrintStream out = new PrintStream(fos); out.println("CURRENT_FILE\t" + currentFile); out.println("CURRENT_DIR\t" + currentDir); for (File f : recentFiles) { out.println("RECENT_FILE\t" + f); } out.flush(); out.close(); fos.close(); } catch (Exception e) { e.printStackTrace(System.out); } } }