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;
}
}
}