Updated so that wait statements no longer just swallow interrupt exceptions; they return false and stop further execution if SwingWorker.cancel() is called.