ICompletionProposalCategoriesConfigurationReader properties = CompletionProposoalCatigoriesConfigurationRegistry.getDefault().getReadableConfiguration(this.fContentTypeID);
if (OptionalMessageDialog.isDialogEnabled(PREF_WARN_ABOUT_EMPTY_ASSIST_CATEGORY) &&
properties instanceof ICompletionProposalCategoriesConfigurationWriter &&
((ICompletionProposalCategoriesConfigurationWriter)properties).hasAssociatedPropertiesPage()) {
ICompletionProposalCategoriesConfigurationWriter propertiesExtension = (ICompletionProposalCategoriesConfigurationWriter)properties;
final Shell shell= SSEUIPlugin.getActiveWorkbenchShell();
String title= SSEUIMessages.ContentAssist_all_disabled_title;
String message= SSEUIMessages.ContentAssist_all_disabled_message;
// see PreferencePage#createControl for the 'defaults' label
final String restoreButtonLabel= JFaceResources.getString("defaults"); //$NON-NLS-1$
final String linkMessage= NLS.bind(SSEUIMessages.ContentAssist_all_disabled_preference_link, LegacyActionTools.removeMnemonics(restoreButtonLabel));
final int restoreId= IDialogConstants.CLIENT_ID + 10;
final int settingsId= IDialogConstants.CLIENT_ID + 11;
final OptionalMessageDialog dialog= new OptionalMessageDialog(PREF_WARN_ABOUT_EMPTY_ASSIST_CATEGORY, shell, title, null /* default image */, message, MessageDialog.WARNING, new String[] { restoreButtonLabel, IDialogConstants.CLOSE_LABEL }, 1) {
/*
* @see org.eclipse.jdt.internal.ui.dialogs.OptionalMessageDialog#createCustomArea(org.eclipse.swt.widgets.Composite)
*/
protected Control createCustomArea(Composite composite) {
// wrap link and checkbox in one composite without space
Composite parent= new Composite(composite, SWT.NONE);
GridLayout layout= new GridLayout();
layout.marginHeight= 0;
layout.marginWidth= 0;
layout.verticalSpacing= 0;
parent.setLayout(layout);
Composite linkComposite= new Composite(parent, SWT.NONE);
layout= new GridLayout();
layout.marginHeight= convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_MARGIN);
layout.marginWidth= convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_MARGIN);
layout.horizontalSpacing= convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING);
linkComposite.setLayout(layout);
Link link= new Link(linkComposite, SWT.NONE);
link.setText(linkMessage);
link.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
setReturnCode(settingsId);
close();
}
});
GridData gridData= new GridData(SWT.FILL, SWT.BEGINNING, true, false);
gridData.widthHint= this.getMinimumMessageWidth();
link.setLayoutData(gridData);
// create checkbox and "don't show this message" prompt
super.createCustomArea(parent);
return parent;
}
/*
* @see org.eclipse.jface.dialogs.MessageDialog#createButtonsForButtonBar(org.eclipse.swt.widgets.Composite)
*/
protected void createButtonsForButtonBar(Composite parent) {
Button[] buttons= new Button[2];
buttons[0]= createButton(parent, restoreId, restoreButtonLabel, false);
buttons[1]= createButton(parent, IDialogConstants.CLOSE_ID, IDialogConstants.CLOSE_LABEL, true);
setButtons(buttons);
}
};
int returnValue = dialog.open();
//based on user actions either reset defaults or open preference dialog
if (restoreId == returnValue || settingsId == returnValue) {
if (restoreId == returnValue) {
propertiesExtension.loadDefaults();
propertiesExtension.saveConfiguration();
}
if (settingsId == returnValue) {
PreferencesUtil.createPreferenceDialogOn(shell,
propertiesExtension.getPropertiesPageID(), null, null).open();
}
return true;
}
}