2
* Created on Oct 18, 2004
4
* @author Fabio Zadrozny
6
package org.python.pydev.utils;
8
import java.lang.reflect.InvocationTargetException;
10
import org.eclipse.core.runtime.CoreException;
11
import org.eclipse.core.runtime.IProgressMonitor;
12
import org.eclipse.jface.dialogs.ProgressMonitorDialog;
13
import org.eclipse.jface.operation.IRunnableWithProgress;
14
import org.eclipse.swt.widgets.Shell;
15
import org.eclipse.ui.actions.WorkspaceModifyOperation;
18
* Helper class for executing an action and showing its progress.
20
* @author Fabio Zadrozny
22
public class ProgressOperation extends WorkspaceModifyOperation {
23
private final ProgressAction action;
25
public IProgressMonitor monitor;
26
public int estimatedTaskUnits = 10000;
28
public ProgressOperation(ProgressAction action) {
33
protected void execute(IProgressMonitor monitor) throws CoreException,
34
InvocationTargetException, InterruptedException {
37
this.monitor = monitor;
38
action.monitor = monitor;
39
monitor.beginTask("Action being executed...", estimatedTaskUnits);
42
} catch (Exception e) {
52
public static void startAction(Shell shell, ProgressAction action) {
53
ProgressMonitorDialog monitorDialog = new ProgressMonitorDialog(
55
monitorDialog.setBlockOnOpen(false);
57
IRunnableWithProgress operation = new ProgressOperation(action);
58
monitorDialog.run(false, false, operation);
60
} catch (InvocationTargetException e) {
62
} catch (InterruptedException e) {