package com.revolsys.swing.tree.node; import java.util.ArrayList; import java.util.List; import java.util.function.Supplier; import javax.swing.Icon; import com.revolsys.swing.tree.BaseTreeNode; public class SupplierChildrenTreeNode extends LazyLoadTreeNode { private final Supplier<Iterable<Object>> children; public SupplierChildrenTreeNode(final String name, final Icon icon, final Supplier<Iterable<Object>> children) { super(null); setName(name); setIcon(icon); this.children = children; } @Override protected List<BaseTreeNode> loadChildrenDo() { final List<BaseTreeNode> nodes = new ArrayList<>(); for (final Object child : this.children.get()) { final BaseTreeNode node = BaseTreeNode.newTreeNode(child); if (node != null) { nodes.add(node); } } return nodes; } }