2 using System.Collections.Generic;
3 using System.ComponentModel;
6 using Tizen.NUI.BaseComponents;
8 namespace Tizen.NUI.Binding
10 // Mark as internal until renderers are ready for release after 1.0
11 // [RenderWith(typeof(_NavigationMenuRenderer))]
12 [EditorBrowsable(EditorBrowsableState.Never)]
13 internal class NavigationMenu : View, /*INavigationMenuController,*/ IElementConfiguration<NavigationMenu>
15 readonly List<Page> _targets = new List<Page>();
17 readonly Lazy<PlatformConfigurationRegistry<NavigationMenu>> _platformConfigurationRegistry;
19 public NavigationMenu()
21 _platformConfigurationRegistry = new Lazy<PlatformConfigurationRegistry<NavigationMenu>>(() => new PlatformConfigurationRegistry<NavigationMenu>(this));
24 public IEnumerable<Page> Targets
26 get { return _targets; }
29 if (_targets.AsEnumerable().SequenceEqual(value))
32 foreach (Page page in value)
39 _targets.AddRange(value);
44 public void Add(Page target)
46 if (_targets.Contains(target))
50 OnPropertyChanging("Targets");
52 OnPropertyChanged("Targets");
55 public void Remove(Page target)
57 if (_targets.Contains(target))
59 OnPropertyChanging("Targets");
60 if (_targets.Remove(target))
61 OnPropertyChanged("Targets");
65 public IPlatformElementConfiguration<T, NavigationMenu> On<T>() where T : IConfigPlatform
67 return _platformConfigurationRegistry.Value.On<T>();
70 [EditorBrowsable(EditorBrowsableState.Never)]
71 public void SendTargetSelected(Page target)
73 Navigation.PushAsync(target);
76 void VerifyTarget(Page target)
78 if (target.Icon == null || string.IsNullOrWhiteSpace(target.Icon.File))
79 throw new Exception("Icon must be set for each page before adding them to a Navigation Menu");