diff options
Diffstat (limited to 'plugins/infra/ui/org.eclipse.papyrus.infra.widgets.toolbox/src/org/eclipse/papyrus/infra/widgets/toolbox/dialog/InformationDialog.java')
-rw-r--r-- | plugins/infra/ui/org.eclipse.papyrus.infra.widgets.toolbox/src/org/eclipse/papyrus/infra/widgets/toolbox/dialog/InformationDialog.java | 133 |
1 files changed, 133 insertions, 0 deletions
diff --git a/plugins/infra/ui/org.eclipse.papyrus.infra.widgets.toolbox/src/org/eclipse/papyrus/infra/widgets/toolbox/dialog/InformationDialog.java b/plugins/infra/ui/org.eclipse.papyrus.infra.widgets.toolbox/src/org/eclipse/papyrus/infra/widgets/toolbox/dialog/InformationDialog.java new file mode 100644 index 00000000000..78a2033b03d --- /dev/null +++ b/plugins/infra/ui/org.eclipse.papyrus.infra.widgets.toolbox/src/org/eclipse/papyrus/infra/widgets/toolbox/dialog/InformationDialog.java @@ -0,0 +1,133 @@ +/***************************************************************************** + * 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) + */ + @Override + 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 + */ + @Override + 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) + */ + @Override + 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); + } + +} |