/** * Create example. */ public SimpleTableExample() { add(table); // Columns table.addColumn(new WTableColumn("First name", new WText())); table.addColumn(new WTableColumn("Last name", new WText())); table.addColumn(new WTableColumn("DOB", new WDateField())); // Setup model SimpleBeanBoundTableModel model = new SimpleBeanBoundTableModel( new String[]{"firstName", "lastName", "dateOfBirth"}); table.setTableModel(model); }
/** * Create example. */ public TableContentExample() { table = new WTable(); table.setPaginationMode(WTable.PaginationMode.CLIENT); table.setRowsPerPage(5); table.addColumn(new WTableColumn("Name (text)", new WText())); table.addColumn(new WTableColumn("Name (image)", new DynamicWImage())); add(table); }
/** * Helper method to add the columns to the table. * * @param table the table to configure */ public static void configTable(final WTable table) { TableBeanModel<?, ?> beanModel = (TableBeanModel<?, ?>) table.getTableModel(); for (TableColumn<?, ?> col : beanModel.getColumns()) { // Create column WTableColumn tblCol = new WTableColumn(col.getColumnLabel(), col.getRenderer()); table.addColumn(tblCol); } }
@Test public void testColumnOrderAccessors() { WTable table = new WTable(); table.addColumn(new WTableColumn("col1", WText.class)); table.addColumn(new WTableColumn("col2", WText.class)); int[] order1 = new int[]{0, 1}; int[] order2 = new int[]{1}; assertAccessorsCorrect(table, "columnOrder", null, order1, order2); }
@Test public void testDoPaintOfRowHeaderWithNoRowHeaderColumn() throws IOException, SAXException, XpathException { WTable table = new WTable(); table.addColumn(new WTableColumn(COL1_HEADING_TEST, WTextField.class)); table.addColumn(new WTableColumn(COL2_HEADING_TEST, WTextField.class)); table.addColumn(new WTableColumn(COL3_HEADING_TEST, WTextField.class)); // no row headers set TableModel tableModel = createTableModel(); table.setTableModel(tableModel); assertXpathNotExists("//ui:table/ui:tbody/ui:tr/ui:th", table); }
@Test public void testDoPaintExpandModeDynamic() throws IOException, SAXException, XpathException { WTable component = new WTable(); component.addColumn(new WTableColumn(COL1_HEADING_TEST, WTextField.class)); component.addColumn(new WTableColumn(COL2_HEADING_TEST, WTextField.class)); component.addColumn(new WTableColumn(COL3_HEADING_TEST, WTextField.class)); TableModel tableModel = createTableModel(); component.setTableModel(tableModel); component.setVisible(true); component.setExpandMode(ExpandMode.DYNAMIC); assertXpathEvaluatesTo("dynamic", "//ui:table/ui:rowexpansion/@mode", component); }
@Test public void testDoPaintEmptyTableNoAttributes() throws IOException, SAXException, XpathException { WTable component = new WTable(); component.addColumn(new WTableColumn(COL1_HEADING_TEST, WTextField.class)); component.addColumn(new WTableColumn(COL2_HEADING_TEST, WTextField.class)); component.addColumn(new WTableColumn(COL3_HEADING_TEST, WTextField.class)); component.setVisible(true); setActiveContext(createUIContext()); assertXpathEvaluatesTo(component.getNoDataMessage(), "//ui:table/ui:tbody/ui:nodata", component); }
@Test public void testDoPaintExpandModeClient() throws IOException, SAXException, XpathException { WTable component = new WTable(); component.addColumn(new WTableColumn(COL1_HEADING_TEST, WTextField.class)); component.addColumn(new WTableColumn(COL2_HEADING_TEST, WTextField.class)); component.addColumn(new WTableColumn(COL3_HEADING_TEST, WTextField.class)); TableModel tableModel = createTableModel(); component.setTableModel(tableModel); component.setVisible(true); component.setExpandMode(ExpandMode.CLIENT); assertXpathEvaluatesTo("client", "//ui:table/ui:rowexpansion/@mode", component); }
@Test public void testDoPaintExpandModeLazy() throws IOException, SAXException, XpathException { WTable component = new WTable(); component.addColumn(new WTableColumn(COL1_HEADING_TEST, WTextField.class)); component.addColumn(new WTableColumn(COL2_HEADING_TEST, WTextField.class)); component.addColumn(new WTableColumn(COL3_HEADING_TEST, WTextField.class)); TableModel tableModel = createTableModel(); component.setTableModel(tableModel); component.setVisible(true); component.setExpandMode(ExpandMode.LAZY); assertXpathEvaluatesTo("lazy", "//ui:table/ui:rowexpansion/@mode", component); }
@Test public void testDoPaintSelectModeSingle() throws IOException, SAXException, XpathException { WTable component = new WTable(); component.addColumn(new WTableColumn(COL1_HEADING_TEST, WTextField.class)); component.addColumn(new WTableColumn(COL2_HEADING_TEST, WTextField.class)); component.addColumn(new WTableColumn(COL3_HEADING_TEST, WTextField.class)); TableModel tableModel = createTableModel(); component.setTableModel(tableModel); component.setVisible(true); component.setSelectMode(WTable.SelectMode.SINGLE); assertXpathExists("//ui:table/ui:rowselection", component); }
@Test public void testDoPainWithRowHeaderColumn() throws IOException, SAXException, XpathException { WTable table = new WTable(); table.addColumn(new WTableColumn(COL1_HEADING_TEST, WTextField.class)); table.addColumn(new WTableColumn(COL2_HEADING_TEST, WTextField.class)); table.addColumn(new WTableColumn(COL3_HEADING_TEST, WTextField.class)); // set the first column as the row headers table.setRowHeaders(true); TableModel tableModel = createTableModel(); table.setTableModel(tableModel); assertXpathExists("//ui:table/ui:tbody/ui:tr/ui:th", table); assertXpathNotExists("//ui:table/ui:tbody/ui:tr/ui:th[2]", table); }
@Test public void testColumnAccessors() { WTable table = new WTable(); Assert.assertEquals("Table should not have any columns by default", 0, table. getColumnCount()); WTableColumn col1 = new WTableColumn("dummy", WText.class); WTableColumn col2 = new WTableColumn("dummy", WText.class); table.addColumn(col1); Assert.assertEquals("Incorrect column count", 1, table.getColumnCount()); table.addColumn(col2); Assert.assertEquals("Incorrect column count", 2, table.getColumnCount()); Assert.assertSame("Incorrect first column", col1, table.getColumn(0)); Assert.assertSame("Incorrect second column", col2, table.getColumn(1)); }
@Test(expected = IllegalArgumentException.class) public void testSetColumnOrderTooHigh() { WTable table = new WTable(); table.addColumn(new WTableColumn("col1", WText.class)); table.setColumnOrder(new int[]{1, 2}); }
@Test(expected = IllegalArgumentException.class) public void testColumnOrderEmpty() { WTable table = new WTable(); table.addColumn(new WTableColumn("col1", WText.class)); table.setColumnOrder(new int[]{}); }
@Test(expected = IllegalArgumentException.class) public void testColumnOrderInvalidColumnIndex() { WTable table = new WTable(); table.addColumn(new WTableColumn("col1", WText.class)); table.setColumnOrder(new int[]{1}); }
/** * Creates a simple table with a data model set. * * @return a new table with content. */ private static WTable createWTable() { WTable table = new WTable(); table.addColumn(new WTableColumn("Column 1", WText.class)); table.addColumn(new WTableColumn("Column 2", new WTextField())); table.setTableModel(new AdapterBasicTableModel(new MyModel())); return table; }
@Test public void testDoPaintMissingAttributes() throws IOException, SAXException, XpathException { WTable component = new WTable(); component.addColumn(new WTableColumn(COL1_HEADING_TEST, WTextField.class)); component.addColumn(new WTableColumn(COL2_HEADING_TEST, WTextField.class)); component.addColumn(new WTableColumn(COL3_HEADING_TEST, WTextField.class)); component.setTableModel(createTableModel()); component.setVisible(true); component.setStripingType(WTable.StripingType.NONE); component.setSeparatorType(WTable.SeparatorType.NONE); assertXpathNotExists("//ui:table/@caption", component); assertXpathEvaluatesTo("table", "//ui:table/@type", component); assertXpathNotExists("//ui:table/@striping", component); assertXpathNotExists("//ui:table/@separators", component); }
@Test public void testDoPaintMissingAttributesColumnStripingSeparatorsBoth() throws IOException, SAXException, XpathException { WTable component = new WTable(); component.addColumn(new WTableColumn(COL1_HEADING_TEST, WTextField.class)); component.addColumn(new WTableColumn(COL2_HEADING_TEST, WTextField.class)); component.addColumn(new WTableColumn(COL3_HEADING_TEST, WTextField.class)); component.setTableModel(createTableModel()); component.setVisible(true); component.setStripingType(WTable.StripingType.COLUMNS); component.setSeparatorType(WTable.SeparatorType.BOTH); assertXpathNotExists("//ui:table/@caption", component); assertXpathEvaluatesTo("table", "//ui:table/@type", component); assertXpathEvaluatesTo("cols", "//ui:table/@striping", component); assertXpathEvaluatesTo("both", "//ui:table/@separators", component); }
@Test public void testDoPaintWithColAlignment() throws IOException, SAXException, XpathException { WTable table = new WTable(); table.addColumn(new WTableColumn(COL1_HEADING_TEST, WTextField.class)); table.addColumn(new WTableColumn(COL2_HEADING_TEST, WTextField.class)); table.addColumn(new WTableColumn(COL3_HEADING_TEST, WTextField.class)); table.getColumn(0).setAlign(WTableColumn.Alignment.LEFT); table.getColumn(1).setAlign(WTableColumn.Alignment.CENTER); table.getColumn(2).setAlign(WTableColumn.Alignment.RIGHT); TableModel tableModel = createTableModel(); table.setTableModel(tableModel); assertXpathNotExists("//ui:table/ui:thead/ui:th[1]/@align", table); assertXpathEvaluatesTo("center", "//ui:table/ui:thead/ui:th[2]/@align", table); assertXpathEvaluatesTo("right", "//ui:table/ui:thead/ui:th[3]/@align", table); }
@Test public void testDoPaintWithColWidth() throws IOException, SAXException, XpathException { WTable table = new WTable(); table.addColumn(new WTableColumn(COL1_HEADING_TEST, WTextField.class)); table.addColumn(new WTableColumn(COL2_HEADING_TEST, WTextField.class)); table.addColumn(new WTableColumn(COL3_HEADING_TEST, WTextField.class)); table.getColumn(0).setWidth(0); table.getColumn(1).setWidth(1); table.getColumn(2).setWidth(100); TableModel tableModel = createTableModel(); table.setTableModel(tableModel); assertXpathNotExists("//ui:table/ui:thead/ui:th[1]/@width", table); assertXpathEvaluatesTo("1", "//ui:table/ui:thead/ui:th[2]/@width", table); assertXpathEvaluatesTo("100", "//ui:table/ui:thead/ui:th[3]/@width", table); }