private void projectTreeview_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e) { using (new Wait()) { if (e.Node is TemplateTreeNode) { TemplateTreeNode node = (TemplateTreeNode)e.Node; if (TemplateTabPages.ContainsKey(node.Template)) { documentsTabControl.SelectedTab = TemplateTabPages[node.Template]; } else { TabPage tabPage = new TabPage(Path.GetFileName(node.Template.XsltHintPath)); TemplateEditor editor = null; try { editor = new TemplateEditor(node.Template); } catch (Exception ex) { MessageBox.Show("An error occurred while loading the template: " + ex.Message, "Template Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } editor.Dock = DockStyle.Fill; editor.TextChanged += new EventHandler(Editor_TextChanged); tabPage.Controls.Add(editor); documentsTabControl.TabPages.Add(tabPage); documentsTabControl.SelectedTab = tabPage; documentsTabControl.Visible = true; TemplateTabPages.Add(node.Template, tabPage); } } } }
private bool CloseDocumentTab(TabPage tabPage) { TemplateEditor editor = (TemplateEditor)tabPage.Controls[0]; if (editor.UnsavedChanges) { DialogResult result = MessageBox.Show("The file \"{0}\" has unsaved changes. Would you like to save this file before closing it?".FormatString(editor.Template.XsltAbsolutePath), "Save Changes?", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question); if (result == DialogResult.Yes) { editor.Save(); } else if (result == DialogResult.Cancel) { return(false); } } TemplateTabPages.Remove(editor.Template); documentsTabControl.TabPages.Remove(tabPage); documentsTabControl.Visible = (documentsTabControl.TabPages.Count > 0); return(true); }