private void newToolStripMenuItem_Click(object sender, EventArgs e) { EditorTabPage currentActiveTab = tabControl1.SelectedTab as EditorTabPage; bool bSavingNecessary = true; EditorTabPage etb = new EditorTabPage(); string newTabName = null; string nearestInternalLink = GetNearestInternalLink(etb.Editor); if (string.IsNullOrWhiteSpace(nearestInternalLink)) { newTabName = string.Format("Untitled{0}", tabControl1.GetUntitledTabCount()); bSavingNecessary = false; // это совершенно новый файл и его можно не сохранять } else { string name = newTabName = string.Format("Untitled{0}", tabControl1.GetUntitledTabCount()); // name = nearestInternalLink; string fullPath = Path.Combine(etb.GetFileFullPathAndName(), name); if (File.Exists(fullPath)) { InternalOpenFile(fullPath); return; } newTabName = fullPath; // А здесь уже есть полезная информация от пользователя - имя файла, // поэтому не сохранять молча уже нельзя } var oldName = currentActiveTab == null ? String.Empty : currentActiveTab.GetFileFullPathAndName(); etb.Editor.Text = Globals.GetDefaultTemplateText(newTabName, oldName, newTabName); etb.IsSavingNecessary = bSavingNecessary; etb.SetFileName(newTabName); etb.Editor.DragEnter += new DragEventHandler(tabControl1_DragEnter); etb.Editor.DragDrop += new DragEventHandler(tabControl1_DragDrop); etb.OnEditorTextChanged += new EventHandler(etb_TextChanged); etb.OnEditorTabFilenameChanged += new EventHandler(TabControl_TabCaptionUpdate); etb.OnEditorTabStateChanged += new EventHandler(TabControl_TabCaptionUpdate); etb.Show(); tabControl1.TabPages.Add(etb); tabControl1.SelectedTab = etb; }
/// <summary> /// Создаёт новую вкладку, размещает в ней текст /// </summary> /// <param name="targetFilename">File name.</param> private EditorTabPage CreateNewTabWithProposedFileName(string targetFilename, string title) { TabPage tbA = tabControl1.SelectedTab; if (tbA as EditorTabPage == null) { throw new ApplicationException("Shouldn't get here"); } EditorTabPage currentActiveTab = tbA as EditorTabPage; if (AlreadyOpen(targetFilename)) { return(this.FindTabByPath(targetFilename)); } if (Exists(targetFilename)) { InternalOpenFile(targetFilename); return(this.FindTabByPath(targetFilename)); } EditorTabPage etb = new EditorTabPage(); etb.SetFileName(targetFilename); // Create content string sourceFilename = currentActiveTab.GetFileFullPathAndName(); etb.Editor.Text = Globals.GetDefaultTemplateText(targetFilename, title, sourceFilename); // setup event handlers etb.Editor.DragEnter += new DragEventHandler(tabControl1_DragEnter); etb.Editor.DragDrop += new DragEventHandler(tabControl1_DragDrop); etb.OnEditorTextChanged += new EventHandler(etb_TextChanged); etb.OnEditorTabFilenameChanged += new EventHandler(TabControl_TabCaptionUpdate); etb.OnEditorTabStateChanged += new EventHandler(TabControl_TabCaptionUpdate); // Add into container tabControl1.TabPages.Add(etb); tabControl1.SelectedTab = etb; etb.Show(); return(etb); }