float columnWidth = (numberOfDays == 0) ? 100f : (100 / numberOfDays);
for (Iterator dayIterator = planner.getModel().dayIterator(); dayIterator
.hasNext();)
{
Day day = (Day) dayIterator.next();
writer.startElement(HTML.TD_ELEM, planner);
writer.writeAttribute(HTML.CLASS_ATTR, "header", null);
writer.writeAttribute(HTML.WIDTH_ATTR, String.valueOf(columnWidth)
+ "%", null);
writer.writeAttribute(HTML.STYLE_ATTR,
"overflow: hidden; height: 31px;", null);
writer.startElement(HTML.DIV_ELEM, planner);
writer.writeAttribute(HTML.CLASS_ATTR, "header", null);
writer
.writeAttribute(
HTML.STYLE_ATTR,
"position: relative; left: 0px; top: 0px; width: 100%; height: 100%;",
null);
writer.startElement(HTML.SPAN_ELEM, planner);
writer.writeAttribute(HTML.CLASS_ATTR, "date", null);
writer
.writeAttribute(
HTML.STYLE_ATTR,
"position: absolute; left: 0px; top: 0px; width: 100%; height: 15px; overflow: hidden; white-space: nowrap;",
null);
writer.writeText(getDateString(context, planner,
day.getDate()), null);
writer.endElement(HTML.SPAN_ELEM);
//write the name of the holiday, if there is one
if ((day.getSpecialDayName() != null)
&& (day.getSpecialDayName().length() > 0))
{
writer.startElement(HTML.SPAN_ELEM, planner);
writer.writeAttribute(HTML.CLASS_ATTR, "holiday", null);
writer
.writeAttribute(
HTML.STYLE_ATTR,
"position: absolute; left: 0px; top: 15px; width: 100%; overflow: hidden; white-space: nowrap;",
null);
writer.writeText(day.getSpecialDayName(), null);
writer.endElement(HTML.SPAN_ELEM);
}
writer.endElement(HTML.DIV_ELEM);
writer.endElement(HTML.TD_ELEM);
}
writer.endElement(HTML.TR_ELEM);
//second header row, containing the hours
writer.startElement(HTML.TR_ELEM, planner);
int numberOfHours = planner.getVisibleEndHour()
- planner.getVisibleStartHour();
float hourWidth = (numberOfHours <= 0) ? 100f : (100 / numberOfHours);
for (Iterator dayIterator = planner.getModel().dayIterator(); dayIterator
.hasNext();)
{
Day day = (Day) dayIterator.next();
writer.startElement(HTML.TD_ELEM, planner);
writer.writeAttribute(HTML.WIDTH_ATTR, String.valueOf(columnWidth)
+ "%", null);
writer.startElement(HTML.TABLE_ELEM, planner);
writer.writeAttribute(HTML.STYLE_ATTR, "height: 100%; width: 100%",
null);
writer.writeAttribute(HTML.CELLPADDING_ATTR, "0", null);
writer.writeAttribute(HTML.CELLSPACING_ATTR, "0", null);
writer.writeAttribute("border", "0", null);
writer.startElement(HTML.TR_ELEM, planner);
for (int hcol = planner.getVisibleStartHour(); hcol < planner
.getVisibleEndHour(); hcol++)
{
writer.startElement(HTML.TD_ELEM, planner);
writer.writeAttribute(HTML.CLASS_ATTR, "hours", null);
writer.writeAttribute(HTML.WIDTH_ATTR, String
.valueOf(hourWidth)
+ "%", null);
writer
.writeAttribute(
HTML.STYLE_ATTR,
"overflow: hidden; height: 15px; border-left-style: solid; border-left-width: 1px; border-top-style: none; border-right-style: none; border-bottom-style: none;",
null);
writer.startElement(HTML.DIV_ELEM, planner);
writer.writeAttribute(HTML.CLASS_ATTR, "header", null);
writer
.writeAttribute(
HTML.STYLE_ATTR,
"position: relative; left: 0px; top: 0px; width: 100%; height: 100%;",
null);
writer.startElement(HTML.SPAN_ELEM, planner);
writer.writeAttribute(HTML.CLASS_ATTR, "hours", null);
writer
.writeAttribute(
HTML.STYLE_ATTR,
"position: absolute; left: 0px; top: 0px; width: 100%; height: 100%; overflow: hidden; white-space: nowrap;",
null);
writer.writeText(String.valueOf(hcol) + ":00", null);
writer.endElement(HTML.SPAN_ELEM);
writer.endElement(HTML.DIV_ELEM);
writer.endElement(HTML.TD_ELEM);
}
writer.endElement(HTML.TR_ELEM);
writer.endElement(HTML.TABLE_ELEM);
writer.endElement(HTML.TD_ELEM);
}
writer.endElement(HTML.TR_ELEM);
//the actual entity rows start here
for (Iterator entityIterator = planner.getModel().entityIterator(); entityIterator
.hasNext();)
{
PlannerEntity entity = (PlannerEntity) entityIterator.next();
writer.startElement(HTML.TR_ELEM, planner);
writer.startElement(HTML.TD_ELEM, planner);
writer.writeAttribute(HTML.CLASS_ATTR, "gutter", null);
writer
.writeAttribute(
HTML.STYLE_ATTR,
"padding: 0px; vertical-align: middle; height: 21px; border-style: none; border-width: 0px; overflow: hidden; whitespace: nowrap;",
null);
writer.startElement(HTML.SPAN_ELEM, planner);
writer.writeAttribute(HTML.CLASS_ATTR, "title", null);
writer.writeAttribute(HTML.STYLE_ATTR, "height: 100%;", null);
writer.writeText(entity.getName(), null);
writer.endElement(HTML.SPAN_ELEM);
writer.endElement(HTML.TD_ELEM);
for (Iterator dayIterator = planner.getModel().dayIterator(); dayIterator
.hasNext();)
{
Day day = (Day) dayIterator.next();
writer.startElement(HTML.TD_ELEM, planner);
writer.writeAttribute(HTML.WIDTH_ATTR, String
.valueOf(columnWidth)
+ "%", null);
writer.startElement(HTML.TABLE_ELEM, planner);