source: josm/trunk/src/org/openstreetmap/josm/io/StreamProgressUpdater.java@ 10386

Last change on this file since 10386 was 10161, checked in by bastiK, 8 years ago

fixed #12791 - Progress state exception when doing various operations

corrects typo in [10160]

  • Property svn:eol-style set to native
File size: 1.6 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.io;
3
4import java.util.Locale;
5
6import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
7import org.openstreetmap.josm.gui.progress.ProgressMonitor;
8import org.openstreetmap.josm.tools.Utils;
9
10final class StreamProgressUpdater {
11
12 private final long size;
13 private final ProgressMonitor progressMonitor;
14 private final String taskTitle;
15 private int soFar;
16 private int lastDialogUpdate;
17
18 StreamProgressUpdater(long size, ProgressMonitor progressMonitor, String taskTitle) {
19 if (progressMonitor == null) {
20 progressMonitor = NullProgressMonitor.INSTANCE;
21 }
22 this.size = size;
23 this.progressMonitor = progressMonitor;
24 this.taskTitle = taskTitle;
25 initProgressMonitor();
26 }
27
28 private void initProgressMonitor() {
29 if (size > 0) {
30 progressMonitor.subTask(taskTitle);
31 progressMonitor.setTicksCount((int) size);
32 } else {
33 progressMonitor.indeterminateSubTask(taskTitle);
34 }
35 }
36
37 /**
38 * Increase ticker (progress counter and displayed text) by the given amount.
39 *
40 * @param amount number of ticks
41 */
42 void advanceTicker(int amount) {
43 soFar += amount;
44
45 if (soFar / 1024 != lastDialogUpdate) {
46 lastDialogUpdate++;
47 if (size > 0) {
48 progressMonitor.setTicks(soFar);
49 }
50 progressMonitor.setExtraText(Utils.getSizeString(soFar, Locale.getDefault()));
51 }
52 }
53
54 void finishTask() {
55 progressMonitor.finishTask();
56 }
57}
Note: See TracBrowser for help on using the repository browser.