Package org.exoplatform.organization.webui.component

Source Code of org.exoplatform.organization.webui.component.UIGroupExplorer$ChangeNodeActionListener

/**
* Copyright (C) 2009 eXo Platform SAS.
*
* This is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This software 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
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this software; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/

package org.exoplatform.organization.webui.component;

import org.exoplatform.services.organization.Group;
import org.exoplatform.services.organization.OrganizationService;
import org.exoplatform.webui.application.WebuiRequestContext;
import org.exoplatform.commons.serialization.api.annotations.Serialized;
import org.exoplatform.webui.config.annotation.ComponentConfig;
import org.exoplatform.webui.config.annotation.EventConfig;
import org.exoplatform.webui.core.UIBreadcumbs;
import org.exoplatform.webui.core.UIContainer;
import org.exoplatform.webui.core.UITree;
import org.exoplatform.webui.core.UIBreadcumbs.LocalPath;
import org.exoplatform.webui.event.Event;
import org.exoplatform.webui.event.EventListener;
import org.exoplatform.webui.organization.UIGroup;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

/**
* Created by The eXo Platform SARL
* Author : chungnv
*          nguyenchung136@yahoo.com
* Jun 23, 2006
* 10:07:15 AM
*/
@ComponentConfig(events = @EventConfig(listeners = UIGroupExplorer.ChangeNodeActionListener.class))
@Serialized
public class UIGroupExplorer extends UIContainer
{

   private Group selectedGroup_;

   @SuppressWarnings("unchecked")
   private Collection sibblingsGroup_;

   @SuppressWarnings("unchecked")
   private Collection childrenGroup_;

   @SuppressWarnings("unchecked")
   public UIGroupExplorer() throws Exception
   {
      UITree tree = addChild(UITree.class, null, "TreeGroupExplorer");
      OrganizationService service = getApplicationComponent(OrganizationService.class);
      sibblingsGroup_ = service.getGroupHandler().findGroups(null);

      //  if not administrator
      if (!GroupManagement.isAdministrator(null))
         sibblingsGroup_ = GroupManagement.getRelatedGroups(null, sibblingsGroup_);

      tree.setSibbling((List)convertGroups(sibblingsGroup_));
      tree.setIcon("GroupAdminIcon");
      tree.setSelectedIcon("PortalIcon");
      tree.setBeanIdField("id");
      //tree.setBeanLabelField("groupName");
      tree.setBeanLabelField("encodedLabel");
      tree.setMaxTitleCharacter(25);
   }

   @SuppressWarnings("unchecked")
   public void changeGroup(String groupId) throws Exception
   {
      OrganizationService service = getApplicationComponent(OrganizationService.class);

      UIGroupManagement uiGroupManagement = this.getParent();
      UIBreadcumbs uiBreadcumb = uiGroupManagement.getChild(UIBreadcumbs.class);
      uiBreadcumb.setPath(getPath(null, groupId));

      UITree uiTree = getChild(UITree.class);
      UIGroupDetail uiGroupDetail = uiGroupManagement.getChild(UIGroupDetail.class);
      UIGroupInfo uiGroupInfo = uiGroupDetail.getChild(UIGroupInfo.class);

      if (groupId == null)
      {
         sibblingsGroup_ = service.getGroupHandler().findGroups(null);
         //    if not administrator
         if (!GroupManagement.isAdministrator(null))
            sibblingsGroup_ = GroupManagement.getRelatedGroups(null, sibblingsGroup_);
         uiTree.setSibbling((List)convertGroups(sibblingsGroup_));
         uiTree.setSelected(null);
         uiTree.setChildren(null);
         uiTree.setParentSelected(null);
         selectedGroup_ = null;
         uiGroupInfo.setGroup(null);
         return;
      }

      if (groupId != null)
      {
         selectedGroup_ = service.getGroupHandler().findGroupById(groupId);
      }
      else
      {
         selectedGroup_ = null;
      }

      String parentGroupId = null;
      if (selectedGroup_ != null)
         parentGroupId = selectedGroup_.getParentId();
      Group parentGroup = null;
      if (parentGroupId != null)
         parentGroup = service.getGroupHandler().findGroupById(parentGroupId);
      childrenGroup_ = service.getGroupHandler().findGroups(selectedGroup_);
      sibblingsGroup_ = service.getGroupHandler().findGroups(parentGroup);

      // if not administrator
      if (!GroupManagement.isAdministrator(null))
      {
         childrenGroup_ = GroupManagement.getRelatedGroups(null, childrenGroup_);
         sibblingsGroup_ = GroupManagement.getRelatedGroups(null, sibblingsGroup_);
      }

      for (Object group : sibblingsGroup_)
      {
         if (selectedGroup_ != null && ((Group)group).getId().equals(selectedGroup_.getId()))
         {
            selectedGroup_ = (Group)group;
            break;
         }
      }
      uiGroupInfo.setGroup(selectedGroup_);

      uiTree.setSibbling((List)convertGroups(sibblingsGroup_));
      uiTree.setChildren((List)convertGroups(childrenGroup_));
      uiTree.setSelected(new UIGroup(selectedGroup_));
      uiTree.setParentSelected(parentGroup);
   }

   public List<LocalPath> getPath(List<LocalPath> list, String id) throws Exception
   {
      if (list == null)
         list = new ArrayList<LocalPath>(5);
      if (id == null)
         return list;
      OrganizationService service = getApplicationComponent(OrganizationService.class);
      Group group = service.getGroupHandler().findGroupById(id);
      if (group == null)
         return list;
      //list.add(0, new LocalPath(group.getId(), group.getGroupName()));
      list.add(0, new LocalPath(group.getId(), group.getLabel()));
      getPath(list, group.getParentId());
      return list;
   }

   public Group getCurrentGroup()
   {
      return selectedGroup_;
   }

   public void setCurrentGroup(Group g)
   {
      selectedGroup_ = g;
   }

   @SuppressWarnings("unchecked")
   public Collection getChildrenGroup()
   {
      return childrenGroup_;
   }

   @SuppressWarnings("unchecked")
   public Collection getSibblingGroups()
   {
      return sibblingsGroup_;
   }

   @SuppressWarnings("unchecked")
   public void setChildGroup(Collection childrendGroup)
   {
      childrenGroup_ = childrendGroup;
   }

   @SuppressWarnings("unused")
   public void processRender(WebuiRequestContext context) throws Exception
   {
      renderChildren();
   }

   static public class ChangeNodeActionListener extends EventListener<UITree>
   {
      public void execute(Event<UITree> event) throws Exception
      {
         UIGroupExplorer uiGroupExplorer = event.getSource().getParent();
         String groupId = event.getRequestContext().getRequestParameter(OBJECTID);
         uiGroupExplorer.changeGroup(groupId);
         UIGroupManagement uiGroupManagement = uiGroupExplorer.getParent();
         UIGroupDetail uiGroupDetail = uiGroupManagement.getChild(UIGroupDetail.class);
         uiGroupDetail.getChild(UIGroupForm.class).setGroup(null);
         uiGroupDetail.setRenderedChild(UIGroupInfo.class);
      }
   }
  
   private Collection<UIGroup> convertGroups(Collection<Group> groups)
   {
     Collection<UIGroup> result = new ArrayList();
     for (Group group: groups)
     {
       result.add(new UIGroup(group));
     }
     return result;
   }

}
TOP

Related Classes of org.exoplatform.organization.webui.component.UIGroupExplorer$ChangeNodeActionListener

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.