package com.link_intersystems.gitdirstat.ui;
import com.link_intersystems.gitdirstat.domain.ProgressListener;
import com.link_intersystems.swing.ProgressMonitor;
public class ProgressListenerMonitorAdapter implements ProgressListener {
private ProgressMonitor progressMonitor;
private String taskName;
private long updateIntervalMs;
private int completed;
private long nextUpdate;
public ProgressListenerMonitorAdapter(ProgressMonitor progressMonitor,
String taskName) {
this.progressMonitor = progressMonitor;
this.taskName = taskName;
}
public void setUpdateInterval(long updateIntervalMs) {
this.updateIntervalMs = updateIntervalMs;
}
@Override
public void update(int completed) {
this.completed += completed;
long now = System.currentTimeMillis();
if (now > nextUpdate) {
progressMonitor.update(this.completed);
nextUpdate = now + updateIntervalMs;
this.completed = 0;
}
}
@Override
public void start(int totalWork) {
progressMonitor.start(taskName, totalWork);
}
@Override
public void end() {
progressMonitor.end();
this.completed = 0;
nextUpdate = 0;
}
@Override
public boolean isCanceled() {
return progressMonitor.isCanceled();
}
}