--- /dev/null
+package com.vaadin.tests.components;\r
+\r
+import com.vaadin.data.Item;\r
+import com.vaadin.data.util.HierarchicalContainer;\r
+import com.vaadin.data.util.IndexedContainer;\r
+import com.vaadin.ui.HorizontalLayout;\r
+import com.vaadin.ui.Tree;\r
+\r
+public class HierarchicalContainerSorting extends TestBase {\r
+ IndexedContainer hierarchicalContainer = new HierarchicalContainer();\r
+\r
+ IndexedContainer indexedContainer = new IndexedContainer();\r
+\r
+ @Override\r
+ public void setup() {\r
+\r
+ populateContainer(indexedContainer);\r
+ populateContainer(hierarchicalContainer);\r
+\r
+ sort(indexedContainer);\r
+ sort(hierarchicalContainer);\r
+\r
+ HorizontalLayout hl = new HorizontalLayout();\r
+\r
+ Tree tree1 = new Tree("Tree with IndexedContainer");\r
+ tree1.setContainerDataSource(indexedContainer);\r
+ hl.addComponent(tree1);\r
+\r
+ Tree tree2 = new Tree("Tree with HierarchicalContainer");\r
+ tree2.setContainerDataSource(hierarchicalContainer);\r
+ for (Object id : tree2.rootItemIds()) {\r
+ tree2.expandItemsRecursively(id);\r
+ }\r
+ hl.addComponent(tree2);\r
+\r
+ addComponent(hl);\r
+ }\r
+\r
+ private static void sort(IndexedContainer container) {\r
+ Object[] properties = new Object[1];\r
+ properties[0] = "name";\r
+\r
+ boolean[] ascending = new boolean[1];\r
+ ascending[0] = true;\r
+\r
+ container.sort(properties, ascending);\r
+ }\r
+\r
+ private static void populateContainer(IndexedContainer container) {\r
+ container.addContainerProperty("name", String.class, null);\r
+\r
+ addItem(container, "Games", null);\r
+ addItem(container, "Call of Duty", "Games");\r
+ addItem(container, "Might and Magic", "Games");\r
+ addItem(container, "Fallout", "Games");\r
+ addItem(container, "Red Alert", "Games");\r
+\r
+ addItem(container, "Cars", null);\r
+ addItem(container, "Toyota", "Cars");\r
+ addItem(container, "Volvo", "Cars");\r
+ addItem(container, "Audi", "Cars");\r
+ addItem(container, "Ford", "Cars");\r
+\r
+ addItem(container, "Natural languages", null);\r
+ addItem(container, "Swedish", "Natural languages");\r
+ addItem(container, "English", "Natural languages");\r
+ addItem(container, "Finnish", "Natural languages");\r
+\r
+ addItem(container, "Programming languages", null);\r
+ addItem(container, "C++", "Programming languages");\r
+ addItem(container, "PHP", "Programming languages");\r
+ addItem(container, "Java", "Programming languages");\r
+ addItem(container, "Python", "Programming languages");\r
+\r
+ }\r
+\r
+ public static void addItem(IndexedContainer container, String string,\r
+ String parent) {\r
+ Item item = container.addItem(string);\r
+ item.getItemProperty("name").setValue(string);\r
+\r
+ if (parent != null && container instanceof HierarchicalContainer) {\r
+ ((HierarchicalContainer) container).setParent(string, parent);\r
+ }\r
+ }\r
+\r
+ @Override\r
+ protected String getDescription() {\r
+ return "The two trees contain the same data, one uses IndexedContainer, one uses HierarchicalContainer. Both should be sorted, both the root nodes and the children.";\r
+ }\r
+\r
+ @Override\r
+ protected Integer getTicketNumber() {\r
+ return 3095;\r
+ }\r
+\r
+}
\ No newline at end of file