From 69c95b6bb6225570931a1c2b4a3f32531a65cab0 Mon Sep 17 00:00:00 2001 From: Jonatan Kronqvist Date: Fri, 7 Oct 2011 08:14:06 +0000 Subject: [PATCH] Fix and tests for #7720 svn changeset:21636/svn branch:6.7 --- .../terminal/gwt/client/ui/VScrollTable.java | 2 +- .../treetable/RemoveAllItemsRefresh.html | 32 +++++++ .../treetable/RemoveAllItemsRefresh.java | 89 +++++++++++++++++++ 3 files changed, 122 insertions(+), 1 deletion(-) create mode 100644 tests/testbench/com/vaadin/tests/components/treetable/RemoveAllItemsRefresh.html create mode 100644 tests/testbench/com/vaadin/tests/components/treetable/RemoveAllItemsRefresh.java diff --git a/src/com/vaadin/terminal/gwt/client/ui/VScrollTable.java b/src/com/vaadin/terminal/gwt/client/ui/VScrollTable.java index 53aa4c407e..933c5de1c9 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/VScrollTable.java +++ b/src/com/vaadin/terminal/gwt/client/ui/VScrollTable.java @@ -1382,7 +1382,7 @@ public class VScrollTable extends FlowPanel implements Table, ScrollHandler, private void updateBody(UIDL uidl, int firstRow, int reqRows) { if (uidl == null || reqRows < 1) { // container is empty, remove possibly existing rows - if (firstRow < 0) { + if (firstRow <= 0) { while (scrollBody.getLastRendered() > scrollBody.firstRendered) { scrollBody.unlinkRow(false); } diff --git a/tests/testbench/com/vaadin/tests/components/treetable/RemoveAllItemsRefresh.html b/tests/testbench/com/vaadin/tests/components/treetable/RemoveAllItemsRefresh.html new file mode 100644 index 0000000000..1d4c65498b --- /dev/null +++ b/tests/testbench/com/vaadin/tests/components/treetable/RemoveAllItemsRefresh.html @@ -0,0 +1,32 @@ + + + + + + +RemoveAllItemsRefresh + + + + + + + + + + + + + + + + + + + + + + +
RemoveAllItemsRefresh
open/run/com.vaadin.tests.components.treetable.RemoveAllItemsRefresh?restartApplication
clickvaadin=runcomvaadintestscomponentstreetableRemoveAllItemsRefresh::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[1]/VButton[0]/domChild[0]/domChild[0]
screenCapturecleared
+ + diff --git a/tests/testbench/com/vaadin/tests/components/treetable/RemoveAllItemsRefresh.java b/tests/testbench/com/vaadin/tests/components/treetable/RemoveAllItemsRefresh.java new file mode 100644 index 0000000000..40d63e1c87 --- /dev/null +++ b/tests/testbench/com/vaadin/tests/components/treetable/RemoveAllItemsRefresh.java @@ -0,0 +1,89 @@ +/* +@ITMillApache2LicenseForJavaFiles@ + */ +package com.vaadin.tests.components.treetable; + +import com.vaadin.data.Item; +import com.vaadin.data.util.HierarchicalContainer; +import com.vaadin.tests.components.TestBase; +import com.vaadin.ui.Button; +import com.vaadin.ui.Button.ClickEvent; +import com.vaadin.ui.Button.ClickListener; +import com.vaadin.ui.Table; +import com.vaadin.ui.TreeTable; +import com.vaadin.ui.VerticalLayout; + +public class RemoveAllItemsRefresh extends TestBase { + protected static final String NAME_PROPERTY = "Name"; + protected static final String TITLE_PROPERTY = "Title"; + + private VerticalLayout treeLayout = new VerticalLayout(); + private Table treetable; + + private HierarchicalContainer treeContainer; + + @Override + protected void setup() { + treetable = new TreeTable(); + treeContainer = new HierarchicalContainer(); + // Create the treetable + treetable.setSelectable(true); + treetable.setSizeFull(); + + treeContainer.addContainerProperty(NAME_PROPERTY, String.class, ""); + treeContainer.addContainerProperty(TITLE_PROPERTY, String.class, ""); + treetable.setContainerDataSource(treeContainer); + + treeLayout.addComponent(treetable); + addComponent(treeLayout); + + Button cleanUp = new Button("clear"); + cleanUp.addListener(new ClickListener() { + public void buttonClick(ClickEvent event) { + treeContainer.removeAllItems(); + } + }); + addComponent(cleanUp); + + Button refresh = new Button("fill"); + refresh.addListener(new ClickListener() { + public void buttonClick(ClickEvent event) { + fill(); + } + }); + addComponent(refresh); + + fill(); + } + + private void fill() { + Item containerItem; + + treeLayout.removeAllComponents(); + treeLayout.addComponent(treetable); + + treeContainer.removeAllItems(); + containerItem = treeContainer.addItem("first"); + containerItem.getItemProperty(NAME_PROPERTY) + .setValue("1 NAME_PROPERTY"); + containerItem.getItemProperty(TITLE_PROPERTY).setValue( + "1 TITLE_PROPERTY"); + + containerItem = treeContainer.addItem("second"); + containerItem.getItemProperty(NAME_PROPERTY) + .setValue("2 NAME_PROPERTY"); + containerItem.getItemProperty(TITLE_PROPERTY).setValue( + "2 TITLE_PROPERTY"); + treetable.setContainerDataSource(treeContainer); + } + + @Override + protected String getDescription() { + return "Removing all items from a treetable should refresh the component"; + } + + @Override + protected Integer getTicketNumber() { + return 7720; + } +} -- 2.39.5