Browse Source

Add method to get parent in TreeData (#9701)

tags/8.1.1
Adam Wagner 6 years ago
parent
commit
42f7eba5e7

+ 19
- 0
server/src/main/java/com/vaadin/data/TreeData.java View File

@@ -367,6 +367,25 @@ public class TreeData<T> implements Serializable {
.unmodifiableList(itemToWrapperMap.get(item).getChildren());
}

/**
* Get the parent item for the given item.
*
* @param item
* the item for which to retrieve the parent item for
* @return parent item for the given item or {@code null} if the item is a
* root item.
* @throws IllegalArgumentException
* if the item does not exist in this structure
* @since 8.1.1
*/
public T getParent(T item) {
if (!contains(item)) {
throw new IllegalArgumentException(
"Item '" + item + "' not in hierarchy");
}
return itemToWrapperMap.get(item).getParent();
}

/**
* Moves an item to become a child of the given parent item. The new parent
* item must exist in the hierarchy. Setting the parent to {@code null}

+ 8
- 0
server/src/test/java/com/vaadin/data/provider/TreeDataProviderTest.java View File

@@ -80,6 +80,14 @@ public class TreeDataProviderTest
Assert.assertTrue(data.getChildren(null).contains(item));
}

@Test
public void treeData_get_parent() {
StrBean root = rootData.get(0);
StrBean firstChild = data.getChildren(root).get(0);
Assert.assertNull(data.getParent(root));
Assert.assertEquals(root, data.getParent(firstChild));
}

@Test
public void treeData_set_parent() {
StrBean item1 = rootData.get(0);

Loading…
Cancel
Save