MenuDefinition.cs 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. using System;
  2. using System.Collections.Generic;
  3. using Abp.Localization;
  4. namespace Abp.Application.Navigation
  5. {
  6. /// <summary>
  7. /// Represents a navigation menu for an application.
  8. /// </summary>
  9. public class MenuDefinition : IHasMenuItemDefinitions
  10. {
  11. /// <summary>
  12. /// Unique name of the menu in the application. Required.
  13. /// </summary>
  14. public string Name { get; private set; }
  15. /// <summary>
  16. /// Display name of the menu. Required.
  17. /// </summary>
  18. public ILocalizableString DisplayName { get; set; }
  19. /// <summary>
  20. /// Can be used to store a custom object related to this menu. Optional.
  21. /// </summary>
  22. public object CustomData { get; set; }
  23. /// <summary>
  24. /// Menu items (first level).
  25. /// </summary>
  26. public List<MenuItemDefinition> Items { get; set; }
  27. /// <summary>
  28. /// Creates a new <see cref="MenuDefinition"/> object.
  29. /// </summary>
  30. /// <param name="name">Unique name of the menu</param>
  31. /// <param name="displayName">Display name of the menu</param>
  32. /// <param name="customData">Can be used to store a custom object related to this menu.</param>
  33. public MenuDefinition(string name, ILocalizableString displayName, object customData = null)
  34. {
  35. if (string.IsNullOrEmpty(name))
  36. {
  37. throw new ArgumentNullException("name", "Menu name can not be empty or null.");
  38. }
  39. if (displayName == null)
  40. {
  41. throw new ArgumentNullException("displayName", "Display name of the menu can not be null.");
  42. }
  43. Name = name;
  44. DisplayName = displayName;
  45. CustomData = customData;
  46. Items = new List<MenuItemDefinition>();
  47. }
  48. /// <summary>
  49. /// Adds a <see cref="MenuItemDefinition"/> to <see cref="Items"/>.
  50. /// </summary>
  51. /// <param name="menuItem"><see cref="MenuItemDefinition"/> to be added</param>
  52. /// <returns>This <see cref="MenuDefinition"/> object</returns>
  53. public MenuDefinition AddItem(MenuItemDefinition menuItem)
  54. {
  55. Items.Add(menuItem);
  56. return this;
  57. }
  58. /// <summary>
  59. /// Remove menu item with given name
  60. /// </summary>
  61. /// <param name="name"></param>
  62. public void RemoveItem(string name)
  63. {
  64. Items.RemoveAll(m => m.Name == name);
  65. }
  66. }
  67. }