Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
View | Details | Raw Unified | Return to bug 219189
Collapse All | Expand All

(-)src/org/eclipse/mylyn/internal/tasks/ui/actions/AbstractTaskAction.java (-16 / +43 lines)
Lines 10-15 Link Here
10
10
11
import java.util.List;
11
import java.util.List;
12
12
13
import org.eclipse.core.runtime.IProgressMonitor;
14
import org.eclipse.core.runtime.IStatus;
15
import org.eclipse.core.runtime.Status;
16
import org.eclipse.core.runtime.jobs.Job;
13
import org.eclipse.jface.action.Action;
17
import org.eclipse.jface.action.Action;
14
import org.eclipse.mylyn.tasks.core.AbstractRepositoryQuery;
18
import org.eclipse.mylyn.tasks.core.AbstractRepositoryQuery;
15
import org.eclipse.mylyn.tasks.core.AbstractTask;
19
import org.eclipse.mylyn.tasks.core.AbstractTask;
Lines 24-48 Link Here
24
28
25
	@Override
29
	@Override
26
	public void run() {
30
	public void run() {
27
		for (AbstractTaskContainer element : selectedElements) {
31
		new Job("Marking tasks") {
28
			if (element instanceof AbstractTask) {
32
			@Override
29
				AbstractTask repositoryTask = (AbstractTask) element;
33
			protected IStatus run(IProgressMonitor monitor) {
30
				performActionOnTask(repositoryTask);
34
				monitor.beginTask("Marking tasks", IProgressMonitor.UNKNOWN);
31
			} else if (element instanceof AbstractRepositoryQuery) {
35
				try {
32
				AbstractRepositoryQuery repositoryQuery = (AbstractRepositoryQuery) element;
36
					for (AbstractTaskContainer element : selectedElements) {
33
				for (AbstractTask queryHit : repositoryQuery.getChildren()) {
37
						if(monitor.isCanceled()) {
34
					performActionOnTask(queryHit);
38
							return Status.CANCEL_STATUS;
35
				}
39
						}
36
			} else if (element != null) {
40
						
37
				AbstractTaskContainer container = element;
41
						if (element instanceof AbstractTask) {
38
				for (AbstractTask iTask : container.getChildren()) {
42
							AbstractTask repositoryTask = (AbstractTask) element;
39
					if (iTask != null) {
43
							performActionOnTask(repositoryTask);
40
						AbstractTask repositoryTask = iTask;
44
							monitor.worked(1);
41
						performActionOnTask(repositoryTask);
45
						} else if (element instanceof AbstractRepositoryQuery) {
46
							AbstractRepositoryQuery repositoryQuery = (AbstractRepositoryQuery) element;
47
							for (AbstractTask queryHit : repositoryQuery.getChildren()) {
48
								if(monitor.isCanceled()) {
49
									return Status.CANCEL_STATUS;
50
								}
51
								performActionOnTask(queryHit);
52
								monitor.worked(1);
53
							}
54
						} else if (element != null) {
55
							AbstractTaskContainer container = element;
56
							for (AbstractTask task : container.getChildren()) {
57
								if(monitor.isCanceled()) {
58
									return Status.CANCEL_STATUS;
59
								}
60
								if (task != null) {
61
									performActionOnTask(task);
62
								}
63
								monitor.worked(1);
64
							}
65
						}
42
					}
66
					}
67
					return Status.OK_STATUS;
68
				} finally {
69
					monitor.done();
43
				}
70
				}
44
			}
71
			}
45
		}
72
		}.schedule();
46
	}
73
	}
47
74
48
	protected abstract void performActionOnTask(AbstractTask repositoryTask);
75
	protected abstract void performActionOnTask(AbstractTask repositoryTask);

Return to bug 219189