Bug 164361 [Progress] Task name not shown in user job progress dialog
3.2 The progress dialog for a user job often does not show the task name passed to IProgressMonitor.beginTask. This appears to be due to a race condition in the optimization in ProgressMonitorDialog that tries to avoid trimming and setting the message in the label if the dialog is not visible. It's possible for the message to get set but never get shown, due to the SWT.Show handler running before messageLabel.isVisible() is true. I suggest that the SWT.Show handler always set the last message in the label, even if it's not yet visible. That is, avoid the isVisible() check in setMessage when coming from the SWT.Show handler in configureShell. Can this get addressed for the next milestone? I'd be happy to sit down and help with this one.
bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/ProgressMonitorDialog.java
* Returns the progress monitor to use for operations run in this progress
     * dialog.
     * 
     * @return the progress monitor
     */
    public IProgressMonitor getProgressMonitor() {
        return progressMonitor;
    }
    /**
     * This implementation of IRunnableContext#run(boolean, boolean,
     * IRunnableWithProgress) runs the given <code>IRunnableWithProgress</code>
     * using the progress monitor for this progress dialog and blocks until
     * the runnable has been run, regardless of the value of <code>fork</code>.
     * The dialog is opened before the runnable is run, and closed after
     * it completes. It is recommended that <code>fork</code> is set to
     * true in most cases. If <code>fork</code> is set to <code>false</code>,
     * the runnable will run in the UI thread and it is the runnable's
     * responsibility to call <code>Display.readAndDispatch()</code>
     * to ensure UI responsiveness.
     */
    public void run(boolean fork, boolean cancelable,
            IRunnableWithProgress runnable) throws InvocationTargetException,
            InterruptedException {
        setCancelable(cancelable);
        try {
            aboutToRun();
            
            progressMonitor.forked = fork;
            ModalContext.run(runnable, fork, getProgressMonitor(), getShell()
                    .getDisplay());