Exemplo n.º 1
0
        void ComboBox_Changed(DropDownList.ChangedEventArgs args)
        {
            if (!args.ChangedByUser)
            {
                return;
            }
            var newTrigger      = (string)args.Value;
            var currentTriggers = CoalescedPropertyValue().GetValue();

            if (string.IsNullOrWhiteSpace(currentTriggers) || args.Index < 0)
            {
                // Keep existing and remove absent triggers after hand input.
                var availableTriggers = new HashSet <string>(comboBox.Items.Select(item => item.Text));
                var setTrigger        = string.Join(
                    ",",
                    newTrigger.
                    Split(',').
                    Select(el => el.Trim()).
                    Where(el => availableTriggers.Contains(el)).
                    Distinct(new TriggerStringComparer())
                    );

                SetProperty(setTrigger.Length == 0 ? null : setTrigger);
                if (setTrigger != newTrigger)
                {
                    comboBox.Text = setTrigger;
                }
                return;
            }
            var    triggers = new List <string>();
            var    added = false;
            string newMarker, newAnimation;

            SplitTrigger(newTrigger, out newMarker, out newAnimation);
            foreach (var trigger in currentTriggers.Split(',').Select(i => i.Trim()))
            {
                string marker, animation;
                SplitTrigger(trigger, out marker, out animation);
                if (animation == newAnimation)
                {
                    if (!added)
                    {
                        added = true;
                        triggers.Add(newTrigger);
                    }
                }
                else
                {
                    triggers.Add(trigger);
                }
            }
            if (!added)
            {
                triggers.Add(newTrigger);
            }
            var newValue = string.Join(",", triggers);

            SetProperty(newValue);
            comboBox.Text = newValue;
        }
Exemplo n.º 2
0
        void ComboBox_Changed(DropDownList.ChangedEventArgs args)
        {
            if (!args.ChangedByUser)
            {
                return;
            }
            var newTrigger      = (string)args.Value;
            var currentTriggers = CoalescedPropertyValue().GetValue();

            if (string.IsNullOrWhiteSpace(currentTriggers) || args.Index < 0)
            {
                SetProperty(newTrigger);
                return;
            }
            var    triggers = new List <string>();
            var    added = false;
            string newMarker, newAnimation;

            SplitTrigger(newTrigger, out newMarker, out newAnimation);
            foreach (var trigger in currentTriggers.Split(',').Select(i => i.Trim()))
            {
                string marker, animation;
                SplitTrigger(trigger, out marker, out animation);
                if (animation == newAnimation)
                {
                    if (!added)
                    {
                        added = true;
                        triggers.Add(newTrigger);
                    }
                }
                else
                {
                    triggers.Add(trigger);
                }
            }
            if (!added)
            {
                triggers.Add(newTrigger);
            }
            var newValue = string.Join(",", triggers);

            SetProperty(newValue);
            comboBox.Text = newValue;
        }