View Javadoc

1   /*
2    * $Id: ExpansionTools.java,v 1.3 2007/07/19 12:09:03 oeuillot Exp $
3    */
4   package org.rcfaces.core.internal.tools;
5   
6   import java.util.Set;
7   
8   import javax.faces.component.UIComponent;
9   import javax.faces.context.FacesContext;
10  
11  import org.apache.commons.logging.Log;
12  import org.apache.commons.logging.LogFactory;
13  import org.rcfaces.core.component.capability.IExpandedValuesCapability;
14  import org.rcfaces.core.lang.provider.ICheckProvider;
15  import org.rcfaces.core.lang.provider.IExpansionProvider;
16  
17  /**
18   * 
19   * @author Olivier Oeuillot (latest modification by $Author: oeuillot $)
20   * @version $Revision: 1.3 $ $Date: 2007/07/19 12:09:03 $
21   */
22  public class ExpansionTools extends CollectionTools {
23      private static final String REVISION = "$Revision: 1.3 $";
24  
25      private static final Log LOG = LogFactory.getLog(ExpansionTools.class);
26  
27      private static final IValuesAccessor EXPANSION_PROVIDER_VALUES_ACCESSOR = new IValuesAccessor() {
28          private static final String REVISION = "$Revision: 1.3 $";
29  
30          public int getCount(Object expandProvider) {
31              return ((IExpansionProvider) expandProvider)
32                      .getExpandedValuesCount();
33          }
34  
35          public Object getFirst(Object expandProvider, Object refValues) {
36              return null;
37          }
38  
39          public Object[] listValues(Object expandProvider, Object refValues) {
40              return convertToObjectArray(((IExpansionProvider) expandProvider)
41                      .getExpandedValues());
42          }
43  
44          public void setAdaptedValues(Object expandedValueProvider,
45                  Object expandedValues) {
46              ((IExpansionProvider) expandedValueProvider)
47                      .setExpandedValues(expandedValues);
48          }
49  
50          public Object getAdaptedValues(Object value) {
51              return value;
52          }
53  
54          public Object getComponentValues(UIComponent component) {
55  
56              return ((IExpandedValuesCapability) component).getExpandedValues();
57          }
58  
59          public void setComponentValues(UIComponent component, Object values) {
60  
61              ((IExpandedValuesCapability) component).setExpandedValues(values);
62          }
63  
64          public Class getComponentValuesType(FacesContext facesContext,
65                  UIComponent component) {
66  
67              return ((IExpandedValuesCapability) component)
68                      .getExpandedValuesType(facesContext);
69          }
70  
71      };
72  
73      public static int getCount(UIComponent component, Object expandedValues) {
74          IValuesAccessor valuesAccessor = getValuesAccessor(expandedValues,
75                  IExpansionProvider.class, getValueAccessor(component), true);
76  
77          if (valuesAccessor == null) {
78              return 0;
79          }
80  
81          return valuesAccessor.getCount(expandedValues);
82      }
83  
84      public static Object[] listValues(UIComponent component,
85              Object expandedValues, Object refValue) {
86          IValuesAccessor valuesAccessor = getValuesAccessor(expandedValues,
87                  IExpansionProvider.class, getValueAccessor(component), true);
88  
89          if (valuesAccessor == null) {
90              return EMPTY_VALUES;
91          }
92  
93          return valuesAccessor.listValues(expandedValues, refValue);
94      }
95  
96      public static Object getAdaptedValues(Object value, boolean useValue) {
97          IValuesAccessor valuesAccessor = getValuesAccessor(value,
98                  ICheckProvider.class, EXPANSION_PROVIDER_VALUES_ACCESSOR,
99                  useValue);
100 
101         if (valuesAccessor == null) {
102             return null;
103         }
104 
105         return valuesAccessor.getAdaptedValues(value);
106     }
107 
108     public static boolean setAdaptedValues(Object value, Object values) {
109         IValuesAccessor valuesAccessor = getValuesAccessor(value,
110                 ICheckProvider.class, EXPANSION_PROVIDER_VALUES_ACCESSOR, false);
111 
112         if (valuesAccessor == null) {
113             return false;
114         }
115 
116         valuesAccessor.setAdaptedValues(value, values);
117         return true;
118     }
119 
120     public static void expand(FacesContext facesContext, UIComponent component,
121             Object rowValue) {
122         select(component, getValueAccessor(component), rowValue);
123     }
124 
125     public static void expandAll(FacesContext facesContext,
126             UIComponent component) {
127         selectAll(component, getValueAccessor(component));
128     }
129 
130     public static void collapse(FacesContext facesContext,
131             UIComponent component, Object rowValue) {
132         deselect(component, getValueAccessor(component), rowValue);
133     }
134 
135     public static void collapseAll(FacesContext facesContext,
136             UIComponent component) {
137         deselectAll(component, getValueAccessor(component));
138     }
139 
140     public static void setExpansionValues(FacesContext facesContext,
141             UIComponent component, Set valuesSet) {
142 
143         setValues(component, getValueAccessor(component), valuesSet);
144     }
145 
146     public static Set expansionValuesToSet(FacesContext facesContext,
147             UIComponent component, boolean immutable) {
148         return valuesToSet(component, getValueAccessor(component), immutable);
149     }
150 
151     protected static IValuesAccessor getValueAccessor(UIComponent component) {
152 
153         return EXPANSION_PROVIDER_VALUES_ACCESSOR;
154     }
155 }