package com.dgex.offspring.update;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.e4.ui.di.UISynchronize;
import org.eclipse.jface.dialogs.ProgressIndicator;
public class UpdateProgressMonitor implements IProgressMonitor {
private final UISynchronize sync;
private final UpdateDialog dialog;
public UpdateProgressMonitor(UpdateDialog dialog, UISynchronize sync) {
this.dialog = dialog;
this.sync = sync;
}
@Override
public void beginTask(final String name, final int totalWork) {
sync.syncExec(new Runnable() {
@Override
public void run() {
dialog.showProgressIndicator();
ProgressIndicator p = dialog.getProgressIndicator();
if (p != null && !p.isDisposed()) {
p.beginTask(totalWork);
p.setToolTipText(name);
}
}
});
}
@Override
public void worked(final int work) {
sync.syncExec(new Runnable() {
@Override
public void run() {
ProgressIndicator p = dialog.getProgressIndicator();
if (p != null && !p.isDisposed()) {
p.worked(work);
}
}
});
}
@Override
public void done() {
sync.syncExec(new Runnable() {
@Override
public void run() {
ProgressIndicator p = dialog.getProgressIndicator();
if (p != null && !p.isDisposed()) {
p.sendRemainingWork();
}
dialog.hideProgressIndicator();
}
});
}
@Override
public void internalWorked(double work) {}
@Override
public boolean isCanceled() {
return false;
}
@Override
public void setCanceled(boolean value) {}
@Override
public void setTaskName(String name) {}
@Override
public void subTask(String name) {}
}