package tim.prune.gui; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JProgressBar; import tim.prune.FunctionLibrary; import tim.prune.function.PlayAudioFunction; /** * Class to update the supplied progress bar on the basis of * the currently playing audio clip (if any) */ public class AudioListener implements Runnable, ActionListener { /** progress bar */ private JProgressBar _progressBar = null; /** * Constructor * @param inBar progress bar object to update */ public AudioListener(JProgressBar inBar) { _progressBar = inBar; } /** * React to button press */ public void actionPerformed(ActionEvent inEvent) { new Thread(this).start(); } /** * Loop and update progress bar */ public void run() { int progress = 0; while (progress >= 0) { try { Thread.sleep(400); } catch (InterruptedException e) {} progress = ((PlayAudioFunction) FunctionLibrary.FUNCTION_PLAY_AUDIO).getPercentage(); _progressBar.setVisible(progress >= 0); _progressBar.setValue(progress); } } }