Buggy code:
public abstract class PageBookView extends ViewPart implements IPartListener { private PageBook book ; private PageBookView . PageRec defaultPageRec ; private Map mapPartToRec = new HashMap ( ) ; private Map mapPageToSite = new HashMap ( ) ; private PageBookView . PageRec activeRec ; private IPropertyChangeListener actionBarPropListener = new IPropertyChangeListener ( ) { public void propertyChange ( PropertyChangeEvent event ) { } } ; private ISelectionChangedListener selectionChangedListener = new ISelectionChangedListener ( ) { public void selectionChanged ( SelectionChangedEvent event ) { } } ; private PageBookView . SelectionProvider selectionProvider = new PageBookView . SelectionProvider ( ) ; protected static class PageRec { public IWorkbenchPart part ; public IPage page ; public SubActionBars subActionBars ; public PageRec ( IWorkbenchPart part , IPage page ) { } public void dispose ( ) { } } protected class SelectionProvider implements ISelectionProvider { private ListenerList selectionChangedListeners = new ListenerList ( ) ; public void addSelectionChangedListener ( ISelectionChangedListener listener ) { } public ISelection getSelection ( ) { } public void removeSelectionChangedListener ( ISelectionChangedListener listener ) { } public void selectionChanged ( final SelectionChangedEvent event ) { } public void setSelection ( ISelection selection ) { } } protected PageBookView ( ) { } protected abstract IPage createDefaultPage ( PageBook book ) { } private PageBookView . PageRec createPage ( IWorkbenchPart part ) { } private void preparePage ( PageBookView . PageRec rec ) { } protected void initPage ( IPageBookViewPage page ) { } public void createPartControl ( Composite parent ) { } public void dispose ( ) { } protected abstract PageBookView . PageRec doCreatePage ( IWorkbenchPart part ) { } protected abstract void doDestroyPage ( IWorkbenchPart part , PageBookView . PageRec pageRecord ) { } public Object getAdapter ( Class key ) { } protected abstract IWorkbenchPart getBootstrapPart ( ) { } protected IWorkbenchPart getCurrentContributingPart ( ) { } public IPage getCurrentPage ( ) { } protected PageSite getPageSite ( IPage page ) { } public IPage getDefaultPage ( ) { } protected PageBook getPageBook ( ) { } protected PageBookView . PageRec getPageRec ( IWorkbenchPart part ) { } protected PageBookView . PageRec getPageRec ( IPage page ) { } protected abstract boolean isImportant ( IWorkbenchPart part ) { } public void init ( IViewSite site ) throws PartInitException { } public void partActivated ( IWorkbenchPart part ) { } public void partBroughtToTop ( IWorkbenchPart part ) { } public void partClosed ( IWorkbenchPart part ) { } public void partDeactivated ( IWorkbenchPart part ) { } public void partOpened ( IWorkbenchPart part ) { } private void refreshGlobalActionHandlers ( ) { } private void removePage ( PageBookView . PageRec rec ) { } public void setFocus ( ) { if ( ( activeRec ) == null ) book . setFocus ( ) ; else <START_BUG> activeRec . page . getControl ( ) . setFocus ( ) ; <END_BUG> } private void pageSelectionChanged ( SelectionChangedEvent event ) { } private void showBootstrapPart ( ) { } protected void showPageRec ( PageBookView . PageRec pageRec ) { } protected PageBookView . SelectionProvider getSelectionProvider ( ) { } }

Fix:
activeRec . page . setFocus ( ) ;