docs: public String htmlHeader(CmsHtmlList list) {
  
          String listId = list.getId();
          String sortedCol = list.getSortedColumn();
          CmsListOrderEnum order = list.getCurrentSortOrder();
  
          StringBuffer html = new StringBuffer(512);
          Locale locale = getWp().getLocale();
          CmsMessages messages = Messages.get().getBundle(locale);
          html.append("<th");
          if (CmsStringUtil.isNotEmptyOrWhitespaceOnly(getWidth())) {
              html.append(" width='");
              html.append(getWidth());
              html.append("'");
          }
          if (!isTextWrapping()) {
              html.append(" style='white-space: nowrap;'");
          }
          html.append(">\n");
  
          boolean isSorted = getId().equals(sortedCol);
          CmsListOrderEnum nextOrder = CmsListOrderEnum.ORDER_ASCENDING;
          if (isSorted && (order == CmsListOrderEnum.ORDER_ASCENDING)) {
              nextOrder = CmsListOrderEnum.ORDER_DESCENDING;
          }
          // button
          String id = listId + getId() + "Sort";
          String onClic = "listSort('" + listId + "', '" + getId() + "');";
          String helpText = null;
          if (m_helpText != null) {
              helpText = new MessageFormat(m_helpText.key(locale), locale).format(new Object[] {getName().key(locale)});
          } else {
              if (isSorteable()) {
                  if (nextOrder.equals(CmsListOrderEnum.ORDER_ASCENDING)) {
                      helpText = messages.key(Messages.GUI_LIST_COLUMN_ASC_SORT_1, new Object[] {getName().key(locale)});
                  } else {
                      helpText = messages.key(Messages.GUI_LIST_COLUMN_DESC_SORT_1, new Object[] {getName().key(locale)});
                  }
              } else {
                  helpText = messages.key(Messages.GUI_LIST_COLUMN_NO_SORT_1, new Object[] {getName().key(locale)});
              }
          }
          if (CmsStringUtil.isNotEmptyOrWhitespaceOnly(getWidth()) && (getWidth().indexOf('%') < 0)) {
              html.append("\t<div style='display:block; width: ");
              html.append(getWidth());
              html.append("px;'>\n");
          }
          String sortArrow = "";
          // sort order marker
          if (isSorted) {
              if (nextOrder == CmsListOrderEnum.ORDER_ASCENDING) {
                  sortArrow = "<img src='" + CmsWorkplace.getSkinUri() + ICON_DOWN + "' alt=''>&nbsp;";
              } else {
                  sortArrow = "<img src='" + CmsWorkplace.getSkinUri() + ICON_UP + "' alt=''>&nbsp;";
              }
          }
          html.append(
              A_CmsHtmlIconButton.defaultButtonHtml(
                  CmsHtmlIconButtonStyleEnum.SMALL_ICON_TEXT,
                  id,
                  id,
                  getName().key(locale),
                  helpText,
                  list.isPrintable() ? false : isSorteable(),
                  null,
                  null,
                  onClic,
                  false,
                  sortArrow));
          if (CmsStringUtil.isNotEmptyOrWhitespaceOnly(getWidth()) && (getWidth().indexOf('%') < 0)) {
              html.append("\t</div>\n");
          }
          html.append("</th>\n");
          return html.toString();
      }