package com.github.donkirkby.vograbulary.client; import java.util.HashMap; import java.util.Map; import com.github.donkirkby.vograbulary.Scheduler; import com.google.gwt.core.client.Scheduler.ScheduledCommand; import com.google.gwt.user.client.Timer; public class GwtScheduler implements Scheduler { private Map<Runnable, Timer> timers = new HashMap<>(); private com.google.gwt.core.client.Scheduler scheduler = com.google.gwt.core.client.Scheduler.get(); @Override public void scheduleRepeating(final Runnable task, int periodMilliseconds) { Timer timer = new Timer() { @Override public void run() { task.run(); } }; timers.put(task, timer); timer.scheduleRepeating(periodMilliseconds); } @Override public void cancel(Runnable task) { Timer timer = timers.remove(task); if (timer != null) { timer.cancel(); } } public void scheduleDeferred(final Runnable task) { scheduler.scheduleDeferred(new ScheduledCommand() { @Override public void execute() { task.run(); } }); } }