/* * Copyright (C) 2003-2008 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.popup; import java.util.ArrayList; import java.util.List; import org.exoplatform.faq.service.Category; import org.exoplatform.faq.service.FAQService; import org.exoplatform.faq.service.JCRPageList; import org.exoplatform.faq.service.QuestionPageList; import org.exoplatform.faq.webui.FAQUtils; import org.exoplatform.faq.webui.UIAnswersContainer; import org.exoplatform.faq.webui.UIAnswersPageIterator; import org.exoplatform.faq.webui.UIAnswersPortlet; import org.exoplatform.faq.webui.UIBreadcumbs; import org.exoplatform.faq.webui.UICategories; import org.exoplatform.faq.webui.UIQuestions; import org.exoplatform.ks.common.webui.BaseUIForm; import org.exoplatform.webui.config.annotation.ComponentConfig; import org.exoplatform.webui.config.annotation.EventConfig; import org.exoplatform.webui.core.UIPopupComponent; import org.exoplatform.webui.core.lifecycle.UIFormLifecycle; import org.exoplatform.webui.event.Event; import org.exoplatform.webui.event.EventListener; /** * Created by The eXo Platform SARL * Author : Truong Nguyen * truong.nguyen@exoplatform.com * May 5, 2008, 2:26:57 PM */ @ComponentConfig( lifecycle = UIFormLifecycle.class, template = "app:/templates/faq/webui/popup/ResultSearchCategory.gtmpl", events = { @EventConfig(listeners = ResultSearchCategory.LinkActionListener.class), @EventConfig(listeners = ResultSearchCategory.CloseActionListener.class) } ) public class ResultSearchCategory extends BaseUIForm implements UIPopupComponent { private List<Category> listCategory_ = null; private String LIST_RESULT_SEARCH = "listResultCategoriesSearch"; private UIAnswersPageIterator pageIterator; private JCRPageList pageList; public ResultSearchCategory() throws Exception { addChild(UIAnswersPageIterator.class, null, LIST_RESULT_SEARCH); } @SuppressWarnings("unused") private List<Category> getListCategory() { long pageSelected = pageIterator.getPageSelected(); listCategory_ = new ArrayList<Category>(); try { listCategory_.addAll(pageList.getPageResultCategoriesSearch(pageSelected, FAQUtils.getCurrentUser())); } catch (Exception e) { log.error("Fail to get list of category: ", e); } return listCategory_; } public void setListCategory(List<Category> listCategory) { this.listCategory_ = listCategory; try { pageList = new QuestionPageList(listCategory); pageList.setPageSize(5); pageIterator = this.getChildById(LIST_RESULT_SEARCH); pageIterator.updatePageList(pageList); } catch (Exception e) { log.error("Fail to set a list of category: ", e); } } @SuppressWarnings("unused") private long getTotalpages(String pageInteratorId) { UIAnswersPageIterator pageIterator = this.getChildById(LIST_RESULT_SEARCH); try { return pageIterator.getInfoPage().get(3); } catch (Exception e) { log.debug("getting total page fail: ", e); return 1; } } public void activate() throws Exception { } public void deActivate() throws Exception { } static public class LinkActionListener extends EventListener<ResultSearchCategory> { public void execute(Event<ResultSearchCategory> event) throws Exception { ResultSearchCategory resultSearch = event.getSource(); UIAnswersPortlet answerPortlet = resultSearch.getAncestorOfType(UIAnswersPortlet.class); String categoryId = event.getRequestContext().getRequestParameter(OBJECTID); FAQService faqService = FAQUtils.getFAQService(); UIQuestions uiQuestions = answerPortlet.findFirstComponentOfType(UIQuestions.class); try { faqService.isExisting(categoryId); } catch (Exception e) { resultSearch.warning("UIQuestions.msg.category-id-deleted"); return; } uiQuestions.setCategoryId(categoryId); uiQuestions.setDefaultLanguage(); UIBreadcumbs breadcumbs = answerPortlet.findFirstComponentOfType(UIBreadcumbs.class); breadcumbs.setUpdataPath(categoryId); event.getRequestContext().addUIComponentToUpdateByAjax(breadcumbs); UICategories categories = answerPortlet.findFirstComponentOfType(UICategories.class); categories.setPathCategory(breadcumbs.getPaths()); UIAnswersContainer fAQContainer = uiQuestions.getAncestorOfType(UIAnswersContainer.class); event.getRequestContext().addUIComponentToUpdateByAjax(fAQContainer); answerPortlet.cancelAction(); } } static public class CloseActionListener extends EventListener<ResultSearchCategory> { public void execute(Event<ResultSearchCategory> event) throws Exception { UIAnswersPortlet answerPortlet = event.getSource().getAncestorOfType(UIAnswersPortlet.class); answerPortlet.cancelAction(); } } }