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

Last change on this file since 14628 was 12470, checked in by bastiK, 7 years ago

see #14794 - javadoc

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