Bug 189694 ApplicationWindow#run() can hang Eclipse due to Menu#isEnabled
In ApplicationWindow#run() we call Menu#isEnabled to cache our enabled state. This actually crawls all of the children of the menu to determine the state. When the Shell is disabled this will return true and so when the shell is re-enabled all of the menus will be inactive. I will be attaching a Steve approved patch.
bundles/org.eclipse.jface/src/org/eclipse/jface/window/ApplicationWindow.java
* 
     * @param shell the shell
     * @since 3.0
     */
    protected void createTrimWidgets(Shell shell) {
        if (menuBarManager != null) {
            menuBarManager.updateAll(true);
            shell.setMenuBar(menuBarManager.createMenuBar((Decorations) shell));
        }
        if (showTopSeperator()) {
			seperator1 = new Label(shell, SWT.SEPARATOR | SWT.HORIZONTAL);
		}
        
        createToolBarControl(shell);
        createCoolBarControl(shell);
        createStatusLine(shell);
    }
    /* (non-Javadoc)
     * @see org.eclipse.jface.window.Window#getLayout()
     */
    protected Layout getLayout() {
        return new ApplicationWindowLayout();
    }
    /**
     * Returns whether to show a top separator line between the menu bar
     * and the rest of the window contents.  On some platforms such as the Mac,
     * the menu is separated from the main window already, so a separator line
     * is not desired. 
     * 
     * @return <code>true</code> to show the top separator, <code>false</code>