private void collectChildren(int startLevel, Page parent) { Iterator<Page> childIterator = parent.listChildren(); while (childIterator.hasNext()) { Page child = childIterator.next(); listItems.add(child); if (child.getDepth() - startLevel < childDepth) { collectChildren(startLevel, child); } } }
private void populateChildListItems() { listItems = new ArrayList<>(); Page rootPage = getRootPage(PN_PARENT_PAGE); if (rootPage != null) { collectChildren(rootPage.getDepth(), rootPage); } }
private List<NavigationItem> createItems() { List<NavigationItem> items = new ArrayList<>(); int currentLevel = currentPage.getDepth(); while (startLevel < currentLevel) { Page page = currentPage.getAbsoluteParent(startLevel); if (page != null) { boolean isActivePage = page.equals(currentPage); if (isActivePage && hideCurrent) { break; } if (checkIfNotHidden(page)) { NavigationItem navigationItem = new BreadcrumbItemImpl(page, isActivePage, request, currentLevel, Collections.emptyList()); items.add(navigationItem); } } startLevel++; } return items; }
@Override public List<NavigationItem> getItems() { if (items == null) { PageManager pageManager = currentPage.getPageManager(); rootPage = pageManager.getPage(navigationRoot); if (rootPage != null) { int rootPageLevel = rootPage.getDepth(); startLevel = rootPageLevel + 1; structureDepth += rootPageLevel; items = getItems(rootPage); } else { items = Collections.emptyList(); } } return items; }
private List<NavigationItem> getItems(Page root) { List<NavigationItem> pages = new ArrayList<>(); if (root.getDepth() < structureDepth) { Iterator<Page> it = root.listChildren(new PageFilter()); while (it.hasNext()) { Page page = it.next(); boolean active = currentPage.getPath().equals(page.getPath()) || currentPage.getPath().startsWith(page.getPath() + "/"); String title = page.getNavigationTitle(); if (title == null) { title = page.getTitle(); } List<NavigationItem> children = getItems(page); int level = page.getDepth() - startLevel; Page localizedPage = getLocalizedPage(currentPage, page); if (localizedPage != null) { page = localizedPage; } pages.add(new LanguageNavigationItemImpl(page, active, request, level, children, title)); } } return pages; }