public void headingAdded(WikiContext context, Heading hd) { log.debug("HD: " + hd.m_level + ", " + hd.m_titleText + ", " + hd.m_titleAnchor); switch (hd.m_level) { case Heading.HEADING_SMALL: m_buf.append("<li class=\"toclevel-3\">"); m_level3Index++; break; case Heading.HEADING_MEDIUM: m_buf.append("<li class=\"toclevel-2\">"); m_level2Index++; break; case Heading.HEADING_LARGE: m_buf.append("<li class=\"toclevel-1\">"); m_level1Index++; break; default: throw new InternalWikiException("Unknown depth in toc! (Please submit a bug report.)"); } if (m_level1Index < m_starting) { // in case we never had a large heading ... m_level1Index++; } if ((m_lastLevel == Heading.HEADING_SMALL) && (hd.m_level != Heading.HEADING_SMALL)) { m_level3Index = 0; } if (((m_lastLevel == Heading.HEADING_SMALL) || (m_lastLevel == Heading.HEADING_MEDIUM)) && (hd.m_level == Heading.HEADING_LARGE)) { m_level3Index = 0; m_level2Index = 0; } String titleSection = hd.m_titleSection.replace('%', '_'); String pageName = context.getEngine().encodeName(context.getPage().getName()).replace('%', '_'); String url = context.getURL(WikiContext.VIEW, context.getPage().getName()); String sectref = "#section-" + pageName + "-" + titleSection; m_buf.append("<a class=\"wikipage\" href=\"" + url + sectref + "\">"); if (m_usingNumberedList) { switch (hd.m_level) { case Heading.HEADING_SMALL: m_buf.append(m_prefix + m_level1Index + "." + m_level2Index + "." + m_level3Index + " "); break; case Heading.HEADING_MEDIUM: m_buf.append(m_prefix + m_level1Index + "." + m_level2Index + " "); break; case Heading.HEADING_LARGE: m_buf.append(m_prefix + m_level1Index + " "); break; default: throw new InternalWikiException("Unknown depth in toc! (Please submit a bug report.)"); } } m_buf.append(TextUtil.replaceEntities(hd.m_titleText) + "</a></li>\n"); m_lastLevel = hd.m_level; }