1 30 31 package org.opencms.workplace.help; 32 33 import org.opencms.file.CmsResource; 34 import org.opencms.jsp.CmsJspActionElement; 35 import org.opencms.jsp.CmsJspNavElement; 36 import org.opencms.main.CmsIllegalArgumentException; 37 38 import java.util.List ; 39 import java.util.StringTokenizer ; 40 41 import javax.servlet.http.HttpServletRequest ; 42 import javax.servlet.http.HttpServletResponse ; 43 import javax.servlet.jsp.PageContext ; 44 45 59 public final class CmsHelpNavigationListView { 60 61 62 private int m_depth; 63 64 65 private CmsJspActionElement m_jsp; 66 67 68 private String m_navRootPath; 69 70 77 public CmsHelpNavigationListView(CmsJspActionElement jsp) { 78 79 m_jsp = jsp; 80 m_navRootPath = m_jsp.getCmsObject().getRequestContext().getUri(); 81 82 } 83 84 94 public CmsHelpNavigationListView(PageContext context, HttpServletRequest request, HttpServletResponse response) { 95 96 this(new CmsJspActionElement(context, request, response)); 97 } 98 99 private static String getSpaces(int n) { 100 101 n = Math.max(n, 0); 103 StringBuffer result = new StringBuffer (n); 104 for (; n > 0; n--) { 105 result.append(' '); 106 } 107 return result.toString(); 108 } 109 110 117 public String createNavigation() { 118 119 StringBuffer buffer = new StringBuffer (2048); 120 int endlevel = calculateEndLevel(); 121 String spaces = getSpaces((endlevel - m_depth) * 2); 122 if (m_navRootPath != null) { 123 buffer.append("\n").append(spaces).append("<p>\n"); 124 buffer.append(spaces).append(" <ul>\n"); 125 List navElements = m_jsp.getNavigation().getSiteNavigation(m_navRootPath, endlevel); 126 if (navElements.size() > 0) { 127 createNavigationInternal(buffer, navElements); 128 } 129 buffer.append(spaces).append(" </ul>\n"); 130 buffer.append(spaces).append("</p>"); 131 return buffer.toString(); 132 } else { 133 CmsIllegalArgumentException ex = new CmsIllegalArgumentException(Messages.get().container( 134 Messages.GUI_HELP_ERR_SITEMAP_MISSING_PARAM_1, 135 "navRootPath")); 136 throw ex; 137 } 138 } 139 140 145 public int getDepth() { 146 147 return m_depth; 148 } 149 150 155 public String getSiteRootPath() { 156 157 return m_navRootPath; 158 } 159 160 165 public void setDepth(int depth) { 166 167 m_depth = depth; 168 } 169 170 177 public void setNavigationRootPath(String navRootPath) { 178 179 m_navRootPath = navRootPath; 180 } 181 182 private int calculateEndLevel() { 183 184 int result = 0; 185 if (m_navRootPath != null) { 186 188 StringTokenizer counter = new StringTokenizer (m_navRootPath, "/", false); 189 result = counter.countTokens() - 1; 191 if (!CmsResource.isFolder(m_navRootPath)) { 192 result--; 194 } 195 result += m_depth; 196 } 197 if (result < 0) { 198 result = 0; 199 } 200 return result; 201 } 202 203 private void createNavigationInternal(StringBuffer buffer, List navElements) { 204 205 CmsJspNavElement element = (CmsJspNavElement)navElements.remove(0); 207 int elementLevel = element.getNavTreeLevel(); 208 String spacing = getSpaces(elementLevel * 2); 209 buffer.append(spacing).append("<li>\n"); 211 buffer.append(spacing).append(" <a HREF=\""); 212 buffer.append(m_jsp.link(element.getResourceName())); 213 buffer.append("\" title=\""); 214 buffer.append(element.getNavText()); 215 buffer.append("\""); 216 if (elementLevel == 1) { 217 buffer.append(" class=\"bold\""); 218 } 219 buffer.append(">"); 220 buffer.append(element.getNavText()); 221 buffer.append("</a>\n"); 222 223 if (!navElements.isEmpty()) { 225 CmsJspNavElement child = (CmsJspNavElement)navElements.get(0); 226 int childLevel = child.getNavTreeLevel(); 227 if (elementLevel < childLevel) { 228 buffer.append(spacing).append(" <ul>\n"); 230 } else if (elementLevel == childLevel) { 231 buffer.append(spacing).append("</li>\n"); 233 } else { 234 buffer.append(spacing).append(" </li>\n").append(spacing).append("</ul>\n"); 237 } 238 createNavigationInternal(buffer, navElements); 239 } else { 240 buffer.append(spacing).append(" </li>\n").append(spacing).append("</ul>\n"); 242 } 243 244 } 245 } 246 | Popular Tags |