/// <summary> /// Helper to make a separator menu item. /// </summary> /// <returns>A MenuItem that is a separator MenuItem.</returns> private static MenuItem MakeSeparatorMenuItem(MenuType menuType) { // Instantiate the separator menu item. MenuItem separatorMenuItem = new OwnerDrawMenuItem(menuType); separatorMenuItem.Text = SEPARATOR_TEXT; return(separatorMenuItem); }
/// <summary> /// Creates and returns a set of menu items from the child merge menu entries in this merge /// menu entry. /// </summary> /// <param name="mainMenu">The level at which the MenuItems will appear.</param> /// <returns>Array of menu items.</returns> public MenuItem[] CreateMenuItems(bool mainMenu) { // If this merge menu entry has no child merge menu entries, return null. if (childMergeMenuEntries.Count == 0) { return(null); } // Construct an array list to hold the menu items being created. ArrayList menuItemArrayList = new ArrayList(); // Enumerate the child merge menu entries of this merge menu entry. foreach (MergeMenuEntry mergeMenuEntry in childMergeMenuEntries.Values) { // Get the text of the merge menu entry. string text = mergeMenuEntry.Text; // Create the menu item for this child merge menu entry. MenuItem menuItem; if (mainMenu) { menuItem = new OwnerDrawMenuItem(); } else { // If the text of the merge menu entry specifies that a separator menu item // should appear before it, insert a separator menu item. if (text.StartsWith(SEPARATOR_TEXT)) { // Strip off the SEPARATOR_TEXT. text = text.Substring(1); // Instantiate the separator menu item. MenuItem separatorMenuItem = new OwnerDrawMenuItem(); separatorMenuItem.Text = SEPARATOR_TEXT; // Add the separator menu item to the array of menu items being returned. menuItemArrayList.Add(separatorMenuItem); } // Instantiate the menu item. if (mergeMenuEntry.Command == null) { menuItem = new OwnerDrawMenuItem(); } else { menuItem = new CommandOwnerDrawMenuItem(mergeMenuEntry.Command); } } // Set the menu item text. menuItem.Text = text; // If this child merge menu entry has any child merge menu entries, recursively // create their menu items. MenuItem[] childMenuItems = mergeMenuEntry.CreateMenuItems(false); if (childMenuItems != null) { menuItem.MenuItems.AddRange(childMenuItems); } // Add the menu item to the array of menu items being returned. menuItemArrayList.Add(menuItem); } // Done. Convert the array list into a MenuItem array and return it. return((MenuItem[])menuItemArrayList.ToArray(typeof(MenuItem))); }
/// <summary> /// Creates and returns a set of menu items from the child merge menu entries in this merge /// menu entry. /// </summary> /// <param name="mainMenu">The level at which the MenuItems will appear.</param> /// <returns>Array of menu items.</returns> public MenuItem[] CreateMenuItems() { // If this merge menu entry has no child merge menu entries, return null. if (childMergeMenuEntries.Count == 0) { return(null); } // Construct an array list to hold the menu items being created. ArrayList menuItemArrayList = new ArrayList(); // Enumerate the child merge menu entries of this merge menu entry. foreach (MenuBuilderEntry mergeMenuEntry in childMergeMenuEntries.Values) { // Get the text of the merge menu entry. string text = mergeMenuEntry.Text; // Create the menu item for this child merge menu entry. MenuItem menuItem; bool separatorBefore, separatorAfter; if (menuBuilder.MenuType == MenuType.Main && mergeMenuEntry.level == 0) { // Level zero of a main menu. menuItem = new OwnerDrawMenuItem(menuBuilder.MenuType); separatorBefore = separatorAfter = false; } else { // Determine whether a separator before and a separator after the menu item // should be inserted. separatorBefore = text.StartsWith(SEPARATOR_TEXT); separatorAfter = text.EndsWith(SEPARATOR_TEXT); if (separatorBefore || separatorAfter) { text = text.Replace(SEPARATOR_TEXT, string.Empty); } // Instantiate the menu item. if (mergeMenuEntry.Command == null) { menuItem = new OwnerDrawMenuItem(menuBuilder.MenuType); } else { menuItem = new CommandOwnerDrawMenuItem(menuBuilder.MenuType, mergeMenuEntry.Command); } } // Set the menu item text. menuItem.Text = text; // If this child merge menu entry has any child merge menu entries, recursively // create their menu items. MenuItem[] childMenuItems = mergeMenuEntry.CreateMenuItems(); if (childMenuItems != null) { menuItem.MenuItems.AddRange(childMenuItems); } // Add the separator menu item, as needed. if (separatorBefore) { menuItemArrayList.Add(MakeSeparatorMenuItem(menuBuilder.MenuType)); } // Add the menu item to the array of menu items being returned. menuItemArrayList.Add(menuItem); // Add the separator menu item, as needed. if (separatorAfter) { menuItemArrayList.Add(MakeSeparatorMenuItem(menuBuilder.MenuType)); } } // Done. Convert the array list into a MenuItem array and return it. return((MenuItem[])menuItemArrayList.ToArray(typeof(MenuItem))); }
/// <summary> /// Helper to make a separator menu item. /// </summary> /// <returns>A MenuItem that is a separator MenuItem.</returns> private static MenuItem MakeSeparatorMenuItem(MenuType menuType) { // Instantiate the separator menu item. MenuItem separatorMenuItem = new OwnerDrawMenuItem(menuType); separatorMenuItem.Text = SEPARATOR_TEXT; return separatorMenuItem; }
/// <summary> /// Creates and returns a set of menu items from the child merge menu entries in this merge /// menu entry. /// </summary> /// <param name="mainMenu">The level at which the MenuItems will appear.</param> /// <returns>Array of menu items.</returns> public MenuItem[] CreateMenuItems() { // If this merge menu entry has no child merge menu entries, return null. if (childMergeMenuEntries.Count == 0) return null; // Construct an array list to hold the menu items being created. ArrayList menuItemArrayList = new ArrayList(); // Enumerate the child merge menu entries of this merge menu entry. foreach (MenuBuilderEntry mergeMenuEntry in childMergeMenuEntries.Values) { // Get the text of the merge menu entry. string text = mergeMenuEntry.Text; // Create the menu item for this child merge menu entry. MenuItem menuItem; bool separatorBefore, separatorAfter; if (menuBuilder.MenuType == MenuType.Main && mergeMenuEntry.level == 0) { // Level zero of a main menu. menuItem = new OwnerDrawMenuItem(menuBuilder.MenuType); separatorBefore = separatorAfter = false; } else { // Determine whether a separator before and a separator after the menu item // should be inserted. separatorBefore = text.StartsWith(SEPARATOR_TEXT); separatorAfter = text.EndsWith(SEPARATOR_TEXT); if (separatorBefore || separatorAfter) text = text.Replace(SEPARATOR_TEXT, string.Empty); // Instantiate the menu item. if (mergeMenuEntry.Command == null) menuItem = new OwnerDrawMenuItem(menuBuilder.MenuType); else menuItem = new CommandOwnerDrawMenuItem(menuBuilder.MenuType, mergeMenuEntry.Command); } // Set the menu item text. menuItem.Text = text; // If this child merge menu entry has any child merge menu entries, recursively // create their menu items. MenuItem[] childMenuItems = mergeMenuEntry.CreateMenuItems(); if (childMenuItems != null) menuItem.MenuItems.AddRange(childMenuItems); // Add the separator menu item, as needed. if (separatorBefore) menuItemArrayList.Add(MakeSeparatorMenuItem(menuBuilder.MenuType)); // Add the menu item to the array of menu items being returned. menuItemArrayList.Add(menuItem); // Add the separator menu item, as needed. if (separatorAfter) menuItemArrayList.Add(MakeSeparatorMenuItem(menuBuilder.MenuType)); } // Done. Convert the array list into a MenuItem array and return it. return (MenuItem[])menuItemArrayList.ToArray(typeof(MenuItem)); }
/// <summary> /// Creates and returns a set of menu items from the child merge menu entries in this merge /// menu entry. /// </summary> /// <param name="mainMenu">The level at which the MenuItems will appear.</param> /// <returns>Array of menu items.</returns> public MenuItem[] CreateMenuItems(bool mainMenu) { // If this merge menu entry has no child merge menu entries, return null. if (childMergeMenuEntries.Count == 0) return null; // Construct an array list to hold the menu items being created. ArrayList menuItemArrayList = new ArrayList(); // Enumerate the child merge menu entries of this merge menu entry. foreach (MergeMenuEntry mergeMenuEntry in childMergeMenuEntries.Values) { // Get the text of the merge menu entry. string text = mergeMenuEntry.Text; // Create the menu item for this child merge menu entry. MenuItem menuItem; if (mainMenu) menuItem = new OwnerDrawMenuItem(); else { // If the text of the merge menu entry specifies that a separator menu item // should appear before it, insert a separator menu item. if (text.StartsWith(SEPARATOR_TEXT)) { // Strip off the SEPARATOR_TEXT. text = text.Substring(1); // Instantiate the separator menu item. MenuItem separatorMenuItem = new OwnerDrawMenuItem(); separatorMenuItem.Text = SEPARATOR_TEXT; // Add the separator menu item to the array of menu items being returned. menuItemArrayList.Add(separatorMenuItem); } // Instantiate the menu item. if (mergeMenuEntry.Command == null) menuItem = new OwnerDrawMenuItem(); else menuItem = new CommandOwnerDrawMenuItem(mergeMenuEntry.Command); } // Set the menu item text. menuItem.Text = text; // If this child merge menu entry has any child merge menu entries, recursively // create their menu items. MenuItem[] childMenuItems = mergeMenuEntry.CreateMenuItems(false); if (childMenuItems != null) menuItem.MenuItems.AddRange(childMenuItems); // Add the menu item to the array of menu items being returned. menuItemArrayList.Add(menuItem); } // Done. Convert the array list into a MenuItem array and return it. return (MenuItem[])menuItemArrayList.ToArray(typeof(MenuItem)); }