package husacct.control.task.threading; import husacct.ServiceProvider; import husacct.control.presentation.util.LoadingDialog; import husacct.control.task.MainController; public class ThreadWithLoader implements Runnable { private static int taskcounter = 0; private LoadingDialog loadingDialog; private Thread taskThread; private Thread monitorThread; public ThreadWithLoader(MainController mainController, String progressInfoText, Runnable threadTask){ int taskCounter = ThreadWithLoader.taskcounter++; if (ServiceProvider.getInstance().getControlService().isGuiEnabled()) { loadingDialog = new LoadingDialog(mainController, progressInfoText); } else { loadingDialog = null; } taskThread = new Thread(threadTask); monitorThread = new MonitorThread(taskThread, loadingDialog); taskThread.setName(String.format("thread-%s", taskCounter)); monitorThread.setName(String.format("monitor-%s", taskCounter)); } public LoadingDialog getLoadingDialog() { return this.loadingDialog; } public Thread getThread() { return this.taskThread; } @Override public void run() { taskThread.start(); monitorThread.start(); if (loadingDialog != null) { loadingDialog.run(); } } }