You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

GridHeaderFooterDeclarativeTest.java 9.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265
  1. /*
  2. * Copyright 2000-2014 Vaadin Ltd.
  3. *
  4. * Licensed under the Apache License, Version 2.0 (the "License"); you may not
  5. * use this file except in compliance with the License. You may obtain a copy of
  6. * the License at
  7. *
  8. * http://www.apache.org/licenses/LICENSE-2.0
  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, WITHOUT
  12. * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
  13. * License for the specific language governing permissions and limitations under
  14. * the License.
  15. */
  16. package com.vaadin.tests.server.component.grid.declarative;
  17. import org.junit.Test;
  18. import com.vaadin.shared.ui.label.ContentMode;
  19. import com.vaadin.ui.Grid;
  20. import com.vaadin.ui.Grid.Column;
  21. import com.vaadin.ui.Grid.FooterRow;
  22. import com.vaadin.ui.Grid.HeaderRow;
  23. import com.vaadin.ui.Label;
  24. public class GridHeaderFooterDeclarativeTest extends GridDeclarativeTestBase {
  25. @Test
  26. public void testSingleDefaultHeader() {
  27. String design = "<v-grid><table>"//
  28. + "<colgroup>"
  29. + " <col sortable='' property-id='Column1'>"
  30. + " <col sortable='' property-id='Column2'>"
  31. + " <col sortable='' property-id='Column3'>"
  32. + "</colgroup>" //
  33. + "<thead>" //
  34. + " <tr default=''><th plain-text=''>Column1<th plain-text=''>Column2<th plain-text=''>Column3</tr>" //
  35. + "</thead>" //
  36. + "</table></v-grid>";
  37. Grid grid = new Grid();
  38. grid.addColumn("Column1", String.class);
  39. grid.addColumn("Column2", String.class);
  40. grid.addColumn("Column3", String.class);
  41. testWrite(design, grid);
  42. testRead(design, grid, true);
  43. }
  44. @Test
  45. public void testSingleDefaultHTMLHeader() {
  46. String design = "<v-grid><table>"//
  47. + "<colgroup>"
  48. + " <col sortable='' property-id='Column1'>"
  49. + " <col sortable='' property-id='Column2'>"
  50. + " <col sortable='' property-id='Column3'>" + "</colgroup>" //
  51. + "<thead>" //
  52. + " <tr default=''><th>Column1<th>Column2<th>Column3</tr>" //
  53. + "</thead>" //
  54. + "</table></v-grid>";
  55. Grid grid = new Grid();
  56. grid.addColumn("Column1", String.class);
  57. grid.addColumn("Column2", String.class);
  58. grid.addColumn("Column3", String.class);
  59. HeaderRow row = grid.getDefaultHeaderRow();
  60. for (Column c : grid.getColumns()) {
  61. row.getCell(c.getPropertyId()).setHtml(c.getHeaderCaption());
  62. }
  63. testWrite(design, grid);
  64. testRead(design, grid, true);
  65. }
  66. @Test
  67. public void testNoHeaderRows() {
  68. String design = "<v-grid><table>"//
  69. + "<colgroup>"
  70. + " <col sortable='' property-id='Column1'>"
  71. + "</colgroup>" //
  72. + "<thead />" //
  73. + "</table></v-grid>";
  74. Grid grid = new Grid();
  75. grid.addColumn("Column1", String.class);
  76. grid.removeHeaderRow(grid.getDefaultHeaderRow());
  77. testWrite(design, grid);
  78. testRead(design, grid, true);
  79. }
  80. @Test
  81. public void testMultipleHeadersWithColSpans() {
  82. String design = "<v-grid><table>"//
  83. + "<colgroup>"
  84. + " <col sortable='' property-id='Column1'>"
  85. + " <col sortable='' property-id='Column2'>"
  86. + " <col sortable='' property-id='Column3'>"
  87. + "</colgroup>" //
  88. + "<thead>" //
  89. + " <tr><th colspan=3>Baz</tr>"
  90. + " <tr default=''><th>Column1<th>Column2<th>Column3</tr>" //
  91. + " <tr><th>Foo<th colspan=2>Bar</tr>" //
  92. + "</thead>" //
  93. + "</table></v-grid>";
  94. Grid grid = new Grid();
  95. grid.addColumn("Column1", String.class);
  96. grid.addColumn("Column2", String.class);
  97. grid.addColumn("Column3", String.class);
  98. HeaderRow row = grid.getDefaultHeaderRow();
  99. for (Column c : grid.getColumns()) {
  100. row.getCell(c.getPropertyId()).setHtml(c.getHeaderCaption());
  101. }
  102. grid.prependHeaderRow().join("Column1", "Column2", "Column3")
  103. .setHtml("Baz");
  104. row = grid.appendHeaderRow();
  105. row.getCell("Column1").setHtml("Foo");
  106. row.join("Column2", "Column3").setHtml("Bar");
  107. testWrite(design, grid);
  108. testRead(design, grid, true);
  109. }
  110. @Test
  111. public void testSingleDefaultFooter() {
  112. String design = "<v-grid><table>"//
  113. + "<colgroup>"
  114. + " <col sortable='' property-id='Column1'>"
  115. + " <col sortable='' property-id='Column2'>"
  116. + " <col sortable='' property-id='Column3'>"
  117. + "</colgroup>" //
  118. + "<thead />" // No headers read or written
  119. + "<tfoot>" //
  120. + " <tr><td plain-text=''>Column1<td plain-text=''>Column2<td plain-text=''>Column3</tr>" //
  121. + "</tfoot>" //
  122. + "</table></v-grid>";
  123. Grid grid = new Grid();
  124. grid.addColumn("Column1", String.class);
  125. grid.addColumn("Column2", String.class);
  126. grid.addColumn("Column3", String.class);
  127. FooterRow row = grid.appendFooterRow();
  128. for (Column c : grid.getColumns()) {
  129. row.getCell(c.getPropertyId()).setText(c.getHeaderCaption());
  130. }
  131. grid.removeHeaderRow(grid.getDefaultHeaderRow());
  132. testWrite(design, grid);
  133. testRead(design, grid, true);
  134. }
  135. @Test
  136. public void testSingleDefaultHTMLFooter() {
  137. String design = "<v-grid><table>"//
  138. + "<colgroup>"
  139. + " <col sortable='' property-id='Column1'>"
  140. + " <col sortable='' property-id='Column2'>"
  141. + " <col sortable='' property-id='Column3'>" + "</colgroup>" //
  142. + "<thead />" // No headers read or written
  143. + "<tfoot>" //
  144. + " <tr><td>Column1<td>Column2<td>Column3</tr>" //
  145. + "</tfoot>" //
  146. + "</table></v-grid>";
  147. Grid grid = new Grid();
  148. grid.addColumn("Column1", String.class);
  149. grid.addColumn("Column2", String.class);
  150. grid.addColumn("Column3", String.class);
  151. FooterRow row = grid.appendFooterRow();
  152. for (Column c : grid.getColumns()) {
  153. row.getCell(c.getPropertyId()).setHtml(c.getHeaderCaption());
  154. }
  155. grid.removeHeaderRow(grid.getDefaultHeaderRow());
  156. testWrite(design, grid);
  157. testRead(design, grid, true);
  158. }
  159. @Test
  160. public void testMultipleFootersWithColSpans() {
  161. String design = "<v-grid><table>"//
  162. + "<colgroup>"
  163. + " <col sortable='' property-id='Column1'>"
  164. + " <col sortable='' property-id='Column2'>"
  165. + " <col sortable='' property-id='Column3'>"
  166. + "</colgroup>" //
  167. + "<thead />" // No headers read or written.
  168. + "<tfoot>" //
  169. + " <tr><td colspan=3>Baz</tr>"
  170. + " <tr><td>Column1<td>Column2<td>Column3</tr>" //
  171. + " <tr><td>Foo<td colspan=2>Bar</tr>" //
  172. + "</tfoot>" //
  173. + "</table></v-grid>";
  174. Grid grid = new Grid();
  175. grid.addColumn("Column1", String.class);
  176. grid.addColumn("Column2", String.class);
  177. grid.addColumn("Column3", String.class);
  178. FooterRow row = grid.appendFooterRow();
  179. for (Column c : grid.getColumns()) {
  180. row.getCell(c.getPropertyId()).setHtml(c.getHeaderCaption());
  181. }
  182. grid.prependFooterRow().join("Column1", "Column2", "Column3")
  183. .setHtml("Baz");
  184. row = grid.appendFooterRow();
  185. row.getCell("Column1").setHtml("Foo");
  186. row.join("Column2", "Column3").setHtml("Bar");
  187. grid.removeHeaderRow(grid.getDefaultHeaderRow());
  188. testWrite(design, grid);
  189. testRead(design, grid, true);
  190. }
  191. @Test
  192. public void testComponentInGridHeader() {
  193. String design = "<v-grid><table>"//
  194. + "<colgroup>"
  195. + " <col sortable='' property-id='Column1'>"
  196. + "</colgroup>" //
  197. + "<thead>" //
  198. + "<tr default=''><th><v-label><b>Foo</b></v-label></tr>"
  199. + "</thead>"//
  200. + "</table></v-grid>";
  201. Label component = new Label("<b>Foo</b>");
  202. component.setContentMode(ContentMode.HTML);
  203. Grid grid = new Grid();
  204. grid.addColumn("Column1", String.class);
  205. grid.getDefaultHeaderRow().getCell("Column1").setComponent(component);
  206. testRead(design, grid, true);
  207. testWrite(design, grid);
  208. }
  209. @Test
  210. public void testComponentInGridFooter() {
  211. String design = "<v-grid><table>"//
  212. + "<colgroup>"
  213. + " <col sortable='' property-id='Column1'>"
  214. + "</colgroup>" //
  215. + "<thead />" // No headers read or written
  216. + "<tfoot>" //
  217. + "<tr><td><v-label><b>Foo</b></v-label></tr>"//
  218. + "</tfoot>" //
  219. + "</table></v-grid>";
  220. Label component = new Label("<b>Foo</b>");
  221. component.setContentMode(ContentMode.HTML);
  222. Grid grid = new Grid();
  223. grid.addColumn("Column1", String.class);
  224. grid.prependFooterRow().getCell("Column1").setComponent(component);
  225. grid.removeHeaderRow(grid.getDefaultHeaderRow());
  226. testRead(design, grid, true);
  227. testWrite(design, grid);
  228. }
  229. }