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