| //------------------------------------------------------------------------------ |
| // Copyright (c) 2005, 2006 IBM Corporation and others. |
| // 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: |
| // IBM Corporation - initial implementation |
| //------------------------------------------------------------------------------ |
| package org.eclipse.epf.common.serviceability; |
| |
| import org.eclipse.core.runtime.IStatus; |
| import org.eclipse.core.runtime.MultiStatus; |
| import org.eclipse.core.runtime.Status; |
| import org.eclipse.epf.common.plugin.AbstractPlugin; |
| import org.eclipse.jface.dialogs.ErrorDialog; |
| import org.eclipse.swt.graphics.Image; |
| import org.eclipse.swt.widgets.Shell; |
| import org.eclipse.ui.IWorkbench; |
| import org.eclipse.ui.IWorkbenchWindow; |
| import org.eclipse.ui.PlatformUI; |
| |
| /** |
| * A message dialog used for displaying error, warning, confirmation or |
| * informational messages. |
| * |
| * @author Kelvin Low |
| * @since 1.0 |
| */ |
| public class MsgDialog { |
| |
| // The plug-in instance. |
| private AbstractPlugin plugin; |
| |
| // The plug-in ID. |
| private String pluginId; |
| |
| // The plug-in logger. |
| private Logger logger; |
| |
| /** |
| * Create a new instance given the plug-in instance. |
| * |
| * @param plugin |
| * The plugin instance. |
| */ |
| public MsgDialog(AbstractPlugin plugin) { |
| this.plugin = plugin; |
| this.pluginId = plugin.getId(); |
| this.logger = plugin.getLogger(); |
| } |
| |
| /** |
| * Displays the given error message in an error dialog without the error |
| * reason and Details button. |
| * <p> |
| * Note: The error message will be written to the log file. |
| * |
| * @param title |
| * The title for the error dialog. |
| * @param msg |
| * The error message. |
| */ |
| public void displayError(String title, String msg) { |
| display(IStatus.ERROR, title, msg, null, null, null); |
| } |
| |
| /** |
| * Displays the given error message in an error dialog without the error |
| * reason and Details button. |
| * <p> |
| * Note: The error message and the exception stack trace will be written to |
| * the log file. |
| * |
| * @param title |
| * The title for the error dialog. |
| * @param msg |
| * The error message. |
| * @param ex |
| * The exception associated with the error. |
| */ |
| public void displayError(String title, String msg, Throwable ex) { |
| display(IStatus.ERROR, title, msg, null, null, ex); |
| } |
| |
| /** |
| * Displays the given error message in an error dialog without the Details |
| * button. |
| * <p> |
| * Note: The error message will be written to the log file. |
| * |
| * @param title |
| * The title for the error dialog. |
| * @param msg |
| * The error message. |
| * @param reason |
| * The reason for the error. |
| */ |
| public void displayError(String title, String msg, String reason) { |
| display(IStatus.ERROR, title, msg, reason, null, null); |
| } |
| |
| /** |
| * Displays the given error message in an error dialog without the Details |
| * button. |
| * <p> |
| * Note: The error message and the exception stack trace will be written to |
| * the log file. |
| * |
| * @param title |
| * The title for the error dialog. |
| * @param msg |
| * The error message. |
| * @param reason |
| * The reason for the error. |
| * @param ex |
| * The exception associated with the error. |
| */ |
| public void displayError(String title, String msg, String reason, |
| Throwable ex) { |
| display(IStatus.ERROR, title, msg, reason, null, ex); |
| } |
| |
| /** |
| * Displays the given error message in an error dialog. The Details button |
| * will be displayed if the <code>details</code> parameter it not null or |
| * empty. |
| * <p> |
| * Note: The error message will be written to the log file. |
| * |
| * @param title |
| * The title for the error dialog. |
| * @param msg |
| * The error message. |
| * @param reason |
| * The reason for the error. |
| * @param details |
| * The error details. |
| */ |
| public void displayError(String title, String msg, String reason, |
| String details) { |
| display(IStatus.ERROR, title, msg, reason, details, null); |
| } |
| |
| /** |
| * Displays the given error message in an error dialog. The Details button |
| * will be displayed if the <code>details</code> parameter it not null or |
| * empty. |
| * <p> |
| * Note: The error message and the exception stack trace will be written to |
| * the log file. |
| * |
| * @param title |
| * The title for the error dialog. |
| * @param msg |
| * The error message. |
| * @param reason |
| * The reason for the error. |
| * @param details |
| * The error details. |
| * @param ex |
| * The exception associated with the error. |
| */ |
| public void displayError(String title, String msg, String reason, |
| String details, Throwable ex) { |
| display(IStatus.ERROR, title, msg, reason, details, ex); |
| } |
| |
| /** |
| * Displays the given error status in an error dialog. |
| * <p> |
| * Note: The error message and the exception stack trace will be written to |
| * the log file. |
| * |
| * @param title |
| * The title for the error dialog. |
| * @param status |
| * The error status. |
| */ |
| public int displayError(String title, IStatus status) { |
| return display(title, null, status); |
| } |
| |
| /** |
| * Displays the given error status in an error dialog. |
| * <p> |
| * Note: The error message and the exception stack trace will be written to |
| * the log file. |
| * |
| * @param title |
| * The title for the error dialog. |
| * @param msg |
| * The error message. |
| * @param status |
| * The error status. |
| */ |
| public int displayError(String title, String msg, IStatus status) { |
| return display(title, msg, status); |
| } |
| |
| /** |
| * Displays the given warning message in a warning dialog without the |
| * warning reason and Details button. |
| * <p> |
| * Note: The waning message will be written to the log file. |
| * |
| * @param title |
| * The title for the warning dialog. |
| * @param msg |
| * The warning message. |
| */ |
| public void displayWarning(String title, String msg) { |
| display(IStatus.WARNING, title, msg, null, null, null); |
| } |
| |
| /** |
| * Displays the given warning message in a warning dialog without the |
| * warning reason and Details button. |
| * <p> |
| * Note: The warning message and the exception stack trace will be written |
| * to the log file. |
| * |
| * @param title |
| * The title for the warning dialog. |
| * @param msg |
| * The warning message. |
| * @param ex |
| * The exception associated with the warning. |
| */ |
| public void displayWarning(String title, String msg, Throwable ex) { |
| display(IStatus.WARNING, title, msg, null, null, ex); |
| } |
| |
| /** |
| * Displays the given warning message in a warning dialog without the |
| * warning reason and Details button. |
| * <p> |
| * Note: The waning message will be written to the log file. |
| * |
| * @param title |
| * The title for the warning dialog. |
| * @param msg |
| * The warning message. |
| * @param reason |
| * The reason for the warning. |
| */ |
| public void displayWarning(String title, String msg, String reason) { |
| display(IStatus.WARNING, title, msg, reason, null, null); |
| } |
| |
| /** |
| * Displays the given warning message in a warning dialog without the |
| * warning reason and Details button. |
| * <p> |
| * Note: The warning message and the exception stack trace will be written |
| * to the log file. |
| * |
| * @param title |
| * The title for the warning dialog. |
| * @param msg |
| * The warning message. |
| * @param reason |
| * The reason for the warning. |
| * @param ex |
| * The exception associated with the warning. |
| */ |
| public void displayWarning(String title, String msg, String reason, |
| Throwable ex) { |
| display(IStatus.WARNING, title, msg, reason, null, ex); |
| } |
| |
| /** |
| * Displays the given warning message in a warning dialog. The Details |
| * button will be displayed if the <code>details</code> parameter it not |
| * null or empty. |
| * <p> |
| * Note: The waning message will be written to the log file. |
| * |
| * @param title |
| * The title for the error dialog. |
| * @param msg |
| * The warning message. |
| * @param reason |
| * The reason for the warning. |
| * @param details |
| * The warning details. |
| */ |
| public void displayWarning(String title, String msg, String reason, |
| String details) { |
| display(IStatus.WARNING, title, msg, reason, details, null); |
| } |
| |
| /** |
| * Displays the given warning message in a warning dialog. The Details |
| * button will be displayed if the <code>details</code> parameter it not |
| * null or empty. |
| * <p> |
| * Note: The warning message and the exception stack trace will be written |
| * to the log file. |
| * |
| * @param title |
| * The title for the error dialog. |
| * @param msg |
| * The warning message. |
| * @param reason |
| * The reason for the warning. |
| * @param details |
| * The warning details. |
| * @param ex |
| * The exception associated with the warning. |
| */ |
| public void displayWarning(String title, String msg, String reason, |
| String details, Throwable ex) { |
| display(IStatus.WARNING, title, msg, reason, details, ex); |
| } |
| |
| /** |
| * Displays the given warning status in an error dialog. |
| * <p> |
| * Note: The warning message and the exception stack trace will be written |
| * to the log file. |
| * |
| * @param title |
| * The title for the error dialog. |
| * @param status |
| * The error status. |
| */ |
| public void displayWarning(String title, IStatus status) { |
| display(title, null, status); |
| } |
| |
| /** |
| * Displays the given warning status in an error dialog. |
| * <p> |
| * Note: The warning message and the exception stack trace will be written |
| * to the log file. |
| * |
| * @param title |
| * The title for the error dialog. |
| * @param msg |
| * The error message. |
| * @param status |
| * The error status. |
| */ |
| public void displayWarning(String title, String msg, IStatus status) { |
| display(title, msg, status); |
| } |
| |
| /** |
| * Displays the given error or warning message in an error or warning |
| * dialog. The Details button will be displayed if the <code>details</code> |
| * parameter it not null or empty. |
| * |
| * @param severity |
| * The severity, either IStatus.ERROR or IStatus.WARNING. |
| * @param title |
| * The title for the error dialog. |
| * @param msg |
| * The error message. |
| * @param reason |
| * The reason for the error. |
| * @param details |
| * The error details. |
| * @param ex |
| * The exception associated with the error. |
| */ |
| public synchronized void display(int severity, String title, String msg, |
| String reason, String details, Throwable ex) { |
| if (msg == null && ex != null) { |
| msg = ex.getMessage(); |
| } |
| |
| if (msg == null) { |
| msg = ""; //$NON-NLS-1$ |
| } |
| |
| if (severity == IStatus.ERROR || severity == IStatus.WARNING) { |
| logger.logMsg(severity, msg, ex); |
| } else { |
| throw new IllegalArgumentException( |
| "severity argument must be IStatus.ERROR or IStatus.WARNING"); //$NON-NLS-1$ |
| } |
| |
| Image oldImage = org.eclipse.jface.dialogs.ErrorDialog |
| .getDefaultImage(); |
| Image shellImage = getShellImage(); |
| if (shellImage != null) { |
| ErrorDialog.setDefaultImage(shellImage); |
| } |
| |
| Shell shell = plugin.getWorkbench().getDisplay().getActiveShell(); |
| |
| if (details != null && details.length() > 0) { |
| MultiStatus mStatus = new MultiStatus(pluginId, IStatus.OK, reason, |
| ex); |
| Status status = new Status(severity, pluginId, IStatus.OK, details, |
| ex); |
| mStatus.add(status); |
| org.eclipse.jface.dialogs.ErrorDialog.openError(shell, title, msg, |
| mStatus); |
| } else if (reason != null && reason.length() > 0) { |
| Status status = new Status(severity, pluginId, IStatus.OK, reason, |
| ex); |
| org.eclipse.jface.dialogs.ErrorDialog.openError(shell, title, msg, |
| status); |
| } else { |
| if (severity == IStatus.ERROR) { |
| WrappedMessageDialog.openError(shell, title, msg); |
| } else if (severity == IStatus.WARNING) { |
| WrappedMessageDialog.openWarning(shell, title, msg); |
| } |
| } |
| |
| if (shellImage != null) { |
| ErrorDialog.setDefaultImage(oldImage); |
| } |
| } |
| |
| /** |
| * Displays the given error or warning message in an error or warning |
| * dialog. The Details button will be displayed if the <code>details</code> |
| * parameter it not null or empty. |
| * |
| * @param title |
| * The title for the error dialog. |
| * @param status |
| * The error status. |
| */ |
| public synchronized int display(String title, IStatus status) { |
| return display(title, null, status); |
| } |
| |
| /** |
| * Displays the given error or warning message in an error or warning |
| * dialog. The Details button will be displayed if the <code>details</code> |
| * parameter it not null or empty. |
| * |
| * @param title |
| * The title for the error dialog. |
| * @param msg |
| * The error message. |
| * @param status |
| * The error status. |
| */ |
| public synchronized int display(String title, String msg, IStatus status) { |
| if (status == null) { |
| throw new IllegalArgumentException("status argument cannot be null"); //$NON-NLS-1$ |
| } |
| |
| if (msg == null) { |
| msg = status.getMessage(); |
| } |
| if (msg == null) { |
| msg = ""; //$NON-NLS-1$ |
| } |
| |
| int severity = status.getSeverity(); |
| if (severity == IStatus.ERROR || severity == IStatus.WARNING) { |
| logger.logMsg(severity, msg, status.getException()); |
| } |
| |
| Image oldImage = org.eclipse.jface.dialogs.ErrorDialog |
| .getDefaultImage(); |
| Image shellImage = getShellImage(); |
| if (shellImage != null) { |
| ErrorDialog.setDefaultImage(shellImage); |
| } |
| |
| Shell shell = plugin.getWorkbench().getDisplay().getActiveShell(); |
| |
| int rc = org.eclipse.jface.dialogs.ErrorDialog.openError(shell, title, |
| msg, status); |
| |
| if (shellImage != null) { |
| ErrorDialog.setDefaultImage(oldImage); |
| } |
| |
| return rc; |
| } |
| |
| /** |
| * Displays the given message in a informational dialog with an "OK" button. |
| * |
| * @param title |
| * The title for the information dialog. |
| * @param msg |
| * The message to display. |
| */ |
| public void displayInfo(String title, String msg) { |
| if (msg == null) { |
| msg = ""; //$NON-NLS-1$ |
| } |
| |
| Image oldImage = WrappedMessageDialog.getDefaultImage(); |
| Image shellImage = getShellImage(); |
| if (shellImage != null) { |
| WrappedMessageDialog.setDefaultImage(shellImage); |
| } |
| |
| Shell shell = plugin.getWorkbench().getDisplay().getActiveShell(); |
| WrappedMessageDialog.openInformation(shell, title, msg); |
| |
| if (shellImage != null) { |
| WrappedMessageDialog.setDefaultImage(oldImage); |
| } |
| } |
| |
| /** |
| * Displays the given message in a question dialog with a "Yes" and "No" |
| * button. |
| * |
| * @param title |
| * The title for the information dialog. |
| * @param msg |
| * The message to display. |
| */ |
| public boolean displayPrompt(String title, String msg) { |
| if (msg == null) { |
| msg = ""; //$NON-NLS-1$ |
| } |
| |
| Image oldImage = WrappedMessageDialog.getDefaultImage(); |
| Image shellImage = getShellImage(); |
| if (shellImage != null) { |
| WrappedMessageDialog.setDefaultImage(shellImage); |
| } |
| |
| Shell shell = plugin.getWorkbench().getDisplay().getActiveShell(); |
| boolean result = WrappedMessageDialog.openQuestion(shell, title, msg); |
| |
| if (shellImage != null) { |
| WrappedMessageDialog.setDefaultImage(oldImage); |
| } |
| |
| return result; |
| } |
| |
| /** |
| * Displays the given message in a confirmation dialog with a "Yes" and |
| * "Cancel" button. |
| * |
| * @param title |
| * The title for the information dialog. |
| * @param msg |
| * The message to display. |
| */ |
| public boolean displayConfirmation(String title, String msg) { |
| if (msg == null) { |
| msg = ""; //$NON-NLS-1$ |
| } |
| |
| Image oldImage = WrappedMessageDialog.getDefaultImage(); |
| Image shellImage = getShellImage(); |
| if (shellImage != null) { |
| WrappedMessageDialog.setDefaultImage(shellImage); |
| } |
| |
| Shell shell = plugin.getWorkbench().getDisplay().getActiveShell(); |
| boolean result = WrappedMessageDialog.openConfirm(shell, title, msg); |
| |
| if (shellImage != null) { |
| WrappedMessageDialog.setDefaultImage(oldImage); |
| } |
| |
| return result; |
| } |
| |
| public int displayConfirmation(String title, String msg, IStatus status) { |
| if (status == null) { |
| throw new IllegalArgumentException("status argument cannot be null"); //$NON-NLS-1$ |
| } |
| |
| if (msg == null) { |
| msg = status.getMessage(); |
| } |
| if (msg == null) { |
| msg = ""; //$NON-NLS-1$ |
| } |
| |
| Image shellImage = getShellImage(); |
| if (shellImage != null) { |
| ErrorDialogNoReason.setDefaultImage(shellImage); |
| } |
| |
| Shell shell = plugin.getWorkbench().getDisplay().getActiveShell(); |
| |
| int rc = ErrorDialogNoReason.openError(shell, title, msg, status); |
| |
| return rc; |
| |
| } |
| |
| /** |
| * Returns the image for the current shell. |
| * |
| * @return The current shell image. |
| */ |
| private Image getShellImage() { |
| IWorkbench workbench = PlatformUI.getWorkbench(); |
| if (workbench != null) { |
| IWorkbenchWindow workbenchWindow = workbench |
| .getActiveWorkbenchWindow(); |
| if (workbenchWindow != null) { |
| Shell shell = workbenchWindow.getShell(); |
| if (shell != null) { |
| return shell.getImage(); |
| } |
| } |
| } |
| return null; |
| } |
| |
| } |