From bb65ebb4ed6f4932f9aadc94c04461af4ae1ca08 Mon Sep 17 00:00:00 2001 From: Matti Tahvonen Date: Mon, 29 Sep 2008 14:01:34 +0000 Subject: [PATCH] test case and fix for #2014 (toggling empty container in table) svn changeset:5547/svn branch:trunk --- .../terminal/gwt/client/ui/IScrollTable.java | 7 ++- .../toolkit/tests/tickets/Ticket2126.java | 61 +++++++++++++++++++ 2 files changed, 66 insertions(+), 2 deletions(-) create mode 100644 src/com/itmill/toolkit/tests/tickets/Ticket2126.java diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/IScrollTable.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/IScrollTable.java index bebd1cd476..a0b0885c80 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/IScrollTable.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/IScrollTable.java @@ -1319,10 +1319,13 @@ public class IScrollTable extends Composite implements Table, ScrollListener, } public void clear() { - super.clear(); + for (Iterator iterator = availableCells.keySet().iterator(); iterator + .hasNext();) { + String cid = (String) iterator.next(); + removeCell(cid); + } availableCells.clear(); availableCells.put("0", new RowHeadersHeaderCell()); - } public void updateCellsFromUIDL(UIDL uidl) { diff --git a/src/com/itmill/toolkit/tests/tickets/Ticket2126.java b/src/com/itmill/toolkit/tests/tickets/Ticket2126.java new file mode 100644 index 0000000000..11dfeddd15 --- /dev/null +++ b/src/com/itmill/toolkit/tests/tickets/Ticket2126.java @@ -0,0 +1,61 @@ +package com.itmill.toolkit.tests.tickets; + +import com.itmill.toolkit.data.Item; +import com.itmill.toolkit.data.util.IndexedContainer; +import com.itmill.toolkit.ui.Button; +import com.itmill.toolkit.ui.Component; +import com.itmill.toolkit.ui.Label; +import com.itmill.toolkit.ui.Table; +import com.itmill.toolkit.ui.Window; + +/** + * + * Toggling container with an empty one may result duplicate header cell in + * client. + * + */ +public class Ticket2126 extends com.itmill.toolkit.Application { + + Window main = new Window(); + Table table = new Table(); + + public void init() { + setMainWindow(main); + + final IndexedContainer container1 = new IndexedContainer(); + container1.addContainerProperty("text", Component.class, null); + final IndexedContainer container2 = new IndexedContainer(); + + // Case #2 Try to comment the following line for another type of strange + // behaviour + container2.addContainerProperty("text", Component.class, null); + + for (int i = 0; i < 100; i++) { + Item item = container1.addItem(i); + item.getItemProperty("text").setValue(new Label("Test " + i)); + } + + table.setContainerDataSource(container1); + + // workaround for case #2 + // table.setWidth("300px"); + // table.setHeight("300px"); + + Button refreshTable = new Button("Switch table container"); + refreshTable.addListener(new Button.ClickListener() { + boolean full = true; + + public void buttonClick(Button.ClickEvent e) { + if (full) { + table.setContainerDataSource(container2); + } else { + table.setContainerDataSource(container1); + } + full = !full; + } + }); + + main.addComponent(table); + main.addComponent(refreshTable); + } +} \ No newline at end of file -- 2.39.5