// --------------------------------------- // Restricted Focus Viewer (RFV) Program // Version 2.1 // Language: Java 2 // November, 2000 // Copyright (C) 2000 Anthony R. Jansen // --------------------------------------- // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // as published by the Free Software Foundation; either version 2 // of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. // --------------------------------------- // Replayer_Thread.java // // Thread that checks the timer to // determine when the next data point // update is needed on the replayer. // --------------------------------------- import java.awt.*; public class Replayer_Thread extends Thread { // Need Replayer so that stimulus can be updated // --------------------------------------------- private Replayer replayer; private boolean valid; // Constructor which accepts Replayer as argument // ---------------------------------------------- public Replayer_Thread(Replayer rep) { replayer = rep; valid = true; } // Interrupt if no longer needed // ----------------------------- public void interrupt() { valid = false; } // Thread to check the timer for the next data update // -------------------------------------------------- public void run() { long elapsed_time; long current_time; int dp; dp = replayer.getCurrentDataPoint(); // Continue while there are more data points to process // ---------------------------------------------------- while(valid && dp < replayer.getNumDataPoints()) { // Check timer // ----------- elapsed_time = replayer.getElapsedReplayTime(); // Adjust current time based on speed factor // ----------------------------------------- current_time = replayer.getCurrentDataPointTime(); if (replayer.getSpeedFactor() == Replayer.QUARTER_SPEED) current_time = current_time * 4; else if (replayer.getSpeedFactor() == Replayer.HALF_SPEED) current_time = current_time * 2; else if (replayer.getSpeedFactor() == Replayer.DOUBLE_SPEED) current_time = current_time / 2; else if (replayer.getSpeedFactor() == Replayer.QUADRUPLE_SPEED) current_time = current_time / 4; if (elapsed_time >= current_time) { replayer.updateReplayerBaseImage(); replayer.incrementCurrentDataPoint(); dp = replayer.getCurrentDataPoint(); } } // Report when finished // -------------------- replayer.endReplay(); } }