NavigationManager.cs 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. using System.Collections.Generic;
  2. using Abp.Configuration.Startup;
  3. using Abp.Dependency;
  4. using Abp.Localization;
  5. namespace Abp.Application.Navigation
  6. {
  7. internal class NavigationManager : INavigationManager, ISingletonDependency
  8. {
  9. public IDictionary<string, MenuDefinition> Menus { get; private set; }
  10. public MenuDefinition MainMenu
  11. {
  12. get { return Menus["MainMenu"]; }
  13. }
  14. private readonly IIocResolver _iocResolver;
  15. private readonly INavigationConfiguration _configuration;
  16. public NavigationManager(IIocResolver iocResolver, INavigationConfiguration configuration)
  17. {
  18. _iocResolver = iocResolver;
  19. _configuration = configuration;
  20. Menus = new Dictionary<string, MenuDefinition>
  21. {
  22. {"MainMenu", new MenuDefinition("MainMenu", new LocalizableString("MainMenu", AbpConsts.LocalizationSourceName))}
  23. };
  24. }
  25. public void Initialize()
  26. {
  27. var context = new NavigationProviderContext(this);
  28. foreach (var providerType in _configuration.Providers)
  29. {
  30. using (var provider = _iocResolver.ResolveAsDisposable<NavigationProvider>(providerType))
  31. {
  32. provider.Object.SetNavigation(context);
  33. }
  34. }
  35. }
  36. }
  37. }