public void renderCellContent(Object value, HtmlWriter out, HtmlPage contextPage) {
   Long millis = (Long) value;
   if (millis <= 0) {
     out.write("-");
     return;
   }
   Date date = new Date(millis);
   synchronized (dateFormat) {
     out.write(dateFormat.format(date));
   }
 }
 public void renderCellContent(Object value, HtmlWriter out, HtmlPage contextPage) {
   Integer millis = (Integer) value;
   int minutes = millis.intValue() / 1000 / 60;
   int hours = minutes / 60;
   minutes = minutes - hours * 60;
   if (hours > 0) {
     out.write(hours + " h ");
   }
   if (minutes > 0) {
     out.write(minutes + " min");
   }
 }
 private void formatValue(
     String propertyName, Object value, HtmlWriter out, HtmlPage contextPage) {
   // TODO implement custom formatting for columns
   if (value == null) {
     out.write("n/a");
     return;
   }
   try {
     CellRenderer renderer = this.propertyCellRendererMap.get(propertyName);
     if (renderer == null) {
       renderer = DEFAULT_RENDERER;
     }
     renderer.renderCellContent(value, out, contextPage);
   } catch (Exception e) {
     out.write("n/a");
     out.writeStacktrace(e, true);
   }
 }
 public void renderCellContent(Object value, HtmlWriter out, HtmlPage contextPage) {
   out.write(value.toString());
 }