/***************************************************************************** * Copyright (c) 2010 Atos Origin. * * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Emilien Perico (Atos Origin) emilien.perico@atosorigin.com - Initial API and implementation * *****************************************************************************/ package org.eclipse.papyrus.infra.widgets.toolbox.dialog; import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.window.Window; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Shell; /** * A JFace dialog used to show information to the end user.<br> * This dialog is able to store the user choice into a preference store.<br> * */ public class InformationDialog extends MessageDialog { private IPreferenceStore ps; private String preference; private Button rememberChoice; /** * The Constructor. * * @param parentShell * the parent shell * @param dialogTitle * the dialog title * @param message * the message * @param pso * the preference store * @param preference * the preference */ public InformationDialog(Shell parentShell, String dialogTitle, String message, IPreferenceStore ps, String preference) { this(parentShell, dialogTitle, message, ps, preference, SWT.OK, MessageDialog.INFORMATION, new String[] { IDialogConstants.OK_LABEL }); } /** * The Constructor. * * @param parentShell * the parent shell * @param dialogTitle * the dialog title * @param message * the message * @param ps * the ps the preference store * @param preference * the preference string to store the choice * @param style * the style for buttons : SWT.OK, SWT.YES * @param messageDialogType * : MessageDialog.INFORMATION, MessageDialog.WARNING * @param labels * the labels, for example IDialogConstants.OK_LABEL */ public InformationDialog(Shell parentShell, String dialogTitle, String message, IPreferenceStore ps, String preference, int style, int messageDialogType, String[] labels) { super(parentShell, dialogTitle, null, message, messageDialogType, labels, style); this.ps = ps; this.preference = preference; } /** * @see org.eclipse.jface.dialogs.MessageDialog#createDialogArea(org.eclipse.swt.widgets.Composite) */ protected Control createDialogArea(Composite parent) { Composite container = (Composite) super.createDialogArea(parent); if (ps != null && preference != null && preference.length() > 0) { rememberChoice = new Button(container, SWT.CHECK); rememberChoice.setText("Do not show again"); } return container; } /** * @see org.eclipse.jface.window.Window#open() return Window.OK if it's * valid */ public int open() { // Do not open the dialog if the preference is true if (ps != null && preference != null && preference.length() > 0) { if (ps.getBoolean(preference)) { return Window.OK; } } return super.open(); } /** * @see org.eclipse.jface.dialogs.Dialog#buttonPressed(int) */ protected void buttonPressed(int buttonId) { // OK pressed if (buttonId == Window.OK && rememberChoice != null && rememberChoice.getSelection()) { if (ps != null && preference != null && preference.length() > 0) { // Store the preference ps.setValue(preference, true); } } super.buttonPressed(buttonId); } }