[portal-commits] JBoss Portal SVN: r11833 - branches/JBoss_Portal_Branch_2_7/core-admin/src/main/org/jboss/portal/core/admin/ui/coordination.

portal-commits at lists.jboss.org portal-commits at lists.jboss.org
Mon Sep 8 10:31:05 EDT 2008


Author: chris.laprun at jboss.com
Date: 2008-09-08 10:31:05 -0400 (Mon, 08 Sep 2008)
New Revision: 11833

Modified:
   branches/JBoss_Portal_Branch_2_7/core-admin/src/main/org/jboss/portal/core/admin/ui/coordination/ParameterBindingManagerBean.java
Log:
- Use SelectItemGroup for parameter / window pairs display. Need to prevent multiple selection of several parameters for the same window...

Modified: branches/JBoss_Portal_Branch_2_7/core-admin/src/main/org/jboss/portal/core/admin/ui/coordination/ParameterBindingManagerBean.java
===================================================================
--- branches/JBoss_Portal_Branch_2_7/core-admin/src/main/org/jboss/portal/core/admin/ui/coordination/ParameterBindingManagerBean.java	2008-09-08 14:08:37 UTC (rev 11832)
+++ branches/JBoss_Portal_Branch_2_7/core-admin/src/main/org/jboss/portal/core/admin/ui/coordination/ParameterBindingManagerBean.java	2008-09-08 14:31:05 UTC (rev 11833)
@@ -31,8 +31,12 @@
 import org.jboss.portal.portlet.info.ParameterInfo;
 import org.jboss.portal.portlet.info.PortletInfo;
 
+import javax.faces.event.ValueChangeEvent;
 import javax.faces.model.SelectItem;
+import javax.faces.model.SelectItemGroup;
 import javax.xml.namespace.QName;
+import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
@@ -48,7 +52,7 @@
 public class ParameterBindingManagerBean extends CoordinationManagerBean.CoordinationBean
 {
    private Map<String, DisplayParameterBinding> displayParameterBindings;
-   private List<ParameterWindowSelectItem> availableParameterWindowPairs;
+   private Map<Window, WindowSelectItemGroup> availableParameterWindowPairs;
    private List<String> selectedParameterWindowPairs;
    private String windowBindingName;
 
@@ -61,9 +65,11 @@
       super(managerBean);
    }
 
-   public List<ParameterWindowSelectItem> getAvailableParameterWindowPairs()
+   public List<? extends SelectItem> getAvailableParameterWindowPairs()
    {
-      return availableParameterWindowPairs;
+      List<WindowSelectItemGroup> result = new LinkedList<WindowSelectItemGroup>(availableParameterWindowPairs.values());
+      Collections.sort(result);
+      return result;
    }
 
    public List<String> getSelectedParameterWindowPairs()
@@ -88,11 +94,25 @@
 
    public void extractInfoFrom(Window window, PortletInfo info)
    {
+
       // retrieve metadata on public render parameters
       NavigationInfo navInfo = info.getNavigation();
-      for (ParameterInfo pInfo : navInfo.getPublicParameters())
+      Collection<? extends ParameterInfo> publicParameters = navInfo.getPublicParameters();
+      if (!publicParameters.isEmpty())
       {
-         availableParameterWindowPairs.add(new ParameterWindowSelectItem(pInfo, window));
+         // create a group for this window
+         WindowSelectItemGroup windowGroup = availableParameterWindowPairs.get(window);
+         if (windowGroup == null)
+         {
+            windowGroup = new WindowSelectItemGroup(window);
+            availableParameterWindowPairs.put(window, windowGroup);
+         }
+
+         // add a SelectItem per public parameter
+         for (ParameterInfo pInfo : publicParameters)
+         {
+            windowGroup.add(new ParameterWindowSelectItem(pInfo, window));
+         }
       }
    }
 
@@ -111,7 +131,7 @@
 
    public void initKnowing(Collection<PortalObject> children)
    {
-      availableParameterWindowPairs = new LinkedList<ParameterWindowSelectItem>();
+      availableParameterWindowPairs = new HashMap<Window, WindowSelectItemGroup>(children.size());
    }
 
    public void loadInfoFrom(Page page)
@@ -171,6 +191,19 @@
       return resetSelection();
    }
 
+   /**
+    * Enforce the fact that you can only select one qname per window
+    *
+    * @param event
+    */
+   public void selectParameterWindowPair(ValueChangeEvent event)
+   {
+      // if we select a param for a window that already has a param associated with it, switch to the new one
+      List<String> oldValues = (List<String>)event.getOldValue();
+      List<String> newValues = (List<String>)event.getNewValue();
+
+   }
+
    public static class DisplayParameterBinding implements Comparable
    {
       private List<ParameterWindowPair> parameterWindowPairs;
@@ -213,7 +246,7 @@
    {
       public ParameterWindowSelectItem(ParameterInfo parameterInfo, Window window)
       {
-         super(new ParameterWindowPair(parameterInfo, window), ParameterWindowPair.asString(parameterInfo.getName(), window));
+         super(new ParameterWindowPair(parameterInfo, window), parameterInfo.getName().toString());
       }
 
       public int compareTo(Object o)
@@ -282,4 +315,33 @@
          return new String[]{name, windowName};
       }
    }
+
+   public class WindowSelectItemGroup extends SelectItemGroup implements Comparable
+   {
+      public WindowSelectItemGroup(Window window)
+      {
+         super(window.getName());
+      }
+
+      public int compareTo(Object o)
+      {
+         SelectItem group = (SelectItem)o;
+         return getLabel().compareTo(group.getLabel());
+      }
+
+      public void add(ParameterWindowSelectItem parameterWindowSelectItem)
+      {
+         SelectItem[] existing = getSelectItems();
+         if (existing == null)
+         {
+            setSelectItems(new SelectItem[]{parameterWindowSelectItem});
+         }
+         else
+         {
+            List<SelectItem> items = new ArrayList<SelectItem>(Arrays.asList(existing));
+            items.add(parameterWindowSelectItem);
+            setSelectItems(items.toArray(new SelectItem[items.size()]));
+         }
+      }
+   }
 }




More information about the portal-commits mailing list