docs: public void displayDialog() throws Exception {
  
          if (getAction() == ACTION_CANCEL) {
              actionCloseDialog();
          }
          JspWriter out = getJsp().getJspContext().getOut();
          out.print("<link rel='stylesheet' type='text/css' href='");
          out.print(getStyleUri(getJsp()));
          out.println("diff.css'>");
          out.println(dialogContentStart(getParamTitle()));
          out.print("<form name='diff-form' method='post' action='");
          out.print(getDialogUri());
          out.println("'>");
          out.println(allParamsAsHidden());
          out.println("</form>");
          // icon is displayed on the right in order that the user needs not scroll to the icon for long lines
          out.println("<p>");
          out.println(getDiffOnlyButtonsHtml());
          out.println("</p>");
          out.println(dialogBlockStart(null));
          out.println("<table cellspacing='0' cellpadding='0' class='xmlTable'>\n<tr><td><pre style='overflow:auto'>");
          try {
              CmsHtmlDifferenceConfiguration conf = new CmsHtmlDifferenceConfiguration(
                  getMode() == CmsDiffViewMode.ALL ? -1 : getLinesBeforeSkip(),
                  getLocale());
              String diff = Diff.diffAsHtml(getOriginalSource(), getCopySource(), conf);
              if (CmsStringUtil.isNotEmpty(diff)) {
                  out.println(diff);
              } else {
                  // print original source, if there are no differences
                  out.println(
                      wrapLinesWithUnchangedStyle(
                          CmsStringUtil.substitute(CmsStringUtil.escapeHtml(getOriginalSource()), "<br/>", "")));
              }
          } catch (Exception e) {
              out.print(e);
          }
          out.println("</pre></td></tr>\n</table>");
          out.println(dialogBlockEnd());
          out.println(dialogContentEnd());
          out.println(dialogEnd());
          out.println(bodyEnd());
          out.println(htmlEnd());
      }