litesoft
@ 600
litesoft / trunk / GWT_Sandbox / FormEngine / src / com / temp / foundation / widgets / inputfieldsupport / InputWidgetValidator.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 |
package com.temp.foundation.widgets.inputfieldsupport; import java.util.*; import com.google.gwt.event.dom.client.*; import com.google.gwt.event.shared.*; import com.temp.foundation.widgets.support.*; import com.temp.foundation.widgets.support.events.*; import com.temp.shared.*; import com.temp.shared.externalization.*; public class InputWidgetValidator<T> implements InputWidgetValueAdapter<T> { protected final NonDomHandlerManager<ChangeHandler> handlerManager; protected final InputWidgetValueAdapter<T> delegate; protected final List<ValueValidator<T>> validators = new ArrayList<ValueValidator<T>>(); protected E13nData errorData; public InputWidgetValidator(InputWidgetValueAdapter<T> delegate) { handlerManager = new NonDomHandlerManager<ChangeHandler>(this); this.delegate = delegate; delegate.addChangeHandler(new ChangeHandler() { @Override public void onChange(ChangeEvent event) { validateWithErrorStateChangeNotification(); } }); } public InputWidgetValidator(InputWidgetValueAdapter<T> delegate, ValueValidator<T> validator1, ValueValidator<T>... additionalValidators) { this(delegate); add(validator1); if (additionalValidators != null) { for (ValueValidator<T> validator : additionalValidators) { add(validator); } } if (!validators.isEmpty()) { validate(); } } protected boolean add(ValueValidator<T> validator) { if (validator != null) { validators.add(validator); return true; } return false; } public void addValidator(ValueValidator<T> validator) { if (add(validator)) { validateWithErrorStateChangeNotification(); } } public void addValidators(ValueValidator<T>... additionalValidators) { if (additionalValidators != null) { boolean anyAdded = false; for (ValueValidator<T> validator : additionalValidators) { anyAdded |= add(validator); } if (anyAdded) { validateWithErrorStateChangeNotification(); } } } /** * @return null if currently valid, otherwise the data to generate the Error Text */ public E13nData validate() { T value = getValue(); errorData = null; for (ValueValidator<T> validator : validators) { errorData = validator.checkValue(value); if (errorData != null) { break; } } return getErrorData(); } /** * @return null if currently valid, otherwise the data to generate the Error Text */ public E13nData getErrorData() { return errorData; } public HandlerRegistration addErrorStateChangeHandler(ChangeHandler handler) { return handler == null ? null : registerErrorStateChangeHandler(handler); } @Override public HandlerRegistration addChangeHandler(ChangeHandler handler) { return delegate.addChangeHandler(handler); } @Override public T getValue() { return delegate.getValue(); } @Override public void setValue(T value) { delegate.setValue(value); validateWithErrorStateChangeNotification(); } protected void validateWithErrorStateChangeNotification() { boolean hadError = (null != getErrorData()); boolean hasError = (null != validate()); if (hadError != hasError) { notifyErrorStateChangeHandlers(); } } protected void notifyErrorStateChangeHandlers() { handlerManager.fireEvent(new NonDomChangeEvent()); } protected HandlerRegistration registerErrorStateChangeHandler(ChangeHandler handler) { return handlerManager.addHandler(handler); } } |
Commits for litesoft/trunk/GWT_Sandbox/FormEngine/src/com/temp/foundation/widgets/inputfieldsupport/InputWidgetValidator.java
Revision | Author | Commited | Message |
---|---|---|---|
600 | GeorgeS | Sun 05 Feb, 2012 18:55:58 +0000 | Sync-n |