package be.selckin.swu.validation; import org.apache.wicket.Component; import org.apache.wicket.behavior.AttributeAppender; import org.apache.wicket.behavior.Behavior; import org.apache.wicket.markup.html.form.Form; import org.apache.wicket.markup.html.form.FormComponent; import org.apache.wicket.model.AbstractReadOnlyModel; import org.apache.wicket.util.visit.IVisit; import org.apache.wicket.util.visit.IVisitor; import static com.google.common.base.Preconditions.checkNotNull; public class CssFeedbackBehavior extends Behavior { protected String validCssClass = ""; protected String invalidCssClass = "error"; @Override public void onConfigure(Component component) { super.onConfigure(component); if (component instanceof Form) ((Form<?>) component).visitFormComponents(new IVisitor<FormComponent<?>, Void>() { @Override public void component(FormComponent<?> formComponent, IVisit<Void> visit) { formComponent.add(AttributeAppender.append("class", new ValidFormComponentROM(formComponent))); } }); } public CssFeedbackBehavior setValidCssClass(String validCssClass) { this.validCssClass = checkNotNull(validCssClass); return this; } public CssFeedbackBehavior setInvalidCssClass(String invalidCssClass) { this.invalidCssClass = checkNotNull(invalidCssClass); return this; } public class ValidFormComponentROM extends AbstractReadOnlyModel<String> { private final FormComponent<?> formComponent; public ValidFormComponentROM(FormComponent<?> formComponent) { this.formComponent = formComponent; } @Override public String getObject() { return formComponent.isValid() ? validCssClass : invalidCssClass; } } }