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 156152 | Differences between
and this patch

Collapse All | Expand All

(-)src/org/eclipse/team/internal/ui/synchronize/SubscriberRefreshSchedule.java (-3 / +68 lines)
Lines 7-16 Link Here
7
 *
7
 *
8
 * Contributors:
8
 * Contributors:
9
 *     IBM Corporation - initial API and implementation
9
 *     IBM Corporation - initial API and implementation
10
 *     Trevor S. Kaufman <endante@gmail.com> - bug 156152
10
 *******************************************************************************/
11
 *******************************************************************************/
11
package org.eclipse.team.internal.ui.synchronize;
12
package org.eclipse.team.internal.ui.synchronize;
12
13
13
import com.ibm.icu.text.DateFormat;
14
import java.util.Date;
14
import java.util.Date;
15
15
16
import org.eclipse.core.runtime.jobs.Job;
16
import org.eclipse.core.runtime.jobs.Job;
Lines 20-25 Link Here
20
import org.eclipse.ui.IMemento;
20
import org.eclipse.ui.IMemento;
21
import org.eclipse.ui.actions.ActionFactory;
21
import org.eclipse.ui.actions.ActionFactory;
22
22
23
import com.ibm.icu.text.DateFormat;
24
import com.ibm.icu.util.Calendar;
25
23
/**
26
/**
24
 * Schedule to refresh a subscriber at a specified interval. The schedule can be disabled or enabled
27
 * Schedule to refresh a subscriber at a specified interval. The schedule can be disabled or enabled
25
 * and will create the refresh job.
28
 * and will create the refresh job.
Lines 28-33 Link Here
28
 */
31
 */
29
public class SubscriberRefreshSchedule {
32
public class SubscriberRefreshSchedule {
30
	private long refreshInterval = 3600; // 1 hour default
33
	private long refreshInterval = 3600; // 1 hour default
34
	private Date refreshStart;
35
	private boolean runOnce = false;
31
	
36
	
32
	private boolean enabled = false;
37
	private boolean enabled = false;
33
	
38
	
Lines 46-51 Link Here
46
	 * Key for schedule in memento
51
	 * Key for schedule in memento
47
	 */
52
	 */
48
	private static final String CTX_REFRESHSCHEDULE_ENABLED = TeamUIPlugin.ID + ".CTX_REFRESHSCHEDULE_ENABLED"; //$NON-NLS-1$
53
	private static final String CTX_REFRESHSCHEDULE_ENABLED = TeamUIPlugin.ID + ".CTX_REFRESHSCHEDULE_ENABLED"; //$NON-NLS-1$
54
	
55
	/**
56
	 * Key for start date in memento
57
	 */
58
	private static final String CTX_REFRESHSCHEDULE_START = TeamUIPlugin.ID + ".CTX_REFRESHSCHEDULE_START"; //$NON-NLS-1$
59
	
60
	/**
61
	 * Key for run once in memento
62
	 */
63
	private static final String CTX_REFRESHSCHEDULE_RUNONCE = TeamUIPlugin.ID + ".CTX_REFRESHSCHEDULE_RUNONCE"; //$NON-NLS-1$
49
		
64
		
50
	private IRefreshSubscriberListener refreshSubscriberListener = new IRefreshSubscriberListener() {
65
	private IRefreshSubscriberListener refreshSubscriberListener = new IRefreshSubscriberListener() {
51
		public void refreshStarted(IRefreshEvent event) {
66
		public void refreshStarted(IRefreshEvent event) {
Lines 69-74 Link Here
69
	public SubscriberRefreshSchedule(IRefreshable refreshable) {
84
	public SubscriberRefreshSchedule(IRefreshable refreshable) {
70
		this.refreshable = refreshable;
85
		this.refreshable = refreshable;
71
		RefreshParticipantJob.addRefreshListener(refreshSubscriberListener);
86
		RefreshParticipantJob.addRefreshListener(refreshSubscriberListener);
87
		
88
		Calendar cal = Calendar.getInstance();
89
		cal.clear();
90
		refreshStart = cal.getTime();
72
	}
91
	}
73
92
74
	/**
93
	/**
Lines 126-134 Link Here
126
		}
145
		}
127
		job.setRefreshInterval(getRefreshInterval());
146
		job.setRefreshInterval(getRefreshInterval());
128
		job.setRestartOnCancel(true);
147
		job.setRestartOnCancel(true);
129
		job.setReschedule(true);
148
		job.setReschedule(!runOnce);
130
		// Schedule delay is in mills.
149
		// Schedule delay is in mills.
131
		job.schedule(getRefreshInterval() * 1000);		
150
		Calendar now = Calendar.getInstance();
151
		Calendar start = Calendar.getInstance();
152
		start.setTime(refreshStart);
153
		start.set(now.get(Calendar.YEAR), now.get(Calendar.MONTH), now.get(Calendar.DATE));
154
		
155
		if (now.after(start)) {
156
			start.add(Calendar.DATE, 1);
157
		}
158
		long offset = start.getTimeInMillis() - now.getTimeInMillis();
159
		job.schedule(offset);		
132
	}
160
	}
133
	
161
	
134
	protected void stopJob() {
162
	protected void stopJob() {
Lines 148-153 Link Here
148
	public void saveState(IMemento memento) {
176
	public void saveState(IMemento memento) {
149
		memento.putString(CTX_REFRESHSCHEDULE_ENABLED, Boolean.toString(enabled));
177
		memento.putString(CTX_REFRESHSCHEDULE_ENABLED, Boolean.toString(enabled));
150
		memento.putInteger(CTX_REFRESHSCHEDULE_INTERVAL, (int)refreshInterval);
178
		memento.putInteger(CTX_REFRESHSCHEDULE_INTERVAL, (int)refreshInterval);
179
		memento.putString(CTX_REFRESHSCHEDULE_START, Long.toString(refreshStart.getTime()));
180
		memento.putString(CTX_REFRESHSCHEDULE_RUNONCE, Boolean.toString(runOnce));
151
	}
181
	}
152
182
153
	public static SubscriberRefreshSchedule init(IMemento memento, IRefreshable refreshable) {
183
	public static SubscriberRefreshSchedule init(IMemento memento, IRefreshable refreshable) {
Lines 155-161 Link Here
155
		if(memento != null) {
185
		if(memento != null) {
156
			String enabled = memento.getString(CTX_REFRESHSCHEDULE_ENABLED);
186
			String enabled = memento.getString(CTX_REFRESHSCHEDULE_ENABLED);
157
			int interval = memento.getInteger(CTX_REFRESHSCHEDULE_INTERVAL).intValue();
187
			int interval = memento.getInteger(CTX_REFRESHSCHEDULE_INTERVAL).intValue();
188
			String startString = memento.getString(CTX_REFRESHSCHEDULE_START);
189
			String runOnce = memento.getString(CTX_REFRESHSCHEDULE_RUNONCE);
190
			if (startString != null) {
191
				long start = Long.parseLong(startString);
192
				schedule.setRefreshStartTime(new Date(start));
193
			}
158
			schedule.setRefreshInterval(interval);
194
			schedule.setRefreshInterval(interval);
195
			schedule.setRunOnce("true".equals(runOnce) ? true : false); //$NON-NLS-1$
159
			schedule.setEnabled("true".equals(enabled) ? true : false, false /* don't start job */); //$NON-NLS-1$
196
			schedule.setEnabled("true".equals(enabled) ? true : false, false /* don't start job */); //$NON-NLS-1$
160
		}
197
		}
161
		// Use the defaults if a schedule hasn't been saved or can't be found.
198
		// Use the defaults if a schedule hasn't been saved or can't be found.
Lines 212-215 Link Here
212
	public IRefreshable getRefreshable() {
249
	public IRefreshable getRefreshable() {
213
		return refreshable;
250
		return refreshable;
214
	}
251
	}
252
253
	public Date getRefreshStartTime() {
254
		return refreshStart;
255
	}
256
	
257
	public void setRefreshStartTime(Date refreshStart) {
258
		if(refreshStart != getRefreshStartTime()) {
259
			stopJob();
260
			this.refreshStart = refreshStart;
261
			if(isEnabled()) {
262
				startJob();
263
			}
264
		}
265
	}
266
	
267
	public boolean getRunOnce() {
268
		return runOnce;
269
	}
270
	
271
	public void setRunOnce(boolean runOnce) {
272
		if (runOnce != getRunOnce()) {
273
			startJob();
274
			this.runOnce = runOnce;
275
			if (isEnabled()) {
276
				startJob();
277
			}
278
		}
279
	}
215
}
280
}
(-)src/org/eclipse/team/internal/ui/synchronize/ConfigureSynchronizeScheduleComposite.java (-27 / +91 lines)
Lines 8-19 Link Here
8
 * Contributors:
8
 * Contributors:
9
 *     IBM Corporation - initial API and implementation
9
 *     IBM Corporation - initial API and implementation
10
 *     Sebastian Davids <sdavids@gmx.de> - bug 54630
10
 *     Sebastian Davids <sdavids@gmx.de> - bug 54630
11
 *     Trevor S. Kaufman <endante@gmail.com> - bug 156152
11
 *******************************************************************************/
12
 *******************************************************************************/
12
package org.eclipse.team.internal.ui.synchronize;
13
package org.eclipse.team.internal.ui.synchronize;
13
14
15
import java.util.Date;
16
17
import org.eclipse.jface.dialogs.*;
14
import org.eclipse.jface.dialogs.Dialog;
18
import org.eclipse.jface.dialogs.Dialog;
15
import org.eclipse.jface.dialogs.IDialogConstants;
16
import org.eclipse.jface.dialogs.MessageDialog;
17
import org.eclipse.jface.resource.JFaceResources;
19
import org.eclipse.jface.resource.JFaceResources;
18
import org.eclipse.osgi.util.NLS;
20
import org.eclipse.osgi.util.NLS;
19
import org.eclipse.swt.SWT;
21
import org.eclipse.swt.SWT;
Lines 22-36 Link Here
22
import org.eclipse.swt.graphics.GC;
24
import org.eclipse.swt.graphics.GC;
23
import org.eclipse.swt.layout.GridData;
25
import org.eclipse.swt.layout.GridData;
24
import org.eclipse.swt.layout.GridLayout;
26
import org.eclipse.swt.layout.GridLayout;
25
import org.eclipse.swt.widgets.Button;
27
import org.eclipse.swt.widgets.*;
26
import org.eclipse.swt.widgets.Combo;
27
import org.eclipse.swt.widgets.Composite;
28
import org.eclipse.swt.widgets.Label;
29
import org.eclipse.swt.widgets.Text;
30
import org.eclipse.team.internal.ui.TeamUIMessages;
28
import org.eclipse.team.internal.ui.TeamUIMessages;
31
import org.eclipse.team.internal.ui.Utils;
29
import org.eclipse.team.internal.ui.Utils;
32
import org.eclipse.team.ui.synchronize.ISynchronizeParticipant;
30
import org.eclipse.team.ui.synchronize.ISynchronizeParticipant;
33
31
32
import com.ibm.icu.util.Calendar;
33
34
/**
34
/**
35
 * A composite that allows editing a subscriber refresh schedule. A validator can be used to allow
35
 * A composite that allows editing a subscriber refresh schedule. A validator can be used to allow
36
 * containers to show page completion.
36
 * containers to show page completion.
Lines 42-50 Link Here
42
	private SubscriberRefreshSchedule schedule;
42
	private SubscriberRefreshSchedule schedule;
43
	private Button userRefreshOnly;
43
	private Button userRefreshOnly;
44
	private Button enableBackgroundRefresh;
44
	private Button enableBackgroundRefresh;
45
	private Text time;
45
	private Text timeInterval;
46
	private Combo hoursOrSeconds;
46
	private Combo hoursOrSeconds;
47
	private IPageValidator validator;
47
	private IPageValidator validator;
48
	private DateTime startTime;
49
	private Button immediately;
50
	private Button runOnce;
48
	
51
	
49
	public ConfigureSynchronizeScheduleComposite(Composite parent, SubscriberRefreshSchedule schedule, IPageValidator validator) {
52
	public ConfigureSynchronizeScheduleComposite(Composite parent, SubscriberRefreshSchedule schedule, IPageValidator validator) {
50
		super(parent, SWT.NONE);
53
		super(parent, SWT.NONE);
Lines 72-78 Link Here
72
			hours = true;
75
			hours = true;
73
		}		
76
		}		
74
		hoursOrSeconds.select(hours ? 0 : 1);
77
		hoursOrSeconds.select(hours ? 0 : 1);
75
		time.setText(Long.toString(minutes));
78
		timeInterval.setText(Long.toString(minutes));
79
		runOnce.setSelection(schedule.getRunOnce());
80
		
81
		Date start = schedule.getRefreshStartTime();
82
		Calendar cal = Calendar.getInstance();
83
		cal.setTime(start);
84
		startTime.setTime(cal.get(Calendar.HOUR_OF_DAY), cal.get(Calendar.MINUTE), cal.get(Calendar.SECOND));
76
	}
85
	}
77
86
78
	/* (non-Javadoc)
87
	/* (non-Javadoc)
Lines 135-141 Link Here
135
			gridData.horizontalSpan = 2;
144
			gridData.horizontalSpan = 2;
136
			composite.setLayoutData(gridData);
145
			composite.setLayoutData(gridData);
137
			final GridLayout gridLayout_1 = new GridLayout();
146
			final GridLayout gridLayout_1 = new GridLayout();
138
			gridLayout_1.numColumns = 3;
147
			gridLayout_1.numColumns = 4;
139
			gridLayout_1.marginWidth = 0;
148
			gridLayout_1.marginWidth = 0;
140
			gridLayout_1.marginHeight = 0;
149
			gridLayout_1.marginHeight = 0;
141
			gridLayout_1.horizontalSpacing = Dialog.convertHorizontalDLUsToPixels(fontMetrics, IDialogConstants.HORIZONTAL_SPACING);
150
			gridLayout_1.horizontalSpacing = Dialog.convertHorizontalDLUsToPixels(fontMetrics, IDialogConstants.HORIZONTAL_SPACING);
Lines 143-161 Link Here
143
			composite.setLayout(gridLayout_1);
152
			composite.setLayout(gridLayout_1);
144
			{
153
			{
145
				final Label label = new Label(composite, SWT.NONE);
154
				final Label label = new Label(composite, SWT.NONE);
155
				label.setText(TeamUIMessages.ConfigureRefreshScheduleDialog_3a);
156
			}
157
			{
158
				startTime = new DateTime(composite, SWT.TIME | SWT.BORDER);
159
				final GridData gridData_1 = new GridData();
160
				gridData_1.horizontalSpan = 2;
161
				startTime.setLayoutData(gridData_1);
162
				
163
			}
164
			{
165
				immediately = new Button(composite, SWT.CHECK);
166
				immediately.setText(TeamUIMessages.ConfigureRefreshScheduleDialog_3b);
167
				immediately.addSelectionListener(new SelectionAdapter() {
168
					public void widgetSelected(SelectionEvent e) {
169
						updateEnablements();
170
					}
171
				});
172
			}
173
			{
174
				final Label label = new Label(composite, SWT.NONE);
146
				label.setText(TeamUIMessages.ConfigureRefreshScheduleDialog_4); 
175
				label.setText(TeamUIMessages.ConfigureRefreshScheduleDialog_4); 
147
			}
176
			}
148
			{
177
			{
149
				time = new Text(composite, SWT.BORDER | SWT.RIGHT);
178
				timeInterval = new Text(composite, SWT.BORDER | SWT.RIGHT);
150
				final GridData gridData_1 = new GridData();
179
				final GridData gridData_1 = new GridData();
151
				gridData_1.widthHint = 35;
180
				gridData_1.widthHint = 35;
152
				time.setLayoutData(gridData_1);
181
				timeInterval.setLayoutData(gridData_1);
153
				time.addModifyListener(new ModifyListener() {
182
				timeInterval.addModifyListener(new ModifyListener() {
154
					public void modifyText(ModifyEvent e) {
183
					public void modifyText(ModifyEvent e) {
155
						updateEnablements();
184
						updateEnablements();
156
					}
185
					}
157
				});
186
				});
158
				time.addVerifyListener(new VerifyListener() {
187
				timeInterval.addVerifyListener(new VerifyListener() {
159
					public void verifyText(VerifyEvent e) {
188
					public void verifyText(VerifyEvent e) {
160
						String string = e.text;
189
						String string = e.text;
161
						char [] chars = new char [string.length ()];
190
						char [] chars = new char [string.length ()];
Lines 174-179 Link Here
174
				hoursOrSeconds.setItems(new String[] { TeamUIMessages.ConfigureRefreshScheduleDialog_5, TeamUIMessages.ConfigureRefreshScheduleDialog_6 }); // 
203
				hoursOrSeconds.setItems(new String[] { TeamUIMessages.ConfigureRefreshScheduleDialog_5, TeamUIMessages.ConfigureRefreshScheduleDialog_6 }); // 
175
				hoursOrSeconds.setLayoutData(new GridData());
204
				hoursOrSeconds.setLayoutData(new GridData());
176
			}
205
			}
206
			{
207
				runOnce = new Button(composite, SWT.CHECK);
208
				runOnce.setText("Run Once"); //$NON-NLS-1$
209
				runOnce.addSelectionListener(new SelectionAdapter() {
210
					public void widgetSelected(SelectionEvent e) {
211
						updateEnablements();
212
					}
213
				});				
214
			}
177
		}
215
		}
178
		initializeValues();
216
		initializeValues();
179
	}
217
	}
Lines 182-199 Link Here
182
	 * @see org.eclipse.jface.dialogs.Dialog#okPressed()
220
	 * @see org.eclipse.jface.dialogs.Dialog#okPressed()
183
	 */
221
	 */
184
	public void saveValues() {
222
	public void saveValues() {
185
		int hours = hoursOrSeconds.getSelectionIndex();
223
		if (!runOnce.getSelection()) {		
186
		try {
224
			int hours = hoursOrSeconds.getSelectionIndex();
187
			long seconds = Long.parseLong(time.getText());
225
			try {
188
			if(hours == 0) {
226
				long seconds = Long.parseLong(timeInterval.getText());
189
				seconds = seconds * 3600;
227
				if(hours == 0) {
190
			} else {
228
					seconds = seconds * 3600;
191
				seconds = seconds * 60;
229
				} else {
192
			}
230
					seconds = seconds * 60;
193
			schedule.setRefreshInterval(seconds);
231
				}
194
		} catch (NumberFormatException e) {
232
				schedule.setRefreshInterval(seconds);
195
			// keep old value
233
			} catch (NumberFormatException e) {
234
				// keep old value
235
			}
236
		} else {
237
			schedule.setRunOnce(runOnce.getSelection());
196
		}
238
		}
239
		
240
		Calendar cal = Calendar.getInstance();
241
		if (! immediately.getSelection()) {
242
			cal.set(Calendar.HOUR_OF_DAY, startTime.getHours());
243
			cal.set(Calendar.MINUTE, startTime.getMinutes());
244
			cal.set(Calendar.SECOND, startTime.getSeconds());
245
		} else {
246
			cal.add(Calendar.SECOND, 1); // ensure time is today
247
		}
248
		schedule.setRefreshStartTime(cal.getTime());
249
		
197
		if(schedule.isEnabled() != enableBackgroundRefresh.getSelection()) {
250
		if(schedule.isEnabled() != enableBackgroundRefresh.getSelection()) {
198
			schedule.setEnabled(enableBackgroundRefresh.getSelection(), true /* allow to start */);
251
			schedule.setEnabled(enableBackgroundRefresh.getSelection(), true /* allow to start */);
199
		}
252
		}
Lines 216-222 Link Here
216
			validator.setComplete(null);
269
			validator.setComplete(null);
217
		} else {
270
		} else {
218
			try {
271
			try {
219
				long number = Long.parseLong(time.getText());
272
				long number = Long.parseLong(timeInterval.getText());
220
				if(number <= 0) {
273
				if(number <= 0) {
221
					validator.setComplete(TeamUIMessages.ConfigureRefreshScheduleDialog_7); 
274
					validator.setComplete(TeamUIMessages.ConfigureRefreshScheduleDialog_7); 
222
				} else {
275
				} else {
Lines 226-233 Link Here
226
				validator.setComplete(TeamUIMessages.ConfigureRefreshScheduleDialog_8); 
279
				validator.setComplete(TeamUIMessages.ConfigureRefreshScheduleDialog_8); 
227
			}	
280
			}	
228
		}
281
		}
229
		time.setEnabled(enableBackgroundRefresh.getSelection());
282
		timeInterval.setEnabled(enableBackgroundRefresh.getSelection());
230
		hoursOrSeconds.setEnabled(enableBackgroundRefresh.getSelection());
283
		hoursOrSeconds.setEnabled(enableBackgroundRefresh.getSelection());
284
		runOnce.setEnabled(enableBackgroundRefresh.getSelection());
285
		if (runOnce.isEnabled()) {
286
			timeInterval.setEnabled(!runOnce.getSelection());
287
			hoursOrSeconds.setEnabled(!runOnce.getSelection());
288
		}
289
		
290
		startTime.setEnabled(enableBackgroundRefresh.getSelection());
291
		immediately.setEnabled(enableBackgroundRefresh.getSelection());
292
		if (immediately.isEnabled()) {
293
			startTime.setEnabled(!immediately.getSelection());
294
		}
231
	}
295
	}
232
	
296
	
233
	private Label createWrappingLabel(Composite parent, String text, int indent, int horizontalSpan) {
297
	private Label createWrappingLabel(Composite parent, String text, int indent, int horizontalSpan) {
(-)src/org/eclipse/team/internal/ui/messages.properties (-1 / +4 lines)
Lines 7-12 Link Here
7
#
7
#
8
# Contributors:
8
# Contributors:
9
#     IBM Corporation - initial API and implementation
9
#     IBM Corporation - initial API and implementation
10
#     Trevor S. Kaufman - <endante@gmail.com> - bug 156152
10
###############################################################################
11
###############################################################################
11
###############################################
12
###############################################
12
# Message catalog for org.eclipse.team.ui
13
# Message catalog for org.eclipse.team.ui
Lines 239-245 Link Here
239
ConfigureMultipleProjectsWizard_1=There are still projects that have not been shared. Finishing the wizard now will leave them in that state.
240
ConfigureMultipleProjectsWizard_1=There are still projects that have not been shared. Finishing the wizard now will leave them in that state.
240
ConfigureRefreshScheduleDialog_2=Do not schedule the synchronize operation to run periodically.
241
ConfigureRefreshScheduleDialog_2=Do not schedule the synchronize operation to run periodically.
241
ConfigureRefreshScheduleDialog_3=Using the following schedule:
242
ConfigureRefreshScheduleDialog_3=Using the following schedule:
242
ConfigureRefreshScheduleDialog_4=Every:
243
ConfigureRefreshScheduleDialog_3a=Synchronize at:
244
ConfigureRefreshScheduleDialog_3b=Immediately
245
ConfigureRefreshScheduleDialog_4=Repeat Every:
243
ConfigureRefreshScheduleDialog_5=hour(s)
246
ConfigureRefreshScheduleDialog_5=hour(s)
244
ConfigureRefreshScheduleDialog_6=minute(s)
247
ConfigureRefreshScheduleDialog_6=minute(s)
245
ConfigureRefreshScheduleDialog_7=Number must be a positive number greater than 0
248
ConfigureRefreshScheduleDialog_7=Number must be a positive number greater than 0
(-)src/org/eclipse/team/internal/ui/TeamUIMessages.java (+3 lines)
Lines 7-12 Link Here
7
 *
7
 *
8
 * Contributors:
8
 * Contributors:
9
 * IBM - Initial API and implementation
9
 * IBM - Initial API and implementation
10
 * Trevor S. Kaufman - <endante@gmail.com> - bug 156152
10
 *******************************************************************************/
11
 *******************************************************************************/
11
package org.eclipse.team.internal.ui;
12
package org.eclipse.team.internal.ui;
12
13
Lines 412-417 Link Here
412
	public static String ConfigureRefreshScheduleDialog_1a;
413
	public static String ConfigureRefreshScheduleDialog_1a;
413
	public static String ConfigureRefreshScheduleDialog_2;
414
	public static String ConfigureRefreshScheduleDialog_2;
414
	public static String ConfigureRefreshScheduleDialog_3;
415
	public static String ConfigureRefreshScheduleDialog_3;
416
	public static String ConfigureRefreshScheduleDialog_3a;
417
	public static String ConfigureRefreshScheduleDialog_3b;
415
	public static String ConfigureRefreshScheduleDialog_4;
418
	public static String ConfigureRefreshScheduleDialog_4;
416
	public static String ConfigureRefreshScheduleDialog_5;
419
	public static String ConfigureRefreshScheduleDialog_5;
417
	public static String ConfigureRefreshScheduleDialog_6;
420
	public static String ConfigureRefreshScheduleDialog_6;

Return to bug 156152