Bug 57600 New user progress dialog needs to check if it needs to close
The done() method on the ProgressMonitorFocusJobsDialog is still running even if the workbench is shutdown. java.lang.IllegalStateException: Job manager has been shut down. at org.eclipse.core.internal.jobs.JobManager.schedule (JobManager.java:639) at org.eclipse.core.internal.jobs.InternalJob.schedule (InternalJob.java:268) at org.eclipse.core.runtime.jobs.Job.schedule(Job.java:363) at org.eclipse.ui.internal.progress.ProgressMonitorFocusJobDialog$1.done (ProgressMonitorFocusJobDialog.java:123) at org.eclipse.core.internal.jobs.JobListeners$3.notify (JobListeners.java:38) at org.eclipse.core.internal.jobs.JobListeners$7.run (JobListeners.java:117) at org.eclipse.core.internal.runtime.InternalPlatform.run (InternalPlatform.java:607) at org.eclipse.core.internal.jobs.JobListeners.doNotify (JobListeners.java:87) at org.eclipse.core.internal.jobs.JobListeners.done (JobListeners.java:136) at org.eclipse.core.internal.jobs.JobManager.endJob (JobManager.java:372) at org.eclipse.core.internal.jobs.WorkerPool.endJob (WorkerPool.java:124) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:72)
bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/GlobalBuildAction.java
workbenchWindow = null;
}
/**
 * Verify that no manual build is running. If it is then give the
 * use the option to cancel. If they cancel, cancel the jobs and
 * return true, otherwise return false.
 * @return whether or not there is a manual build job running.
 */
private boolean verifyNoManualRunning(){
	Job[] buildJobs = JobManager.getInstance().find(ResourcesPlugin.FAMILY_MANUAL_BUILD);
	if(buildJobs.length == 0)
		return true;
	
	boolean cancel =  
		MessageDialog.openQuestion(
			workbenchWindow.getShell(),
			IDEWorkbenchMessages.getString("GlobalBuildAction.BuildRunningTitle"), 
			IDEWorkbenchMessages.getString("GlobalBuildAction.BuildRunningMessage")); 
	if(cancel){
		for (int i = 0; i < buildJobs.length; i++) {
			Job job = buildJobs[i];
			job.cancel();
		}
	}
	
	
	return false;
}
}