--- /dev/null
+package net.sourceforge.phpdt.internal.ui.util;
+
+import java.io.StringWriter;
+import java.lang.reflect.InvocationTargetException;
+
+import net.sourceforge.phpdt.internal.ui.PHPUIMessages;
+//import net.sourceforge.phpeclipse.PHPeclipsePlugin;
+import net.sourceforge.phpeclipse.ui.WebUI;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jface.dialogs.ErrorDialog;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.swt.widgets.Shell;
+
+public class ExceptionHandler {
+ private static ExceptionHandler fgInstance = new ExceptionHandler();
+
+ public static void log(Throwable t, String message) {
+ WebUI.getDefault().getLog().log(
+ new Status(IStatus.ERROR, WebUI.PLUGIN_ID,
+ IStatus.ERROR, message, t));
+ }
+
+ public static void handle(CoreException e, String title, String message) {
+ handle(e, WebUI.getActiveWorkbenchShell(), title, message);
+ }
+
+ public static void handle(CoreException e, Shell parent, String title,
+ String message) {
+ fgInstance.perform(e, parent, title, message);
+ }
+
+ public static void handle(InvocationTargetException e, String title,
+ String message) {
+ handle(e, WebUI.getActiveWorkbenchShell(), title, message);
+ }
+
+ public static void handle(InvocationTargetException e, Shell parent,
+ String title, String message) {
+ fgInstance.perform(e, parent, title, message);
+ }
+
+ protected void perform(CoreException e, Shell shell, String title,
+ String message) {
+ WebUI.log(e);
+ IStatus status = e.getStatus();
+ if (status != null) {
+ ErrorDialog.openError(shell, title, message, status);
+ } else {
+ displayMessageDialog(e, e.getMessage(), shell, title, message);
+ }
+ }
+
+ protected void perform(InvocationTargetException e, Shell shell,
+ String title, String message) {
+ Throwable target = e.getTargetException();
+ if (target instanceof CoreException) {
+ perform((CoreException) target, shell, title, message);
+ } else {
+ WebUI.log(e);
+ if (e.getMessage() != null && e.getMessage().length() > 0) {
+ displayMessageDialog(e, e.getMessage(), shell, title, message);
+ } else {
+ displayMessageDialog(e, target.getMessage(), shell, title,
+ message);
+ }
+ }
+ }
+
+ private void displayMessageDialog(Throwable t, String exceptionMessage,
+ Shell shell, String title, String message) {
+ StringWriter msg = new StringWriter();
+ if (message != null) {
+ msg.write(message);
+ msg.write("\n\n");
+ }
+ if (exceptionMessage == null || exceptionMessage.length() == 0)
+ msg.write(PHPUIMessages
+ .getString("ExceptionDialog.seeErrorLogMessage"));
+ else
+ msg.write(exceptionMessage);
+ MessageDialog.openError(shell, title, msg.toString());
+ }
+}
\ No newline at end of file