Buggy code:
public class TabbedEditorWorkbook extends EditorWorkbook { CTabFolder2Adapter expandListener = new CTabFolder2Adapter ( ) { public void minimize ( CTabFolderEvent event ) { } public void restore ( CTabFolderEvent event ) { } public void maximize ( CTabFolderEvent event ) { } } ; private IPreferenceStore preferenceStore = WorkbenchPlugin . getDefault ( ) . getPreferenceStore ( ) ; private int tabLocation = - 1 ; private CTabFolder tabFolder = null ; private Map mapTabToEditor = new HashMap ( ) ; private ToolBar pullDownBar ; private ToolItem pullDownButton ; private EditorList editorList ; private ViewForm listComposite ; private boolean assignFocusOnSelection = true ; private boolean ignoreTabFocusHide = false ; private boolean handleTabSelection = true ; private boolean mouseDownListenerAdded = false ; private boolean usePulldown = false ; public TabbedEditorWorkbook ( EditorArea editorArea ) { } protected Object createItem ( EditorPane editorPane ) { } private CTabItem createTab ( EditorPane editorPane ) { } private CTabItem createTab ( EditorPane editorPane , int index ) { } protected void setControlSize ( ) { } private final IPropertyChangeListener propertyChangeListener = new IPropertyChangeListener ( ) { public void propertyChange ( PropertyChangeEvent propertyChangeEvent ) { } } ; protected void createPresentation ( final Composite parent ) { usePulldown = preferenceStore . getBoolean ( EDITORLIST_PULLDOWN_ACTIVE ) ; preferenceStore . addPropertyChangeListener ( propertyChangeListener ) ; boolean multi = preferenceStore . getBoolean ( SHOW_MULTIPLE_EDITOR_TABS ) ; boolean simple = preferenceStore . getBoolean ( SHOW_TRADITIONAL_STYLE_TABS ) ; int style = ( ( SWT . CLOSE ) | ( SWT . BORDER ) ) | ( multi ? SWT . MULTI : SWT . SINGLE ) ; tabFolder = new CTabFolder ( parent , style ) ; tabFolder . setSimpleTab ( simple ) ; <START_BUG> ColorSchemeService . setTabColors ( tabFolder ) ; <END_BUG> tabFolder . setTabList ( new Control [ 0 ] ) ; tabFolder . setData ( this ) ; tabFolder . addCTabFolder2Listener ( new CTabFolder2Adapter ( ) { public void close ( CTabFolderEvent e ) { e . doit = false ; EditorPane pane = ( ( EditorPane ) ( mapTabToEditor . get ( e . item ) ) ) ; pane . doHide ( ) ; } } ) ; tabFolder . addCTabFolder2Listener ( expandListener ) ; tabFolder . setMaximizeVisible ( true ) ; int shellStyle = ( ( SWT . RESIZE ) | ( SWT . ON_TOP ) ) | ( SWT . NO_TRIM ) ; int tableStyle = ( SWT . V_SCROLL ) | ( SWT . H_SCROLL ) ; final EditorsInformationControl info = new EditorsInformationControl ( tabFolder . getShell ( ) , shellStyle , tableStyle ) ; tabFolder . addCTabFolder2Listener ( new CTabFolder2Adapter ( ) { public void showList ( CTabFolderEvent event ) { Point p = tabFolder . toDisplay ( event . x , event . y ) ; p . y += + ( event . height ) ; showList ( tabFolder . getShell ( ) , p . x , p . y ) ; event . doit = false ; } void showList ( Shell parentShell , int x , int y ) { info . setInput ( TabbedEditorWorkbook . this ) ; Point size = info . computeSizeHint ( ) ; int minX = 50 ; int minY = 300 ; if ( ( size . x ) < minX ) size . x = minX ; if ( ( size . y ) < minY ) size . y = minY ; info . setSize ( size . x , size . y ) ; Rectangle bounds = Display . getCurrent ( ) . getBounds ( ) ; if ( ( x + ( size . x ) ) > ( bounds . width ) ) x = ( bounds . width ) - ( size . x ) ; if ( ( y + ( size . y ) ) > ( bounds . height ) ) y = ( bounds . height ) - ( size . y ) ; info . setLocation ( new Point ( x , y ) ) ; info . setVisible ( true ) ; info . setFocus ( ) ; info . getTableViewer ( ) . getTable ( ) . getShell ( ) . addListener ( Deactivate , new Listener ( ) { public void handleEvent ( Event event ) { info . setVisible ( false ) ; } } ) ; } void showList ( Display display , int x , int y ) { final Shell shell = new Shell ( tabFolder . getShell ( ) , ( ( SWT . ON_TOP ) | ( SWT . NO_TRIM ) ) ) ; shell . addFocusListener ( new FocusListener ( ) { public void focusGained ( FocusEvent e ) { } public void focusLost ( FocusEvent e ) { if ( ! ( shell . getDisplay ( ) . getActiveShell ( ) . equals ( shell ) ) ) { shell . dispose ( ) ; } } } ) ; FillLayout fl = new FillLayout ( SWT . VERTICAL ) ; fl . marginHeight = 3 ; fl . marginWidth = 3 ; shell . setLayout ( fl ) ; final Text text = new Text ( shell , SWT . SINGLE ) ; final Table table = new Table ( shell , SWT . NONE ) ; CTabItem [ ] items = tabFolder . getItems ( ) ; final String [ ] stringItems = new String [ items . length ] ; for ( int i = 0 ; i < ( items . length ) ; i ++ ) { CTabItem tab = items [ i ] ; stringItems [ i ] = tab . getText ( ) ; TableItem item = new TableItem ( table , SWT . NONE ) ; item . setText ( tab . getText ( ) ) ; item . setImage ( tab . getImage ( ) ) ; } final int idx = tabFolder . getSelectionIndex ( ) ;

Fix:
ColorSchemeService . setTabColors ( getEditorArea ( ) . getPage ( ) . getTheme ( ) , tabFolder ) ;