[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