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.ui.ide/src/org/eclipse/ui/internal/ide/IDEWorkbenchAdvisor.java
/* (non-Javadoc)
	 * @see org.eclipse.ui.application.WorkbenchAdvisor#eventLoopException
	 */
	public void eventLoopException(Throwable exception) {
		super.eventLoopException(exception);
		if (exceptionHandler != null) {
			exceptionHandler.handleException(exception);
		} else {
			if (getWorkbenchConfigurer() != null) {
			    getWorkbenchConfigurer().emergencyClose();
			}
		}
	}
	/* (non-Javadoc)
	 * @see org.eclipse.ui.application.WorkbenchAdvisor#preWindowShellClose
	 */
	public boolean preWindowShellClose(IWorkbenchWindowConfigurer windowConfigurer) {
		if (getWorkbenchConfigurer().getWorkbench().getWorkbenchWindowCount() > 1) {
			return true;
		}
		
		
 		IPreferenceStore store = IDEWorkbenchPlugin.getDefault().getPreferenceStore();
		boolean promptOnExit =	store.getBoolean(IDEInternalPreferences.EXIT_PROMPT_ON_CLOSE_LAST_WINDOW);
		if (promptOnExit) {
			String message;
			String productName = null;
			AboutInfo about = IDEWorkbenchPlugin.getDefault().getPrimaryInfo();
			if (about != null) {
				productName = about.getProductName();