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;
        }
Пример #2
0
        /// <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);
        }