/** thread run method that is called when the thread start method is called */ @Override public void run() { for (; k < vecSequence.size(); k++) { // set it to say its not in this thread so the user cannot click on the // progress bar at the perfect time and freeze the program in the waiting // cursor stage if (k == (vecSequence.size() - 1)) { theApp.setThreadStatus(false); theApp.setPlayPauseOff(); } if (((Component) theApp).getCursor().getType() == Cursor.WAIT_CURSOR) { int jpbIncrement = Math.round(1.0f * theApp.getBarMax() / vecSequence.size()); k = Math.round(theApp.getBarValue() / jpbIncrement); ((Component) theApp).setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); } AePlayWave thread = new AePlayWave(vecSequence.get(k)); theApp.incrementProgressBarValue(); thread.start(); // play the selected audio clip try { thread.join(); // wait for the thread playing to clip to die } catch (InterruptedException ie) { ((Component) theApp).setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); } if (theApp.playPausePressed()) { k = vecSequence.size(); } } if (!theApp.playPausePressed()) { theApp.setButtonsOutOfThread(); theApp.fillBarValue(); } }