1 /**
2 * Copyright 2005-2014 The Kuali Foundation
3 *
4 * Licensed under the Educational Community License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.opensource.org/licenses/ecl2.php
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16 package org.kuali.rice.krad.uif.layout;
17
18 import java.util.List;
19
20 /**
21 * Layout manager interface for grid layouts.
22 *
23 * @author Kuali Rice Team (rice.collab@kuali.org)
24 */
25 public interface GridLayoutManager extends LayoutManager {
26
27 /**
28 * Indicates the number of columns that should make up one row of data
29 *
30 * <p>
31 * If the item count is greater than the number of columns, a new row will
32 * be created to render the remaining items (and so on until all items are
33 * placed).
34 * </p>
35 *
36 * <p>
37 * Note this does not include any generated columns by the layout manager,
38 * so the final column count could be greater (if label fields are
39 * separate).
40 * </p>
41 *
42 * @return int
43 */
44 int getNumberOfColumns();
45
46 /**
47 * Setter for the number of columns (each row)
48 *
49 * @param numberOfColumns
50 */
51 void setNumberOfColumns(int numberOfColumns);
52
53 /**
54 * Indicates whether the number of columns for the table data should match
55 * the number of fields given in the container's items list (so that each
56 * field takes up one column without wrapping), this overrides the configured
57 * numberOfColumns
58 *
59 * <p>
60 * If set to true during the initialize phase the number of columns will be
61 * set to the size of the container's field list, if false the configured
62 * number of columns is used
63 * </p>
64 *
65 * @return true if the column count should match the container's
66 * field count, false to use the configured number of columns
67 */
68 boolean isSuppressLineWrapping();
69
70 /**
71 * Setter for the suppressLineWrapping indicator
72 *
73 * @param suppressLineWrapping
74 */
75 void setSuppressLineWrapping(boolean suppressLineWrapping);
76
77 /**
78 * Indicates whether alternating row styles should be applied
79 *
80 * <p>
81 * Indicator to layout manager templates to apply alternating row styles.
82 * See the configured template for the actual style classes used
83 * </p>
84 *
85 * @return true if alternating styles should be applied, false if
86 * all rows should have the same style
87 */
88 boolean isApplyAlternatingRowStyles();
89
90 /**
91 * Setter for the alternating row styles indicator
92 *
93 * @param applyAlternatingRowStyles
94 */
95 void setApplyAlternatingRowStyles(boolean applyAlternatingRowStyles);
96
97 /**
98 * Indicates whether the manager should default the cell widths
99 *
100 * <p>
101 * If true, the manager will set the cell width by equally dividing by the
102 * number of columns
103 * </p>
104 *
105 * @return true if default cell widths should be applied, false if
106 * no defaults should be applied
107 */
108 boolean isApplyDefaultCellWidths();
109
110 /**
111 * Setter for the default cell width indicator
112 *
113 * @param applyDefaultCellWidths
114 */
115 void setApplyDefaultCellWidths(boolean applyDefaultCellWidths);
116
117 /**
118 * Indicates whether the first cell of each row should be rendered as a header cell (th)
119 *
120 * <p>
121 * When this flag is turned on, the first cell for each row will be rendered as a header cell. If
122 * {@link #isRenderAlternatingHeaderColumns()} is false, the remaining cells for the row will be rendered
123 * as data cells, else they will alternate between cell headers
124 * </p>
125 *
126 * @return true if first cell of each row should be rendered as a header cell
127 */
128 boolean isRenderRowFirstCellHeader();
129
130 /**
131 * Setter for render first row column as header indicator
132 *
133 * @param renderRowFirstCellHeader
134 */
135 void setRenderRowFirstCellHeader(boolean renderRowFirstCellHeader);
136
137 /**
138 * Indicates whether the first row of items rendered should all be rendered as table header (th) cells
139 *
140 * <p>
141 * Generally when using a grid layout all the cells will be tds or alternating th/td (with the label in the
142 * th cell). However in some cases it might be desired to display the labels in one row as table header cells (th)
143 * followed by a row with the corresponding fields in td cells. When this is enabled this type of layout is
144 * possible
145 * </p>
146 *
147 * @return true if first row should be rendered as header cells
148 */
149 boolean isRenderFirstRowHeader();
150
151 /**
152 * Setter for the first row as header indicator
153 *
154 * @param renderFirstRowHeader
155 */
156 void setRenderFirstRowHeader(boolean renderFirstRowHeader);
157
158 /**
159 * Indicates whether header columns (th for tables) should be rendered for
160 * every other item (alternating)
161 *
162 * <p>
163 * If true the first cell of each row will be rendered as an header, with
164 * every other cell in the row as a header
165 * </p>
166 *
167 * @return true if alternating headers should be rendered, false if not
168 */
169 boolean isRenderAlternatingHeaderColumns();
170
171 /**
172 * Setter for the render alternating header columns indicator
173 *
174 * @param renderAlternatingHeaderColumns
175 */
176 void setRenderAlternatingHeaderColumns(boolean renderAlternatingHeaderColumns);
177
178 /**
179 * The list of styles for each row
180 *
181 * <p>
182 * Each entry in the list gives the style for the row with the same index. This style will be added the the <tr>
183 * tag
184 * when the table rows are rendered in the grid.tag. This is used to store the styles for newly added lines and
185 * other special cases like the add item row.
186 * </p>
187 *
188 * @return list of styles for the rows
189 */
190 List<String> getRowCssClasses();
191
192 /**
193 * Setter for the list that stores the css style names of each row
194 *
195 * @param rowCssClasses
196 */
197 void setRowCssClasses(List<String> rowCssClasses);
198
199 }