package com.link_intersystems.gitdirstat.domain;
import com.link_intersystems.math.LinearEquation;
import com.link_intersystems.math.TwoPointLinearEquation;
public class SubProgressListener implements ProgressListener {
private ProgressListener progressListener;
private int ticks;
private LinearEquation linearEquation;
private int completed;
private double lastFx;
public SubProgressListener(ProgressListener progressListener, int ticks) {
this.progressListener = progressListener;
this.ticks = ticks;
}
@Override
public void start(int totalWork) {
linearEquation = new TwoPointLinearEquation(totalWork, ticks);
}
@Override
public void update(int completed) {
this.completed += completed;
double fX = linearEquation.fX(this.completed);
int subUpdated = (int) (fX - lastFx);
if (subUpdated > 0) {
progressListener.update(subUpdated);
this.lastFx = fX;
}
}
@Override
public void end() {
progressListener.update(ticks);
}
@Override
public boolean isCanceled() {
return progressListener.isCanceled();
}
}