123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340 |
- package com.vaadin.v7.tests.server.component.grid.declarative;
-
- import org.jsoup.nodes.Element;
- import org.jsoup.parser.Tag;
- import org.junit.Test;
-
- import com.vaadin.shared.ui.ContentMode;
- import com.vaadin.ui.Label;
- import com.vaadin.ui.declarative.DesignContext;
- import com.vaadin.v7.ui.Grid;
- import com.vaadin.v7.ui.Grid.Column;
- import com.vaadin.v7.ui.Grid.FooterRow;
- import com.vaadin.v7.ui.Grid.HeaderRow;
-
- public class GridHeaderFooterDeclarativeTest extends GridDeclarativeTestBase {
-
- @Test
- public void testSingleDefaultHeader() {
- //@formatter:off
- String design = "<vaadin7-grid><table>"
- + "<colgroup>"
- + " <col sortable property-id='Column1'>"
- + " <col sortable property-id='Column2'>"
- + " <col sortable property-id='Column3'>"
- + "</colgroup>"
- + "<thead>"
- + " <tr default><th plain-text>Column1<th plain-text>Column2<th plain-text>Column3</tr>"
- + "</thead>"
- + "</table></vaadin7-grid>";
- //@formatter:on
- Grid grid = new Grid();
- grid.addColumn("Column1", String.class);
- grid.addColumn("Column2", String.class);
- grid.addColumn("Column3", String.class);
-
- testWrite(design, grid);
- testRead(design, grid, true);
- }
-
- @Test
- public void testSingleDefaultHTMLHeader() {
- //@formatter:off
- String design = "<vaadin7-grid><table>"
- + "<colgroup>"
- + " <col sortable property-id='Column1'>"
- + " <col sortable property-id='Column2'>"
- + " <col sortable property-id='Column3'>" + "</colgroup>"
- + "<thead>"
- + " <tr default><th>Column1<th>Column2<th>Column3</tr>"
- + "</thead>"
- + "</table></vaadin7-grid>";
- //@formatter:on
- Grid grid = new Grid();
- grid.addColumn("Column1", String.class);
- grid.addColumn("Column2", String.class);
- grid.addColumn("Column3", String.class);
-
- HeaderRow row = grid.getDefaultHeaderRow();
- for (Column c : grid.getColumns()) {
- row.getCell(c.getPropertyId()).setHtml(c.getHeaderCaption());
- }
-
- testWrite(design, grid);
- testRead(design, grid, true);
- }
-
- @Test
- public void testNoHeaderRows() {
- //@formatter:off
- String design = "<vaadin7-grid><table>"
- + "<colgroup>"
- + " <col sortable property-id='Column1'>"
- + "</colgroup>"
- + "<thead />"
- + "</table></vaadin7-grid>";
- //@formatter:on
- Grid grid = new Grid();
- grid.addColumn("Column1", String.class);
- grid.removeHeaderRow(grid.getDefaultHeaderRow());
-
- testWrite(design, grid);
- testRead(design, grid, true);
- }
-
- @Test
- public void testMultipleHeadersWithColSpans() {
- //@formatter:off
- String design = "<vaadin7-grid><table>"
- + "<colgroup>"
- + " <col sortable property-id='Column1'>"
- + " <col sortable property-id='Column2'>"
- + " <col sortable property-id='Column3'>"
- + "</colgroup>"
- + "<thead>"
- + " <tr><th colspan=3>Baz</tr>"
- + " <tr default><th>Column1<th>Column2<th>Column3</tr>"
- + " <tr><th>Foo<th colspan=2>Bar</tr>"
- + "</thead>"
- + "</table></vaadin7-grid>";
- //@formatter:on
- Grid grid = new Grid();
- grid.addColumn("Column1", String.class);
- grid.addColumn("Column2", String.class);
- grid.addColumn("Column3", String.class);
-
- HeaderRow row = grid.getDefaultHeaderRow();
- for (Column c : grid.getColumns()) {
- row.getCell(c.getPropertyId()).setHtml(c.getHeaderCaption());
- }
-
- grid.prependHeaderRow().join("Column1", "Column2", "Column3")
- .setHtml("Baz");
- row = grid.appendHeaderRow();
- row.getCell("Column1").setHtml("Foo");
- row.join("Column2", "Column3").setHtml("Bar");
-
- testWrite(design, grid);
- testRead(design, grid, true);
- }
-
- @Test
- public void testSingleDefaultFooter() {
- //@formatter:off
- String design = "<vaadin7-grid><table>"
- + "<colgroup>"
- + " <col sortable property-id='Column1'>"
- + " <col sortable property-id='Column2'>"
- + " <col sortable property-id='Column3'>"
- + "</colgroup>"
- + "<thead />" // No headers read or written
- + "<tfoot>"
- + " <tr><td plain-text>Column1<td plain-text>Column2<td plain-text>Column3</tr>"
- + "</tfoot>"
- + "</table></vaadin7-grid>";
- //@formatter:on
- Grid grid = new Grid();
- grid.addColumn("Column1", String.class);
- grid.addColumn("Column2", String.class);
- grid.addColumn("Column3", String.class);
-
- FooterRow row = grid.appendFooterRow();
- for (Column c : grid.getColumns()) {
- row.getCell(c.getPropertyId()).setText(c.getHeaderCaption());
- }
-
- grid.removeHeaderRow(grid.getDefaultHeaderRow());
-
- testWrite(design, grid);
- testRead(design, grid, true);
- }
-
- @Test
- public void testSingleDefaultHTMLFooter() {
- //@formatter:off
- String design = "<vaadin7-grid><table>"
- + "<colgroup>"
- + " <col sortable property-id='Column1'>"
- + " <col sortable property-id='Column2'>"
- + " <col sortable property-id='Column3'>" + "</colgroup>"
- + "<thead />" // No headers read or written
- + "<tfoot>"
- + " <tr><td>Column1<td>Column2<td>Column3</tr>"
- + "</tfoot>"
- + "</table></vaadin7-grid>";
- //@formatter:on
-
- Grid grid = new Grid();
- grid.addColumn("Column1", String.class);
- grid.addColumn("Column2", String.class);
- grid.addColumn("Column3", String.class);
-
- FooterRow row = grid.appendFooterRow();
- for (Column c : grid.getColumns()) {
- row.getCell(c.getPropertyId()).setHtml(c.getHeaderCaption());
- }
-
- grid.removeHeaderRow(grid.getDefaultHeaderRow());
-
- testWrite(design, grid);
- testRead(design, grid, true);
- }
-
- @Test
- public void testMultipleFootersWithColSpans() {
- //@formatter:off
- String design = "<vaadin7-grid><table>"
- + "<colgroup>"
- + " <col sortable property-id='Column1'>"
- + " <col sortable property-id='Column2'>"
- + " <col sortable property-id='Column3'>"
- + "</colgroup>"
- + "<thead />" // No headers read or written.
- + "<tfoot>"
- + " <tr><td colspan=3>Baz</tr>"
- + " <tr><td>Column1<td>Column2<td>Column3</tr>"
- + " <tr><td>Foo<td colspan=2>Bar</tr>"
- + "</tfoot>"
- + "</table></vaadin7-grid>";
- //@formatter:on
-
- Grid grid = new Grid();
- grid.addColumn("Column1", String.class);
- grid.addColumn("Column2", String.class);
- grid.addColumn("Column3", String.class);
-
- FooterRow row = grid.appendFooterRow();
- for (Column c : grid.getColumns()) {
- row.getCell(c.getPropertyId()).setHtml(c.getHeaderCaption());
- }
-
- grid.prependFooterRow().join("Column1", "Column2", "Column3")
- .setHtml("Baz");
- row = grid.appendFooterRow();
- row.getCell("Column1").setHtml("Foo");
- row.join("Column2", "Column3").setHtml("Bar");
-
- grid.removeHeaderRow(grid.getDefaultHeaderRow());
-
- testWrite(design, grid);
- testRead(design, grid, true);
- }
-
- @Test
- public void testComponentInGridHeader() {
- //@formatter:off
- String design = "<vaadin7-grid><table>"
- + "<colgroup>"
- + " <col sortable property-id='Column1'>"
- + "</colgroup>"
- + "<thead>"
- + "<tr default><th><vaadin-label><b>Foo</b></vaadin-label></tr>"
- + "</thead>"
- + "</table></vaadin7-grid>";
- //@formatter:on
- Label component = new Label("<b>Foo</b>");
- component.setContentMode(ContentMode.HTML);
-
- Grid grid = new Grid();
- grid.addColumn("Column1", String.class);
- grid.getDefaultHeaderRow().getCell("Column1").setComponent(component);
-
- testRead(design, grid, true);
- testWrite(design, grid);
- }
-
- @Test
- public void testComponentInGridFooter() {
- //@formatter:off
- String design = "<vaadin7-grid><table>"
- + "<colgroup>"
- + " <col sortable property-id='Column1'>"
- + "</colgroup>"
- + "<thead />" // No headers read or written
- + "<tfoot>"
- + "<tr><td><vaadin-label><b>Foo</b></vaadin-label></tr>"
- + "</tfoot>"
- + "</table></vaadin7-grid>";
- //@formatter:on
-
- Label component = new Label("<b>Foo</b>");
- component.setContentMode(ContentMode.HTML);
-
- Grid grid = new Grid();
- grid.addColumn("Column1", String.class);
- grid.prependFooterRow().getCell("Column1").setComponent(component);
- grid.removeHeaderRow(grid.getDefaultHeaderRow());
-
- testRead(design, grid, true);
- testWrite(design, grid);
- }
-
- @Test
- public void testHtmlEntitiesinGridHeaderFooter() {
- //@formatter:off
- String design = "<vaadin7-grid><table>"
- + "<colgroup>"
- + " <col sortable=\"true\" property-id=\"> test\">"
- + "</colgroup>"
- + "<thead>"
- + " <tr><th plain-text=\"true\">> Test</th></tr>"
- + "</thead>"
- + "<tfoot>"
- + " <tr><td plain-text=\"true\">> Test</td></tr>"
- + "</tfoot>"
- + "<tbody />"
- + "</table></vaadin7-grid>";
- //@formatter:on
-
- Grid grid = read(design);
- String actualHeader = grid.getHeaderRow(0).getCell("> test").getText();
- String actualFooter = grid.getFooterRow(0).getCell("> test").getText();
- String expected = "> Test";
-
- assertEquals(expected, actualHeader);
- assertEquals(expected, actualFooter);
-
- design = design.replace("plain-text=\"true\"", "");
- grid = read(design);
- actualHeader = grid.getHeaderRow(0).getCell("> test").getHtml();
- actualFooter = grid.getFooterRow(0).getCell("> test").getHtml();
- expected = "> Test";
-
- assertEquals(expected, actualHeader);
- assertEquals(expected, actualFooter);
-
- grid = new Grid();
- grid.setColumns("test");
- HeaderRow header = grid.addHeaderRowAt(0);
- FooterRow footer = grid.addFooterRowAt(0);
- grid.removeHeaderRow(grid.getDefaultHeaderRow());
-
- // entities should be encoded when writing back, not interpreted as HTML
- header.getCell("test").setText("& Test");
- footer.getCell("test").setText("& Test");
-
- Element root = new Element(Tag.valueOf("vaadin7-grid"), "");
- grid.writeDesign(root, new DesignContext());
-
- assertEquals("&amp; Test",
- root.getElementsByTag("th").get(0).html());
- assertEquals("&amp; Test",
- root.getElementsByTag("td").get(0).html());
-
- header = grid.addHeaderRowAt(0);
- footer = grid.addFooterRowAt(0);
-
- // entities should not be encoded, this is already given as HTML
- header.getCell("test").setHtml("& Test");
- footer.getCell("test").setHtml("& Test");
-
- root = new Element(Tag.valueOf("vaadin7-grid"), "");
- grid.writeDesign(root, new DesignContext());
-
- assertEquals("& Test",
- root.getElementsByTag("th").get(0).html());
- assertEquals("& Test",
- root.getElementsByTag("td").get(0).html());
-
- }
- }
|