source: josm/trunk/src/org/openstreetmap/josm/gui/progress/swing/SwingRenderingProgressMonitor.java@ 12675

Last change on this file since 12675 was 12675, checked in by Don-vip, 7 years ago

see #15182 - move the Swing-based ProgressMonitor implementations from gui.progress to gui.progress.swing. Progress monitor concept is used in very large parts of JOSM, a console-based implementation could be added later

  • Property svn:eol-style set to native
File size: 2.8 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.gui.progress.swing;
3
4import java.awt.Component;
5
6import org.openstreetmap.josm.Main;
7import org.openstreetmap.josm.gui.progress.AbstractProgressMonitor;
8import org.openstreetmap.josm.gui.progress.CancelHandler;
9import org.openstreetmap.josm.gui.progress.ProgressRenderer;
10import org.openstreetmap.josm.gui.progress.ProgressTaskId;
11import org.openstreetmap.josm.gui.util.GuiHelper;
12import org.openstreetmap.josm.tools.CheckParameterUtil;
13
14/**
15 * SwingRenderingProgressMonitor is progress monitor which delegates the rendering
16 * of progress information to a {@link ProgressRenderer}.
17 * Methods of the progress renderer are always called on the Swing EDT.
18 * @since 12675 (moved from {@code gui.progress} package}
19 */
20public class SwingRenderingProgressMonitor extends AbstractProgressMonitor {
21 private static final int PROGRESS_BAR_MAX = 100;
22 private int currentProgressValue;
23 private final ProgressRenderer delegate;
24
25 /**
26 *
27 * @param delegate the delegate which renders the progress information. Must not be null.
28 * @throws IllegalArgumentException if delegate is null
29 */
30 public SwingRenderingProgressMonitor(ProgressRenderer delegate) {
31 super(new CancelHandler());
32 CheckParameterUtil.ensureParameterNotNull(delegate, "delegate");
33 this.delegate = delegate;
34 }
35
36 @Override
37 public void doBeginTask() {
38 GuiHelper.runInEDT(() -> {
39 delegate.setCustomText("");
40 delegate.setMaximum(PROGRESS_BAR_MAX);
41 });
42 }
43
44 @Override
45 public void doFinishTask() {
46 // do nothing
47 }
48
49 @Override
50 protected void updateProgress(double progressValue) {
51 final int newValue = (int) (progressValue * PROGRESS_BAR_MAX);
52 if (newValue != currentProgressValue) {
53 currentProgressValue = newValue;
54 GuiHelper.runInEDT(() -> delegate.setValue(currentProgressValue));
55 }
56 }
57
58 @Override
59 protected void doSetCustomText(final String title) {
60 checkState(State.IN_TASK, State.IN_SUBTASK);
61 GuiHelper.runInEDT(() -> delegate.setCustomText(title));
62 }
63
64 @Override
65 protected void doSetTitle(final String title) {
66 checkState(State.IN_TASK, State.IN_SUBTASK);
67 GuiHelper.runInEDT(() -> delegate.setTaskTitle(title));
68 }
69
70 @Override
71 protected void doSetIntermediate(final boolean value) {
72 GuiHelper.runInEDT(() -> delegate.setIndeterminate(value));
73 }
74
75 @Override
76 public void setProgressTaskId(ProgressTaskId taskId) {
77 // Do nothing
78 }
79
80 @Override
81 public ProgressTaskId getProgressTaskId() {
82 return null;
83 }
84
85 @Override
86 public Component getWindowParent() {
87 return Main.parent;
88 }
89}
Note: See TracBrowser for help on using the repository browser.