calendar = new GregorianCalendar();
if (value instanceof Date) {
calendar.setTime((Date) value);
}
}
CalendarModel model = new CalendarModel(calendar);
// rendering
TobagoResponseWriter writer = HtmlRendererUtils.getTobagoResponseWriter(facesContext);
writer.startElement(HtmlElements.TABLE, component);
writer.writeIdAttribute(id);
HtmlRendererUtils.renderDojoDndItem(component, writer, true);
writer.writeClassAttribute(Classes.create(output));
Style style = new Style(facesContext, output);
writer.writeStyleAttribute(style);
writer.writeAttribute(HtmlAttributes.CELLSPACING, 0);
writer.writeAttribute(HtmlAttributes.CELLPADDING, 3);
writer.writeAttribute(HtmlAttributes.SUMMARY, "", false);
writer.startElement(HtmlElements.TR, null);
writer.writeClassAttribute(Classes.create(output, "headerRow"));
writer.startElement(HtmlElements.TH, null);
writer.writeAttribute(HtmlAttributes.COLSPAN, 7);
writer.startElement(HtmlElements.TABLE, null);
writer.writeAttribute(HtmlAttributes.SUMMARY, "", false);
writer.writeClassAttribute(Classes.create(output, "header"));
writer.startElement(HtmlElements.TR, null);
writer.startElement(HtmlElements.TD, null);
writer.writeAttribute(HtmlAttributes.ALIGN, "left", false);
writer.startElement(HtmlElements.IMG, null);
writer.writeClassAttribute(Classes.create(output, "header"));
writer.writeAttribute(HtmlAttributes.ALT, "", false);
writer.writeAttribute(HtmlAttributes.SRC,
ResourceManagerUtils.getImageWithPath(facesContext, "image/calendarFastPrev.gif"), false);
writer.writeAttribute(HtmlAttributes.ONCLICK, "addMonth('" + id + "', -12)", false);
writer.endElement(HtmlElements.IMG);
writer.endElement(HtmlElements.TD);
writer.startElement(HtmlElements.TD, null);
writer.writeAttribute(HtmlAttributes.ALIGN, "left", false);
writer.startElement(HtmlElements.IMG, null);
writer.writeClassAttribute(Classes.create(output, "header"));
writer.writeAttribute(HtmlAttributes.ALT, "", false);
writer.writeAttribute(HtmlAttributes.SRC,
ResourceManagerUtils.getImageWithPath(facesContext, "image/calendarPrev.gif"), false);
writer.writeAttribute(HtmlAttributes.ONCLICK, "addMonth('" + id + "', -1)", false);
writer.endElement(HtmlElements.IMG);
writer.endElement(HtmlElements.TD);
writer.startElement(HtmlElements.TH, null);
writer.writeClassAttribute(Classes.create(output, "headerCenter"));
writer.writeAttribute(HtmlAttributes.ALIGN, "center", false);
writer.writeIdAttribute(id + ":title");
writer.writeText(dateFormat.format(calendar.getTime()));
writer.endElement(HtmlElements.TH);
writer.startElement(HtmlElements.TD, null);
writer.writeAttribute(HtmlAttributes.ALIGN, "right", false);
writer.startElement(HtmlElements.IMG, null);
writer.writeClassAttribute(Classes.create(output, "header"));
writer.writeAttribute(HtmlAttributes.ALT, "", false);
writer.writeAttribute(HtmlAttributes.SRC,
ResourceManagerUtils.getImageWithPath(facesContext, "image/calendarNext.gif"), false);
writer.writeAttribute(HtmlAttributes.ONCLICK, "addMonth('" + id + "', 1)", false);
writer.endElement(HtmlElements.IMG);
writer.endElement(HtmlElements.TD);
writer.startElement(HtmlElements.TD, null);
writer.writeAttribute(HtmlAttributes.ALIGN, "right", false);
writer.startElement(HtmlElements.IMG, null);
writer.writeClassAttribute(Classes.create(output, "header"));
writer.writeAttribute(HtmlAttributes.ALT, "", false);
writer.writeAttribute(HtmlAttributes.SRC,
ResourceManagerUtils.getImageWithPath(facesContext, "image/calendarFastNext.gif"), false);
writer.writeAttribute(HtmlAttributes.ONCLICK, "addMonth('" + id + "', 12)", false);
writer.endElement(HtmlElements.IMG);
writer.endElement(HtmlElements.TD);
writer.endElement(HtmlElements.TR);
writer.endElement(HtmlElements.TABLE);
writer.endElement(HtmlElements.TH);
writer.endElement(HtmlElements.TR);
writer.startElement(HtmlElements.TR, null);
dateFormat = new SimpleDateFormat("E", locale);
for (int dayIt = 0; dayIt < 7; ++dayIt) {
DateModel date = model.getDate(0, dayIt);
String dayName = dateFormat.format(date.getCalendar().getTime());
dayName = StringUtils.substring(dayName, 0, 2);
writer.startElement(HtmlElements.TH, null);
writer.writeClassAttribute(Classes.create(output, "headerInner"));
writer.writeText(dayName);
writer.endElement(HtmlElements.TH);
}
writer.endElement(HtmlElements.TR);
// int weekCount = model.getWeekCount();
for (int week = 0; week < 6; ++week) {
// String style = (week < weekCount) ? "" : "style=\"display: none\"";
writer.startElement(HtmlElements.TR, null);
writer.writeIdAttribute(id + ":" + week);
// writer.writeAttribute(HtmlAttributes.STYLE, style, null);
for (int dayIt = 0; dayIt < 7; ++dayIt) {
// if (week < weekCount) {
DateModel date = model.getDate(week, dayIt);
String dayDescription = String.valueOf(date.getDay());
String onclick = "selectDay('" + id + "', " + week + " , " + dayIt + ");";
writer.startElement(HtmlElements.TD, null);
writer.writeAttribute(HtmlAttributes.ONCLICK, onclick, true);
writer.writeIdAttribute(id + ":" + week + ":" + dayIt);
writer.writeClassAttribute(
Classes.create(output, "day", date.getMonth() == model.getMonth() ? null : Markup.DISABLED));
writer.writeText(dayDescription);
writer.endElement(HtmlElements.TD);