DateFormat minuteFormater = getDateFormat(context, schedule,
HtmlSchedule.HOUR_NOTATION_12.equals(schedule.getHourNotation()) ? "':'mma" : "mm");
DateFormat shortMinuteFormater = getDateFormat(context, schedule,
HtmlSchedule.HOUR_NOTATION_12.equals(schedule.getHourNotation()) ? "a" : "mm");
ScheduleDay day = (ScheduleDay) schedule.getModel().iterator().next();
writer.startElement(HTML.TABLE_ELEM, schedule);
writer.writeAttribute(HTML.CELLPADDING_ATTR, "0", null);
writer.writeAttribute(HTML.CELLSPACING_ATTR, "1", null);
writer.writeAttribute(HTML.CLASS_ATTR, getStyleClass(schedule, "background"), null);
writer.writeAttribute(HTML.STYLE_ATTR, "height: 100%", null);
writer.startElement(HTML.TBODY_ELEM, schedule);
writer.startElement(HTML.TR_ELEM, schedule);
// the header gutter
writer.startElement(HTML.TD_ELEM, schedule);
writer.writeAttribute(HTML.CLASS_ATTR, getStyleClass(schedule, "gutter"), null);
writer.writeAttribute(
HTML.STYLE_ATTR,
"height: "
+ headerHeight
+ "px; border-style: none; border-width: 0px; overflow: hidden; padding: 0px",
null);
writer.startElement(HTML.DIV_ELEM, schedule);
writer.writeAttribute(HTML.STYLE_ATTR, "height: 1px; width: 56px", null);
writer.endElement(HTML.DIV_ELEM);
writer.endElement(HTML.TD_ELEM);
writer.endElement(HTML.TR_ELEM);
// the intervals
Iterator intervalIt = day.getIntervals(startHour, endHour).iterator();
boolean renderGutter = true;
while (intervalIt.hasNext())
{
Interval interval = (Interval) intervalIt.next();
int intervalHeight = calcRowHeight(rowHeight, interval.getDuration()) - 1;
// Don't render rows where the timespan is too small
if (intervalHeight <= 0)
{
continue;
}
if (!renderGutter)
{
renderGutter = true;
continue;
}
writer.startElement(HTML.TR_ELEM, schedule);
int gutterHeight = intervalHeight;
if (day.getIntervals() == null && interval.getStartMinutes(getTimeZone(schedule)) == 0)
{
gutterHeight = (gutterHeight * 2) + 1;
renderGutter = false;
}