public MessageBoxResult CloseTab(object tab, bool openNewDocument = false)
        {
            MessageBoxResult messageBoxResult = MessageBoxResult.No;
            TabItem          tabItem          = tab as TabItem;

            if (tabItem != null)
            {
                tabItem.Focus();
                EditorRenderer currentEditorRenderer = this.CurrentEditorRenderer;
                if (currentEditorRenderer.Editor.HasChanges)
                {
                    messageBoxResult = CustomMessageBox.ShowYesNoCancel(LocalizationProvider.GetLocalizedString("SaveChangesMessage", false, "MarkdownPadStrings"), LocalizationProvider.GetLocalizedString("SaveChangesTitle", false, "MarkdownPadStrings") + " - " + currentEditorRenderer.Title, LocalizationProvider.GetLocalizedString("Save", false, "MarkdownPadStrings"), LocalizationProvider.GetLocalizedString("DoNotSave", false, "MarkdownPadStrings"), LocalizationProvider.GetLocalizedString("Cancel", false, "MarkdownPadStrings"), MessageBoxImage.Question);
                }
                MessageBoxResult messageBoxResult2 = messageBoxResult;
                if (messageBoxResult2 != MessageBoxResult.Cancel)
                {
                    if (messageBoxResult2 == MessageBoxResult.Yes)
                    {
                        bool flag = this.CurrentEditorRenderer.SaveDocument();
                        if (flag)
                        {
                            currentEditorRenderer.Dispose();
                            this.tabControl.Items.Remove(tab);
                        }
                    }
                    else
                    {
                        currentEditorRenderer.Dispose();
                        this.tabControl.Items.Remove(tab);
                    }
                }
                if (openNewDocument && this.tabControl.Items.Count == 0)
                {
                    this.AddNewTab("");
                }
            }
            this.OnPropertyChanged("NumberOfOpenDocuments");
            return(messageBoxResult);
        }
        public void AddNewTab(string fileToOpenOnLoad = "")
        {
            TabItem        tabItem = new TabItem();
            EditorRenderer editorRenderer;

            if (!System.IO.File.Exists(fileToOpenOnLoad))
            {
                editorRenderer = new EditorRenderer("");
            }
            else
            {
                foreach (TabItem tabItem2 in (System.Collections.IEnumerable) this.tabControl.Items)
                {
                    string text = tabItem2.Tag.ToString();
                    if (text.ToUpper(System.Globalization.CultureInfo.InvariantCulture) == fileToOpenOnLoad.ToUpper(System.Globalization.CultureInfo.InvariantCulture))
                    {
                        TabbedDocumentInterface._logger.Trace("File already open in editor, focusing: " + fileToOpenOnLoad);
                        int selectedIndex = this.tabControl.Items.IndexOf(tabItem2);
                        this.tabControl.SelectedIndex = selectedIndex;
                        return;
                    }
                }
                if (this.NumberOfOpenDocuments > 0 && !this.CurrentEditorRenderer.Editor.HasChanges && string.IsNullOrEmpty(this.CurrentEditorRenderer.Filename) && this.tabControl.SelectedIndex == 0)
                {
                    this.CloseTab(this.CurrentTab, false);
                }
                editorRenderer = new EditorRenderer(fileToOpenOnLoad);
            }
            tabItem.Header  = editorRenderer.Title;
            tabItem.Content = editorRenderer;
            tabItem.Tag     = editorRenderer.Filename;
            this.tabControl.Items.Add(tabItem);
            tabItem.ContextMenu = this.TabContextMenu;
            tabItem.Focus();
            tabItem.DataContext = editorRenderer.Editor;
            this.OnPropertyChanged("NumberOfOpenDocuments");
        }