MenuTest.cs 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222
  1. using System;
  2. using System.Drawing;
  3. using System.Windows.Forms;
  4. using System.Collections;
  5. class MyMenuItem : MenuItem
  6. {
  7. public MyMenuItem( string s) : base(s)
  8. {
  9. }
  10. public int GetID()
  11. {
  12. return MenuID;
  13. }
  14. public new IntPtr Handle
  15. {
  16. get
  17. {
  18. return IntPtr.Zero;
  19. }
  20. }
  21. }
  22. // Test basic functionality of the Application and Form class
  23. class MenuTest : Form
  24. {
  25. Button button;
  26. MainMenu testMenu_ = null;
  27. public MenuTest () : base ()
  28. {
  29. ClientSize = new Size(300, 250);
  30. CreateMyMainMenu();
  31. button = new Button ();
  32. button.Top = 20;
  33. button.Left = 20;
  34. button.Width = 50;
  35. button.Height = 50;
  36. button.Parent = this;
  37. button.Text = "Menu";
  38. button.Click += new EventHandler(OnMenuButtonClick);
  39. }
  40. MenuItem[] RecentFilesMenu()
  41. {
  42. MenuItem menuItem1 = new MenuItem("MenuTest.cs");
  43. MenuItem menuItem2 = new MenuItem("/etc/passwd");
  44. MenuItem menuItem3 = new MenuItem("~/.wine/config");
  45. return new MenuItem[3] {menuItem1, menuItem2, menuItem3};
  46. }
  47. // Doesn't gets called, waiting for Button implementation
  48. void OnMenuButtonClick( object c, EventArgs e)
  49. {
  50. if( Menu != null)
  51. {
  52. Menu = null;
  53. }
  54. else
  55. {
  56. Menu = testMenu_;
  57. }
  58. }
  59. MenuItem menuItem4 = null;
  60. public void CreateMyMainMenu()
  61. {
  62. testMenu_ = new MainMenu();
  63. MyMenuItem myMI = new MyMenuItem("2");
  64. MenuItem refMi = myMI;
  65. IntPtr ip = refMi.Handle;
  66. ip = myMI.Handle;
  67. System.Console.WriteLine("My menu ID {0}", myMI.GetID());
  68. MenuItem menuItem1 = new MenuItem("&New", new System.EventHandler(this.OnFileNew));
  69. MenuItem menuItem2 = new MenuItem("&Open...", new System.EventHandler(this.OnFileOpen));
  70. MenuItem menuItem3 = new MenuItem("&Quit", new System.EventHandler(this.OnFileQuit));
  71. MenuItem recentFiles = new MenuItem("Recent files", RecentFilesMenu());
  72. MenuItem FileMenu = new MenuItem("File", new MenuItem[]{menuItem1, menuItem2,recentFiles, menuItem3});
  73. myMI = new MyMenuItem("2");
  74. System.Console.WriteLine("My menu ID {0}", myMI.GetID());
  75. menuItem1.Text = "&File";
  76. menuItem2.Text = "&Edit";
  77. menuItem3.Text = "E&xit";
  78. MenuItem mi10 = new MenuItem("Dos");
  79. MenuItem mi11 = new MenuItem("Unix");
  80. menuItem4 = new MenuItem("&Save As...", new MenuItem[]{mi10, mi11});
  81. FileMenu.MenuItems.Add(2, menuItem4);
  82. int pos = testMenu_.MenuItems.Add(FileMenu);
  83. System.Console.WriteLine("Menu File added at position {0}", pos);
  84. MenuItem menuTest1 = new MenuItem("&Test properties", new System.EventHandler(this.OnTestProperties));
  85. MenuItem TestMenu = new MenuItem("Test", new MenuItem[]{menuTest1});
  86. testMenu_.MenuItems.Add(TestMenu);
  87. Menu = testMenu_;
  88. myMI = new MyMenuItem("2");
  89. System.Console.WriteLine("My menu ID {0}", myMI.GetID());
  90. }
  91. protected void OnFileNew( object sender, System.EventArgs e)
  92. {
  93. MessageBox.Show(this, "The File->New command selected", "MenuTest");
  94. menuItem4.Click += new System.EventHandler( this.OnFileSaveAs);
  95. menuItem4.MenuItems.Clear();
  96. }
  97. protected void OnFileOpen( object sender, System.EventArgs e)
  98. {
  99. MessageBox.Show(this, "A file-open dialog will appear soon", "MenuTest");
  100. }
  101. protected void OnFileQuit( object sender, System.EventArgs e)
  102. {
  103. System.Console.WriteLine("The Exit command selected");
  104. Application.Exit();
  105. }
  106. protected void OnFileSaveAs( object sender, System.EventArgs e)
  107. {
  108. MessageBox.Show("OnFileSaveAs");
  109. menuItem4.Index = 0;
  110. }
  111. protected void OnTestProperties( object sender, System.EventArgs e)
  112. {
  113. MenuItem send = sender as MenuItem;
  114. if( send != null)
  115. {
  116. Menu parent = send.Parent;
  117. if( parent != null){
  118. MenuItem mi1 = new MenuItem("BarBreak");
  119. mi1.BarBreak = true;
  120. MenuItem mi2 = new MenuItem("Break");
  121. mi2.Break = true;
  122. MenuItem mi3 = new MenuItem("Checked");
  123. mi3.Checked = true;
  124. MenuItem mi4 = new MenuItem("Disabled");
  125. mi4.Enabled = false;
  126. MenuItem mi5 = new MenuItem("DefaultItem");
  127. mi5.DefaultItem = true;
  128. MenuItem mi6 = new MenuItem("RadioCheck");
  129. mi6.RadioCheck = true;
  130. mi6.Checked = true;
  131. MenuItem mi7 = new MenuItem("-");
  132. mi7.RadioCheck = true;
  133. MenuItem SubMenu = new MenuItem("SubMenu", new MenuItem[]{mi1, mi2, mi3, mi4, mi5, mi6, mi7});
  134. parent.MenuItems.Add(SubMenu);
  135. }
  136. }
  137. }
  138. // - verifies the WndProc can be overridden propery
  139. // - verifies the Application.MessageLoop is working properly
  140. protected override void WndProc (ref Message m)
  141. {
  142. base.WndProc (ref m);
  143. // should be true after the Run command is reached
  144. //Console.WriteLine ("Application.MessageLoop: " +
  145. //Application.MessageLoop);
  146. }
  147. static public void Test1 ()
  148. {
  149. MenuTest form = new MenuTest ();
  150. //should be false
  151. Console.WriteLine ("Application.MessageLoop: " +
  152. Application.MessageLoop);
  153. Application.Run (form);
  154. }
  155. static public void Test2()
  156. {
  157. MenuItem mi = new MyMenuItem("123");
  158. MenuItem mp = new MenuItem("PPP", new MenuItem[] { mi });
  159. MenuItem mc = mi.CloneMenu();
  160. System.Console.WriteLine("Clone equals to original {0}", mc.Equals(mi));
  161. System.Console.WriteLine("Original Parent {0}", mi.Parent.ToString());
  162. System.Console.WriteLine("Clone Parent {0}", mc.Parent != null ? mc.Parent.ToString() : "<null>");
  163. System.Console.WriteLine("Clone Parent is the same {0}", mc.Parent == mi.Parent);
  164. }
  165. static public void Test3()
  166. {
  167. MenuItem mi1 = new MenuItem("123");
  168. MenuItem mi2 = new MenuItem("234");
  169. MenuItem parent = new MenuItem( "parent", new MenuItem[] { mi1, mi2});
  170. IList il = (IList)parent.MenuItems;
  171. System.Console.WriteLine("List of menu items IsReadOnly {0}, IsFixedSize {1}", il.IsReadOnly, il.IsFixedSize);
  172. il.Add(new MenuItem("This must be inside"));
  173. //il.Add( new ArrayList());
  174. //il[1] = new MenuItem("345");
  175. //parent.MenuItems[1] = new MenuItem("asd");
  176. }
  177. static public int Main (String[] args)
  178. {
  179. Test3();
  180. Test2();
  181. Test1();
  182. return 0;
  183. }
  184. }