[gatein-commits] gatein SVN: r4846 - in portal/branches/branch-GTNPORTAL-1592/webui: eXo/src/main/java/org/exoplatform/webui/organization/account and 1 other directory.

do-not-reply at jboss.org do-not-reply at jboss.org
Tue Oct 26 10:34:33 EDT 2010


Author: ndkhoiits
Date: 2010-10-26 10:34:32 -0400 (Tue, 26 Oct 2010)
New Revision: 4846

Modified:
   portal/branches/branch-GTNPORTAL-1592/webui/core/src/main/java/org/exoplatform/webui/core/UIPageIterator.java
   portal/branches/branch-GTNPORTAL-1592/webui/eXo/src/main/java/org/exoplatform/webui/organization/account/UIUserSelector.java
Log:
GTNPORTAL-1577 Persist user selection state when adding users to group or change to other page

Modified: portal/branches/branch-GTNPORTAL-1592/webui/core/src/main/java/org/exoplatform/webui/core/UIPageIterator.java
===================================================================
--- portal/branches/branch-GTNPORTAL-1592/webui/core/src/main/java/org/exoplatform/webui/core/UIPageIterator.java	2010-10-26 12:06:39 UTC (rev 4845)
+++ portal/branches/branch-GTNPORTAL-1592/webui/core/src/main/java/org/exoplatform/webui/core/UIPageIterator.java	2010-10-26 14:34:32 UTC (rev 4846)
@@ -19,15 +19,17 @@
 
 package org.exoplatform.webui.core;
 
+import org.exoplatform.commons.serialization.api.annotations.Serialized;
 import org.exoplatform.commons.utils.EmptySerializablePageList;
 import org.exoplatform.commons.utils.PageList;
-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.event.Event;
 import org.exoplatform.webui.event.EventListener;
 
+import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
 
 /**
  * A component that allows pagination, with an iterator to change pages
@@ -42,6 +44,8 @@
     */
    private PageList pageList_ = EmptySerializablePageList.get();
 
+   private Set<String> selectedItems = new HashSet<String>();
+   
    public UIPageIterator()
    {
    }
@@ -95,6 +99,28 @@
    {
       pageList_.getPage(page);
    }
+   
+   public void setSelectedItem(String key, boolean value)
+   {
+      if (value == false && this.selectedItems.contains(key))
+      {
+         selectedItems.remove(key);
+      }
+      else if (value)
+      {
+         selectedItems.add(key);
+      }
+   }
+   
+   public Set<String> getSelectedItems()
+   {
+      return selectedItems;
+   }
+   
+   public boolean isSelectedItem(String key)
+   {
+      return selectedItems.contains(key);
+   }
 
    @SuppressWarnings("unused")
    static public class ShowPageActionListener extends EventListener<UIPageIterator>

Modified: portal/branches/branch-GTNPORTAL-1592/webui/eXo/src/main/java/org/exoplatform/webui/organization/account/UIUserSelector.java
===================================================================
--- portal/branches/branch-GTNPORTAL-1592/webui/eXo/src/main/java/org/exoplatform/webui/organization/account/UIUserSelector.java	2010-10-26 12:06:39 UTC (rev 4845)
+++ portal/branches/branch-GTNPORTAL-1592/webui/eXo/src/main/java/org/exoplatform/webui/organization/account/UIUserSelector.java	2010-10-26 14:34:32 UTC (rev 4846)
@@ -41,18 +41,20 @@
 import org.exoplatform.webui.core.lifecycle.UIFormLifecycle;
 import org.exoplatform.webui.core.model.SelectItemOption;
 import org.exoplatform.webui.event.Event;
+import org.exoplatform.webui.event.Event.Phase;
 import org.exoplatform.webui.event.EventListener;
-import org.exoplatform.webui.event.Event.Phase;
 import org.exoplatform.webui.form.UIForm;
 import org.exoplatform.webui.form.UIFormCheckBoxInput;
 import org.exoplatform.webui.form.UIFormSelectBox;
 import org.exoplatform.webui.form.UIFormStringInput;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collection;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 import java.util.concurrent.CopyOnWriteArrayList;
 
 /**
@@ -119,7 +121,7 @@
       uiIterator_ = new UIPageIterator();
       uiIterator_.setPageList(objPageList);
       uiIterator_.setId("UISelectUserPage");
-
+      
       // create group selector
       UIPopupWindow uiPopup = addChild(UIPopupWindow.class, null, "UIPopupGroupSelector");
       uiPopup.setWindowSize(540, 0);
@@ -138,8 +140,14 @@
          for (Object obj : uiIterator_.getCurrentPageData())
          {
             User user = (User)obj;
-            if (getUIFormCheckBoxInput(user.getUserName()) == null)
-               addUIFormInput(new UIFormCheckBoxInput<Boolean>(user.getUserName(), user.getUserName(), false));
+            UIFormCheckBoxInput<Boolean> uiFormCheckBoxInput = getUIFormCheckBoxInput(user.getUserName());
+            if (uiFormCheckBoxInput == null)
+            {
+               uiFormCheckBoxInput = new UIFormCheckBoxInput<Boolean>(user.getUserName(), user.getUserName(), false);
+               addUIFormInput(uiFormCheckBoxInput);
+            }
+            
+            uiFormCheckBoxInput.setChecked(uiIterator_.isSelectedItem(user.getUserName()));
          }
       }
       return new ArrayList<User>(uiIterator_.getCurrentPageData());
@@ -315,31 +323,32 @@
 
    static public class AddActionListener extends EventListener<UIUserSelector>
    {
-      @SuppressWarnings("unchecked")
       public void execute(Event<UIUserSelector> event) throws Exception
       {
          UIUserSelector uiForm = event.getSource();
          StringBuilder sb = new StringBuilder();
-         int count = 0;
-         for (Object o : uiForm.uiIterator_.getCurrentPageData())
+         
+         uiForm.setSelectedItem();
+         
+         // get item from selected item map
+         Set<String> items = uiForm.uiIterator_.getSelectedItems();
+         if (items.size() == 0)
          {
-            User u = (User)o;
-            UIFormCheckBoxInput input = uiForm.getUIFormCheckBoxInput(u.getUserName());
-            if (input != null && input.isChecked())
-            {
-               count++;
-               if (sb.toString() != null && sb.toString().trim().length() != 0)
-                  sb.append(",");
-               sb.append(u.getUserName());
-            }
-         }
-         if (count == 0)
-         {
             UIApplication uiApp = uiForm.getAncestorOfType(UIApplication.class);
             uiApp.addMessage(new ApplicationMessage("UIUserSelector.msg.user-required", null));
             event.getRequestContext().addUIComponentToUpdateByAjax(uiApp.getUIPopupMessages());
             return;
          }
+         String[] arrItems = items.toArray(new String[items.size()]);
+         Arrays.sort(arrItems);
+         
+         for (String key : arrItems)
+         {
+            if (sb.toString() != null && sb.toString().trim().length() != 0)
+               sb.append(",");
+            sb.append(key);
+         }
+         
          uiForm.setSelectedUsers(sb.toString());
          uiForm.<UIComponent> getParent().broadcast(event, event.getExecutionPhase());
       }
@@ -379,6 +388,19 @@
    {
       getUIStringInput(FIELD_KEYWORD).setValue(value);
    }
+   
+   private void setSelectedItem() throws Exception
+   {
+      for (Object o : this.uiIterator_.getCurrentPageData())
+      {
+         User u = (User) o;
+         UIFormCheckBoxInput input = this.getUIFormCheckBoxInput(u.getUserName());
+         if (input != null)
+         {
+            this.uiIterator_.setSelectedItem(u.getUserName(), input.isChecked());
+         }
+      }
+   }
 
    static public class SelectGroupActionListener extends EventListener<UIGroupSelector>
    {
@@ -457,6 +479,8 @@
       public void execute(Event<UIUserSelector> event) throws Exception
       {
          UIUserSelector uiSelectUserForm = event.getSource();
+         uiSelectUserForm.setSelectedItem();
+         
          int page = Integer.parseInt(event.getRequestContext().getRequestParameter(OBJECTID));
          uiSelectUserForm.updateCurrentPage(page);
          event.getRequestContext().addUIComponentToUpdateByAjax(uiSelectUserForm);



More information about the gatein-commits mailing list