package fr.lteconsulting.hexa.client.form.fieldtypes; import java.util.HashMap; import com.google.gwt.user.client.ui.Widget; public abstract class FieldTypeBase implements FieldType { protected abstract void installRealHandler( Widget widget ); protected HashMap<Widget, DefaultChangeHandlerManager> handlerManagers = null; protected void pushCurrentValue( Widget widget, String value ) { if( handlerManagers == null ) return; DefaultChangeHandlerManager handlerManager = handlerManagers.get( widget ); if( handlerManager == null ) return; handlerManager.pushValue( value ); } protected void signalChange( Widget widget ) { if( handlerManagers == null ) return; DefaultChangeHandlerManager handlerManager = handlerManagers.get( widget ); if( handlerManager == null ) return; handlerManager.signalChange(); } @Override final public FieldChangeHandlerManager getHandlerManager( Widget widget ) { if( handlerManagers == null ) handlerManagers = new HashMap<Widget, DefaultChangeHandlerManager>(); DefaultChangeHandlerManager mng = handlerManagers.get( widget ); if( mng == null ) { // tells implementation that it should link its events to the change // handler manager installRealHandler( widget ); mng = new DefaultChangeHandlerManager(); handlerManagers.put( widget, mng ); } return mng; } }