});  Composite composite= createComposite(fScrolledComposite); composite.setLayout(new GridLayout());  Label titleLabel= createTitleLabel(composite, JavaEditorMessages.getString("SourceAttachmentForm.title")); createLabel(composite, null); createLabel(composite, null);  createHeadingLabel(composite, JavaEditorMessages.getString("SourceAttachmentForm.heading"));  Composite separator= createCompositeSeparator(composite); GridData data= new GridData(GridData.FILL_HORIZONTAL); data.heightHint= 2; separator.setLayoutData(data);  final IPackageFragmentRoot root= getPackageFragmentRoot(fFile);  if (root != null) {  if (!root.isArchive()) { createLabel(composite, JavaEditorMessages.getFormattedString("SourceAttachmentForm.message.noSource", fFile.getElementName()));  } else { try { Button button;  IPath path= root.getSourceAttachmentPath(); if (path == null) { createLabel(composite, JavaEditorMessages.getFormattedString("SourceAttachmentForm.message.noSourceAttachment", root.getElementName())); createLabel(composite, JavaEditorMessages.getString("SourceAttachmentForm.message.pressButtonToAttach")); createLabel(composite, null);  button= createButton(composite, JavaEditorMessages.getString("SourceAttachmentForm.button.attachSource"));  } else { createLabel(composite, JavaEditorMessages.getFormattedString("SourceAttachmentForm.message.noSourceInAttachment", fFile.getElementName())); createLabel(composite, JavaEditorMessages.getString("SourceAttachmentForm.message.pressButtonToChange")); createLabel(composite, null);  button= createButton(composite, JavaEditorMessages.getString("SourceAttachmentForm.button.changeAttachedSource")); }  button.setEnabled(false); button.addSelectionListener(new SelectionListener() { public void widgetSelected(SelectionEvent event) { try { SourceAttachmentDialog dialog= new SourceAttachmentDialog(fScrolledComposite.getShell(), root); if (dialog.open() == SourceAttachmentDialog.OK) verifyInput(getEditorInput());  } catch (CoreException e) { String title= JavaEditorMessages.getString("SourceAttachmentForm.error.title"); String message= JavaEditorMessages.getString("SourceAttachmentForm.error.message"); ExceptionHandler.handle(e, fScrolledComposite.getShell(), title, message); } }  public void widgetDefaultSelected(SelectionEvent e) {} });  } catch (JavaModelException e) { String title= JavaEditorMessages.getString("SourceAttachmentForm.error.title"); String message= JavaEditorMessages.getString("SourceAttachmentForm.error.message"); ExceptionHandler.handle(e, fScrolledComposite.getShell(), title, message); } } }  fScrolledComposite.setContent(composite); fScrolledComposite.setMinSize(composite.computeSize(SWT.DEFAULT, SWT.DEFAULT));  return fScrolledComposite; }
	public Control createControl(Composite parent) {		Display display= parent.getDisplay();		fBackgroundColor= display.getSystemColor(SWT.COLOR_LIST_BACKGROUND);		fForegroundColor= display.getSystemColor(SWT.COLOR_LIST_FOREGROUND);		fSeparatorColor= new Color(display, 152, 170, 203);		JFaceResources.getFontRegistry().addListener(this);		fScrolledComposite= new ScrolledComposite(parent, SWT.H_SCROLL | SWT.V_SCROLL);		fScrolledComposite.setAlwaysShowScrollBars(false);		fScrolledComposite.setExpandHorizontal(true);		fScrolledComposite.setExpandVertical(true);		fScrolledComposite.addDisposeListener(new DisposeListener() {			public void widgetDisposed(DisposeEvent e) {				JFaceResources.getFontRegistry().removeListener(SourceAttachmentForm.this);				fScrolledComposite= null;				fSeparatorColor.dispose();				fSeparatorColor= null;								fBannerLabels.clear();				fHeaderLabels.clear();			}		});		Composite composite= createComposite(fScrolledComposite);		composite.setLayout(new GridLayout());		Label titleLabel= createTitleLabel(composite, JavaEditorMessages.getString("SourceAttachmentForm.title")); //$NON-NLS-1$		createLabel(composite, null);		createLabel(composite, null);		createHeadingLabel(composite, JavaEditorMessages.getString("SourceAttachmentForm.heading")); //$NON-NLS-1$		Composite separator= createCompositeSeparator(composite);		GridData data= new GridData(GridData.FILL_HORIZONTAL);		data.heightHint= 2;		separator.setLayoutData(data);		final IPackageFragmentRoot root= getPackageFragmentRoot(fFile);		if (root != null) {						if (!root.isArchive()) {				createLabel(composite, JavaEditorMessages.getFormattedString("SourceAttachmentForm.message.noSource", fFile.getElementName())); //$NON-NLS-1$			} else {				try {					Button button;					IPath path= root.getSourceAttachmentPath();								if (path == null) {									createLabel(composite, JavaEditorMessages.getFormattedString("SourceAttachmentForm.message.noSourceAttachment", root.getElementName())); //$NON-NLS-1$						createLabel(composite, JavaEditorMessages.getString("SourceAttachmentForm.message.pressButtonToAttach")); //$NON-NLS-1$						createLabel(composite, null);						button= createButton(composite, JavaEditorMessages.getString("SourceAttachmentForm.button.attachSource"));							} else {						createLabel(composite, JavaEditorMessages.getFormattedString("SourceAttachmentForm.message.noSourceInAttachment", fFile.getElementName())); //$NON-NLS-1$						createLabel(composite, JavaEditorMessages.getString("SourceAttachmentForm.message.pressButtonToChange")); //$NON-NLS-1$						createLabel(composite, null);						button= createButton(composite, JavaEditorMessages.getString("SourceAttachmentForm.button.changeAttachedSource")); //$NON-NLS-1$					}					button.setEnabled(false); // XXX depending on 15423					button.addSelectionListener(new SelectionListener() {						public void widgetSelected(SelectionEvent event) {											try {								SourceAttachmentDialog dialog= new SourceAttachmentDialog(fScrolledComposite.getShell(), root);								if (dialog.open() == SourceAttachmentDialog.OK)									verifyInput(getEditorInput());							} catch (CoreException e) {								String title= JavaEditorMessages.getString("SourceAttachmentForm.error.title"); //$NON-NLS-1$								String message= JavaEditorMessages.getString("SourceAttachmentForm.error.message"); //$NON-NLS-1$								ExceptionHandler.handle(e, fScrolledComposite.getShell(), title, message);											}						}						public void widgetDefaultSelected(SelectionEvent e) {}					});				} catch (JavaModelException e) {					String title= JavaEditorMessages.getString("SourceAttachmentForm.error.title"); //$NON-NLS-1$					String message= JavaEditorMessages.getString("SourceAttachmentForm.error.message"); //$NON-NLS-1$					ExceptionHandler.handle(e, fScrolledComposite.getShell(), title, message);								}			}		}		fScrolledComposite.setContent(composite);		fScrolledComposite.setMinSize(composite.computeSize(SWT.DEFAULT, SWT.DEFAULT));				return fScrolledComposite;	}