using System.Collections.Generic; using System.Linq; namespace Abp.Application.Navigation { /// /// Extension methods for . /// public static class MenuItemDefinitionExtensions { /// /// Moves a menu item to top in the list. /// /// List of menu items /// Name of the menu item to move public static void MoveMenuItemToTop(this IList menuItems, string menuItemName) { var menuItem = GetMenuItem(menuItems, menuItemName); menuItems.Remove(menuItem); menuItems.Insert(0, menuItem); } /// /// Moves a menu item to bottom in the list. /// /// List of menu items /// Name of the menu item to move public static void MoveMenuItemToBottom(this IList menuItems, string menuItemName) { var menuItem = GetMenuItem(menuItems, menuItemName); menuItems.Remove(menuItem); menuItems.Insert(menuItems.Count, menuItem); } /// /// Moves a menu item in the list after another menu item in the list. /// /// List of menu items /// Name of the menu item to move /// Target menu item (to move before it) public static void MoveMenuItemBefore(this IList menuItems, string menuItemName, string targetMenuItemName) { var menuItem = GetMenuItem(menuItems, menuItemName); var targetMenuItem = GetMenuItem(menuItems, targetMenuItemName); menuItems.Remove(menuItem); menuItems.Insert(menuItems.IndexOf(targetMenuItem), menuItem); } /// /// Moves a menu item in the list before another menu item in the list. /// /// List of menu items /// Name of the menu item to move /// Target menu item (to move after it) public static void MoveMenuItemAfter(this IList menuItems, string menuItemName, string targetMenuItemName) { var menuItem = GetMenuItem(menuItems, menuItemName); var targetMenuItem = GetMenuItem(menuItems, targetMenuItemName); menuItems.Remove(menuItem); menuItems.Insert(menuItems.IndexOf(targetMenuItem) + 1, menuItem); } private static MenuItemDefinition GetMenuItem(IEnumerable menuItems, string menuItemName) { var menuItem = menuItems.FirstOrDefault(i => i.Name == menuItemName); if (menuItem == null) { throw new AbpException("Can not find menu item: " + menuItemName); } return menuItem; } } }