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"); }