--- /dev/null
+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 file (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);
+ }
+ }
+}