//MainForm.cs |
using System; |
using System.Drawing; |
using System.Collections; |
using System.ComponentModel; |
using System.Reflection; |
using System.Windows.Forms; |
using System.IO; |
using DockSample.Customization; |
using Lextm.SharpSnmpLib; |
using WeifenLuo.WinFormsUI.Docking; |
namespace DockSample |
{ |
public partial class MainForm : Form |
{ |
private bool m_bSaveLayout = true ; |
private DeserializeDockContent m_deserializeDockContent; |
private DummySolutionExplorer m_solutionExplorer; |
private DummyPropertyWindow m_propertyWindow; |
private DummyToolbox m_toolbox; |
private DummyOutputWindow m_outputWindow; |
private DummyTaskList m_taskList; |
private bool _showSplash; |
private SplashScreen _splashScreen; |
public MainForm() |
{ |
InitializeComponent(); |
SetSplashScreen(); |
CreateStandardControls(); |
showRightToLeft.Checked = (RightToLeft == RightToLeft.Yes); |
RightToLeftLayout = showRightToLeft.Checked; |
m_solutionExplorer.RightToLeftLayout = RightToLeftLayout; |
m_deserializeDockContent = new DeserializeDockContent(GetContentFromPersistString); |
|
vS2012ToolStripExtender1.DefaultRenderer = _toolStripProfessionalRenderer; |
vS2012ToolStripExtender1.VS2012Renderer = _vs2012ToolStripRenderer; |
vS2012ToolStripExtender1.VS2013Renderer = _vs2013ToolStripRenderer; |
this .topBar.BackColor = this .bottomBar.BackColor = Color.FromArgb(0xFF, 41, 57, 85); |
SetSchema( this .menuItemSchemaVS2013Blue, null ); |
} |
#region Methods |
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 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 CloseAllDocuments() |
{ |
if (dockPanel.DocumentStyle == DocumentStyle.SystemMdi) |
{ |
foreach (Form form in MdiChildren) |
form.Close(); |
} |
else |
{ |
foreach (IDockContent document in dockPanel.DocumentsToArray()) |
{ |
document.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 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 readonly ToolStripRenderer _toolStripProfessionalRenderer = new ToolStripProfessionalRenderer(); |
private readonly ToolStripRenderer _vs2012ToolStripRenderer = new VS2012ToolStripRenderer(); |
private readonly ToolStripRenderer _vs2013ToolStripRenderer = new Vs2013ToolStripRenderer(); |
|
private void SetSchema( object sender, System.EventArgs e) |
{ |
// Persist settings when rebuilding UI |
string configFile = Path.Combine(Path.GetDirectoryName(Application.ExecutablePath), "DockPanel.temp.config" ); |
dockPanel.SaveAsXml(configFile); |
CloseAllContents(); |
if (sender == this .menuItemSchemaVS2005) |
{ |
this .dockPanel.Theme = this .vS2005Theme1; |
this .EnableVSRenderer(VSToolStripExtender.VsVersion.Vs2005); |
} |
else if (sender == this .menuItemSchemaVS2003) |
{ |
this .dockPanel.Theme = this .vS2003Theme1; |
this .EnableVSRenderer(VSToolStripExtender.VsVersion.Vs2003); |
} |
else if (sender == this .menuItemSchemaVS2012Light) |
{ |
this .dockPanel.Theme = this .vS2012LightTheme1; |
this .EnableVSRenderer(VSToolStripExtender.VsVersion.Vs2012); |
} |
else if (sender == this .menuItemSchemaVS2013Blue) |
{ |
this .dockPanel.Theme = this .vS2013BlueTheme1; |
this .EnableVSRenderer(VSToolStripExtender.VsVersion.Vs2013); |
} |
menuItemSchemaVS2005.Checked = (sender == menuItemSchemaVS2005); |
menuItemSchemaVS2003.Checked = (sender == menuItemSchemaVS2003); |
menuItemSchemaVS2012Light.Checked = (sender == menuItemSchemaVS2012Light); |
this .menuItemSchemaVS2013Blue.Checked = (sender == this .menuItemSchemaVS2013Blue); |
this .topBar.Visible = this .bottomBar.Visible = (sender == this .menuItemSchemaVS2013Blue); |
if (File.Exists(configFile)) |
dockPanel.LoadFromXml(configFile, m_deserializeDockContent); |
} |
private void EnableVSRenderer(VSToolStripExtender.VsVersion version) |
{ |
vS2012ToolStripExtender1.SetStyle( this .mainMenu, version); |
vS2012ToolStripExtender1.SetStyle( this .toolBar, version); |
vS2012ToolStripExtender1.SetStyle( this .statusBar, version); |
} |
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 AutoHideStripSkin _autoHideStripSkin; |
private DockPaneStripSkin _dockPaneStripSkin; |
private void SetDockPanelSkinOptions( bool isChecked) |
{ |
if (isChecked) |
{ |
// All of these options may be set in the designer. |
// This is not a complete list of possible options available in the skin. |
AutoHideStripSkin autoHideSkin = new AutoHideStripSkin(); |
autoHideSkin.DockStripGradient.StartColor = Color.AliceBlue; |
autoHideSkin.DockStripGradient.EndColor = Color.Blue; |
autoHideSkin.DockStripGradient.LinearGradientMode = System.Drawing.Drawing2D.LinearGradientMode.ForwardDiagonal; |
autoHideSkin.TabGradient.StartColor = SystemColors.Control; |
autoHideSkin.TabGradient.EndColor = SystemColors.ControlDark; |
autoHideSkin.TabGradient.TextColor = SystemColors.ControlText; |
autoHideSkin.TextFont = new Font( "Showcard Gothic" , 10); |
_autoHideStripSkin = dockPanel.Skin.AutoHideStripSkin; |
dockPanel.Skin.AutoHideStripSkin = autoHideSkin; |
DockPaneStripSkin dockPaneSkin = new DockPaneStripSkin(); |
dockPaneSkin.DocumentGradient.DockStripGradient.StartColor = Color.Red; |
dockPaneSkin.DocumentGradient.DockStripGradient.EndColor = Color.Pink; |
dockPaneSkin.DocumentGradient.ActiveTabGradient.StartColor = Color.Green; |
dockPaneSkin.DocumentGradient.ActiveTabGradient.EndColor = Color.Green; |
dockPaneSkin.DocumentGradient.ActiveTabGradient.TextColor = Color.White; |
dockPaneSkin.DocumentGradient.InactiveTabGradient.StartColor = Color.Gray; |
dockPaneSkin.DocumentGradient.InactiveTabGradient.EndColor = Color.Gray; |
dockPaneSkin.DocumentGradient.InactiveTabGradient.TextColor = Color.Black; |
dockPaneSkin.TextFont = new Font( "SketchFlow Print" , 10); |
_dockPaneStripSkin = dockPanel.Skin.DockPaneStripSkin; |
dockPanel.Skin.DockPaneStripSkin = dockPaneSkin; |
} |
else |
{ |
if (_autoHideStripSkin != null ) |
{ |
dockPanel.Skin.AutoHideStripSkin = _autoHideStripSkin; |
} |
if (_dockPaneStripSkin != null ) |
{ |
dockPanel.Skin.DockPaneStripSkin = _dockPaneStripSkin; |
} |
} |
menuItemLayoutByXml_Click(menuItemLayoutByXml, EventArgs.Empty); |
} |
#endregion |
#region Event Handlers |
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 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 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 = |
menuItemCloseAllButThisOne.Enabled = (ActiveMdiChild != null ); |
} |
else |
{ |
menuItemClose.Enabled = (dockPanel.ActiveDocument != null ); |
menuItemCloseAll.Enabled = |
menuItemCloseAllButThisOne.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 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 ); |
else if (e.ClickedItem == toolBarButtonDockPanelSkinDemo) |
SetDockPanelSkinOptions(!toolBarButtonDockPanelSkinDemo.Checked); |
} |
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 ); |
CloseAllContents(); |
CreateStandardControls(); |
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); |
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 SetSplashScreen() |
{ |
|
_showSplash = true ; |
_splashScreen = new SplashScreen(); |
ResizeSplash(); |
_splashScreen.Visible = true ; |
_splashScreen.TopMost = true ; |
Timer _timer = new Timer(); |
_timer.Tick += (sender, e) => |
{ |
_splashScreen.Visible = false ; |
_timer.Enabled = false ; |
_showSplash = false ; |
}; |
_timer.Interval = 4000; |
_timer.Enabled = true ; |
} |
private void ResizeSplash() |
{ |
if (_showSplash) { |
|
var centerXMain = ( this .Location.X + this .Width) / 2.0; |
var LocationXSplash = Math.Max(0, centerXMain - (_splashScreen.Width / 2.0)); |
var centerYMain = ( this .Location.Y + this .Height) / 2.0; |
var LocationYSplash = Math.Max(0, centerYMain - (_splashScreen.Height / 2.0)); |
_splashScreen.Location = new Point(( int )Math.Round(LocationXSplash), ( int )Math.Round(LocationYSplash)); |
} |
} |
private void CreateStandardControls() |
{ |
m_solutionExplorer = new DummySolutionExplorer(); |
m_propertyWindow = new DummyPropertyWindow(); |
m_toolbox = new DummyToolbox(); |
m_outputWindow = new DummyOutputWindow(); |
m_taskList = new DummyTaskList(); |
} |
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(); |
CreateStandardControls(); |
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 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 ; |
} |
#endregion |
private void MainForm_SizeChanged( object sender, EventArgs e) |
{ |
ResizeSplash(); |
} |
} |
} |
by: 发表于:2017-12-08 09:42:10 顶(0) | 踩(0) 回复
??
回复评论