/*
* Ext GWT - Ext for GWT
* Copyright(c) 2007-2009, Ext JS, LLC.
* licensing@extjs.com
*
* http://extjs.com/license
*/
package com.extjs.gxt.ui.client.util;
import com.extjs.gxt.ui.client.event.Listener;
import com.google.gwt.user.client.Timer;
/**
* A <code>Timer</code> that is cancelled if a new request is made.
*/
public class DelayedTask {
private Timer timer;
private Listener<?> listener;
/**
* Creates a new delayed task.
*
* @param listener the listener to be called
*/
public DelayedTask(final Listener<?> listener) {
this.listener = listener;
timer = new Timer() {
public void run() {
DelayedTask.this.listener.handleEvent(null);
}
};
}
/**
* Cancels the task.
*/
public void cancel() {
timer.cancel();
}
/**
* Cancels any running timers and starts a new one.
*
* @param delay the delay in ms
*/
public void delay(int delay) {
timer.cancel();
if (delay > 0) {
timer.schedule(delay);
} else {
timer.run();
}
}
}