Bug 74449 [Contributions] StatusLineManager creates BEGIN MIDDLE END groups at wrong time
The org.eclipse.jface.action.statuslinemanager currently creates the BEGIN_GROUP MIDDLE_GROUP and END_GROUP entries in its createControl() method. Code wishing to contribute controls to the statuslinemanager in the fillActionBars method of the workbench advisor executes before the control is created, and get exceptions thrown because the groups that the controls are being appended to do not yet exist. This code: add(new GroupMarker(BEGIN_GROUP)); add(new GroupMarker (MIDDLE_GROUP)); add(new GroupMarker(END_GROUP)); should be moved from createControl to the constructor of the statuslinemanager. Patch to follow
bundles/org.eclipse.jface/src/org/eclipse/jface/action/StatusLineManager.java
* 
     * @return the control used by this manager
     */
    public Control getControl() {
        return statusLine;
    }
    /**
     * Returns the progress monitor delegate. Override this method
     * to provide your own object used to handle progress.
     * 
     * @return the IProgressMonitor delegate
     * @since 3.0
     */
    protected IProgressMonitor getProgressMonitorDelegate() {
        return (IProgressMonitor) getControl();
    }
    /*
     * (non-Javadoc)
     * Method declared on IStatusLineManager
     */
    public IProgressMonitor getProgressMonitor() {
        return new IProgressMonitorWithBlocking() {
            IProgressMonitor progressDelegate = getProgressMonitorDelegate();
            /* (non-Javadoc)
             * @see org.eclipse.core.runtime.IProgressMonitor#beginTask(java.lang.String, int)
             */
            public void beginTask(String name, int totalWork) {
                progressDelegate.beginTask(name, totalWork);
            }
            /* (non-Javadoc)