using System; using System.Collections.Generic; using System.Text; using System.IO; using InTheHand.Net; using System.Globalization; using System.Reflection; using System.Threading; using System.Diagnostics; namespace ConsoleMenuTesting { class ConsoleMenu : MenuSystem { protected volatile bool quitMenu; TextReader m_rdr; TextWriter m_wtr; string m_subMenu; bool m_backChosen; // const string promptArrow = ">"; readonly int sizeOfBaseMenus; // Quit, Back etc public ConsoleMenu() : this(Console.In, Console.Out) { } public ConsoleMenu(TextReader rdr, TextWriter wtr) { Console.CancelKeyPress += new ConsoleCancelEventHandler(Console_CancelKeyPress); Options.Add(new Option("Quit", null, new ThreadStart(Quit).Method, this)); Options.Add(new Option("<-Back", null, new ThreadStart(Back).Method, this)); sizeOfBaseMenus = Options.Count; // m_rdr = rdr; m_wtr = wtr; } [Conditional("DEBUG")] private void TestGetOriginalException() { Exception input, result; // Console.WriteLine("Test GetOriginalException 0"); input = null; result = Option.GetOriginalException(input); // Console.WriteLine("Test GetOriginalException 1"); input = new RankException("Outer."); result = Option.GetOriginalException(input); // Console.WriteLine("Test GetOriginalException 2"); input = new TargetInvocationException(null); result = Option.GetOriginalException(input); // Console.WriteLine("Test GetOriginalException 3"); input = new TargetInvocationException("Outer", new RankException("Inner.")); result = Option.GetOriginalException(input); // Console.WriteLine("Test GetOriginalException 4"); input = new TargetInvocationException(new RankException("Inner.")); result = Option.GetOriginalException(input); // Console.WriteLine("Test GetOriginalException DONE"); } private void AddSubMenuMenus() { int idx = sizeOfBaseMenus; foreach (string curSubMenu in SubMenus) { #if false // ADD_SUB_MENUS_AT_BOTTOM Options.Add(new OptionSubMenu(curSubMenu, MenuSubMenu, this)); #else Options.Insert(idx++, new OptionSubMenu(curSubMenu, MenuSubMenu, this)); #endif } } //-------- public override void RunMenu() { AddSubMenuMenus(); // TestGetOriginalException(); // try { m_backChosen = true; //reset for init while (!quitMenu) { if (m_backChosen) { m_subMenu = "root"; } m_backChosen = false; // IList