MenuItemDefinitionExtensions.cs 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. using System.Collections.Generic;
  2. using System.Linq;
  3. namespace Abp.Application.Navigation
  4. {
  5. /// <summary>
  6. /// Extension methods for <see cref="MenuItemDefinition"/>.
  7. /// </summary>
  8. public static class MenuItemDefinitionExtensions
  9. {
  10. /// <summary>
  11. /// Moves a menu item to top in the list.
  12. /// </summary>
  13. /// <param name="menuItems">List of menu items</param>
  14. /// <param name="menuItemName">Name of the menu item to move</param>
  15. public static void MoveMenuItemToTop(this IList<MenuItemDefinition> menuItems, string menuItemName)
  16. {
  17. var menuItem = GetMenuItem(menuItems, menuItemName);
  18. menuItems.Remove(menuItem);
  19. menuItems.Insert(0, menuItem);
  20. }
  21. /// <summary>
  22. /// Moves a menu item to bottom in the list.
  23. /// </summary>
  24. /// <param name="menuItems">List of menu items</param>
  25. /// <param name="menuItemName">Name of the menu item to move</param>
  26. public static void MoveMenuItemToBottom(this IList<MenuItemDefinition> menuItems, string menuItemName)
  27. {
  28. var menuItem = GetMenuItem(menuItems, menuItemName);
  29. menuItems.Remove(menuItem);
  30. menuItems.Insert(menuItems.Count, menuItem);
  31. }
  32. /// <summary>
  33. /// Moves a menu item in the list after another menu item in the list.
  34. /// </summary>
  35. /// <param name="menuItems">List of menu items</param>
  36. /// <param name="menuItemName">Name of the menu item to move</param>
  37. /// <param name="targetMenuItemName">Target menu item (to move before it)</param>
  38. public static void MoveMenuItemBefore(this IList<MenuItemDefinition> menuItems, string menuItemName, string targetMenuItemName)
  39. {
  40. var menuItem = GetMenuItem(menuItems, menuItemName);
  41. var targetMenuItem = GetMenuItem(menuItems, targetMenuItemName);
  42. menuItems.Remove(menuItem);
  43. menuItems.Insert(menuItems.IndexOf(targetMenuItem), menuItem);
  44. }
  45. /// <summary>
  46. /// Moves a menu item in the list before another menu item in the list.
  47. /// </summary>
  48. /// <param name="menuItems">List of menu items</param>
  49. /// <param name="menuItemName">Name of the menu item to move</param>
  50. /// <param name="targetMenuItemName">Target menu item (to move after it)</param>
  51. public static void MoveMenuItemAfter(this IList<MenuItemDefinition> menuItems, string menuItemName, string targetMenuItemName)
  52. {
  53. var menuItem = GetMenuItem(menuItems, menuItemName);
  54. var targetMenuItem = GetMenuItem(menuItems, targetMenuItemName);
  55. menuItems.Remove(menuItem);
  56. menuItems.Insert(menuItems.IndexOf(targetMenuItem) + 1, menuItem);
  57. }
  58. private static MenuItemDefinition GetMenuItem(IEnumerable<MenuItemDefinition> menuItems, string menuItemName)
  59. {
  60. var menuItem = menuItems.FirstOrDefault(i => i.Name == menuItemName);
  61. if (menuItem == null)
  62. {
  63. throw new AbpException("Can not find menu item: " + menuItemName);
  64. }
  65. return menuItem;
  66. }
  67. }
  68. }