blob: 798a324e5d095b88e3bef9fe9538caa123f955c9 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2004, 2007 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.ui.internal.intro.impl.util;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.jface.dialogs.ErrorDialog;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.osgi.util.NLS;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.internal.intro.impl.Messages;
/**
* Utiliy class for Pop-Up dialogs. This is an NL enabled utility class (ie: you
* do not have to NL enable the message before calling the methods here if you
* are calling one of the methids that takes an id as a parameter).
*/
public class DialogUtil {
/**
* Displays core error dialog with a message from the Core error status
* object, and a user message. <br>
* The user message is logged using Log.logError().
*/
public static void displayCoreErrorDialog(Shell parent, String msg,
CoreException coreEx) {
if (msg == null)
msg = coreEx.getMessage();
String title = Messages.MessageDialog_errorTitle;
if (parent == null)
parent = getActiveShell();
IStatus status = coreEx.getStatus();
ErrorDialog.openError(parent, title, msg, status);
Log.error(msg, coreEx);
}
/**
* Displays error dialog with the given message. <br>
*/
public static void displayErrorMessage(Shell parent, String msg,
Throwable ex) {
String title = Messages.MessageDialog_errorTitle;
if (parent == null)
parent = getActiveShell();
MessageDialog.openError(parent, title, msg);
Log.error(msg, ex);
}
/**
* Displays error dialog with a message. <br>
* The user message is formatted with the passed variables. Also logs the
* error using Log.logError().
*/
public static void displayErrorMessage(Shell parent, String msg,
Object[] variables, Throwable ex) {
if (msg == null)
return;
if (variables != null)
msg = NLS.bind(msg, variables);
displayErrorMessage(parent, msg, ex);
}
/**
* Displays warning dialog with a given message. <br>
* also logs the info using Log.logWarning(). msg error message to display
* and log.
*/
public static void displayWarningMessage(Shell parent, String msg) {
String title = Messages.MessageDialog_warningTitle;
if (parent == null)
parent = getActiveShell();
MessageDialog.openWarning(parent, title, msg);
Log.warning(msg);
}
/**
* Displays warning dialog with a message. <br>
* also logs the info using Log.logWarning().
*/
public static void displayWarningMessage(Shell parent, String msg,
Object[] variables) {
if (msg == null)
return;
if (variables != null)
msg = NLS.bind(msg, variables);
displayWarningMessage(parent, msg);
}
/**
* Displays info dialog with a message. Also logs the info using
* Log.logInfo().
*/
public static void displayInfoMessage(Shell parent, String msg) {
String title = Messages.MessageDialog_infoTitle;
if (parent == null)
parent = getActiveShell();
MessageDialog.openInformation(parent, title, msg);
Log.info(msg);
}
/**
* Displays info dialog with a message. Also logs the info using
* Log.logInfo().
*/
public static void displayInfoMessage(Shell parent, String msg,
Object[] variables) {
if (msg == null)
return;
if (variables != null)
msg = NLS.bind(msg, variables);
displayInfoMessage(parent, msg);
}
public static IWorkbenchWindow getActiveWorkbenchWindow() {
return PlatformUI.getWorkbench().getActiveWorkbenchWindow();
}
/**
* Utility method to best find the active shell.
*/
public static Shell getActiveShell() {
Display display = getCurrentDisplay();
Shell activeShell = display.getActiveShell();
if (activeShell == null)
return getActiveWorkbenchWindow().getShell();
return activeShell;
}
/**
* Utility method to best find the active Display.
*/
public static Display getCurrentDisplay() {
Display display = Display.getCurrent();
if (display != null)
return display;
return Display.getDefault();
}
}