MenuDefinition.cs 2.7 KB

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