annotate dwtx/jface/operation/AccumulatingProgressMonitor.d @ 70:46a6e0e6ccd4

Merge with d-fied sources of 3.4M7
author Frank Benoit <benoit@tionex.de>
date Thu, 22 May 2008 01:36:46 +0200
parents ef6c06252a87
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
6
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1 /*******************************************************************************
70
46a6e0e6ccd4 Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents: 56
diff changeset
2 * Copyright (c) 2000, 2007 IBM Corporation and others.
6
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3 * All rights reserved. This program and the accompanying materials
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4 * are made available under the terms of the Eclipse Public License v1.0
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
5 * which accompanies this distribution, and is available at
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
6 * http://www.eclipse.org/legal/epl-v10.html
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
7 *
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
8 * Contributors:
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
9 * IBM Corporation - initial API and implementation
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
10 * Port to the D programming language:
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
11 * Frank Benoit <benoit@tionex.de>
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
12 *******************************************************************************/
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
13 module dwtx.jface.operation.AccumulatingProgressMonitor;
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
14
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
15
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
16 import dwt.widgets.Display;
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
17 import dwtx.core.runtime.Assert;
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
18 import dwtx.core.runtime.IProgressMonitor;
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
19 import dwtx.core.runtime.IProgressMonitorWithBlocking;
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
20 import dwtx.core.runtime.IStatus;
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
21 import dwtx.core.runtime.ProgressMonitorWrapper;
44
25461c48a9bd some FIXME
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
22 import dwtx.jface.dialogs.Dialog;
6
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
23
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
24 import dwt.dwthelper.utils;
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
25 import dwt.dwthelper.Runnable;
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
26
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
27 /**
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
28 * A progress monitor that accumulates <code>worked</code> and <code>subtask</code>
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
29 * calls in the following way by wrapping a standard progress monitor:
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
30 * <ul>
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
31 * <li> When a <code>worked</code> or <code>subtask</code> call occurs the first time,
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
32 * the progress monitor posts a runnable into the asynchronous DWT event queue.
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
33 * </li>
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
34 * <li> Subsequent calls to <code>worked</code> or <code>subtask</code> do not post
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
35 * a new runnable as long as a previous runnable still exists in the DWT event
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
36 * queue. In this case, the progress monitor just updates the internal state of
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
37 * the runnable that waits in the DWT event queue for its execution. If no runnable
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
38 * exists, a new one is created and posted into the event queue.
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
39 * </ul>
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
40 * <p>
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
41 * This class is internal to the framework; clients outside JFace should not
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
42 * use this class.
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
43 * </p>
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
44 */
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
45 /* package */class AccumulatingProgressMonitor : ProgressMonitorWrapper {
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
46
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
47 /**
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
48 * The display.
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
49 */
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
50 private Display display;
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
51
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
52 /**
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
53 * The collector, or <code>null</code> if none.
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
54 */
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
55 private Collector collector;
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
56
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
57 private String currentTask = ""; //$NON-NLS-1$
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
58
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
59 private class Collector : Runnable {
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
60 private String subTask_;
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
61
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
62 private double worked_;
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
63
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
64 private IProgressMonitor monitor;
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
65
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
66 /**
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
67 * Create a new collector.
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
68 * @param subTask
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
69 * @param work
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
70 * @param monitor
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
71 */
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
72 public this(String subTask_, double work, IProgressMonitor monitor) {
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
73 this.subTask_ = subTask_;
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
74 this.worked_ = work;
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
75 this.monitor = monitor;
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
76 }
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
77
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
78 /**
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
79 * Add worked to the work.
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
80 * @param workedIncrement
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
81 */
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
82 public void worked(double workedIncrement) {
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
83 this.worked_ = this.worked_ + workedIncrement;
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
84 }
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
85
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
86 /**
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
87 * Set the subTask name.
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
88 * @param subTaskName
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
89 */
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
90 public void subTask(String subTaskName) {
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
91 this.subTask_ = subTaskName;
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
92 }
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
93
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
94 /**
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
95 * Run the collector.
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
96 */
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
97 public void run() {
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
98 clearCollector(this);
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
99 if (subTask_ !is null) {
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
100 monitor.subTask(subTask_);
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
101 }
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
102 if (worked_ > 0) {
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
103 monitor.internalWorked(worked_);
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
104 }
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
105 }
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
106 }
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
107
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
108 /**
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
109 * Creates an accumulating progress monitor wrapping the given one
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
110 * that uses the given display.
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
111 *
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
112 * @param monitor the actual progress monitor to be wrapped
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
113 * @param display the DWT display used to forward the calls
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
114 * to the wrapped progress monitor
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
115 */
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
116 public this(IProgressMonitor monitor, Display display) {
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
117 super(monitor);
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
118 Assert.isNotNull(display);
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
119 this.display = display;
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
120 }
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
121
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
122 /* (non-Javadoc)
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
123 * Method declared on IProgressMonitor.
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
124 */
43
ea8ff534f622 Fix override and super aliases
Frank Benoit <benoit@tionex.de>
parents: 39
diff changeset
125 public override void beginTask(String name, int totalWork) {
6
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
126 synchronized (this) {
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
127 collector = null;
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
128 }
70
46a6e0e6ccd4 Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents: 56
diff changeset
129 display.asyncExec(new class(name,totalWork) Runnable {
56
ef6c06252a87 fix anon classes
Frank Benoit <benoit@tionex.de>
parents: 44
diff changeset
130 String name_;
ef6c06252a87 fix anon classes
Frank Benoit <benoit@tionex.de>
parents: 44
diff changeset
131 int totalWork_;
ef6c06252a87 fix anon classes
Frank Benoit <benoit@tionex.de>
parents: 44
diff changeset
132 this(String a, int b){
ef6c06252a87 fix anon classes
Frank Benoit <benoit@tionex.de>
parents: 44
diff changeset
133 name_=a;
ef6c06252a87 fix anon classes
Frank Benoit <benoit@tionex.de>
parents: 44
diff changeset
134 totalWork_=b;
ef6c06252a87 fix anon classes
Frank Benoit <benoit@tionex.de>
parents: 44
diff changeset
135 }
6
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
136 public void run() {
56
ef6c06252a87 fix anon classes
Frank Benoit <benoit@tionex.de>
parents: 44
diff changeset
137 currentTask = name_;
ef6c06252a87 fix anon classes
Frank Benoit <benoit@tionex.de>
parents: 44
diff changeset
138 getWrappedProgressMonitor().beginTask(name_, totalWork_);
6
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
139 }
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
140 });
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
141 }
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
142
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
143 /**
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
144 * Clears the collector object used to accumulate work and subtask calls
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
145 * if it matches the given one.
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
146 * @param collectorToClear
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
147 */
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
148 private synchronized void clearCollector(Collector collectorToClear) {
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
149 // Check if the accumulator is still using the given collector.
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
150 // If not, don't clear it.
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
151 if (this.collector is collectorToClear) {
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
152 this.collector = null;
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
153 }
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
154 }
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
155
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
156 /**
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
157 * Creates a collector object to accumulate work and subtask calls.
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
158 * @param subTask
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
159 * @param work
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
160 */
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
161 private void createCollector(String subTask, double work) {
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
162 collector = new Collector(subTask, work, getWrappedProgressMonitor());
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
163 display.asyncExec(collector);
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
164 }
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
165
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
166 /* (non-Javadoc)
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
167 * Method declared on IProgressMonitor.
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
168 */
43
ea8ff534f622 Fix override and super aliases
Frank Benoit <benoit@tionex.de>
parents: 39
diff changeset
169 public override void done() {
6
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
170 synchronized (this) {
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
171 collector = null;
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
172 }
70
46a6e0e6ccd4 Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents: 56
diff changeset
173 display.asyncExec(new class Runnable {
6
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
174 public void run() {
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
175 getWrappedProgressMonitor().done();
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
176 }
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
177 });
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
178 }
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
179
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
180 /* (non-Javadoc)
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
181 * Method declared on IProgressMonitor.
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
182 */
43
ea8ff534f622 Fix override and super aliases
Frank Benoit <benoit@tionex.de>
parents: 39
diff changeset
183 public override synchronized void internalWorked(double work) {
6
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
184 if (collector is null) {
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
185 createCollector(null, work);
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
186 } else {
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
187 collector.worked(work);
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
188 }
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
189 }
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
190
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
191 /* (non-Javadoc)
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
192 * Method declared on IProgressMonitor.
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
193 */
43
ea8ff534f622 Fix override and super aliases
Frank Benoit <benoit@tionex.de>
parents: 39
diff changeset
194 public override void setTaskName(String name) {
6
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
195 synchronized (this) {
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
196 collector = null;
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
197 }
70
46a6e0e6ccd4 Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents: 56
diff changeset
198 display.asyncExec(new class(name) Runnable {
56
ef6c06252a87 fix anon classes
Frank Benoit <benoit@tionex.de>
parents: 44
diff changeset
199 String name_;
ef6c06252a87 fix anon classes
Frank Benoit <benoit@tionex.de>
parents: 44
diff changeset
200 this(String a){
ef6c06252a87 fix anon classes
Frank Benoit <benoit@tionex.de>
parents: 44
diff changeset
201 name_=a;
ef6c06252a87 fix anon classes
Frank Benoit <benoit@tionex.de>
parents: 44
diff changeset
202 }
6
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
203 public void run() {
56
ef6c06252a87 fix anon classes
Frank Benoit <benoit@tionex.de>
parents: 44
diff changeset
204 currentTask = name_;
ef6c06252a87 fix anon classes
Frank Benoit <benoit@tionex.de>
parents: 44
diff changeset
205 getWrappedProgressMonitor().setTaskName(name_);
6
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
206 }
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
207 });
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
208 }
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
209
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
210 /* (non-Javadoc)
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
211 * Method declared on IProgressMonitor.
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
212 */
43
ea8ff534f622 Fix override and super aliases
Frank Benoit <benoit@tionex.de>
parents: 39
diff changeset
213 public override synchronized void subTask(String name) {
6
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
214 if (collector is null) {
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
215 createCollector(name, 0);
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
216 } else {
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
217 collector.subTask(name);
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
218 }
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
219 }
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
220
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
221 /* (non-Javadoc)
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
222 * Method declared on IProgressMonitor.
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
223 */
43
ea8ff534f622 Fix override and super aliases
Frank Benoit <benoit@tionex.de>
parents: 39
diff changeset
224 public override synchronized void worked(int work) {
6
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
225 internalWorked(work);
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
226 }
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
227
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
228 /* (non-Javadoc)
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
229 * @see dwtx.core.runtime.ProgressMonitorWrapper#clearBlocked()
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
230 */
43
ea8ff534f622 Fix override and super aliases
Frank Benoit <benoit@tionex.de>
parents: 39
diff changeset
231 public override void clearBlocked() {
6
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
232
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
233 //If this is a monitor that can report blocking do so.
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
234 //Don't bother with a collector as this should only ever
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
235 //happen once and prevent any more progress.
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
236 IProgressMonitor pm = getWrappedProgressMonitor();
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
237 if (!(cast(IProgressMonitorWithBlocking)pm )) {
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
238 return;
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
239 }
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
240
39
644f1334b451 fix anon classes
Frank Benoit <benoit@tionex.de>
parents: 6
diff changeset
241 display.asyncExec(new class(pm) Runnable {
6
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
242 IProgressMonitor pm_;
39
644f1334b451 fix anon classes
Frank Benoit <benoit@tionex.de>
parents: 6
diff changeset
243 this(IProgressMonitor a){ pm_=a; }
6
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
244 /* (non-Javadoc)
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
245 * @see java.lang.Runnable#run()
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
246 */
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
247 public void run() {
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
248 (cast(IProgressMonitorWithBlocking) pm_).clearBlocked();
44
25461c48a9bd some FIXME
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
249 Dialog.getBlockedHandler().clearBlocked();
6
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
250 }
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
251 });
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
252 }
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
253
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
254 /* (non-Javadoc)
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
255 * @see dwtx.core.runtime.ProgressMonitorWrapper#setBlocked(dwtx.core.runtime.IStatus)
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
256 */
43
ea8ff534f622 Fix override and super aliases
Frank Benoit <benoit@tionex.de>
parents: 39
diff changeset
257 public override void setBlocked(IStatus reason) {
6
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
258 //If this is a monitor that can report blocking do so.
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
259 //Don't bother with a collector as this should only ever
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
260 //happen once and prevent any more progress.
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
261 IProgressMonitor pm = getWrappedProgressMonitor();
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
262 if (!(cast(IProgressMonitorWithBlocking)pm )) {
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
263 return;
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
264 }
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
265
56
ef6c06252a87 fix anon classes
Frank Benoit <benoit@tionex.de>
parents: 44
diff changeset
266 display.asyncExec(new class(pm,reason) Runnable {
6
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
267 IProgressMonitor pm_;
56
ef6c06252a87 fix anon classes
Frank Benoit <benoit@tionex.de>
parents: 44
diff changeset
268 IStatus reason_;
ef6c06252a87 fix anon classes
Frank Benoit <benoit@tionex.de>
parents: 44
diff changeset
269 this(IProgressMonitor a,IStatus b){
ef6c06252a87 fix anon classes
Frank Benoit <benoit@tionex.de>
parents: 44
diff changeset
270 pm_=a;
ef6c06252a87 fix anon classes
Frank Benoit <benoit@tionex.de>
parents: 44
diff changeset
271 reason_=b;
ef6c06252a87 fix anon classes
Frank Benoit <benoit@tionex.de>
parents: 44
diff changeset
272 }
6
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
273 /* (non-Javadoc)
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
274 * @see java.lang.Runnable#run()
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
275 */
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
276 public void run() {
56
ef6c06252a87 fix anon classes
Frank Benoit <benoit@tionex.de>
parents: 44
diff changeset
277 (cast(IProgressMonitorWithBlocking) pm_).setBlocked(reason_);
6
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
278 //Do not give a shell as we want it to block until it opens.
56
ef6c06252a87 fix anon classes
Frank Benoit <benoit@tionex.de>
parents: 44
diff changeset
279 Dialog.getBlockedHandler().showBlocked(pm_, reason_, currentTask);
6
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
280 }
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
281 });
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
282 }
1a6747be662d Jface operations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
283 }