Permalink
Cannot retrieve contributors at this time
Fetching contributors…
| package com.team254.lib.util; | |
| import java.util.Timer; | |
| import java.util.TimerTask; | |
| /** | |
| * A Looper is an easy way to create a timed task the gets | |
| * called periodically. | |
| * <p> | |
| * Just make a new Looper and give it a Loopable. | |
| * | |
| * @author Tom Bottiglieri | |
| */ | |
| public class Looper { | |
| private double period = 1.0 / 100.0; | |
| protected Loopable loopable; | |
| private Timer looperUpdater; | |
| protected String m_name; | |
| public Looper(String name, Loopable loopable, double period) { | |
| this.period = period; | |
| this.loopable = loopable; | |
| this.m_name = name; | |
| } | |
| private class UpdaterTask extends TimerTask { | |
| private Looper looper; | |
| public UpdaterTask(Looper looper) { | |
| if (looper == null) { | |
| throw new NullPointerException("Given Looper was null"); | |
| } | |
| this.looper = looper; | |
| } | |
| public void run() { | |
| looper.update(); | |
| } | |
| } | |
| public void start() { | |
| if (looperUpdater == null) { | |
| looperUpdater = new Timer("Looper - " + this.m_name); | |
| looperUpdater.schedule(new UpdaterTask(this), 0L, (long) (this.period * 1000)); | |
| } | |
| } | |
| public void stop() { | |
| if (looperUpdater != null) { | |
| looperUpdater.cancel(); | |
| looperUpdater = null; | |
| } | |
| } | |
| private void update() { | |
| loopable.update(); | |
| } | |
| } |