void IOptionsPanel.ApplyChanges()
        {
            var chars = new CompletionCharacters[store.RowCount];

            for (int i = 0; i < chars.Length; i++)
            {
                chars [i] = new CompletionCharacters(
                    store.GetValue(i, language),
                    store.GetValue(i, completeOnSpace),
                    store.GetValue(i, completeOnChars)
                    );
            }
            CompletionCharacters.SetCompletionCharacters(chars);
        }
        void IOptionsPanel.Initialize(OptionsDialog dialog, object dataObject)
        {
            this.ExpandHorizontal = true;
            this.ExpandVertical   = true;
            this.HeightRequest    = 400;
            list  = new ListView();
            store = new ListStore(language, completeOnSpace, completeOnChars);

            var languageColumn = list.Columns.Add(GettextCatalog.GetString("Language"), language);

            languageColumn.CanResize = true;

            var checkBoxCellView = new CheckBoxCellView(completeOnSpace);

            checkBoxCellView.Editable = true;
            var completeOnSpaceColumn = list.Columns.Add(GettextCatalog.GetString("Complete on space"), checkBoxCellView);

            completeOnSpaceColumn.CanResize = true;

            var textCellView = new TextCellView(completeOnChars);

            textCellView.Editable = true;
            var doNotCompleteOnColumn = list.Columns.Add(GettextCatalog.GetString("Do complete on"), textCellView);

            doNotCompleteOnColumn.CanResize = true;
            list.DataSource = store;
            PackStart(list, true, true);

            var hbox   = new HBox();
            var button = new Button("Reset to default");

            button.Clicked += delegate {
                FillStore(CompletionCharacters.GetDefaultCompletionCharacters());
            };
            hbox.PackEnd(button, false, false);
            PackEnd(hbox, false, true);
            FillStore(CompletionCharacters.GetCompletionCharacters());
        }