MainForm.cs
上传用户:szlfmled
上传日期:2020-11-22
资源大小:978k
文件大小:15k
- using System;
- using System.Drawing;
- using System.Collections;
- using System.ComponentModel;
- using System.Reflection;
- using System.Windows.Forms;
- using System.IO;
- using WeifenLuo.WinFormsUI.Docking;
- using DockSample.Customization;
- namespace DockSample
- {
- public partial class MainForm : Form
- {
- private bool m_bSaveLayout = true;
- private DeserializeDockContent m_deserializeDockContent;
- private DummySolutionExplorer m_solutionExplorer = new DummySolutionExplorer();
- private DummyPropertyWindow m_propertyWindow = new DummyPropertyWindow();
- private DummyToolbox m_toolbox = new DummyToolbox();
- private DummyOutputWindow m_outputWindow = new DummyOutputWindow();
- private DummyTaskList m_taskList = new DummyTaskList();
- public MainForm()
- {
- InitializeComponent();
- showRightToLeft.Checked = (RightToLeft == RightToLeft.Yes);
- RightToLeftLayout = showRightToLeft.Checked;
- m_solutionExplorer = new DummySolutionExplorer();
- m_solutionExplorer.RightToLeftLayout = RightToLeftLayout;
- m_deserializeDockContent = new DeserializeDockContent(GetContentFromPersistString);
- }
- private void menuItemExit_Click(object sender, System.EventArgs e)
- {
- Close();
- }
- private void menuItemSolutionExplorer_Click(object sender, System.EventArgs e)
- {
- m_solutionExplorer.Show(dockPanel);
- }
- private void menuItemPropertyWindow_Click(object sender, System.EventArgs e)
- {
- m_propertyWindow.Show(dockPanel);
- }
- private void menuItemToolbox_Click(object sender, System.EventArgs e)
- {
- m_toolbox.Show(dockPanel);
- }
- private void menuItemOutputWindow_Click(object sender, System.EventArgs e)
- {
- m_outputWindow.Show(dockPanel);
- }
- private void menuItemTaskList_Click(object sender, System.EventArgs e)
- {
- m_taskList.Show(dockPanel);
- }
- private void menuItemAbout_Click(object sender, System.EventArgs e)
- {
- AboutDialog aboutDialog = new AboutDialog();
- aboutDialog.ShowDialog(this);
- }
- private IDockContent FindDocument(string text)
- {
- if (dockPanel.DocumentStyle == DocumentStyle.SystemMdi)
- {
- foreach (Form form in MdiChildren)
- if (form.Text == text)
- return form as IDockContent;
-
- return null;
- }
- else
- {
- foreach (IDockContent content in dockPanel.Documents)
- if (content.DockHandler.TabText == text)
- return content;
- return null;
- }
- }
- private void menuItemNew_Click(object sender, System.EventArgs e)
- {
- DummyDoc dummyDoc = CreateNewDocument();
- if (dockPanel.DocumentStyle == DocumentStyle.SystemMdi)
- {
- dummyDoc.MdiParent = this;
- dummyDoc.Show();
- }
- else
- dummyDoc.Show(dockPanel);
- }
- private DummyDoc CreateNewDocument()
- {
- DummyDoc dummyDoc = new DummyDoc();
- int count = 1;
- //string text = "C:\MADFDKAJ\ADAKFJASD\ADFKDSAKFJASD\ASDFKASDFJASDF\ASDFIJADSFJ\ASDFKDFDA" + count.ToString();
- string text = "Document" + count.ToString();
- while (FindDocument(text) != null)
- {
- count ++;
- //text = "C:\MADFDKAJ\ADAKFJASD\ADFKDSAKFJASD\ASDFKASDFJASDF\ASDFIJADSFJ\ASDFKDFDA" + count.ToString();
- text = "Document" + count.ToString();
- }
- dummyDoc.Text = text;
- return dummyDoc;
- }
- private DummyDoc CreateNewDocument(string text)
- {
- DummyDoc dummyDoc = new DummyDoc();
- dummyDoc.Text = text;
- return dummyDoc;
- }
- private void menuItemOpen_Click(object sender, System.EventArgs e)
- {
- OpenFileDialog openFile = new OpenFileDialog();
- openFile.InitialDirectory = Application.ExecutablePath;
- openFile.Filter = "rtf files (*.rtf)|*.rtf|txt files (*.txt)|*.txt|All files (*.*)|*.*" ;
- openFile.FilterIndex = 1;
- openFile.RestoreDirectory = true ;
- if(openFile.ShowDialog() == DialogResult.OK)
- {
- string fullName = openFile.FileName;
- string fileName = Path.GetFileName(fullName);
- if (FindDocument(fileName) != null)
- {
- MessageBox.Show("The document: " + fileName + " has already opened!");
- return;
- }
- DummyDoc dummyDoc = new DummyDoc();
- dummyDoc.Text = fileName;
- if (dockPanel.DocumentStyle == DocumentStyle.SystemMdi)
- {
- dummyDoc.MdiParent = this;
- dummyDoc.Show();
- }
- else
- dummyDoc.Show(dockPanel);
- try
- {
- dummyDoc.FileName = fullName;
- }
- catch (Exception exception)
- {
- dummyDoc.Close();
- MessageBox.Show(exception.Message);
- }
- }
- }
- private void menuItemFile_Popup(object sender, System.EventArgs e)
- {
- if (dockPanel.DocumentStyle == DocumentStyle.SystemMdi)
- {
- menuItemClose.Enabled = menuItemCloseAll.Enabled = (ActiveMdiChild != null);
- }
- else
- {
- menuItemClose.Enabled = (dockPanel.ActiveDocument != null);
- menuItemCloseAll.Enabled = (dockPanel.DocumentsCount > 0);
- }
- }
- private void menuItemClose_Click(object sender, System.EventArgs e)
- {
- if (dockPanel.DocumentStyle == DocumentStyle.SystemMdi)
- ActiveMdiChild.Close();
- else if (dockPanel.ActiveDocument != null)
- dockPanel.ActiveDocument.DockHandler.Close();
- }
- private void menuItemCloseAll_Click(object sender, System.EventArgs e)
- {
- CloseAllDocuments();
- }
- private void CloseAllDocuments()
- {
- if (dockPanel.DocumentStyle == DocumentStyle.SystemMdi)
- {
- foreach (Form form in MdiChildren)
- form.Close();
- }
- else
- {
- for (int index = dockPanel.Contents.Count - 1; index >= 0; index--)
- {
- if (dockPanel.Contents[index] is IDockContent)
- {
- IDockContent content = (IDockContent)dockPanel.Contents[index];
- content.DockHandler.Close();
- }
- }
- }
- }
- private IDockContent GetContentFromPersistString(string persistString)
- {
- if (persistString == typeof(DummySolutionExplorer).ToString())
- return m_solutionExplorer;
- else if (persistString == typeof(DummyPropertyWindow).ToString())
- return m_propertyWindow;
- else if (persistString == typeof(DummyToolbox).ToString())
- return m_toolbox;
- else if (persistString == typeof(DummyOutputWindow).ToString())
- return m_outputWindow;
- else if (persistString == typeof(DummyTaskList).ToString())
- return m_taskList;
- else
- {
- // DummyDoc overrides GetPersistString to add extra information into persistString.
- // Any DockContent may override this value to add any needed information for deserialization.
- string[] parsedStrings = persistString.Split(new char[] { ',' });
- if (parsedStrings.Length != 3)
- return null;
- if (parsedStrings[0] != typeof(DummyDoc).ToString())
- return null;
- DummyDoc dummyDoc = new DummyDoc();
- if (parsedStrings[1] != string.Empty)
- dummyDoc.FileName = parsedStrings[1];
- if (parsedStrings[2] != string.Empty)
- dummyDoc.Text = parsedStrings[2];
- return dummyDoc;
- }
- }
- private void MainForm_Load(object sender, System.EventArgs e)
- {
- string configFile = Path.Combine(Path.GetDirectoryName(Application.ExecutablePath), "DockPanel.config");
- if (File.Exists(configFile))
- dockPanel.LoadFromXml(configFile, m_deserializeDockContent);
- }
- private void MainForm_Closing(object sender, System.ComponentModel.CancelEventArgs e)
- {
- string configFile = Path.Combine(Path.GetDirectoryName(Application.ExecutablePath), "DockPanel.config");
- if (m_bSaveLayout)
- dockPanel.SaveAsXml(configFile);
- else if (File.Exists(configFile))
- File.Delete(configFile);
- }
- private void menuItemToolBar_Click(object sender, System.EventArgs e)
- {
- toolBar.Visible = menuItemToolBar.Checked = !menuItemToolBar.Checked;
- }
- private void menuItemStatusBar_Click(object sender, System.EventArgs e)
- {
- statusBar.Visible = menuItemStatusBar.Checked = !menuItemStatusBar.Checked;
- }
- private void toolBar_ButtonClick(object sender, System.Windows.Forms.ToolStripItemClickedEventArgs e)
- {
- if (e.ClickedItem == toolBarButtonNew)
- menuItemNew_Click(null, null);
- else if (e.ClickedItem == toolBarButtonOpen)
- menuItemOpen_Click(null, null);
- else if (e.ClickedItem == toolBarButtonSolutionExplorer)
- menuItemSolutionExplorer_Click(null, null);
- else if (e.ClickedItem == toolBarButtonPropertyWindow)
- menuItemPropertyWindow_Click(null, null);
- else if (e.ClickedItem == toolBarButtonToolbox)
- menuItemToolbox_Click(null, null);
- else if (e.ClickedItem == toolBarButtonOutputWindow)
- menuItemOutputWindow_Click(null, null);
- else if (e.ClickedItem == toolBarButtonTaskList)
- menuItemTaskList_Click(null, null);
- else if (e.ClickedItem == toolBarButtonLayoutByCode)
- menuItemLayoutByCode_Click(null, null);
- else if (e.ClickedItem == toolBarButtonLayoutByXml)
- menuItemLayoutByXml_Click(null, null);
- }
- private void menuItemNewWindow_Click(object sender, System.EventArgs e)
- {
- MainForm newWindow = new MainForm();
- newWindow.Text = newWindow.Text + " - New";
- newWindow.Show();
- }
- private void menuItemTools_Popup(object sender, System.EventArgs e)
- {
- menuItemLockLayout.Checked = !this.dockPanel.AllowEndUserDocking;
- }
- private void menuItemLockLayout_Click(object sender, System.EventArgs e)
- {
- dockPanel.AllowEndUserDocking = !dockPanel.AllowEndUserDocking;
- }
- private void menuItemLayoutByCode_Click(object sender, System.EventArgs e)
- {
- dockPanel.SuspendLayout(true);
- m_solutionExplorer.Show(dockPanel, DockState.DockRight);
- m_propertyWindow.Show(m_solutionExplorer.Pane, m_solutionExplorer);
- m_toolbox.Show(dockPanel, new Rectangle(98, 133, 200, 383));
- m_outputWindow.Show(m_solutionExplorer.Pane, DockAlignment.Bottom, 0.35);
- m_taskList.Show(m_toolbox.Pane, DockAlignment.Left, 0.4);
- CloseAllDocuments();
- DummyDoc doc1 = CreateNewDocument("Document1");
- DummyDoc doc2 = CreateNewDocument("Document2");
- DummyDoc doc3 = CreateNewDocument("Document3");
- DummyDoc doc4 = CreateNewDocument("Document4");
- doc1.Show(dockPanel, DockState.Document);
- doc2.Show(doc1.Pane, null);
- doc3.Show(doc1.Pane, DockAlignment.Bottom, 0.5);
- doc4.Show(doc3.Pane, DockAlignment.Right, 0.5);
- dockPanel.ResumeLayout(true, true);
- }
- private void menuItemLayoutByXml_Click(object sender, System.EventArgs e)
- {
- dockPanel.SuspendLayout(true);
- // In order to load layout from XML, we need to close all the DockContents
- CloseAllContents();
- Assembly assembly = Assembly.GetAssembly(typeof(MainForm));
- Stream xmlStream = assembly.GetManifestResourceStream("DockSample.Resources.DockPanel.xml");
- dockPanel.LoadFromXml(xmlStream, m_deserializeDockContent);
- xmlStream.Close();
- dockPanel.ResumeLayout(true, true);
- }
- private void CloseAllContents()
- {
- // we don't want to create another instance of tool window, set DockPanel to null
- m_solutionExplorer.DockPanel = null;
- m_propertyWindow.DockPanel = null;
- m_toolbox.DockPanel = null;
- m_outputWindow.DockPanel = null;
- m_taskList.DockPanel = null;
- // Close all other document windows
- CloseAllDocuments();
- }
- private void SetSchema(object sender, System.EventArgs e)
- {
- CloseAllContents();
- if (sender == menuItemSchemaVS2005)
- Extender.SetSchema(dockPanel, Extender.Schema.VS2005);
- else if (sender == menuItemSchemaVS2003)
- Extender.SetSchema(dockPanel, Extender.Schema.VS2003);
- menuItemSchemaVS2005.Checked = (sender == menuItemSchemaVS2005);
- menuItemSchemaVS2003.Checked = (sender == menuItemSchemaVS2003);
- }
- private void SetDocumentStyle(object sender, System.EventArgs e)
- {
- DocumentStyle oldStyle = dockPanel.DocumentStyle;
- DocumentStyle newStyle;
- if (sender == menuItemDockingMdi)
- newStyle = DocumentStyle.DockingMdi;
- else if (sender == menuItemDockingWindow)
- newStyle = DocumentStyle.DockingWindow;
- else if (sender == menuItemDockingSdi)
- newStyle = DocumentStyle.DockingSdi;
- else
- newStyle = DocumentStyle.SystemMdi;
-
- if (oldStyle == newStyle)
- return;
- if (oldStyle == DocumentStyle.SystemMdi || newStyle == DocumentStyle.SystemMdi)
- CloseAllDocuments();
- dockPanel.DocumentStyle = newStyle;
- menuItemDockingMdi.Checked = (newStyle == DocumentStyle.DockingMdi);
- menuItemDockingWindow.Checked = (newStyle == DocumentStyle.DockingWindow);
- menuItemDockingSdi.Checked = (newStyle == DocumentStyle.DockingSdi);
- menuItemSystemMdi.Checked = (newStyle == DocumentStyle.SystemMdi);
- menuItemLayoutByCode.Enabled = (newStyle != DocumentStyle.SystemMdi);
- menuItemLayoutByXml.Enabled = (newStyle != DocumentStyle.SystemMdi);
- toolBarButtonLayoutByCode.Enabled = (newStyle != DocumentStyle.SystemMdi);
- toolBarButtonLayoutByXml.Enabled = (newStyle != DocumentStyle.SystemMdi);
- }
- private void menuItemCloseAllButThisOne_Click(object sender, System.EventArgs e)
- {
- if (dockPanel.DocumentStyle == DocumentStyle.SystemMdi)
- {
- Form activeMdi = ActiveMdiChild;
- foreach (Form form in MdiChildren)
- {
- if (form != activeMdi)
- form.Close();
- }
- }
- else
- {
- foreach (IDockContent document in dockPanel.DocumentsToArray())
- {
- if (!document.DockHandler.IsActivated)
- document.DockHandler.Close();
- }
- }
- }
- private void menuItemShowDocumentIcon_Click(object sender, System.EventArgs e)
- {
- dockPanel.ShowDocumentIcon = menuItemShowDocumentIcon.Checked= !menuItemShowDocumentIcon.Checked;
- }
- private void showRightToLeft_Click(object sender, EventArgs e)
- {
- CloseAllContents();
- if (showRightToLeft.Checked)
- {
- this.RightToLeft = RightToLeft.No;
- this.RightToLeftLayout = false;
- }
- else
- {
- this.RightToLeft = RightToLeft.Yes;
- this.RightToLeftLayout = true;
- }
- m_solutionExplorer.RightToLeftLayout = this.RightToLeftLayout;
- showRightToLeft.Checked = !showRightToLeft.Checked;
- }
- private void exitWithoutSavingLayout_Click(object sender, EventArgs e)
- {
- m_bSaveLayout = false;
- Close();
- m_bSaveLayout = true;
- }
- }
- }