package net.rrm.ehour.ui.common.form; import org.apache.wicket.markup.html.form.TextField; import org.apache.wicket.model.IModel; public class TextFieldWithHistory<T> extends TextField<T> { private boolean previousValidity = false; private String previousValue; public TextFieldWithHistory(String id, IModel<T> model, Class<T> type) { super(id, model, type); } public boolean isValueChanged() { return !getRealInput().equals(previousValue); } public void rememberCurrentValue() { previousValue = getRealInput(); } public void rememberCurrentValidity() { previousValidity = isValid(); } public boolean isPreviousValid() { return previousValidity; } public final void setPreviousValue(String previousValue) { this.previousValue = previousValue; } /** * Extracts the real user input * * @return the string input or an empty string if no input provided */ protected String getRealInput() { //first try to get the float value T value = getConvertedInput(); if (value != null) return value.toString(); else { //if there was a conversion error we can see the rawInput String raw = getRawInput(); return (raw == null) ? "" : raw; } } }