litesoft
@ 625
litesoft / trunk / GWT_Sandbox / FormEngine / src / com / temp / foundation / widgets / inputfieldsupport / 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 72 73 74 75 76 |
package com.temp.foundation.widgets.inputfieldsupport; 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.utils.*; 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 void setValueAsUser(T value) { delegateTo.setValue(value); checkForChange(); } public boolean isChanged() { return isChanged; } protected T checkForChange() { T curValue = delegateTo.getValue(); setChanged(!ObjectUtils.areEqual(baseNotChangedValue, curValue)); return curValue; } protected void setChanged(boolean newChangedState) { boolean curChangedState = isChanged; isChanged = newChangedState; if (curChangedState != newChangedState) { notifyChangeHandlers(); } } protected void notifyChangeHandlers() { handlerManager.fireEvent(new NonDomChangeEvent()); } protected HandlerRegistration registerChangeHandler(ChangeHandler handler) { return handlerManager.addHandler(handler); } } |
Commits for litesoft/trunk/GWT_Sandbox/FormEngine/src/com/temp/foundation/widgets/inputfieldsupport/InputWidgetChangeFilter.java
Revision | Author | Commited | Message |
---|---|---|---|
600 | GeorgeS | Sun 05 Feb, 2012 18:55:58 +0000 | Sync-n |