package com.dgex.offspring.application.dialogs;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.e4.ui.di.UISynchronize;
import org.eclipse.jface.dialogs.ProgressIndicator;
public class StartupProgressMonitor implements IProgressMonitor {
private final UISynchronize sync;
private final StartupDialog dialog;
public StartupProgressMonitor(StartupDialog 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() {
ProgressIndicator p = dialog.getProgressIndicator();
if (p != null && !p.isDisposed()) {
p.beginAnimatedTask();
dialog.setStatus(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() {
dialog.close();
}
});
}
@Override
public void internalWorked(double work) {}
@Override
public boolean isCanceled() {
return false;
}
@Override
public void setCanceled(boolean value) {}
@Override
public void setTaskName(final String name) {
sync.syncExec(new Runnable() {
@Override
public void run() {
dialog.setStatus(name);
}
});
}
@Override
public void subTask(String name) {}
}