/* * 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; import java.util.ArrayList; import java.util.List; import org.exoplatform.faq.service.JCRPageList; import org.exoplatform.webui.config.annotation.ComponentConfig; import org.exoplatform.webui.config.annotation.EventConfig; import org.exoplatform.webui.core.UIContainer; import org.exoplatform.webui.event.Event; import org.exoplatform.webui.event.EventListener; /** * Created by The eXo Platform SAS * Author : Vu Duy Tu * tu.duy@exoplatform.com * Nov 19, 2007 9:18:18 AM */ @ComponentConfig( template = "app:/templates/faq/webui/UIAnswersPageIterator.gtmpl", events = { @EventConfig(listeners = UIAnswersPageIterator.GoPageActionListener.class) } ) public class UIAnswersPageIterator extends UIContainer { private JCRPageList pageList = null; private long page = 1; private int endTabPage = 0; private int beginTabPage = 0; public UIAnswersPageIterator() throws Exception { } public void updatePageList(JCRPageList pageList) { this.pageList = pageList; page = 1; endTabPage = 0; beginTabPage = 0; } @SuppressWarnings("unused") private List<String> getTotalpage() throws Exception { int max_Page = 1; if (pageList != null) max_Page = (int) pageList.getAvailablePage(); if (this.page > max_Page) this.page = max_Page; long page = this.page; if (page <= 3) { beginTabPage = 1; if (max_Page <= 7) endTabPage = max_Page; else endTabPage = 7; } else { if (max_Page > (page + 3)) { endTabPage = (int) (page + 3); beginTabPage = (int) (page - 3); } else { endTabPage = max_Page; if (max_Page > 7) beginTabPage = max_Page - 6; else beginTabPage = 1; } } List<String> temp = new ArrayList<String>(); for (int i = beginTabPage; i <= endTabPage; i++) { temp.add("" + i); } return temp; } public List<Long> getInfoPage() throws Exception { List<Long> temp = new ArrayList<Long>(); if (pageList != null) { temp.add(pageList.getPageSize());// so item/trang temp.add(pageList.getCurrentPage());// so trang hien tai temp.add(pageList.getAvailable());// tong so item temp.add(pageList.getAvailablePage());// so trang toi da } else { temp.add((long) 0); temp.add((long) 1); temp.add((long) 0); temp.add((long) 1); } return temp; } public void setSelectPage(long page) { this.page = page; } public long getPageSelected() { return this.page; } static public class GoPageActionListener extends EventListener<UIAnswersPageIterator> { public void execute(Event<UIAnswersPageIterator> event) throws Exception { UIAnswersPageIterator faqPageIterator = event.getSource(); String stateClick = event.getRequestContext().getRequestParameter(OBJECTID).trim(); long maxPage = faqPageIterator.pageList.getAvailablePage(); long presentPage = faqPageIterator.page; if (stateClick.equalsIgnoreCase("next")) { if (presentPage < maxPage) { faqPageIterator.page = presentPage + 1; } } else if (stateClick.equalsIgnoreCase("previous")) { if (presentPage > 1) { faqPageIterator.page = presentPage - 1; } } else if (stateClick.equalsIgnoreCase("last")) { if (presentPage != maxPage) { faqPageIterator.page = maxPage; } } else if (stateClick.equalsIgnoreCase("first")) { if (presentPage != 1) { faqPageIterator.page = 1; } } else { long temp = Long.parseLong(stateClick); if (temp > 0 && temp <= maxPage && temp != presentPage) { faqPageIterator.page = temp; } } event.getRequestContext().addUIComponentToUpdateByAjax(faqPageIterator.getParent()); } } }