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);
}
}
}