/** * Copyright (c) 2005-2011 by Appcelerator, Inc. All Rights Reserved. * Licensed under the terms of the Eclipse Public License (EPL). * Please see the license.txt included with this distribution for details. * Any modifications to this file must keep this entire header intact. */ package org.python.pydev.utils; import org.python.pydev.core.log.Log; /** * This is an auxiliary class for things that require callbacks at some interval. * * It allows you to specify the number of times that the callback should be called. * */ public class CounterThread extends Thread { private ICallback callback; private int elapseTime; private int stopWhenReaches; /** * @param callback the callback that should be called whenever the time elapses (it passes an int, that * says which call is this one). * @param elapseTime this is the millis that should elapse between the calls * @param stopWhenReaches this is the number of times that it should be called */ public CounterThread(ICallback callback, int elapseTime, int stopWhenReaches) { this.callback = callback; this.elapseTime = elapseTime; this.stopWhenReaches = stopWhenReaches; setName("Callback (CounterThread)"); } @Override public void run() { try { for (int i = 0; i < stopWhenReaches; i++) { try { sleep(elapseTime); callback.call(i); } catch (Exception e) { Log.log(e); return; } } } catch (Exception e) { Log.log(e); return; } } }