code: public String dialogButtonsOkCancelDetails(String okAttrs, String cancelAttrs, String detailsAttrs) {
  
          if (CmsStringUtil.isEmptyOrWhitespaceOnly(detailsAttrs)) {
              detailsAttrs = "";
          } else {
              detailsAttrs += " ";
          }
  
          if (Boolean.valueOf(getParamThreadHasNext()).booleanValue()
              && CmsStringUtil.isNotEmpty(getParamReportContinueKey())) {
              return dialogButtons(
                  new int[] {BUTTON_OK, BUTTON_CANCEL, BUTTON_DETAILS},
                  new String[] {okAttrs, cancelAttrs, detailsAttrs + "onclick=\"switchOutputFormat();\""});
          }
          return dialogButtons(
              new int[] {BUTTON_OK, BUTTON_DETAILS},
              new String[] {okAttrs, detailsAttrs + "onclick=\"switchOutputFormat();\""});
      }
docs: Builds a button row with an "Ok", a "Cancel" and a "Details" button.<p>
  
  This row is used when a single report is running or after the first report has finished.<p>
  
  @param okAttrs optional attributes for the ok button
  @param cancelAttrs optional attributes for the cancel button
  @param detailsAttrs optional attributes for the details button
  @return the button row