workcraft/workcraft

View on GitHub
workcraft/WorkcraftCore/src/org/workcraft/tasks/ExtendedTaskManager.java

Summary

Maintainability
A
0 mins
Test Coverage
package org.workcraft.tasks;

import org.workcraft.Framework;
import org.workcraft.gui.MainWindow;

import javax.swing.*;

public class ExtendedTaskManager extends DefaultTaskManager {

    @Override
    public <T> Result<? extends T> rawExecute(Task<T> task, String description, ProgressMonitor<? super T> observer) {
        Framework framework = Framework.getInstance();
        if (!SwingUtilities.isEventDispatchThread() || !framework.isInGuiMode()) {
            return super.rawExecute(task, description, observer);
        } else {
            MainWindow mainWindow = framework.getMainWindow();
            OperationCancelDialog<T> cancelDialog = new OperationCancelDialog<>(mainWindow, description);
            ProgressMonitorArray<T> observers = new ProgressMonitorArray<>();
            if (observer != null) {
                observers.add(observer);
            }
            observers.add(cancelDialog);
            this.queue(task, description, observers);
            cancelDialog.setVisible(true);
            return cancelDialog.waitResult();
        }
    }

}