package application.helpers; import application.helpers.wrappers.WrappedException; import javafx.application.Platform; /** * This thread is used to enable working in the background while the progress * view is displayed * * @author Bianca * */ public class WorkWhileProgressThread extends Thread { /** * The callback used to change the view after the work is done */ private ChangeViewCallback cb; /** * There are 2 possible workloads: reading the file for the overview * ({@code True}) or creating the files for being inspected ({@code False}) */ private boolean overview; /** * * @param cb The callback * @param overView {@code True} if the initial file needs to be read or * {@code False} if the files for being inspected need to be * created */ public WorkWhileProgressThread(ChangeViewCallback cb, boolean overView) { this.cb = cb; this.overview = overView; } @Override public void run() { //read the file if (overview) { try { this.cb.callFillDataList(); } catch (WrappedException e) { cb.callErrorReadingFile(e.getReason()); } Platform.runLater(new Runnable() { @Override public void run() { cb.callOverview(); } }); } else { //create the selected files try { this.cb.callCreateTempFiles(); Platform.runLater(new Runnable() { @Override public void run() { cb.callInspect(); } }); } catch (WrappedException e) { this.cb.callErrorWritingTemFiles(e.getReason()); Platform.runLater(new Runnable() { @Override public void run() { cb.callInspectWithError(); } }); } } } }