1 package org.simantics.scl.osgi;
3 import org.eclipse.core.runtime.IProgressMonitor;
4 import org.simantics.scl.runtime.function.Function1;
5 import org.simantics.scl.runtime.function.Function2;
6 import org.simantics.scl.runtime.tuple.Tuple0;
8 public class SCLProgressMonitor implements IProgressMonitor {
11 String currentSubtask = "";
13 private final Function2<String, Float, Tuple0> beginTask;
14 private final Function1<Tuple0, Tuple0> done;
15 private final Function1<Tuple0, Boolean> isCanceled;
16 private final Function1<Boolean, Tuple0> setCanceled;
17 private final Function1<String, Tuple0> setTaskName;
18 private final Function1<String, Tuple0> subTask;
19 private final Function1<Float, Tuple0> worked;
21 public SCLProgressMonitor(Function2<String, Float, Tuple0> beginTask, Function1<Tuple0, Tuple0> done,
22 Function1<Tuple0, Boolean> isCanceled, Function1<Boolean, Tuple0> setCanceled,
23 Function1<String, Tuple0> setTaskName, Function1<String, Tuple0> subTask, Function1<Float, Tuple0> worked) {
24 this.beginTask = beginTask;
26 this.isCanceled = isCanceled;
27 this.setCanceled = setCanceled;
28 this.setTaskName = setTaskName;
29 this.subTask = subTask;
34 public void beginTask(String name, int totalWork) {
35 beginTask.apply(name, new Float(totalWork));
40 done.apply(Tuple0.INSTANCE);
44 public void internalWorked(double work) {
48 public boolean isCanceled() {
49 return isCanceled.apply(Tuple0.INSTANCE);
53 public void setCanceled(boolean value) {
54 setCanceled.apply(value);
58 public void setTaskName(String name) {
59 setTaskName.apply(name);
63 public void subTask(String name) {
65 currentSubtask = name;
69 public void worked(int work) {
70 worked.apply(new Float(work));
74 public float getWork() {
78 public String getSubTask() {
79 return currentSubtask;