1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.kuali.rice.krad.uif.container;
17
18 import org.apache.commons.lang.StringUtils;
19 import org.kuali.rice.krad.uif.component.Component;
20 import org.kuali.rice.krad.uif.component.DataBinding;
21 import org.kuali.rice.krad.uif.field.Field;
22 import org.kuali.rice.krad.uif.field.FieldGroup;
23 import org.kuali.rice.krad.uif.view.View;
24 import org.kuali.rice.krad.uif.widget.Disclosure;
25
26 import java.util.ArrayList;
27 import java.util.HashSet;
28 import java.util.List;
29 import java.util.Set;
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51 public class Group extends ContainerBase {
52 private static final long serialVersionUID = 7953641325356535509L;
53
54 private String fieldBindByNamePrefix;
55 private String fieldBindingObjectPath;
56
57 private Disclosure disclosure;
58
59 private List<? extends Component> items;
60
61
62
63
64 public Group() {
65 items = new ArrayList<Component>();
66 }
67
68
69
70
71
72
73
74
75
76
77
78 @Override
79 public void performInitialization(View view, Object model) {
80 super.performInitialization(view, model);
81
82 for (Component component : getItems()) {
83
84
85 if (component instanceof DataBinding) {
86 DataBinding dataBinding = (DataBinding) component;
87
88 if (StringUtils.isNotBlank(getFieldBindByNamePrefix())) {
89 String bindByNamePrefixToSet = getFieldBindByNamePrefix();
90
91 if (StringUtils.isNotBlank(dataBinding.getBindingInfo().getBindByNamePrefix())) {
92 bindByNamePrefixToSet += "." + dataBinding.getBindingInfo().getBindByNamePrefix();
93 }
94 dataBinding.getBindingInfo().setBindByNamePrefix(bindByNamePrefixToSet);
95 }
96
97 if (StringUtils.isNotBlank(fieldBindingObjectPath) &&
98 StringUtils.isBlank(dataBinding.getBindingInfo().getBindingObjectPath())) {
99 dataBinding.getBindingInfo().setBindingObjectPath(fieldBindingObjectPath);
100 }
101 }
102
103 else if (component instanceof FieldGroup) {
104 FieldGroup fieldGroup = (FieldGroup) component;
105
106 if (fieldGroup.getGroup() != null) {
107 if (StringUtils.isBlank(fieldGroup.getGroup().getFieldBindByNamePrefix())) {
108 fieldGroup.getGroup().setFieldBindByNamePrefix(fieldBindByNamePrefix);
109 }
110 if (StringUtils.isBlank(fieldGroup.getGroup().getFieldBindingObjectPath())) {
111 fieldGroup.getGroup().setFieldBindingObjectPath(fieldBindingObjectPath);
112 }
113 }
114 } else if (component instanceof Group) {
115 Group subGroup = (Group) component;
116 if (StringUtils.isNotBlank(getFieldBindByNamePrefix())) {
117 if (StringUtils.isNotBlank(subGroup.getFieldBindByNamePrefix())) {
118 subGroup.setFieldBindByNamePrefix(
119 getFieldBindByNamePrefix() + "." + subGroup.getFieldBindByNamePrefix());
120 } else {
121 subGroup.setFieldBindByNamePrefix(getFieldBindByNamePrefix());
122 }
123 }
124 }
125 }
126 }
127
128
129
130
131 @Override
132 public List<Component> getComponentsForLifecycle() {
133 List<Component> components = super.getComponentsForLifecycle();
134
135 components.add(disclosure);
136
137 return components;
138 }
139
140
141
142
143 @Override
144 public Set<Class<? extends Component>> getSupportedComponents() {
145 Set<Class<? extends Component>> supportedComponents = new HashSet<Class<? extends Component>>();
146 supportedComponents.add(Field.class);
147 supportedComponents.add(Group.class);
148
149 return supportedComponents;
150 }
151
152
153
154
155 @Override
156 public final String getComponentTypeName() {
157 return "group";
158 }
159
160
161
162
163
164
165
166
167
168
169
170
171
172 public String getFieldBindByNamePrefix() {
173 return this.fieldBindByNamePrefix;
174 }
175
176
177
178
179
180
181 public void setFieldBindByNamePrefix(String fieldBindByNamePrefix) {
182 this.fieldBindByNamePrefix = fieldBindByNamePrefix;
183 }
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200 public String getFieldBindingObjectPath() {
201 return this.fieldBindingObjectPath;
202 }
203
204
205
206
207
208
209 public void setFieldBindingObjectPath(String fieldBindingObjectPath) {
210 this.fieldBindingObjectPath = fieldBindingObjectPath;
211 }
212
213
214
215
216
217
218
219 public Disclosure getDisclosure() {
220 return this.disclosure;
221 }
222
223
224
225
226
227
228 public void setDisclosure(Disclosure disclosure) {
229 this.disclosure = disclosure;
230 }
231
232
233
234
235 @Override
236 public List<? extends Component> getItems() {
237 return this.items;
238 }
239
240
241
242
243
244
245 @Override
246 public void setItems(List<? extends Component> items) {
247 this.items = items;
248 }
249
250 }