/***************************************************************************
* 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.forum.webui.popup;
import java.util.ArrayList;
import java.util.List;
import org.exoplatform.container.ExoContainerContext;
import org.exoplatform.forum.ForumUtils;
import org.exoplatform.forum.service.ForumLinkData;
import org.exoplatform.forum.service.ForumService;
import org.exoplatform.forum.service.Utils;
import org.exoplatform.forum.webui.BaseForumForm;
import org.exoplatform.forum.webui.UIForumPortlet;
import org.exoplatform.webui.config.annotation.ComponentConfig;
import org.exoplatform.webui.config.annotation.EventConfig;
import org.exoplatform.webui.core.UIComponent;
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;
import org.exoplatform.webui.event.Event.Phase;
import org.exoplatform.webui.form.UIFormCheckBoxInput;
/**
* Created by The eXo Platform SAS
* Author : Vu Duy Tu
* tu.duy@exoplatform.com
* Jun 5, 2009 - 10:12:41 AM
*/
@ComponentConfig(
lifecycle = UIFormLifecycle.class,
template = "app:/templates/forum/webui/popup/UISelectCategoryForm.gtmpl",
events = {
@EventConfig(listeners = UISelectCategoryForm.AddActionListener.class),
@EventConfig(listeners = UISelectCategoryForm.CancelActionListener.class,phase = Phase.DECODE)
}
)
public class UISelectCategoryForm extends BaseForumForm implements UIPopupComponent {
private List<String> listIdIsSelected = new ArrayList<String>();
List<ForumLinkData> forumLinks = new ArrayList<ForumLinkData>();
public UISelectCategoryForm() {
}
public void activate() throws Exception {
}
public void deActivate() throws Exception {
}
public void setSelectCateId(List<String> listIdIsSelected) throws Exception {
this.listIdIsSelected = listIdIsSelected;
ForumService forumService = (ForumService) ExoContainerContext.getCurrentContainer().getComponentInstanceOfType(ForumService.class);
this.forumLinks = forumService.getAllLink(ForumUtils.EMPTY_STR, ForumUtils.EMPTY_STR);
}
@SuppressWarnings( { "unchecked", "unused" })
private List<ForumLinkData> getForumLinks() throws Exception {
String categoryId = ForumUtils.EMPTY_STR, forumId = ForumUtils.EMPTY_STR;
boolean isPut = true;
String cateId = ForumUtils.EMPTY_STR;
for (ForumLinkData forumLink : this.forumLinks) {
if (forumLink.getType().equals(Utils.CATEGORY)) {
cateId = forumLink.getId();
if (getUIFormCheckBoxInput(forumLink.getPath()) == null) {
if (listIdIsSelected.contains(cateId))
addUIFormInput((new UIFormCheckBoxInput(cateId, cateId, false)).setChecked(true));
else
addUIFormInput((new UIFormCheckBoxInput(cateId, cateId, false)).setChecked(false));
}
}
}
return this.forumLinks;
}
private String getNameForumLinkData(String id) throws Exception {
for (ForumLinkData linkData : this.forumLinks) {
if (linkData.getId().equals(id))
return linkData.getName();
}
return null;
}
static public class AddActionListener extends EventListener<UISelectCategoryForm> {
@SuppressWarnings("unchecked")
public void execute(Event<UISelectCategoryForm> event) throws Exception {
UISelectCategoryForm uiForm = event.getSource();
List<String> listIdSelected = new ArrayList<String>();
List<UIComponent> children = uiForm.getChildren();
for (UIComponent child : children) {
if (child instanceof UIFormCheckBoxInput) {
if (((UIFormCheckBoxInput) child).isChecked()) {
listIdSelected.add(uiForm.getNameForumLinkData(child.getName()) + "(" + child.getName());
}
}
}
UIModeratorManagementForm managementForm = uiForm.getAncestorOfType(UIForumPortlet.class).findFirstComponentOfType(UIModeratorManagementForm.class);
managementForm.setModCateValues(listIdSelected);
event.getRequestContext().addUIComponentToUpdateByAjax(managementForm);
uiForm.cancelChildPopupAction();
}
}
static public class CancelActionListener extends EventListener<UISelectCategoryForm> {
public void execute(Event<UISelectCategoryForm> event) throws Exception {
event.getSource().cancelChildPopupAction();
}
}
}