--- /dev/null
+/**\r
+ * \r
+ */\r
+package com.itmill.toolkit.tests;\r
+\r
+import com.itmill.toolkit.data.Container;\r
+import com.itmill.toolkit.data.Property.ValueChangeEvent;\r
+import com.itmill.toolkit.data.util.ContainerHierarchicalWrapper;\r
+import com.itmill.toolkit.data.util.ContainerOrderedWrapper;\r
+import com.itmill.toolkit.data.util.IndexedContainer;\r
+import com.itmill.toolkit.ui.Button;\r
+import com.itmill.toolkit.ui.ComboBox;\r
+import com.itmill.toolkit.ui.CustomComponent;\r
+import com.itmill.toolkit.ui.ListSelect;\r
+import com.itmill.toolkit.ui.OrderedLayout;\r
+import com.itmill.toolkit.ui.Panel;\r
+import com.itmill.toolkit.ui.Table;\r
+import com.itmill.toolkit.ui.Tree;\r
+import com.itmill.toolkit.ui.Button.ClickEvent;\r
+\r
+/**\r
+ * @author marc\r
+ * \r
+ */\r
+public class TestContainerChanges extends CustomComponent {\r
+ Container cont = new IndexedContainer();\r
+ Container notordered = new ContainerHierarchicalWrapper(cont);\r
+ Container nothierarchical = new ContainerOrderedWrapper(cont);\r
+\r
+ int cnt = 0;\r
+ Table tbl;\r
+\r
+ public TestContainerChanges() {\r
+\r
+ cont.addContainerProperty("Asd", String.class, "qwe");\r
+ cont.addContainerProperty("Bar", String.class, "foo");\r
+\r
+ OrderedLayout main = new OrderedLayout();\r
+ setCompositionRoot(main);\r
+\r
+ OrderedLayout h = new OrderedLayout(\r
+ OrderedLayout.ORIENTATION_HORIZONTAL);\r
+\r
+ main.addComponent(h);\r
+\r
+ OrderedLayout v = new OrderedLayout();\r
+ h.addComponent(v);\r
+ tbl = new Table();\r
+ tbl.setHeight(200);\r
+ tbl.setWidth(300);\r
+ v.addComponent(tbl);\r
+ tbl.setSelectable(true);\r
+ tbl.setMultiSelect(false);\r
+ tbl.setImmediate(true);\r
+ tbl.setEditable(true);\r
+ tbl.setRowHeaderMode(Table.ROW_HEADER_MODE_ID);\r
+ // Original container\r
+ tbl.setContainerDataSource(notordered);\r
+\r
+ Table tbl2 = new Table();\r
+ tbl2.setHeight(200);\r
+ tbl2.setWidth(300);\r
+ v.addComponent(tbl2);\r
+ tbl2.setSelectable(true);\r
+ tbl2.setMultiSelect(false);\r
+ tbl2.setImmediate(true);\r
+ tbl2.addListener(new Table.ValueChangeListener() {\r
+ public void valueChange(ValueChangeEvent event) {\r
+ System.err.println("Value now "\r
+ + event.getProperty().getValue());\r
+\r
+ }\r
+ });\r
+ tbl2.setRowHeaderMode(Table.ROW_HEADER_MODE_ID);\r
+ // non-ordered container will get wrapped\r
+ tbl2.setContainerDataSource(notordered);\r
+\r
+ OrderedLayout buttons = new OrderedLayout();\r
+ v.addComponent(buttons);\r
+\r
+ Button b = new Button("Commit", new Button.ClickListener() {\r
+\r
+ public void buttonClick(ClickEvent event) {\r
+ tbl.commit();\r
+ }\r
+\r
+ });\r
+ buttons.addComponent(b);\r
+\r
+ b = new Button("Add item", new Button.ClickListener() {\r
+\r
+ public void buttonClick(ClickEvent event) {\r
+ cont.addItem(new Integer(cnt++));\r
+ }\r
+\r
+ });\r
+ buttons.addComponent(b);\r
+ b = new Button("Add NULL item", new Button.ClickListener() {\r
+\r
+ public void buttonClick(ClickEvent event) {\r
+ cont.addItem(null);\r
+ }\r
+\r
+ });\r
+ buttons.addComponent(b);\r
+ b = new Button("Remove last", new Button.ClickListener() {\r
+\r
+ public void buttonClick(ClickEvent event) {\r
+ cont.removeItem(tbl.lastItemId());\r
+ }\r
+\r
+ });\r
+ buttons.addComponent(b);\r
+\r
+ b = new Button("Add property", new Button.ClickListener() {\r
+\r
+ public void buttonClick(ClickEvent event) {\r
+ cont.addContainerProperty("prop" + cnt, String.class, "#"\r
+ + cnt++);\r
+ }\r
+\r
+ });\r
+ buttons.addComponent(b);\r
+\r
+ b = new Button("clear", new Button.ClickListener() {\r
+\r
+ public void buttonClick(ClickEvent event) {\r
+ cont.removeAllItems();\r
+ }\r
+\r
+ });\r
+ buttons.addComponent(b);\r
+ b = new Button("idx", new Button.ClickListener() {\r
+\r
+ public void buttonClick(ClickEvent event) {\r
+ tbl.setContainerDataSource(cont);\r
+ }\r
+\r
+ });\r
+ buttons.addComponent(b);\r
+ b = new Button("nothierarchical", new Button.ClickListener() {\r
+\r
+ public void buttonClick(ClickEvent event) {\r
+ tbl.setContainerDataSource(nothierarchical);\r
+ }\r
+\r
+ });\r
+ buttons.addComponent(b);\r
+ b = new Button("notordered", new Button.ClickListener() {\r
+\r
+ public void buttonClick(ClickEvent event) {\r
+ tbl.setContainerDataSource(notordered);\r
+ }\r
+\r
+ });\r
+ buttons.addComponent(b);\r
+\r
+ Panel p = new Panel("Tree");\r
+ p.setStyleName(Panel.STYLE_LIGHT);\r
+ h.addComponent(p);\r
+ Tree tree = new Tree("ITEM_CAPTION_MODE_PROPERTY");\r
+ tree.setContainerDataSource(nothierarchical);\r
+ tree.setItemCaptionPropertyId("Asd");\r
+ tree.setItemCaptionMode(Tree.ITEM_CAPTION_MODE_PROPERTY);\r
+ p.addComponent(tree);\r
+ tree = new Tree("ITEM_CAPTION_MODE_ITEM");\r
+ // nonhierarchical container will get wrapped\r
+ tree.setContainerDataSource(nothierarchical);\r
+ tree.setItemCaptionMode(Tree.ITEM_CAPTION_MODE_ITEM);\r
+ p.addComponent(tree);\r
+\r
+ p = new Panel("ComboBox");\r
+ p.setStyleName(Panel.STYLE_LIGHT);\r
+ h.addComponent(p);\r
+ ComboBox c = new ComboBox("ITEM_CAPTION_MODE_PROPERTY");\r
+ c.setImmediate(true);\r
+ c.setContainerDataSource(cont);\r
+ c.setItemCaptionPropertyId("Asd");\r
+ c.setItemCaptionMode(ComboBox.ITEM_CAPTION_MODE_PROPERTY);\r
+ p.addComponent(c);\r
+ c = new ComboBox("ITEM_CAPTION_MODE_ITEM");\r
+ c.setImmediate(true);\r
+ c.setContainerDataSource(cont);\r
+ c.setItemCaptionMode(ComboBox.ITEM_CAPTION_MODE_ITEM);\r
+ p.addComponent(c);\r
+\r
+ p = new Panel("ListBox");\r
+ p.setStyleName(Panel.STYLE_LIGHT);\r
+ h.addComponent(p);\r
+ ListSelect l = new ListSelect("ITEM_CAPTION_MODE_PROPERTY");\r
+ l.setContainerDataSource(cont);\r
+ l.setItemCaptionPropertyId("Asd");\r
+ l.setItemCaptionMode(ComboBox.ITEM_CAPTION_MODE_PROPERTY);\r
+ p.addComponent(l);\r
+ l = new ListSelect("ITEM_CAPTION_MODE_ITEM");\r
+ l.setContainerDataSource(cont);\r
+ l.setItemCaptionMode(ComboBox.ITEM_CAPTION_MODE_ITEM);\r
+ p.addComponent(l);\r
+ }\r
+}\r