package org.safehaus.penrose.studio.dialog; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.PlatformUI; import org.eclipse.jface.dialogs.MessageDialog; import org.ietf.ldap.LDAPException; import java.io.StringWriter; import java.io.PrintWriter; import java.lang.reflect.InvocationTargetException; /** * @author Endi Sukma Dewata */ public class ErrorDialog { public static void open(Throwable t) { if (t instanceof InvocationTargetException) { InvocationTargetException e = (InvocationTargetException)t; open(e.getCause()); } else if (t instanceof LDAPException) { LDAPException e = (LDAPException)t; open(e); } else { open("ERROR", t); } } public static void open(LDAPException e) { StringWriter sw = new StringWriter(); PrintWriter pw = new PrintWriter(sw); pw.println("LDAP Error ("+e.getResultCode()+"): "+e.getMessage()); String matchedDn = e.getMatchedDN(); if (matchedDn != null && !"".equals(matchedDn)) { pw.println("Matched DN: "+matchedDn); } String errorMessage = e.getLDAPErrorMessage(); if (errorMessage != null && !"".equals(errorMessage)) { pw.println("Message: "+errorMessage); } open("ERROR", sw.toString()); } public static void open(String message) { open("ERROR", message); } public static void open(String title, Throwable t) { StringWriter sw = new StringWriter(); PrintWriter pw = new PrintWriter(sw); t.printStackTrace(pw); open(title, sw.toString()); } public static void open(String title, String message) { if (message.length() > 500) { message = message.substring(0, 500) + "..."; } IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow(); MessageDialog.openError(window.getShell(), title, message); } }