Bug 54347 [Dialogs] Provide "Yes No Always Never" dialog
In Debug UI, we define a dialog that prompts the user to answer Yes, No, Always, or Never. If anyone's interested, this code is generic and could be shipped as a JFace component. The dialog is in the org.eclipse.debug.ui project; the type name is AlwaysNeverDialog. The dialog supports passing in a preference store and preference key for the dialog to persist an Always or Never selection. For cases where clients don't have a preference store but still want to be able to get at the user's response, it alternatively supports passing in a string buffer where the dialog will store the "always/never/prompt" status.
bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/MessageDialog.java
if(defaultButton && !customShouldTakeFocus())
		button.setFocus();
	return button;
}
/**
 * Return whether or not we should apply the workaround where
 * we take focus for the default button or if that should be 
 * determined by the dialog.
 * By default only return true if the custom area is a label
 * or CLabel that cannot take focus.
 * @return boolean
 */
protected boolean customShouldTakeFocus() {
	if(customArea instanceof Label) 
		return false;
	
	if(customArea instanceof CLabel)
		return (customArea.getStyle() & SWT.NO_FOCUS) > 0;
	
	return true;	
}
	/*
	 * @see IconAndMessageDialog#getImage()
	 */
	public Image getImage() {
		return image;
	}
}