/**
  * Creates and returns HTML representing the details of this incident info. This method is only
  * called if the details needs to be generated: ie: the detailed error message property of the
  * incident info is null.
  */
 protected String getDetailsAsHTML(ErrorInfo errorInfo) {
   if (errorInfo.getErrorException() != null) {
     // convert the stacktrace into a more pleasent bit of HTML
     StringBuffer html = new StringBuffer("<html>");
     html.append("<h2>" + escapeXml(errorInfo.getTitle()) + "</h2>");
     html.append("<HR size='1' noshade>");
     html.append("<div></div>");
     html.append("<b>Message:</b>");
     html.append("<pre>");
     html.append("    " + escapeXml(errorInfo.getErrorException().toString()));
     html.append("</pre>");
     html.append("<b>Level:</b>");
     html.append("<pre>");
     html.append("    " + errorInfo.getErrorLevel());
     html.append("</pre>");
     html.append("<b>Stack Trace:</b>");
     Throwable ex = errorInfo.getErrorException();
     while (ex != null) {
       html.append("<h4>" + ex.getMessage() + "</h4>");
       html.append("<pre>");
       for (StackTraceElement el : ex.getStackTrace()) {
         html.append("    " + el.toString().replace("<init>", "&lt;init&gt;") + "\n");
       }
       html.append("</pre>");
       ex = ex.getCause();
     }
     html.append("</html>");
     return html.toString();
   } else {
     return null;
   }
 }
    /* (non-Javadoc)
     * @see org.jdesktop.swingworker.SwingWorker#doInBackground()
     */
    @Override
    protected Void doInBackground() throws Exception {

      if (errorInfo != null) {
        Throwable t = errorInfo.getErrorException();
        String osMessage =
            "An error occurred on "
                + System.getProperty("os.name")
                + " version "
                + System.getProperty("os.version");
        StringBuffer message = new StringBuffer();
        message.append("System Info : ").append(osMessage).append(NEW_LINE_CHAR);
        message.append("Message : ").append(t.toString()).append(NEW_LINE_CHAR);
        message.append("Level : ").append(errorInfo.getErrorLevel()).append(NEW_LINE_CHAR);
        message.append("Stack Trace : ").append(NEW_LINE_CHAR);
        message.append(stackTraceToString(t));

        // copy error message to system clipboard
        StringSelection stringSelection = new StringSelection(message.toString());
        Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
        clipboard.setContents(stringSelection, null);

        // open errorReportingURL
        OpenBrowserAction openBrowserAction = new OpenBrowserAction(errorReportingURL);
        openBrowserAction.actionPerformed(null);
      }

      return null;
    }