/*************************************************************************** * 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.faq.webui; import java.util.ArrayList; import java.util.List; import org.exoplatform.faq.service.Utils; import org.exoplatform.web.application.ApplicationMessage; import org.exoplatform.webui.config.annotation.ComponentConfig; import org.exoplatform.webui.config.annotation.EventConfig; import org.exoplatform.webui.core.UIApplication; import org.exoplatform.webui.core.UIContainer; import org.exoplatform.webui.event.Event; import org.exoplatform.webui.event.EventListener; /** * Created by The eXo Platform SARL * Author : Hung Nguyen * hung.nguyen@exoplatform.com * Aus 01, 2007 2:48:18 PM */ @ComponentConfig( template = "app:/templates/faq/webui/UIBreadcumbs.gtmpl", events = { @EventConfig(listeners = UIBreadcumbs.ChangePathActionListener.class) } ) public class UIBreadcumbs extends UIContainer { private List<String> breadcumbs_ = new ArrayList<String>(); public List<String> pathList_ = new ArrayList<String>(); private String currentPath_ = Utils.CATEGORY_HOME; public static final String FIELD_FAQHOME_BREADCUMBS = "faqHome"; private static final String QUICK_SEARCH = "QuickSearch"; public UIBreadcumbs() throws Exception { addChild(UIQuickSearch.class, null, QUICK_SEARCH); } public void setRenderSearch(boolean isRenderSearch) { getChild(UIQuickSearch.class).setRendered(isRenderSearch); } public void setUpdataPath(String path) throws Exception { if (path != null && path.trim().length() > 0 && !path.equals(Utils.CATEGORY_HOME)) { String temp[] = path.split("/"); pathList_.clear(); breadcumbs_.clear(); String subPath = ""; for (String string : temp) { if (subPath.length() > 0) subPath = subPath + "/" + string; else subPath = string; breadcumbs_.add(FAQUtils.getFAQService().getCategoryNameOf(subPath)); pathList_.add(subPath); } } else { pathList_.clear(); breadcumbs_.clear(); pathList_.add(Utils.CATEGORY_HOME); breadcumbs_.add(Utils.CATEGORY_HOME); } currentPath_ = path; } public String getPath(int index) { return this.pathList_.get(index); } public String getPaths() { return this.currentPath_; } @SuppressWarnings("unused") private int getMaxPath() { return breadcumbs_.size(); } public List<String> getBreadcumbs() throws Exception { return breadcumbs_; } static public class ChangePathActionListener extends EventListener<UIBreadcumbs> { public void execute(Event<UIBreadcumbs> event) throws Exception { UIBreadcumbs uiBreadcums = event.getSource(); String paths = event.getRequestContext().getRequestParameter(OBJECTID); UIAnswersPortlet answerPortlet = uiBreadcums.getAncestorOfType(UIAnswersPortlet.class); UIQuestions uiQuestions = answerPortlet.findFirstComponentOfType(UIQuestions.class); UICategories categories = answerPortlet.findFirstComponentOfType(UICategories.class); try { // System.out.println("paths ===>" + paths); // uiQuestions.setPath(paths) ; // categoryId = paths.substring(paths.lastIndexOf("/")+1, paths.length()) ; uiQuestions.backPath_ = ""; uiQuestions.setLanguage(FAQUtils.getDefaultLanguage()); // uiQuestions.viewAuthorInfor = FAQUtils.getFAQService().isViewAuthorInfo(paths); uiBreadcums.setUpdataPath(paths); categories.setPathCategory(paths); uiQuestions.setCategoryId(paths); uiQuestions.updateCurrentQuestionList(); } catch (Exception e) { FAQUtils.findCateExist(FAQUtils.getFAQService(), uiQuestions.getAncestorOfType(UIAnswersContainer.class)); UIApplication uiApplication = uiBreadcums.getAncestorOfType(UIApplication.class); uiApplication.addMessage(new ApplicationMessage("UIQuestions.msg.category-id-deleted", null, ApplicationMessage.WARNING)); event.getRequestContext().addUIComponentToUpdateByAjax(uiApplication.getUIPopupMessages()); } event.getRequestContext().addUIComponentToUpdateByAjax(answerPortlet); } } }