/*******************************************************************************
* Copyright (c) 2014 Bruno Medeiros and other Contributors.
* 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:
* Bruno Medeiros - initial API and implementation
*******************************************************************************/
package melnorme.lang.ide.ui.utils;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.swt.widgets.Shell;
import melnorme.lang.ide.core.LangCoreMessages;
import melnorme.lang.ide.core.utils.EclipseUtils;
import melnorme.lang.ide.ui.LangUIMessages;
import melnorme.utilbox.core.CommonException;
import melnorme.utilbox.status.Severity;
import melnorme.utilbox.status.StatusException;
public class UIOperationsStatusHandler {
// Normally, handler instance is never changed. Only in tests is it changed.
public volatile static UIOperationErrorHandlerImpl handler = new UIOperationErrorHandlerImpl();
public static boolean isIgnoringHandling() {
return handler instanceof Null_UIOperationErrorHandlerImpl;
}
/* ----------------- ----------------- */
public static void handleStatus(boolean logError, Shell shell, String title, String message, Throwable exception) {
handler.handleStatus(logError, shell, title, message, exception);
}
public static void handleStatus(boolean logError, Shell shell, String title, StatusException status) {
handler.handleStatus(logError, shell, title, status);
}
public static void handleStatus(boolean logError, String title, StatusException status) {
handler.handleStatus(logError, null, title, status);
}
public static void handleStatus(String title, StatusException status) {
handler.handleStatus(true, null, title, status);
}
/* ----------------- ----------------- */
public static void handleStatus(boolean logError, String title, CoreException ce) {
handleStatus(logError, title, EclipseUtils.createCommonException(ce));
}
public static void handleStatus(boolean logError, String title, CommonException ce) {
handleStatus(logError, title, ce.toStatusException(Severity.ERROR));
}
public static void handleStatus(String title, CommonException ce) {
handleStatus(false, title, ce);
}
/* ----------------- ----------------- */
public static void displayStatusMessage(String title, StatusException status) {
handler.displayStatusMessage(title, status);
}
public static void displayStatusMessage(String title, Severity severity, String message) {
handler.displayStatusMessage(title, severity, message);
}
public static void handleInternalError(String message, Throwable exception) {
handleInternalError(null, message, exception);
}
public static void handleInternalError(Shell shell, String message, Throwable exception) {
handler.handleStatus(true, shell, LangUIMessages.InternalError, message, exception);
}
public static void handleOperationStatus(String opName, CoreException ce) {
handleOperationStatus(opName, EclipseUtils.createCommonException(ce));
}
public static void handleOperationStatus(String opName, CommonException ce) {
String dialogTitle = opName + " - " + LangCoreMessages.Msg_Error;
handleStatus(false, dialogTitle, ce);
}
/* ----------------- ----------------- */
public static class Null_UIOperationErrorHandlerImpl extends UIOperationErrorHandlerImpl {
@Override
protected void openMessageDialog(Shell shell, String title, StatusException status) {
// Do nothing
}
}
}