diff options
Diffstat (limited to 'plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/internal/util/om/progress/Monitor.java')
-rw-r--r-- | plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/internal/util/om/progress/Monitor.java | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/internal/util/om/progress/Monitor.java b/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/internal/util/om/progress/Monitor.java new file mode 100644 index 0000000000..b0be5af9c5 --- /dev/null +++ b/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/internal/util/om/progress/Monitor.java @@ -0,0 +1,63 @@ +package org.eclipse.net4j.internal.util.om.progress; + +import org.eclipse.net4j.util.om.PROGRESS; + +/** + * @author Eike Stepper + */ +public abstract class Monitor +{ + private static final int UNINITIALIZED = 0; + + protected int totalWork = UNINITIALIZED; + + protected int work; + + public Monitor() + { + } + + public int getTotalWork() + { + return totalWork; + } + + public void begin(int totalWork, String task) + { + if (this.totalWork != UNINITIALIZED) + { + throw new IllegalStateException("Monitoring has already begun"); + } + + this.totalWork = totalWork; + if (task != null) + { + setTask(task); + } + } + + public void worked(int work, String success) + { + if (this.totalWork == UNINITIALIZED) + { + throw new IllegalStateException("Monitoring has not yet begun"); + } + + this.work += work; + if (totalWork != PROGRESS.UNKNOWN && this.work > totalWork) + { + throw new IllegalStateException("Work has exceeded total work"); + } + + if (success != null) + { + onSuccess(success); + } + } + + public abstract void onSuccess(String success); + + public abstract String getTask(); + + public abstract void setTask(String task); +}
\ No newline at end of file |