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 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"); 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(""+act.getString(title)+"
"); } Field startField=model.getDB().getField(VirtualField.START); if (startField!=null) { page.append(""+model.getDisplay().format( act.getTime(startField))+""); } page.append("

"); if (id>=0) page.append("EDIT"); page.append("
"); for (Field f: fields) { page.append(""+f.getName()+"  "); Object val=act.get(f); if (val instanceof URL) { page.append(""+val+""); } else page.append(model.getDisplay().toString(val)); page.append("
"); } page.append("
"); return page.toString(); } public String makeHeader() { StringBuffer page=new StringBuffer(); page.append("
"); page.append("
File: "+model.getDbFile()+"
"); page.append("Source: "+model.getDB().getSource()+"

"); page.append("

"); page.append(""); return page.toString(); } public String makeFooter() { return "
"; } 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"; } }