litesoft
@ 591
litesoft / trunk / GWT_Sandbox / FormEngine / src / com / temp / foundation / widgets / support / InputWidgetChangeFilter.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 |
package com.temp.foundation.widgets.support; import com.google.gwt.event.dom.client.ChangeEvent; import com.google.gwt.event.dom.client.ChangeEventFactory; import com.google.gwt.event.dom.client.ChangeHandler; import com.google.gwt.event.shared.HandlerRegistration; import com.temp.shared.utils.ObjectUtils; public class InputWidgetChangeFilter<T> implements InputWidgetValueAdapter<T> { protected final NonDomHandlerManager<ChangeHandler> handlerManager; protected final InputWidgetValueAdapter<T> delegateTo; protected T baseNotChangedValue; protected boolean isChanged; public InputWidgetChangeFilter(InputWidgetValueAdapter<T> delegateTo) { handlerManager = new NonDomHandlerManager<ChangeHandler>(this); this.delegateTo = delegateTo; baseNotChangedValue = delegateTo.getValue(); delegateTo.addChangeHandler(new ChangeHandler() { @Override public void onChange(ChangeEvent event) { checkForChange(); } }); } @Override public HandlerRegistration addChangeHandler(ChangeHandler handler) { return handler == null ? null : registerChangeHandler(handler); } @Override public T getValue() { return checkForChange(); } @Override public void setValue(T value) { delegateTo.setValue(value); baseNotChangedValue = delegateTo.getValue(); setChanged(false); } public boolean isChanged() { return isChanged; } protected void setChanged(boolean newChangedState) { boolean curChangedState = isChanged; isChanged = newChangedState; if (curChangedState != newChangedState) { notifyChangeHandlers(); } } protected T checkForChange() { T curValue = delegateTo.getValue(); setChanged(!ObjectUtils.areEqual(baseNotChangedValue, curValue)); return curValue; } protected void notifyChangeHandlers() { handlerManager.fireEvent(ChangeEventFactory.create()); } protected HandlerRegistration registerChangeHandler(ChangeHandler handler) { return handlerManager.addHandler(handler); } } |
Commits for litesoft/trunk/GWT_Sandbox/FormEngine/src/com/temp/foundation/widgets/support/InputWidgetChangeFilter.java
Revision | Author | Commited | Message |
---|---|---|---|
591 | GeorgeS | Fri 20 Jan, 2012 01:57:31 +0000 | New FormEngine |