1
2
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
20
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 }