/* Description: ZK Essentials History: Created by dennis Copyright (C) 2012 Potix Corporation. All Rights Reserved. */ package org.zkoss.essentials.chapter7.ajaxbased; import org.zkoss.essentials.services.SidebarPage; import org.zkoss.essentials.services.SidebarPageConfig; import org.zkoss.zk.ui.Component; import org.zkoss.zk.ui.event.BookmarkEvent; import org.zkoss.zk.ui.event.SerializableEventListener; import org.zkoss.zk.ui.select.SelectorComposer; import org.zkoss.zk.ui.select.Selectors; import org.zkoss.zul.Include; public class BookmarkChangeController extends SelectorComposer<Component> { private static final long serialVersionUID = 1L; SidebarPageConfig pageConfig = new SidebarPageConfigAjaxBasedImpl(); @Override public void doAfterCompose(Component comp) throws Exception { super.doAfterCompose(comp); if (comp.getParent() != null) { throw new RuntimeException("A bookmark change listener can only apply on the root comp"); } comp.addEventListener("onBookmarkChange", new SerializableEventListener<BookmarkEvent>() { private static final long serialVersionUID = 1L; public void onEvent(BookmarkEvent event) throws Exception { String bookmark = event.getBookmark(); if(bookmark.startsWith("p_")){ String p = bookmark.substring("p_".length()); SidebarPage page = pageConfig.getPage(p); if(page!=null){ //use iterable to find the first include only Include include = (Include)Selectors.iterable(getPage(), "#mainInclude").iterator().next(); include.setSrc(page.getUri()); } } } }); } }