annotate dwtx/jface/wizard/ProgressMonitorPart.d @ 192:c3583c6ec027

Added missing default cases for switch statements
author Frank Benoit <benoit@tionex.de>
date Mon, 03 Nov 2008 22:52:26 +0100
parents 5df4896124c7
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
35
ef4534de0cf9 remaining files
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: 43
diff changeset
2 * Copyright (c) 2000, 2007 IBM Corporation and others.
35
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3 * All rights reserved. This program and the accompanying materials
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4 * are made available under the terms of the Eclipse Public License v1.0
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
5 * which accompanies this distribution, and is available at
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
6 * http://www.eclipse.org/legal/epl-v10.html
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
7 *
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
8 * Contributors:
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
9 * IBM Corporation - initial API and implementation
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
10 * Port to the D programming language:
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
11 * Frank Benoit <benoit@tionex.de>
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
12 *******************************************************************************/
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
13 module dwtx.jface.wizard.ProgressMonitorPart;
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
14
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
15
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
16 import dwt.DWT;
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
17 import dwt.graphics.Font;
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
18 import dwt.graphics.FontMetrics;
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
19 import dwt.graphics.GC;
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
20 import dwt.layout.GridData;
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
21 import dwt.layout.GridLayout;
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
22 import dwt.widgets.Composite;
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
23 import dwt.widgets.Control;
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
24 import dwt.widgets.Event;
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
25 import dwt.widgets.Label;
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
26 import dwt.widgets.Layout;
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
27 import dwt.widgets.Listener;
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
28 import dwtx.core.runtime.Assert;
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
29 import dwtx.core.runtime.IProgressMonitor;
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
30 import dwtx.core.runtime.IProgressMonitorWithBlocking;
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
31 import dwtx.core.runtime.IStatus;
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
32 import dwtx.jface.dialogs.ProgressIndicator;
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
33 import dwtx.jface.resource.JFaceResources;
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
34
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
35 import dwt.dwthelper.utils;
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
36
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
37 /**
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
38 * A standard implementation of an IProgressMonitor. It consists
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
39 * of a label displaying the task and subtask name, and a
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
40 * progress indicator to show progress. In contrast to
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
41 * <code>ProgressMonitorDialog</code> this class only implements
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
42 * <code>IProgressMonitor</code>.
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
43 */
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
44 public class ProgressMonitorPart : Composite,
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
45 IProgressMonitorWithBlocking {
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
46
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
47 /** the label */
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
48 protected Label fLabel;
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
49
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
50 /** the current task name */
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
51 protected String fTaskName;
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
52
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
53 /** the current sub task name */
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
54 protected String fSubTaskName;
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
55
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
56 /** the progress indicator */
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
57 protected ProgressIndicator fProgressIndicator;
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
58
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
59 /** the cancel component */
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
60 protected Control fCancelComponent;
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
61
70
46a6e0e6ccd4 Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
62 /** true if canceled */
35
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
63 protected bool fIsCanceled;
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
64
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
65 /** current blocked status */
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
66 protected IStatus blockedStatus;
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
67
70
46a6e0e6ccd4 Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
68 /** the cancel lister attached to the cancel component */
35
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
69 protected Listener fCancelListener;
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
70 private void init_fCancelListener(){
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
71 fCancelListener = new class Listener {
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
72 public void handleEvent(Event e) {
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
73 setCanceled(true);
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
74 if (fCancelComponent !is null) {
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
75 fCancelComponent.setEnabled(false);
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
76 }
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
77 }
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
78 };
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
79 }
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
80 /**
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
81 * Creates a ProgressMonitorPart.
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
82 * @param parent The DWT parent of the part.
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
83 * @param layout The DWT grid bag layout used by the part. A client
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
84 * can supply the layout to control how the progress monitor part
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
85 * is layed out. If null is passed the part uses its default layout.
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
86 */
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
87 public this(Composite parent, Layout layout) {
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
88 this(parent, layout, DWT.DEFAULT);
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
89 }
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
90
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
91 /**
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
92 * Creates a ProgressMonitorPart.
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
93 * @param parent The DWT parent of the part.
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
94 * @param layout The DWT grid bag layout used by the part. A client
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
95 * can supply the layout to control how the progress monitor part
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
96 * is layed out. If null is passed the part uses its default layout.
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
97 * @param progressIndicatorHeight The height of the progress indicator in pixel.
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
98 */
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
99 public this(Composite parent, Layout layout,
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
100 int progressIndicatorHeight) {
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
101 init_fCancelListener();
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
102 super(parent, DWT.NONE);
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
103 initialize(layout, progressIndicatorHeight);
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
104 }
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
105
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
106 /**
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
107 * Attaches the progress monitor part to the given cancel
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
108 * component.
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
109 * @param cancelComponent the control whose selection will
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
110 * trigger a cancel
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
111 */
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
112 public void attachToCancelComponent(Control cancelComponent) {
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
113 Assert.isNotNull(cancelComponent);
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
114 fCancelComponent = cancelComponent;
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
115 fCancelComponent.addListener(DWT.Selection, fCancelListener);
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
116 }
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
117
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
118 /**
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
119 * Implements <code>IProgressMonitor.beginTask</code>.
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
120 * @see IProgressMonitor#beginTask(java.lang.String, int)
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
121 */
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
122 public void beginTask(String name, int totalWork) {
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
123 fTaskName = name;
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
124 updateLabel();
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
125 if (totalWork is IProgressMonitor.UNKNOWN || totalWork is 0) {
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
126 fProgressIndicator.beginAnimatedTask();
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
127 } else {
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
128 fProgressIndicator.beginTask(totalWork);
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
129 }
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
130 }
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
131
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
132 /**
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
133 * Implements <code>IProgressMonitor.done</code>.
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
134 * @see IProgressMonitor#done()
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
135 */
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
136 public void done() {
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
137 fLabel.setText("");//$NON-NLS-1$
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
138 fProgressIndicator.sendRemainingWork();
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
139 fProgressIndicator.done();
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
140 }
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
141
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
142 /**
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
143 * Escapes any occurrence of '&' in the given String so that
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
144 * it is not considered as a mnemonic
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
145 * character in DWT ToolItems, MenuItems, Button and Labels.
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
146 * @param in the original String
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
147 * @return The converted String
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
148 */
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
149 protected static String escapeMetaCharacters(String in_) {
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
150 if (in_ is null || in_.indexOf('&') < 0) {
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
151 return in_;
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
152 }
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
153 int length = in_.length;
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
154 StringBuffer out_ = new StringBuffer(length + 1);
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
155 for (int i = 0; i < length; i++) {
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
156 char c = in_.charAt(i);
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
157 if (c is '&') {
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
158 out_.append("&&");//$NON-NLS-1$
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
159 } else {
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
160 out_.append(c);
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
161 }
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
162 }
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
163 return out_.toString();
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
164 }
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
165
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
166 /**
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
167 * Creates the progress monitor's UI parts and layouts them
70
46a6e0e6ccd4 Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
168 * according to the given layout. If the layout is <code>null</code>
35
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
169 * the part's default layout is used.
70
46a6e0e6ccd4 Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
170 * @param layout The layout for the receiver.
35
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
171 * @param progressIndicatorHeight The suggested height of the indicator
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
172 */
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
173 protected void initialize(Layout layout, int progressIndicatorHeight) {
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
174 if (layout is null) {
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
175 GridLayout l = new GridLayout();
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
176 l.marginWidth = 0;
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
177 l.marginHeight = 0;
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
178 l.numColumns = 1;
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
179 layout = l;
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
180 }
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
181 setLayout(layout);
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
182
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
183 fLabel = new Label(this, DWT.LEFT);
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
184 fLabel.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
185
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
186 if (progressIndicatorHeight is DWT.DEFAULT) {
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
187 GC gc = new GC(fLabel);
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
188 FontMetrics fm = gc.getFontMetrics();
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
189 gc.dispose();
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
190 progressIndicatorHeight = fm.getHeight();
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
191 }
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
192
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
193 fProgressIndicator = new ProgressIndicator(this);
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
194 GridData gd = new GridData();
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
195 gd.horizontalAlignment = GridData.FILL;
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
196 gd.grabExcessHorizontalSpace = true;
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
197 gd.verticalAlignment = GridData.CENTER;
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
198 gd.heightHint = progressIndicatorHeight;
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
199 fProgressIndicator.setLayoutData(gd);
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
200 }
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
201
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
202 /**
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
203 * Implements <code>IProgressMonitor.internalWorked</code>.
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
204 * @see IProgressMonitor#internalWorked(double)
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
205 */
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
206 public void internalWorked(double work) {
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
207 fProgressIndicator.worked(work);
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
208 }
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
209
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
210 /**
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
211 * Implements <code>IProgressMonitor.isCanceled</code>.
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
212 * @see IProgressMonitor#isCanceled()
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
213 */
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
214 public bool isCanceled() {
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
215 return fIsCanceled;
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
216 }
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
217
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
218 /**
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
219 * Detach the progress monitor part from the given cancel
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
220 * component
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
221 * @param cc
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
222 */
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
223 public void removeFromCancelComponent(Control cc) {
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
224 Assert.isTrue(fCancelComponent is cc && fCancelComponent !is null);
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
225 fCancelComponent.removeListener(DWT.Selection, fCancelListener);
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
226 fCancelComponent = null;
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
227 }
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
228
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
229 /**
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
230 * Implements <code>IProgressMonitor.setCanceled</code>.
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
231 * @see IProgressMonitor#setCanceled(bool)
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
232 */
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
233 public void setCanceled(bool b) {
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
234 fIsCanceled = b;
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
235 }
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
236
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
237 /**
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
238 * Sets the progress monitor part's font.
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
239 */
43
ea8ff534f622 Fix override and super aliases
Frank Benoit <benoit@tionex.de>
parents: 35
diff changeset
240 public override void setFont(Font font) {
35
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
241 super.setFont(font);
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
242 fLabel.setFont(font);
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
243 fProgressIndicator.setFont(font);
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
244 }
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
245
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
246 /*
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
247 * (non-Javadoc)
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
248 * @see dwtx.core.runtime.IProgressMonitor#setTaskName(java.lang.String)
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
249 */
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
250 public void setTaskName(String name) {
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
251 fTaskName = name;
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
252 updateLabel();
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
253 }
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
254
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
255 /*
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
256 * (non-Javadoc)
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
257 * @see dwtx.core.runtime.IProgressMonitor#subTask(java.lang.String)
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
258 */
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
259 public void subTask(String name) {
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
260 fSubTaskName = name;
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
261 updateLabel();
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
262 }
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
263
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
264 /**
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
265 * Updates the label with the current task and subtask names.
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
266 */
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
267 protected void updateLabel() {
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
268 if (blockedStatus is null) {
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
269 String text = taskLabel();
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
270 fLabel.setText(text);
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
271 } else {
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
272 fLabel.setText(blockedStatus.getMessage());
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
273 }
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
274
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
275 //Force an update as we are in the UI Thread
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
276 fLabel.update();
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
277 }
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
278
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
279 /**
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
280 * Return the label for showing tasks
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
281 * @return String
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
282 */
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
283 private String taskLabel() {
72
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 71
diff changeset
284 bool hasTask= fTaskName !is null && fTaskName.length > 0;
70
46a6e0e6ccd4 Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
285 bool hasSubtask= fSubTaskName !is null && fSubTaskName.length > 0;
71
4878bef4a38e Some fixing
Frank Benoit <benoit@tionex.de>
parents: 70
diff changeset
286
70
46a6e0e6ccd4 Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
287 if (hasTask) {
46a6e0e6ccd4 Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
288 if (hasSubtask)
46a6e0e6ccd4 Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
289 return escapeMetaCharacters(JFaceResources.format(
71
4878bef4a38e Some fixing
Frank Benoit <benoit@tionex.de>
parents: 70
diff changeset
290 "Set_SubTask", [ fTaskName, fSubTaskName ] ));//$NON-NLS-1$
70
46a6e0e6ccd4 Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
291 return escapeMetaCharacters(fTaskName);
71
4878bef4a38e Some fixing
Frank Benoit <benoit@tionex.de>
parents: 70
diff changeset
292
70
46a6e0e6ccd4 Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
293 } else if (hasSubtask) {
46a6e0e6ccd4 Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
294 return escapeMetaCharacters(fSubTaskName);
71
4878bef4a38e Some fixing
Frank Benoit <benoit@tionex.de>
parents: 70
diff changeset
295
70
46a6e0e6ccd4 Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
296 } else {
46a6e0e6ccd4 Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
297 return ""; //$NON-NLS-1$
35
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
298 }
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
299 }
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
300
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
301 /**
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
302 * Implements <code>IProgressMonitor.worked</code>.
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
303 * @see IProgressMonitor#worked(int)
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
304 */
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
305 public void worked(int work) {
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
306 internalWorked(work);
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
307 }
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
308
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
309 /* (non-Javadoc)
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
310 * @see dwtx.core.runtime.IProgressMonitorWithBlocking#clearBlocked()
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
311 */
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
312 public void clearBlocked() {
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
313 blockedStatus = null;
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
314 updateLabel();
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
315
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
316 }
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
317
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
318 /* (non-Javadoc)
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
319 * @see dwtx.core.runtime.IProgressMonitorWithBlocking#setBlocked(dwtx.core.runtime.IStatus)
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
320 */
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
321 public void setBlocked(IStatus reason) {
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
322 blockedStatus = reason;
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
323 updateLabel();
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
324
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
325 }
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
326 }