litesoft
@ 965
litesoft / trunk / GWT_Sandbox / FormEngine / src / com / temp / foundation / client / widget / input / fieldsupport / 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 77 78 79 80 81 82 |
package com.temp.foundation.client.widget.input.fieldsupport; import com.google.gwt.event.dom.client.*; import com.google.gwt.event.shared.*; import com.temp.foundation.client.widget.input.support.*; import com.temp.foundation.client.widget.input.support.events.*; import com.temp.common.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(); } } ); } public HandlerRegistration addFilteredChangeHandler( ChangeHandler handler ) { return handler == null ? null : registerChangeHandler( handler ); } @Override public HandlerRegistration addChangeHandler( ChangeHandler handler ) { return delegateTo.addChangeHandler( handler ); } @Override public T getValue() { return checkForChange(); } @Override public void setValue( T value ) { delegateTo.setValue( value ); baseNotChangedValue = delegateTo.getValue(); setChanged( false ); } public T getBaseValue() { return baseNotChangedValue; } 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/client/widget/input/fieldsupport/InputWidgetChangeFilter.java
Revision | Author | Commited | Message |
---|---|---|---|
965 | GeorgeS | Fri 01 Aug, 2014 03:20:35 +0000 | ! |