using System.Collections.Generic; namespace Terminal.Gui { /// /// Interface to implement when you want the regular (non generic) /// to automatically determine children for your class (without having to specify /// an ) /// public interface ITreeNode { /// /// Text to display when rendering the node /// string Text { get; set; } /// /// The children of your class which should be rendered underneath it when expanded /// /// IList Children { get; } /// /// Optionally allows you to store some custom data/class here. /// object Tag { get; set; } } /// /// Simple class for representing nodes, use with regular (non generic) . /// public class TreeNode : ITreeNode { /// /// Children of the current node /// /// public virtual IList Children { get; set; } = new List (); /// /// Text to display in tree node for current entry /// /// public virtual string Text { get; set; } /// /// Optionally allows you to store some custom data/class here. /// public object Tag { get; set; } /// /// returns /// /// public override string ToString () { return Text ?? "Unamed Node"; } /// /// Initialises a new instance with no /// public TreeNode () { } /// /// Initialises a new instance and sets starting /// public TreeNode (string text) { Text = text; } } }