public CodeEditorFormattingOptionsAdapter(TextEditorOptions originalAvalonEditOptions, ITextEditorOptions originalSDOptions, AlFormattingOptionsContainer container)
        {
            if (originalAvalonEditOptions == null)
            {
                throw new ArgumentNullException("originalAvalonEditOptions");
            }
            if (originalSDOptions == null)
            {
                throw new ArgumentNullException("originalSDOptions");
            }
            if (container == null)
            {
                throw new ArgumentNullException("container");
            }

            this.originalAvalonEditOptions = originalAvalonEditOptions;
            this.avalonEditOptions         = new TextEditorOptions(originalAvalonEditOptions);
            this.originalSDOptions         = originalSDOptions;
            this.container = container;

            // Update overridden options once
            UpdateOverriddenProperties();

            AlFormattingPolicies.Instance.FormattingPolicyUpdated += OnFormattingPolicyUpdated;
            this.originalAvalonEditOptions.PropertyChanged        += OnOrigAvalonOptionsPropertyChanged;
            this.originalSDOptions.PropertyChanged += OnSDOptionsPropertyChanged;
        }
        private void FillPresetList(AlFormattingOptionsContainer container)
        {
            presets["(default)"]    = () => null;
            presets["Empty"]        = FormattingOptionsFactory.CreateEmpty;
            presets["SharpDevelop"] = FormattingOptionsFactory.CreateSharpDevelop;
            presets["Mono"]         = FormattingOptionsFactory.CreateMono;
            presets["K&R"]          = FormattingOptionsFactory.CreateKRStyle;
            presets["VisualStudio"] = FormattingOptionsFactory.CreateAllman;
            presets["Whitesmiths"]  = FormattingOptionsFactory.CreateWhitesmiths;
            presets["GNU"]          = FormattingOptionsFactory.CreateGNU;

            // TODO Localize!
            if (container.Parent != null)
            {
                // Add a "default" preset
                presetItems.Add(new ComboBoxItem {
                    Content = (container.Parent ?? container).DefaultText, Tag = "(default)"
                });
            }
            presetItems.Add(new ComboBoxItem {
                Content = "SharpDevelop", Tag = "SharpDevelop"
            });
            presetItems.Add(new ComboBoxItem {
                Content = "Mono", Tag = "Mono"
            });
            presetItems.Add(new ComboBoxItem {
                Content = "K&R", Tag = "K&R"
            });
            presetItems.Add(new ComboBoxItem {
                Content = "Visual Studio", Tag = "VisualStudio"
            });
            presetItems.Add(new ComboBoxItem {
                Content = "Whitesmiths", Tag = "Whitesmiths"
            });
            presetItems.Add(new ComboBoxItem {
                Content = "GNU", Tag = "GNU"
            });
            presetItems.Add(new ComboBoxItem {
                Content = "Empty", Tag = "Empty"
            });

            presetComboBox.SelectedIndex = 0;
        }