--- /dev/null
+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.TreeTable;
+
+public class TreeTableModifyAndSetCollapsed extends TestBase {
+
+ int counter = 1;
+
+ @Override
+ protected void setup() {
+ final HierarchicalContainer container = new HierarchicalContainer();
+ container.addContainerProperty("value", String.class, "");
+
+ final TreeTable tt = new TreeTable(null, container);
+ tt.setSizeFull();
+ int parentId = counter++;
+ Item parent = container.addItem(parentId);
+ tt.setCollapsed(parentId, false);
+ parent.getItemProperty("value").setValue("parent " + (counter++) + "");
+ addComponent(tt);
+ Button repopulate = new Button("Repopulate", new ClickListener() {
+
+ public void buttonClick(ClickEvent event) {
+ // repopulate the container and expand root item
+ container.removeAllItems();
+ int parentId = counter++;
+ Item parent = container.addItem(parentId);
+ tt.setCollapsed(parentId, false);
+ parent.getItemProperty("value").setValue(
+ "parent " + (counter++) + "");
+ for (int i = 0; i < 4; i++) {
+ int childId = counter++;
+ Item child = container.addItem(childId);
+ child.getItemProperty("value").setValue(childId + "");
+ container.setParent(childId, parentId);
+ }
+ }
+ });
+ addComponent(repopulate);
+ }
+
+ @Override
+ protected String getDescription() {
+ return "Modifying a container and using setCollapsed on the same server round-trip should not cause any problems";
+ }
+
+ @Override
+ protected Integer getTicketNumber() {
+ return Integer.valueOf(7785);
+ }
+}