У нас есть приложение Eclipse RCP, которое имеет несколько точек зрения (так называемые «функции»). Переключение между этими функциями может занять несколько секунд, поэтому я хочу показать пользователю диалог прогресса
final Job jobMain = new Job("Opening feature ...") {
@Override
protected IStatus run(final IProgressMonitor monitor) {
monitor.beginTask("Opening ...", 100);
monitor.worked(50);
while (!monitor.isCanceled()) {
try {
Thread.currentThread().sleep(200);
} catch (InterruptedException e) {
}
}
monitor.worked(50);
monitor.done();
return Status.OK_STATUS;
}
};
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
jobMain.setUser(true);
jobMain.setProgressGroup(Job.getJobManager().createProgressGroup(), 100);
jobMain.schedule();
}
});
thread.start();
try {
thread.join();
} catch (InterruptedException e) {
}
Display.getDefault().asyncExec(new Runnable() {
@Override
public void run() {
ftSelectedFeature.openFeaturePerspective();
jobMain.cancel();
}
});
Я перепробовал все, и вышеупомянутое "решение" настолько близко, насколько это возможно, к тому, что я хочу. Проблема в том, что в диалоговом окне выполнения отображается только после открытия перспективы функции ( ftSelectedFeature.openFeaturePerspective () ).
Как получить диалоговое окно прогресса, отображаемое при переключении перспективы функции?