Buggy code:
class BitmapTextTab extends OpenGLTab { private Text messageText ; private FontData fontData ; private float [ ] textColor = new float [ ] { 1.0F , 0.0F , 0.0F } ; private float xPos = - 130.0F ; private float yPos = 0.0F ; private int listIndexBase ; private static final int LIST_INDEX_SIZE = 256 ; private static final int DEFAULT_FONT_SIZE = 24 ; private static final String DEFAULT_FONT_NAME = "Courier" ; void createControls ( Composite composite ) { Group movementGroup = new Group ( composite , SWT . NONE ) ; movementGroup . setText ( "Translation" ) ; movementGroup . setLayout ( new GridLayout ( 2 , false ) ) ; new Label ( movementGroup , SWT . NONE ) . setText ( "X:" ) ; final Slider xMove = new Slider ( movementGroup , SWT . NONE ) ; xMove . setIncrement ( 1 ) ; xMove . setMaximum ( 42 ) ; xMove . setMinimum ( 0 ) ; xMove . setThumb ( 2 ) ; xMove . setPageIncrement ( 2 ) ; xMove . setSelection ( 7 ) ; xMove . addListener ( Selection , new Listener ( ) { public void handleEvent ( Event e ) { xPos = ( ( xMove . getSelection ( ) ) * 10 ) - 200 ; } } ) ; new Label ( movementGroup , SWT . NONE ) . setText ( "Y:" ) ; final Slider yMove = new Slider ( movementGroup , SWT . NONE ) ; yMove . setIncrement ( 1 ) ; yMove . setMaximum ( 42 ) ; yMove . setMinimum ( 0 ) ; yMove . setThumb ( 2 ) ; yMove . setPageIncrement ( 2 ) ; yMove . setSelection ( 20 ) ; yMove . addListener ( Selection , new Listener ( ) { public void handleEvent ( Event e ) { yPos = ( ( yMove . getSelection ( ) ) * 10 ) - 200 ; } } ) ; Composite textGroup = new Composite ( composite , SWT . NONE ) ; GridLayout layout = new GridLayout ( 2 , false ) ; layout . marginHeight = 0 ; layout . marginWidth = 0 ; textGroup . setLayout ( layout ) ; textGroup . setLayoutData ( new GridData ( GridData . HORIZONTAL_ALIGN_FILL ) ) ; new Label ( textGroup , SWT . NONE ) . setText ( "Text:" ) ; messageText = new Text ( textGroup , SWT . BORDER ) ; GridData data = new GridData ( GridData . HORIZONTAL_ALIGN_FILL ) ; data . grabExcessHorizontalSpace = true ; messageText . setLayoutData ( data ) ; messageText . setText ( "OpenGL<seq2seq4repair_space>-<seq2seq4repair_space>SWT" ) ; final Button fontSelectButton = new Button ( composite , SWT . NONE ) ; fontSelectButton . setText ( "Set<seq2seq4repair_space>Font" ) ; final ColorSelectionGroup colorGroup = new ColorSelectionGroup ( composite , SWT . NONE ) ; colorGroup . setText ( "Text<seq2seq4repair_space>color" ) ; colorGroup . addColorSelectionListener ( new IColorSelectionListener ( ) { public void handleColorSelection ( RGB rgb ) { GL . glColor3ub ( ( ( byte ) ( rgb . red ) ) , ( ( byte ) ( rgb . green ) ) , ( ( byte ) ( rgb . blue ) ) ) ; } } ) ; fontSelectButton . addListener ( Selection , new Listener ( ) { public void handleEvent ( Event e ) { FontDialog fontDialog = new FontDialog ( fontSelectButton . getShell ( ) ) ; fontDialog . setText ( "Choose<seq2seq4repair_space>Font<seq2seq4repair_space>Options" ) ; double [ ] currentColor = new double [ 4 ] ; GL . glGetDoublev ( GL_CURRENT_COLOR , currentColor ) ; fontDialog . setRGB ( new RGB ( ( ( ( int ) ( currentColor [ 0 ] ) ) * 255 ) , ( ( ( int ) ( currentColor [ 1 ] ) ) * 255 ) , ( ( ( int ) ( currentColor [ 2 ] ) ) * 255 ) ) ) ; <START_BUG> fontDialog . setFontData ( fontData ) ; <END_BUG> FontData result = fontDialog . open ( ) ; if ( result != null ) { fontData = result ; RGB rgb = fontDialog . getRGB ( ) ; GL . glColor3ub ( ( ( byte ) ( rgb . red ) ) , ( ( byte ) ( rgb . green ) ) , ( ( byte ) ( rgb . blue ) ) ) ; colorGroup . setRGB ( rgb ) ; getContext ( ) . loadBitmapFont ( fontData , null , listIndexBase , 32 , 96 ) ; } } } ) ; } void dispose ( ) { } void drawText ( String string ) { } String getTabText ( ) { } void init ( ) { } void renderScene ( ) { } void setupViewingArea ( ) { } }

Fix:
fontDialog . setFontList ( new FontData [ ] { fontData } ) ;