/// <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();
            }
        }
Beispiel #4
0
 /// <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();
            }
        }