Ejemplo n.º 1
0
        public void ResolveWithDefaults()
        {
            // TODO - this method is potentially disastrously O(N^2) slow due to linear search nested in loop

            // Add missing entries
            foreach (Binding defaultBinding in DefaultValues)
            {
                var binding = Bindings.FirstOrDefault(b => b.DisplayName == defaultBinding.DisplayName);
                if (binding == null)
                {
                    Bindings.Add(defaultBinding);
                }
                else
                {
                    // patch entries with updated settings (necessary because of TODO LARP
                    binding.Ordinal        = defaultBinding.Ordinal;
                    binding.DefaultBinding = defaultBinding.DefaultBinding;
                    binding.TabGroup       = defaultBinding.TabGroup;
                    binding.ToolTip        = defaultBinding.ToolTip;
                    binding.Ordinal        = defaultBinding.Ordinal;
                }
            }

            // Remove entries that no longer exist in defaults
            Bindings.RemoveAll(entry => DefaultValues.All(b => b.DisplayName != entry.DisplayName));
        }