package fr.lteconsulting.hexa.client.form.fieldtypes;
import java.util.ArrayList;
import fr.lteconsulting.hexa.client.form.fieldtypes.FieldType.FieldChangeHandler;
public class DefaultChangeHandlerManager implements FieldType.FieldChangeHandlerManager
{
String currentValue = null;
ArrayList<Info> handlers = null;
public DefaultChangeHandlerManager()
{
}
public void pushValue( String value )
{
if( currentValue != null && value.equals( currentValue ) )
return;
currentValue = value;
signalChange();
}
public void signalChange()
{
currentValue = null;
if( handlers != null )
{
for( Info info : handlers )
info.handler.onFieldChange( info.cookie );
}
}
private class Info
{
FieldChangeHandler handler;
Object cookie;
Info( FieldChangeHandler handler, Object cookie )
{
this.handler = handler;
this.cookie = cookie;
}
}
@Override
public Object addChangeHandler( FieldChangeHandler handler, Object cookie )
{
if( handlers == null )
handlers = new ArrayList<DefaultChangeHandlerManager.Info>();
Info info = new Info( handler, cookie );
handlers.add( info );
return info;
}
@Override
public void removeChangeHandler( Object registration )
{
handlers.remove( (Info) registration );
}
}