package org.simantics.scl.osgi; import org.eclipse.core.runtime.IProgressMonitor; import org.simantics.scl.runtime.function.Function1; import org.simantics.scl.runtime.function.Function2; import org.simantics.scl.runtime.tuple.Tuple0; public class SCLProgressMonitor implements IProgressMonitor { private final Function2 beginTask; private final Function1 done; private final Function1 isCanceled; private final Function1 setCanceled; private final Function1 setTaskName; private final Function1 subTask; private final Function1 worked; public SCLProgressMonitor(Function2 beginTask, Function1 done, Function1 isCanceled, Function1 setCanceled, Function1 setTaskName, Function1 subTask, Function1 worked) { this.beginTask = beginTask; this.done = done; this.isCanceled = isCanceled; this.setCanceled = setCanceled; this.setTaskName = setTaskName; this.subTask = subTask; this.worked = worked; } @Override public void beginTask(String name, int totalWork) { beginTask.apply(name, new Float(totalWork)); } @Override public void done() { done.apply(Tuple0.INSTANCE); } @Override public void internalWorked(double work) { } @Override public boolean isCanceled() { return isCanceled.apply(Tuple0.INSTANCE); } @Override public void setCanceled(boolean value) { setCanceled.apply(value); } @Override public void setTaskName(String name) { setTaskName.apply(name); } @Override public void subTask(String name) { subTask.apply(name); } @Override public void worked(int work) { worked.apply(new Float(work)); } }