protected Control createPageArea(Composite parent) { int numPages = fDescriptors.size(); fScopeParts = new ScopePart[numPages]; if (numPages == 0) { Label label = new Label(parent, SWT.CENTER | SWT.WRAP); label.setText(SearchMessages.SearchDialog_noSearchExtension); return label; } fCurrentIndex = getPreferredPageIndex(); Composite composite = new Composite(parent, SWT.NONE); composite.setFont(parent.getFont()); GridLayout layout = new GridLayout(); layout.marginHeight = 0; layout.marginWidth = 0; composite.setLayout(layout); composite.setLayoutData(new GridData(GridData.FILL_BOTH)); TabFolder folder = new TabFolder(composite, SWT.NONE); folder.setLayout(new TabFolderLayout()); folder.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); folder.setFont(composite.getFont()); for (int i = 0; i < numPages; i++) { SearchPageDescriptor descriptor = getDescriptorAt(i); if (WorkbenchActivityHelper.filterItem(descriptor)) continue; final TabItem item = new TabItem(folder, SWT.NONE); item.setData("descriptor", descriptor); // $NON-NLS-1$ item.setText(descriptor.getLabel()); item.addDisposeListener( new DisposeListener() { public void widgetDisposed(DisposeEvent e) { item.setData("descriptor", null); // $NON-NLS-1$ if (item.getImage() != null) item.getImage().dispose(); } }); ImageDescriptor imageDesc = descriptor.getImage(); if (imageDesc != null) item.setImage(imageDesc.createImage()); if (i == fCurrentIndex) { Control pageControl = createPageControl(folder, descriptor); pageControl.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); item.setControl(pageControl); fCurrentPage = descriptor.getPage(); fDialogSettings.put(STORE_PREVIOUS_PAGE, descriptor.getId()); } } folder.addSelectionListener( new SelectionAdapter() { public void widgetSelected(SelectionEvent event) { turnToPage(event); } }); folder.setSelection(fCurrentIndex); return composite; }