public MenuNode AddSubNode(string label) { MenuNode subNode = new MenuNode(label, this); SubNodes.Add(subNode); return(subNode); }
public bool Select(int selection, bool ignoreInvalid) { if (selection < 0) { if (ignoreInvalid) { return(true); } throw new ArgumentOutOfRangeException("selection", "The selected menu item index must not be negative"); } if (selection > current.EntryCount) { if (ignoreInvalid) { return(true); } throw new ArgumentOutOfRangeException("selection", "The selected menu item index exceeds the number of entries"); } if (selection == 0 && current.Parent == null) { if (ignoreInvalid) { return(true); } throw new ArgumentOutOfRangeException("selection", "This is node does not have a parent node"); } if (selection == 0) { current = current.Parent; } else if (selection <= current.EndNodes.Count) { current.EndNodes[selection - 1].Function?.Invoke(); return(false); } else { current = current.SubNodes[selection - 1 - current.EndNodes.Count]; } return(true); }
public MenuNode(string label, MenuNode parent) { Label = label; Parent = parent; current = this; }
public MenuNode(string label) { Label = label; current = this; }