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

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

see #14794 - javadoc

  • Property svn:eol-style set to native
File size: 1.7 KB
RevLine 
[9197]1// License: GPL. For details, see LICENSE file.
[9185]2package org.openstreetmap.josm.io;
3
[9274]4import java.util.Locale;
[11553]5import java.util.Optional;
[9274]6
[9185]7import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
8import org.openstreetmap.josm.gui.progress.ProgressMonitor;
[9274]9import org.openstreetmap.josm.tools.Utils;
[9185]10
[12470]11/**
12 * Helper class for {@link StreamProgressUpdater} to encapsulate interaction with
13 * the {@link ProgressMonitor}.
14 */
[9185]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;
[11553]25 this.progressMonitor = Optional.ofNullable(progressMonitor).orElse(NullProgressMonitor.INSTANCE);
[9185]26 this.taskTitle = taskTitle;
27 initProgressMonitor();
28 }
29
30 private void initProgressMonitor() {
31 if (size > 0) {
[10161]32 progressMonitor.subTask(taskTitle);
[9185]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 }
[9274]52 progressMonitor.setExtraText(Utils.getSizeString(soFar, Locale.getDefault()));
[9185]53 }
54 }
55
56 void finishTask() {
57 progressMonitor.finishTask();
58 }
59}
Note: See TracBrowser for help on using the repository browser.