UIPageSelectorPanel.java
/*
* Copyright (C) 2003-2009 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.wcm.webui.selector.page;
import java.util.ArrayList;
import java.util.List;
import org.exoplatform.commons.utils.LazyPageList;
import org.exoplatform.commons.utils.ListAccess;
import org.exoplatform.commons.utils.ListAccessImpl;
import org.exoplatform.ecm.webui.selector.UISelectable;
import org.exoplatform.portal.mop.user.UserNode;
import org.exoplatform.webui.config.annotation.ComponentConfig;
import org.exoplatform.webui.config.annotation.EventConfig;
import org.exoplatform.webui.core.UIContainer;
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 : eXoPlatform
* chuong.phan@exoplatform.com, phan.le.thanh.chuong@gmail.com
* Jun 30, 2009
*/
@ComponentConfig(
template = "classpath:groovy/wcm/webui/selector/page/UIPageSelectorPanel.gtmpl",
events = {
@EventConfig(listeners = UIPageSelectorPanel.SelectActionListener.class)
}
)
public class UIPageSelectorPanel extends UIContainer {
/** The Constant PAGE_SELECTOR_ITERATOR. */
private static final String PAGE_SELECTOR_ITERATOR = "UIPageSelectorIterator";
/** The page iterator. */
private UIPageIterator pageIterator;
/** The selected page. */
private UserNode selectedNode;
/**
* Instantiates a new uI page selector panel.
*
* @throws Exception the exception
*/
public UIPageSelectorPanel() throws Exception {
pageIterator = addChild(UIPageIterator.class, null, PAGE_SELECTOR_ITERATOR);
}
/**
* Update grid.
*/
public void updateGrid() {
List<UserNode> children = null;
if (selectedNode == null) {
UIPageSelector pageSelector = getAncestorOfType(UIPageSelector.class);
UIPageNodeSelector pageNodeSelector = pageSelector.getChild(UIPageNodeSelector.class);
UserNode rootNode = pageNodeSelector.getRootNodeOfSelectedNav();
children = new ArrayList<UserNode>(rootNode.getChildren());
} else {
children = new ArrayList<UserNode>(selectedNode.getChildren());
}
ListAccess<UserNode> pageNodeList = new ListAccessImpl<UserNode>(UserNode.class, children);
LazyPageList<UserNode> pageList = new LazyPageList<UserNode>(pageNodeList, 10);
pageIterator.setPageList(pageList);
}
/**
* Gets the selectable pages.
*
* @return the selectable pages
*
* @throws Exception the exception
*/
@SuppressWarnings("unchecked")
public List getSelectablePages() throws Exception {
return pageIterator.getCurrentPageData();
}
/**
* Gets the selected node.
*
* @return the selected node
*/
public UserNode getSelectedNode() {
return selectedNode;
}
/**
* Sets the selected node.
*
* @param selectedNode the new selected node
*/
public void setSelectedNode(UserNode selectedNode) {
this.selectedNode = selectedNode;
}
/**
* Gets the page iterator.
*
* @return the page iterator
*/
public UIPageIterator getPageIterator() {
return pageIterator;
}
/**
* Sets the page iterator.
*
* @param pageIterator the new page iterator
*/
public void setPageIterator(UIPageIterator pageIterator) {
this.pageIterator = pageIterator;
}
/**
* The listener interface for receiving selectAction events.
* The class that is interested in processing a selectAction
* event implements this interface, and the object created
* with that class is registered with a component using the
* component's <code>addSelectActionListener</code> method. When
* the selectAction event occurs, that object's appropriate
* method is invoked.
*/
public static class SelectActionListener extends EventListener<UIPageSelectorPanel> {
/* (non-Javadoc)
* @see org.exoplatform.webui.event.EventListener#execute(org.exoplatform.webui.event.Event)
*/
public void execute(Event<UIPageSelectorPanel> event) throws Exception {
UIPageSelectorPanel pageSelectorPanel = event.getSource();
String uri = event.getRequestContext().getRequestParameter(OBJECTID) ;
UIPageSelector pageSelector = pageSelectorPanel.getAncestorOfType(UIPageSelector.class);
((UISelectable)pageSelector.getSourceComponent()).doSelect(pageSelector.getReturnFieldName(), uri);
}
}
}