
fr.lteconsulting.hexa.client.tools.Delayer Maven / Gradle / Ivy
The newest version!
package fr.lteconsulting.hexa.client.tools;
import com.google.gwt.user.client.Timer;
/*
* in input, many events,
* in output, events at a max rate of xxx milliseconds or,
* if fPostponeEachTime is true => callback called xxx ms after the last event received
*/
public class Delayer
{
public interface Callback
{
void onDelayedEvent();
}
Callback callback;
int milliseconds;
boolean fTriggered = false;
boolean fPostponeEachTime;
public Delayer( int milliseconds, Callback callback, boolean fPostponeEachTime )
{
this.milliseconds = milliseconds;
this.callback = callback;
this.fPostponeEachTime = fPostponeEachTime;
}
public void trigger()
{
// if an action is already registered, postpone it
if( fTriggered )
{
if( fPostponeEachTime )
{
reallyDoTimer.cancel();
reallyDoTimer.schedule( milliseconds );
}
return;
}
// schedule action ...
fTriggered = true;
reallyDoTimer.schedule( milliseconds );
}
Timer reallyDoTimer = new Timer()
{
@Override
public void run()
{
fTriggered = false;
reallyDoTimer.cancel();
callback.onDelayedEvent();
reallyDoTimer.cancel();
}
};
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy