Buggy code:
class ProgressInfoItem extends Composite { static String STOP_IMAGE_KEY = "org.eclipse.ui.internal.progress.PROGRESS_STOP" ; static String DISABLED_STOP_IMAGE_KEY = "org.eclipse.ui.internal.progress.DISABLED_PROGRESS_STOP" ; static String CLEAR_FINISHED_JOB_KEY = "org.eclipse.ui.internal.progress.CLEAR_FINISHED_JOB" ; static String DISABLED_CLEAR_FINISHED_JOB_KEY = "org.eclipse.ui.internal.progress.DISABLED_CLEAR_FINISHED_JOB" ; static String DEFAULT_JOB_KEY = "org.eclipse.ui.internal.progress.PROGRESS_DEFAULT" ; static String DARK_COLOR_KEY = "org.eclipse.ui.internal.progress.PROGRESS_DARK_COLOR" ; JobTreeElement info ; Label progressLabel ; ToolBar actionBar ; ToolItem actionButton ; List taskEntries = new ArrayList ( 0 ) ; private ProgressBar progressBar ; private Label jobImageLabel ; static final int MAX_PROGRESS_HEIGHT = 12 ; static final int MIN_ICON_SIZE = 16 ; private static final String EMPTY_STRING = "" ; interface IndexListener { public void selectPrevious ( ) { } public void selectNext ( ) { } public void select ( ) { } } ProgressInfoItem . IndexListener indexListener ; private int currentIndex ; private boolean selected ; private MouseAdapter mouseListener ; public ProgressInfoItem ( Composite parent , int style , JobTreeElement progressInfo ) { } protected void createChildren ( ) { } private void setLayoutsForNoProgress ( ) { } protected void cancelOrRemove ( ) { } private Image getInfoImage ( ) { } private String getMainTitle ( ) { } protected String getJobNameAndStatus ( ) { } String getJobInfoFinishedString ( Job job , boolean withTime ) { } private String getTimeString ( ) { } void refresh ( ) { } private boolean isCompleted ( ) { } private JobInfo [ ] getJobInfos ( ) { } private boolean isRunning ( ) { } private int getPercentDone ( ) { } private void setToolBarImages ( ) { } void createProgressBar ( int style ) { } void setLinkText ( Job linkJob , String taskString , int index ) { Link link ; if ( index >= ( taskEntries . size ( ) ) ) { link = new Link ( this , SWT . NONE ) ; FormData linkData = new FormData ( ) ; <START_BUG> if ( index == 0 ) { <END_BUG> Control top = progressBar ; if ( top == null ) { top = progressLabel ; } linkData . top = new FormAttachment ( top , IDialogConstants . VERTICAL_SPACING ) ; linkData . left = new FormAttachment ( top , 0 , SWT . LEFT ) ; } else { Link previous = ( ( Link ) ( taskEntries . get ( ( index - 1 ) ) ) ) ; linkData . top = new FormAttachment ( previous , IDialogConstants . VERTICAL_SPACING ) ; linkData . left = new FormAttachment ( previous , 0 , SWT . LEFT ) ; } linkData . right = new FormAttachment ( 100 ) ; link . setLayoutData ( linkData ) ; final Link finalLink = link ; link . addSelectionListener ( new SelectionAdapter ( ) { public void widgetSelected ( SelectionEvent e ) { ( ( IAction ) ( finalLink . getData ( ) ) ) . run ( ) ; } } ) ; taskEntries . add ( link ) ; } else { link = ( ( Link ) ( taskEntries . get ( index ) ) ) ; } Object property = linkJob . getProperty ( ACTION_PROPERTY ) ; if ( property instanceof IAction ) { link . setData ( property ) ; } link . setToolTipText ( taskString ) ; taskString = Dialog . shortenText ( taskString , link ) ; link . setText ( ( property == null ? taskString : NLS . bind ( "<a>{0}<//a>" , taskString ) ) ) ; } public void setColor ( int i ) { } private void setAllForegrounds ( Color color ) { } private void setAllBackgrounds ( Color color ) { } void setButtonFocus ( ) { } void selectWidgets ( boolean select ) { } void setIndexListener ( ProgressInfoItem . IndexListener indexListener ) { } boolean isSelected ( ) { } }

Fix:
if ( ( index == 0 ) || ( ( taskEntries . size ( ) ) == 0 ) ) {