package jeql.workbench.model;
import java.io.IOException;
import jeql.util.FileUtil;
import jeql.util.IOUtil;
public class ScriptSource
{
public static ScriptSource createInternal(String name)
{
ScriptSource ss = new ScriptSource(name);
ss.setInternal(true);
return ss;
}
public static ScriptSource createFile(String filename)
{
ScriptSource ss = new ScriptSource("");
ss.setFilename(filename);
ss.setInternal(false);
return ss;
}
private boolean isInternal = true;
private String name;
private String filename;
private String text;
private boolean isModified = false;
public ScriptSource(String name)
{
isInternal = true;
this.name = name;
// filename is deliberately left unset
}
public boolean isModified()
{
return isModified;
}
public void setModified(boolean isModified)
{
this.isModified = isModified;
}
public String getName()
{
return name;
}
public String getTitle()
{
return name + (isModified ? "*" : "");
}
public void setInternal(boolean isInternal)
{
this.isInternal = isInternal;
}
public boolean isInternal() { return isInternal; }
public void setFilename(String filename)
{
this.filename = filename;
name = FileUtil.name(filename);
}
public String getFilename()
{
return filename;
}
public boolean hasFilename()
{
return filename != null;
}
public void loadText()
{
//scriptList.init();
try {
text = IOUtil.readFile(filename, true);
}
catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void setText(String text)
{
this.text = text;
}
public String getText()
{
return text;
}
public void save()
{
// TODO: allow saving anonymous scripts
if (filename == null) return;
IOUtil.writeToFileNoThrow(filename, text);
isModified = false;
}
}