void beginRender(MarkupWriter writer) {
String value = tracker.getInput(this);
if (value == null) value = formatCurrentValue();
String clientId = getClientId();
String triggerId = clientId + ":trigger";
writer.element(INPUT_PARAMETER,
"type", hideTextField ? "hidden" : "text",
"name", getControlName(),
"id", clientId,
"value", value);
writeDisabled(writer);
validate.render(writer);
resources.renderInformalParameters(writer);
decorateInsideField();
writer.end();
// Now the trigger icon.
writer.element("img",
"id", triggerId,
"class", "t-calendar-trigger",
"src", icon.toClientURL(),
"alt", "[Show]");
writer.end(); // img
JSONObject setup = new JSONObject();
setup.put("field", clientId);
setup.put("parseURL", resources.createEventLink("parse").toAbsoluteURI());
setup.put("formatURL", resources.createEventLink("format").toAbsoluteURI());
if (request.getAttribute(LOCALIZATION_CONFIGURED_FLAG) == null)
{
JSONObject spec = new JSONObject();
DateFormatSymbols symbols = new DateFormatSymbols(locale);
spec.put("months", new JSONArray(symbols.getMonths()));
StringBuilder days = new StringBuilder();
String[] weekdays = symbols.getWeekdays();
Calendar c = Calendar.getInstance(locale);
int firstDay = c.getFirstDayOfWeek();
// DatePicker needs them in order from monday to sunday.
for (int i = Calendar.MONDAY; i < = Calendar.SATURDAY; i++)
{
days.append(weekdays[i].substring(0, 1));
}
days.append(weekdays[Calendar.SUNDAY].substring(0, 1));
spec.put("days", days.toString().toLowerCase(locale));
// DatePicker expects 0 to be monday. Calendar defines SUNDAY as 1, MONDAY as 2, etc.
spec.put("firstDay", firstDay == Calendar.SUNDAY ? 6 : firstDay - 2);
// TODO: Skip localization if locale is English?
setup.put("localization", spec);
request.setAttribute(LOCALIZATION_CONFIGURED_FLAG, true);
}
support.addInit("dateField", setup);
}
|