1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.kuali.rice.krad.uif.layout;
17
18 import org.apache.commons.lang.StringUtils;
19 import org.kuali.rice.krad.datadictionary.parse.BeanTag;
20 import org.kuali.rice.krad.datadictionary.parse.BeanTagAttribute;
21 import org.kuali.rice.krad.datadictionary.parse.BeanTags;
22 import org.kuali.rice.krad.uif.CssConstants;
23 import org.kuali.rice.krad.uif.component.Component;
24 import org.kuali.rice.krad.uif.container.Container;
25 import org.kuali.rice.krad.uif.container.Group;
26 import org.kuali.rice.krad.uif.view.View;
27
28 import java.util.ArrayList;
29 import java.util.List;
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46 @BeanTags({@BeanTag(name = "gridLayout-bean", parent = "Uif-GridLayoutBase"),
47 @BeanTag(name = "twoColumnGridLayout-bean", parent = "Uif-TwoColumnGridLayout"),
48 @BeanTag(name = "fourColumnGridLayout-bean", parent = "Uif-FourColumnGridLayout"),
49 @BeanTag(name = "sixColumnGridLayout-bean", parent = "Uif-SixColumnGridLayout")})
50 public class GridLayoutManager extends LayoutManagerBase {
51 private static final long serialVersionUID = 1890011900375071128L;
52
53 private int numberOfColumns;
54
55 private boolean suppressLineWrapping;
56 private boolean applyAlternatingRowStyles;
57 private boolean applyDefaultCellWidths;
58 private boolean renderFirstRowHeader;
59 private boolean renderAlternatingHeaderColumns;
60 private boolean renderRowFirstCellHeader;
61
62 private List<String> rowCssClasses;
63
64 public GridLayoutManager() {
65 super();
66
67 rowCssClasses = new ArrayList<String>();
68 }
69
70
71
72
73
74
75
76
77
78
79
80
81
82 @Override
83 public void performFinalize(View view, Object model, Container container) {
84 super.performFinalize(view, model, container);
85
86 if (suppressLineWrapping) {
87 numberOfColumns = container.getItems().size();
88 }
89
90 for (Component component : container.getItems()) {
91 if (this instanceof TableLayoutManager) {
92 component.addCellCssClass("uif-gridLayoutCell");
93 }
94 setCellAttributes(component);
95 }
96 }
97
98
99
100
101
102
103
104 protected void setCellAttributes(Component component) {
105 if (StringUtils.isNotBlank(component.getWidth()) && StringUtils.isBlank(component.getCellWidth())) {
106 component.setCellWidth(component.getWidth());
107 component.setWidth("");
108 }
109
110 if (StringUtils.isNotBlank(component.getAlign()) && !StringUtils.contains(component.getCellStyle(),
111 CssConstants.TEXT_ALIGN)) {
112 if (component.getCellStyle() == null) {
113 component.setCellStyle("");
114 }
115
116 component.setCellStyle(component.getCellStyle() + CssConstants.TEXT_ALIGN + component.getAlign() + ";");
117 component.setAlign("");
118 }
119
120 if (StringUtils.isNotBlank(component.getValign()) && !StringUtils.contains(component.getCellStyle(),
121 CssConstants.VERTICAL_ALIGN)) {
122 if (component.getCellStyle() == null) {
123 component.setCellStyle("");
124 }
125
126 component.setCellStyle(
127 component.getCellStyle() + CssConstants.VERTICAL_ALIGN + component.getValign() + ";");
128 component.setValign("");
129 }
130 }
131
132
133
134
135 @Override
136 public Class<? extends Container> getSupportedContainer() {
137 return Group.class;
138 }
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157 @BeanTagAttribute(name = "numberOfColumns")
158 public int getNumberOfColumns() {
159 return this.numberOfColumns;
160 }
161
162
163
164
165
166
167 public void setNumberOfColumns(int numberOfColumns) {
168 this.numberOfColumns = numberOfColumns;
169 }
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186 @BeanTagAttribute(name = "suppressLineWrapping")
187 public boolean isSuppressLineWrapping() {
188 return this.suppressLineWrapping;
189 }
190
191
192
193
194
195
196 public void setSuppressLineWrapping(boolean suppressLineWrapping) {
197 this.suppressLineWrapping = suppressLineWrapping;
198 }
199
200
201
202
203
204
205
206
207
208
209
210
211 @BeanTagAttribute(name = "applyAlternatingRowStyles")
212 public boolean isApplyAlternatingRowStyles() {
213 return this.applyAlternatingRowStyles;
214 }
215
216
217
218
219
220
221 public void setApplyAlternatingRowStyles(boolean applyAlternatingRowStyles) {
222 this.applyAlternatingRowStyles = applyAlternatingRowStyles;
223 }
224
225
226
227
228
229
230
231
232
233
234
235
236 @BeanTagAttribute(name = "applyDefaultCellWidths")
237 public boolean isApplyDefaultCellWidths() {
238 return this.applyDefaultCellWidths;
239 }
240
241
242
243
244
245
246 public void setApplyDefaultCellWidths(boolean applyDefaultCellWidths) {
247 this.applyDefaultCellWidths = applyDefaultCellWidths;
248 }
249
250
251
252
253
254
255
256
257
258
259
260
261 @BeanTagAttribute(name = "renderRowFirstCellHeader")
262 public boolean isRenderRowFirstCellHeader() {
263 return renderRowFirstCellHeader;
264 }
265
266
267
268
269
270
271 public void setRenderRowFirstCellHeader(boolean renderRowFirstCellHeader) {
272 this.renderRowFirstCellHeader = renderRowFirstCellHeader;
273 }
274
275
276
277
278
279
280
281
282
283
284
285
286
287 @BeanTagAttribute(name = "renderFirstRowHeader")
288 public boolean isRenderFirstRowHeader() {
289 return renderFirstRowHeader;
290 }
291
292
293
294
295
296
297 public void setRenderFirstRowHeader(boolean renderFirstRowHeader) {
298 this.renderFirstRowHeader = renderFirstRowHeader;
299 }
300
301
302
303
304
305
306
307
308
309
310
311
312 @BeanTagAttribute(name = "renderAlternatingHeaderColumns")
313 public boolean isRenderAlternatingHeaderColumns() {
314 return this.renderAlternatingHeaderColumns;
315 }
316
317
318
319
320
321
322 public void setRenderAlternatingHeaderColumns(boolean renderAlternatingHeaderColumns) {
323 this.renderAlternatingHeaderColumns = renderAlternatingHeaderColumns;
324 }
325
326
327
328
329
330
331
332
333
334
335
336
337
338 @BeanTagAttribute(name = "rowCssClasses", type = BeanTagAttribute.AttributeType.LISTVALUE)
339 public List<String> getRowCssClasses() {
340 return rowCssClasses;
341 }
342
343
344
345
346
347
348 public void setRowCssClasses(List<String> rowCssClasses) {
349 this.rowCssClasses = rowCssClasses;
350 }
351 }