package timeflow.format.file;
|
|
import java.awt.Color;
|
import java.io.BufferedWriter;
|
import java.net.URL;
|
|
import timeflow.model.*;
|
import timeflow.data.db.*;
|
|
public class HtmlFormat implements Export
|
{
|
TFModel model;
|
java.util.List<Field> fields;
|
Field title;
|
|
public HtmlFormat() {}
|
|
public HtmlFormat(TFModel model)
|
{
|
setModel(model);
|
}
|
|
public void setModel(TFModel model)
|
{
|
this.model=model;
|
fields=model.getDB().getFields();
|
title=model.getDB().getField(VirtualField.LABEL);
|
}
|
|
@Override
|
public void export(TFModel model, BufferedWriter out) throws Exception {
|
setModel(model);
|
out.write(makeHeader());
|
for (Act a: model.getDB())
|
out.write(makeItem(a));
|
out.write(makeFooter());
|
out.flush();
|
}
|
|
public void append(ActList acts, int start, int end, StringBuffer b)
|
{
|
for (int i=start; i<end; i++)
|
{
|
Act a=acts.get(i);
|
b.append(makeItem(a,i));
|
}
|
}
|
|
private String makeItem(Act act)
|
{
|
return makeItem(act, -1);
|
}
|
|
public String makeItem(Act act, int id)
|
{
|
StringBuffer page=new StringBuffer();
|
|
|
page.append("<tr><td valign=top align=left width=200><b>");
|
if (title!=null)
|
{
|
Field f=model.getColorField();
|
Color c=Color.black;
|
if (f!=null)
|
{
|
if (f.getType()==String.class)
|
c=model.getDisplay().makeColor(act.getString(f));
|
else
|
{
|
String[] tags=act.getTextList(f);
|
if (tags.length==0)
|
c=Color.gray;
|
else
|
c=model.getDisplay().makeColor(tags[0]);
|
}
|
}
|
|
page.append("<font size=+1 color="+htmlColor(c)+">"+act.getString(title)+"</font><br>");
|
}
|
|
Field startField=model.getDB().getField(VirtualField.START);
|
|
if (startField!=null)
|
{
|
page.append("<font color=#999999>"+model.getDisplay().format(
|
act.getTime(startField))+"</font>");
|
}
|
page.append("</b><br>");
|
if (id>=0)
|
page.append("<a href=\"e"+id+"\">EDIT</a>");
|
page.append("<br></td><td valign=top>");
|
for (Field f: fields)
|
{
|
page.append("<b><font color=#003399>"+f.getName()+"</font></b> ");
|
Object val=act.get(f);
|
if (val instanceof URL)
|
{
|
page.append("<a href=\""+val+"\">"+val+"</a>");
|
}
|
else
|
page.append(model.getDisplay().toString(val));
|
page.append("<br>");
|
|
}
|
page.append("<br></td></tr>");
|
|
return page.toString();
|
}
|
|
public String makeHeader()
|
{
|
StringBuffer page=new StringBuffer();
|
page.append("<html><body><blockquote>");
|
page.append("<br>File: "+model.getDbFile()+"<br>");
|
page.append("Source: "+model.getDB().getSource()+"<br><br>");
|
page.append("<br><br>");
|
page.append("<table border=0>");
|
|
return page.toString();
|
}
|
|
public String makeFooter()
|
{
|
return "</table></blockquote></body></html>";
|
}
|
|
|
static String htmlColor(Color c)
|
{
|
return '#'+hex2(c.getRed())+hex2(c.getGreen())+hex2(c.getBlue());
|
}
|
|
private static final String hexDigits="0123456789ABCDEF";
|
private static String hex2(int n)
|
{
|
return hexDigits.charAt((n/16)%16)+""+hexDigits.charAt(n%16);
|
}
|
@Override
|
public String getName() {
|
return "HTML List";
|
}
|
|
}
|