/* * Copyright (C) 2003-2007 eXo Platform SAS. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Affero General Public License * as published by the Free Software Foundation; either version 3 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see<http://www.gnu.org/licenses/>. */ package org.exoplatform.ecm.webui.component.explorer.sidebar; import java.util.Set; import org.exoplatform.ecm.webui.component.explorer.UIDocumentContainer; import org.exoplatform.ecm.webui.component.explorer.UIDocumentInfo; import org.exoplatform.ecm.webui.component.explorer.UIDocumentWorkspace; import org.exoplatform.ecm.webui.component.explorer.UIJCRExplorer; import org.exoplatform.ecm.webui.component.explorer.search.UISearchResult; import org.exoplatform.webui.config.annotation.ComponentConfig; import org.exoplatform.webui.config.annotation.EventConfig; import org.exoplatform.webui.core.UIPageIterator; import org.exoplatform.webui.event.Event; import org.exoplatform.webui.event.EventListener; /** * Created by The eXo Platform SAS * Author : Hoa Pham * hoa.pham@exoplatform.com * Sep 26, 2007 */ @ComponentConfig( template = "app:/groovy/webui/component/explorer/sidebar/UITreeNodePageIterator.gtmpl", events = @EventConfig(listeners = UITreeNodePageIterator.ShowPageActionListener.class ) ) public class UITreeNodePageIterator extends UIPageIterator { private String selectedPath_ ; public UITreeNodePageIterator() { } public String getSelectedPath() { return selectedPath_ ; } public void setSelectedPath(String path) { this.selectedPath_ = path ; } static public class ShowPageActionListener extends EventListener<UITreeNodePageIterator> { public void execute(Event<UITreeNodePageIterator> event) throws Exception { UITreeNodePageIterator uiPageIterator = event.getSource() ; int page = Integer.parseInt(event.getRequestContext().getRequestParameter(OBJECTID)) ; if(uiPageIterator.getAvailablePage() < page) page = uiPageIterator.getAvailablePage(); uiPageIterator.setCurrentPage(page) ; if(uiPageIterator.getParent() == null) return ; UIJCRExplorer uiExplorer = uiPageIterator.getAncestorOfType(UIJCRExplorer.class); event.getRequestContext().addUIComponentToUpdateByAjax(uiExplorer); UIDocumentWorkspace uiDocumentWorkspace = uiExplorer.findFirstComponentOfType(UIDocumentWorkspace.class) ; UISearchResult uiSearchResult = uiDocumentWorkspace.getChild(UISearchResult.class) ; if(uiSearchResult.isRendered()) return ; UIDocumentContainer uiDocumentContainer = uiDocumentWorkspace.getChild(UIDocumentContainer.class); UIDocumentInfo uiDocumentInfo = null ; if(uiExplorer.isShowViewFile()) { uiDocumentInfo = uiDocumentContainer.getChildById("UIDocumentWithTree") ; } else { Set<String> allItemByTypeFilterMap = uiExplorer.getAllItemByTypeFilterMap(); if (allItemByTypeFilterMap.size() > 0) uiDocumentInfo = uiDocumentContainer.getChildById("UIDocumentWithTree"); else uiDocumentInfo = uiDocumentContainer.getChildById("UIDocumentInfo"); } if (uiDocumentInfo == null) return; String currentPath = uiExplorer.getCurrentNode().getPath(); if(!currentPath.equalsIgnoreCase(uiPageIterator.getSelectedPath())) return ; UIPageIterator iterator = uiDocumentInfo.getContentPageIterator(); if(iterator.getAvailablePage() >= page) iterator.setCurrentPage(page); if (uiDocumentWorkspace.isRendered() && uiDocumentContainer.isRendered() && uiDocumentInfo.isRendered()) { event.getRequestContext().addUIComponentToUpdateByAjax(uiDocumentInfo); } } } }