Advertisement
globalbus

Delegacyjne menu

Jan 15th, 2012
296
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.59 KB | None | 0 0
  1.     public delegate void MView(List<Menu> list);
  2.     public delegate void View();
  3.     public struct Menu
  4.     {
  5.         public string description;
  6.         public List<Menu> deeper;
  7.         public Delegate next;
  8.         public Menu(string description, List<Menu> deeper, Delegate next)
  9.         {
  10.             this.description = description;
  11.             this.deeper = deeper;
  12.             this.next = next;
  13.         }
  14.     }
  15.  
  16.     static public class UI
  17.     {
  18.         static public void Init()
  19.         {
  20.             Views.Add(new Menu("Sprzedaż produktów", new List<Menu>(), new View(SaleListing)));
  21.             Views.Add(new Menu("Zarzšdzaj użytkownikami", new List<Menu>(), new MView(NewMainView)));
  22.             Views[1].deeper.Add(new Menu("Dodaj użytkownika", new List<Menu>(), new View(UserAdd)));
  23.             Views[1].deeper.Add(new Menu("Skasuj użytkownika", new List<Menu>(), new View(UserDel)));
  24.             Views[1].deeper.Add(new Menu("Modyfikuj użytkownika", new List<Menu>(), new View(UserMod)));
  25.             //Views[0].deeper.Add(new Menu("Wypisz użytkowników", new List<Menu>(), new View()));
  26.             //Views[1].deeper.Add(new Menu("Zmień swoje hasło", new List<Menu>(), new View()));
  27.             Views.Add(new Menu("Zarzšdzaj magazynem", new List<Menu>(), new MView(NewMainView)));
  28.             Views[2].deeper.Add(new Menu("Dodaj artykuł do bazy", new List<Menu>(), new View(ProductAdd)));
  29.             Views[2].deeper.Add(new Menu("Modyfikuj Artykuł", new List<Menu>(), new View(ProductMod)));
  30.             Views[2].deeper.Add(new Menu("Skasuj Artykuł", new List<Menu>(), new View(ProductDel)));
  31.             Views[2].deeper.Add(new Menu("Zmień stan magazynowy", new List<Menu>(), new View(ProductChangeAmount)));
  32.         }
  33.  
  34.         static public List<Menu> Views = new List<Menu>();
  35.         static public void NewMainView(List<Menu> list)
  36.         {
  37.             int padding = 0;
  38.             Console.WriteLine(String.Format("Witaj {0} {1}", Statics.LoggedUser.Name, Statics.LoggedUser.Surname));
  39.             Console.Title = "Menu główne";
  40.             while (true)
  41.             {
  42.                 Console.Clear();
  43.                 Console.WriteLine("[0] Poziom w górę");
  44.                 for (int i = 0; i < (list.Count -padding) && i < 8; i++)
  45.                 {
  46.                     Console.WriteLine("[{1}] {0}", list[i+ padding].description, i+1);
  47.                 }
  48.                 if(padding + 8 < list.Count)
  49.                     Console.WriteLine("[9] Więcej");
  50.                 int digit = GetDigit(list.Count);
  51.                 if (digit == 0)
  52.                     if (padding == 0)
  53.                         break;
  54.                     else
  55.                         padding -= 8;
  56.                 else if (digit == 9 && padding + 8 < list.Count)
  57.                     padding += 8;
  58.                 else
  59.                     if (list[digit + padding - 1].deeper.Count != 0)
  60.                     {
  61.                         string temp =Console.Title;
  62.                         Console.Title = list[digit + padding - 1].description;
  63.                         list[digit + padding - 1].next.DynamicInvoke(list[digit + padding - 1].deeper);
  64.                         Console.Title = temp;
  65.                     }
  66.                     else if (list[digit + padding - 1].next != null)
  67.                     {
  68.                         string temp = Console.Title;
  69.                         Console.Title = list[digit + padding - 1].description;
  70.                         list[digit + padding - 1].next.DynamicInvoke();
  71.                         Console.Title = temp;
  72.                     }
  73.             }
  74.         }
  75. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement