/// <summary> /// Initializes a new instance of the <see cref="TargetSelectorMode" /> class. /// </summary> /// <param name="menu"> /// The menu. /// </param> public TargetSelectorMode(Menu menu) { this.menu = menu; var modes = Assembly.GetAssembly(typeof(ITargetSelectorMode)) .GetTypes() .Where(t => t.IsClass && !t.IsAbstract && typeof(ITargetSelectorMode).IsAssignableFrom(t)) .ToList(); foreach (var instance in modes.Select(DynamicInitializer.NewInstance).OfType<ITargetSelectorMode>()) { this.pEntries.Add(instance); instance.AddToMenu(this.menu); } this.pEntries = this.pEntries.OrderBy(p => p.DisplayName).ToList(); this.menu.Add(new MenuList<string>("mode", "Mode", this.pEntries.Select(e => e.DisplayName)) { SelectedValue = "Weight" }); this.menu.MenuValueChanged += (sender, args) => { var stringList = sender as MenuList<string>; if (stringList != null) { if (stringList.Name.Equals("mode")) { this.current = this.GeModeBySelectedIndex(stringList.Index); } } }; this.current = this.GeModeBySelectedIndex(this.menu["mode"].GetValue<MenuList<string>>().Index); }
/// <summary> /// Registers the specified Mode. /// </summary> /// <param name="mode"> /// The Mode. /// </param> public void Register(ITargetSelectorMode mode) { if (!this.pEntries.Any(m => m.Name.Equals(mode.Name)) && !string.IsNullOrEmpty(mode.DisplayName)) { this.pEntries.Add(mode); this.UpdateMenu(); } }
/// <summary> /// Overwrites the specified old Mode. /// </summary> /// <param name="oldMode"> /// The old Mode. /// </param> /// <param name="newMode"> /// The new Mode. /// </param> public void Overwrite(ITargetSelectorMode oldMode, ITargetSelectorMode newMode) { var index = this.pEntries.IndexOf(oldMode); if (index >= 0) { this.pEntries[index] = newMode; this.UpdateMenu(); } }
/// <summary> /// Deregisters the specified Mode. /// </summary> /// <param name="mode">The Mode.</param> public void Deregister(ITargetSelectorMode mode) { if (this.pEntries.Contains(mode)) { this.pEntries.Remove(mode); if (!this.pEntries.Contains(this.Current)) { this.Current = this.pEntries.FirstOrDefault(); } this.UpdateMenu(); } }
/// <summary> /// Initializes a new instance of the <see cref="TargetSelectorMode" /> class. /// </summary> /// <param name="menu"> /// The menu. /// </param> public TargetSelectorMode(Menu menu) { this.menu = menu; var modes = Assembly.GetAssembly(typeof(ITargetSelectorMode)) .GetTypes() .Where(t => t.IsClass && !t.IsAbstract && typeof(ITargetSelectorMode).IsAssignableFrom(t)) .ToList(); foreach (var instance in modes.Select(DynamicInitializer.NewInstance).OfType <ITargetSelectorMode>()) { this.pEntries.Add(instance); instance.AddToMenu(this.menu); } this.pEntries = this.pEntries.OrderBy(p => p.DisplayName).ToList(); this.menu.Add( new MenuList <string>("mode", "Mode", this.pEntries.Select(e => e.DisplayName)) { SelectedValue = "Weight" }); this.menu.MenuValueChanged += (sender, args) => { var stringList = sender as MenuList <string>; if (stringList != null) { if (stringList.Name.Equals("mode")) { this.current = this.GeModeBySelectedIndex(stringList.Index); } } }; this.current = this.GeModeBySelectedIndex(this.menu["mode"].GetValue <MenuList <string> >().Index); }
/// <summary> /// Registers the specified Mode. /// </summary> /// <param name="mode"> /// The Mode. /// </param> public void Register(ITargetSelectorMode mode) { if (!this.pEntries.Any(m => m.Name.Equals(mode.Name)) && !string.IsNullOrEmpty(mode.DisplayName)) { this.pEntries.Add(mode); this.UpdateMenu(); } }
/// <summary> /// Overwrites the specified old Mode. /// </summary> /// <param name="oldMode"> /// The old Mode. /// </param> /// <param name="newMode"> /// The new Mode. /// </param> public void Overwrite(ITargetSelectorMode oldMode, ITargetSelectorMode newMode) { var index = this.pEntries.IndexOf(oldMode); if (index >= 0) { this.pEntries[index] = newMode; this.UpdateMenu(); } }
/// <summary> /// Deregisters the specified Mode. /// </summary> /// <param name="mode"> /// The Mode. /// </param> public void Deregister(ITargetSelectorMode mode) { if (this.pEntries.Contains(mode)) { this.pEntries.Remove(mode); if (!this.pEntries.Contains(this.Current)) { this.Current = this.pEntries.FirstOrDefault(); } this.UpdateMenu(); } }