package com.google.gsoc.web;
import org.apache.tapestry5.BaseValidationDecorator;
import org.apache.tapestry5.Field;
import org.apache.tapestry5.MarkupWriter;
import org.apache.tapestry5.ValidationTracker;
import org.apache.tapestry5.dom.Element;
import org.apache.tapestry5.services.Environment;
public class OtherValidationDecorator extends BaseValidationDecorator {
private final Environment environment;
private final MarkupWriter markupWriter;
public OtherValidationDecorator(Environment environment,
MarkupWriter markupWriter) {
this.environment = environment;
this.markupWriter = markupWriter;
}
@Override
public void beforeLabel(Field field) {
if (inError(field)) {
markupWriter.element("div",
"class", "single-error-message");
ValidationTracker tracker =
environment.peekRequired(ValidationTracker.class);
markupWriter.write(tracker.getError(field));
markupWriter.end();
}
}
@Override
public void insideField(Field field) {
if (inError(field)) {
addErrorClassToCurrentElement();
}
}
@Override
public void afterField(Field field) {
System.out.println(field.getControlName());
if (inError(field)) {
ValidationTracker tracker = getTracker();
markupWriter.element("span", "class", "error-description");
markupWriter.write(tracker.getError(field));
markupWriter.end();
}
}
@Override
public void insideLabel(Field field, Element element) {
if (field == null)
return;
if (inError(field)) {
addErrorClassToCurrentElement();
}
if (field.isRequired()) {
element.text("*");
}
}
@Override
public void afterLabel(Field field) {
if (inError(field)) {
markupWriter.element("span",
"class", "single-error-message");
ValidationTracker tracker =
environment.peekRequired(ValidationTracker.class);
markupWriter.write("texto");
markupWriter.write(tracker.getError(field));
markupWriter.end();
}
}
private boolean inError(Field field) {
ValidationTracker tracker = getTracker();
return tracker.inError(field);
}
private ValidationTracker getTracker() {
return environment.peekRequired(ValidationTracker.class);
}
private void addErrorClassToCurrentElement() {
markupWriter.getElement().addClassName("invalid-field");
}
}