Normand Briere
2018-07-07 e416acb9b012b17d1efe49ad2199ea7132d874d1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
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<File> recentFiles = new LinkedList<File>();
 
        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<File> getRecentFiles()
        {
                return (List<File>) 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);
                }
        }
}