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

Last change on this file since 2850 was 2850, checked in by mjulius, 14 years ago

fix messages for gui

File size: 2.7 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.gui.progress;
3
4import javax.swing.SwingUtilities;
5
6import org.openstreetmap.josm.tools.CheckParameterUtil;
7
8import static org.openstreetmap.josm.tools.I18n.tr;
9
10/**
11 * SwingRenderingProgressMonitor is progress monitor which delegates the rendering
12 * of progress information to a {@see ProgressRenderer}.
13 * Methods of the progress renderer are always called on the Swing EDT.
14 *
15 */
16public class SwingRenderingProgressMonitor extends AbstractProgressMonitor {
17 private static final int PROGRESS_BAR_MAX = 100;
18 private int currentProgressValue = 0;
19 private ProgressRenderer delegate;
20
21 /**
22 *
23 * @param delegate the delegate which renders the progress information. Must not be null.
24 * @throws IllegalArgumentException thrown if delegate is null
25 *
26 */
27 public SwingRenderingProgressMonitor(ProgressRenderer delegate) {
28 super(new CancelHandler());
29 CheckParameterUtil.ensureParameterNotNull(delegate, "delegate");
30 this.delegate = delegate;
31 }
32
33 private void doInEDT(Runnable runnable) {
34 if (SwingUtilities.isEventDispatchThread()) {
35 runnable.run();
36 } else {
37 SwingUtilities.invokeLater(runnable);
38 }
39 }
40
41 @Override
42 public void doBeginTask() {
43 doInEDT(new Runnable() {
44 public void run() {
45 delegate.setCustomText("");
46 delegate.setMaximum(PROGRESS_BAR_MAX);
47 }
48 });
49 }
50
51 @Override
52 public void doFinishTask() {
53 // do nothing
54 }
55
56 @Override
57 protected void updateProgress(double progressValue) {
58 final int newValue = (int)(progressValue * PROGRESS_BAR_MAX);
59 if (newValue != currentProgressValue) {
60 currentProgressValue = newValue;
61 doInEDT(new Runnable() {
62 public void run() {
63 delegate.setValue(currentProgressValue);
64 }
65 });
66 }
67 }
68
69 @Override
70 protected void doSetCustomText(final String title) {
71 checkState(State.IN_TASK, State.IN_SUBTASK);
72 doInEDT(new Runnable() {
73 public void run() {
74 delegate.setCustomText(title);
75 }
76 });
77 }
78
79 @Override
80 protected void doSetTitle(final String title) {
81 checkState(State.IN_TASK, State.IN_SUBTASK);
82 doInEDT(new Runnable() {
83 public void run() {
84 delegate.setTaskTitle(title);
85 }
86 });
87 }
88
89 @Override
90 protected void doSetIntermediate(final boolean value) {
91 doInEDT(new Runnable() {
92 public void run() {
93 delegate.setIndeterminate(value);
94 }
95 });
96 }
97}
Note: See TracBrowser for help on using the repository browser.