1 28 29 package com.opencms.defaults; 30 31 import org.opencms.file.CmsObject; 32 import org.opencms.main.CmsException; 33 34 import com.opencms.template.A_CmsXmlContent; 35 import com.opencms.template.CmsXmlTemplate; 36 37 import java.util.Hashtable ; 38 39 48 public abstract class A_CmsNavBase extends CmsXmlTemplate { 49 protected static final String C_PROPERTY_NAVINDEX = "NavIndex"; 50 protected static final String C_NAVINDEX = "index.html"; 51 52 62 public boolean isCacheable(CmsObject cms, String templateFile, String elementName, Hashtable parameters, String templateSelector) { 63 return true; 64 } 65 66 76 protected abstract Object getFolderCurrent(CmsObject cms, String tagcontent, A_CmsXmlContent doc, Object userObject) throws CmsException; 77 78 88 protected abstract Object getFolderParent(CmsObject cms, String tagcontent, A_CmsXmlContent doc, Object userObject) throws CmsException; 89 90 100 protected abstract Object getFolderRoot(CmsObject cms, String tagcontent, A_CmsXmlContent doc, Object userObject) throws CmsException; 101 102 112 protected abstract Object getNavCurrent(CmsObject cms, String tagcontent, A_CmsXmlContent doc, Object userObject) throws CmsException; 113 114 125 protected abstract Object getNavFold(CmsObject cms, String tagcontent, A_CmsXmlContent doc, Object userObject) throws CmsException; 126 127 137 protected abstract Object getNavParent(CmsObject cms, String tagcontent, A_CmsXmlContent doc, Object userObject) throws CmsException; 138 139 149 protected abstract Object getNavRoot(CmsObject cms, String tagcontent, A_CmsXmlContent doc, Object userObject) throws CmsException; 150 151 161 protected abstract Object getNavTree(CmsObject cms, String tagcontent, A_CmsXmlContent doc, Object userObject) throws CmsException; 162 163 173 protected abstract Object getPropertyCurrent(CmsObject cms, String tagcontent, A_CmsXmlContent doc, Object userObject) 174 throws CmsException; 175 176 186 protected abstract Object getPropertyParent(CmsObject cms, String tagcontent, A_CmsXmlContent doc, Object userObject) 187 throws CmsException; 188 189 199 protected abstract Object getPropertyRoot(CmsObject cms, String tagcontent, A_CmsXmlContent doc, Object userObject) 200 throws CmsException; 201 202 203 213 protected abstract Object getPropertyUri(CmsObject cms, String tagcontent, A_CmsXmlContent doc, Object userObject) 214 throws CmsException; 215 216 227 private int partitionIt(int left, int right, float pivot, String [] navLink, String [] navText, float[] navPos) { 228 229 int leftPtr = left - 1; 231 232 int rightPtr = right; 234 while (true) { 235 236 while (navPos[++leftPtr] < pivot) { 239 } 240 241 while (rightPtr > 0 && navPos[--rightPtr] > pivot) { 244 } 245 246 if (leftPtr >= rightPtr) { 249 break; 250 } else { 251 swap(leftPtr, rightPtr, navLink, navText, navPos); 252 } 253 } 254 255 swap(leftPtr, right, navLink, navText, navPos); 257 258 return leftPtr; 260 } 261 262 271 private void quickSort(int left, int right, String [] navLink, String [] navText, float[] navPos) { 272 if (right - left <= 0) { 273 return; 274 } else { 275 276 float pivot = navPos[right]; 278 int partition = partitionIt(left, right, pivot, navLink, navText, navPos); 279 280 quickSort(left, partition - 1, navLink, navText, navPos); 282 283 quickSort(partition + 1, right, navLink, navText, navPos); 285 } 286 } 287 288 296 protected void sortNav(int size, String [] navLink, String [] navText, float[] navPos) { 297 quickSort(0, size - 1, navLink, navText, navPos); 298 } 299 300 309 private void swap(int dex1, int dex2, String [] navLink, String [] navText, float[] navPos) { 310 311 float navPosTemp = navPos[dex1]; 313 navPos[dex1] = navPos[dex2]; 314 navPos[dex2] = navPosTemp; 315 316 String navTextTemp = navText[dex1]; 318 navText[dex1] = navText[dex2]; 319 navText[dex2] = navTextTemp; 320 321 String navLinkTemp = navLink[dex1]; 323 navLink[dex1] = navLink[dex2]; 324 navLink[dex2] = navLinkTemp; 325 } 326 } 327 | Popular Tags |