Mercurial > repos > IBBoard.WarFoundry.GUI.WinForms
diff FrmDebugOutput.cs @ 0:7dd160dacb60
Initial commit of WarFoundry code
author | IBBoard <dev@ibboard.co.uk> |
---|---|
date | Fri, 19 Dec 2008 15:57:51 +0000 |
parents | |
children | 8935971e307c |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/FrmDebugOutput.cs Fri Dec 19 15:57:51 2008 +0000 @@ -0,0 +1,306 @@ +using System; +using System.Drawing; +using System.Collections; +using System.ComponentModel; +using System.Text; +using System.Windows.Forms; +using IBBoard.Lang; +using IBBoard.Logging; +using IBBoard.Windows.Forms; + +namespace IBBoard.WarFoundry +{ + /// <summary> + /// Summary description for FrmDebugOutput. + /// </summary> + public class FrmDebugOutput : IBBForm + { + private System.Windows.Forms.ListBox lstDebugItems; + private System.Windows.Forms.ComboBox cmbDebugLevel; + private System.Windows.Forms.Label lblDebugLevel; + /// <summary> + /// Required designer variable. + /// </summary> + private System.ComponentModel.Container components = null; + private Logger logger; + private System.Windows.Forms.ContextMenu contextMenu; + private System.Windows.Forms.MenuItem miCopy; + private System.Windows.Forms.TextBox txtDetail; + private System.Windows.Forms.Splitter splitter1; + private System.Windows.Forms.Panel panel1; + private int MAX_LIST_LENGTH = 50; + + public FrmDebugOutput() + { + //this.logger = logger; + //logger.LogUpdatedEvent+=new IBBoard.Logging.Logger.LogUpdatedDelegate(logger_LogUpdatedEvent); + // + // Required for Windows Form Designer support + // + InitializeComponent(); + + /*if (LogLevels.Debug >= logger.LogLevel) + { + cmbDebugLevel.Items.Add(LogLevels.Debug); + } + + if (LogLevels.Info >= logger.LogLevel) + { + cmbDebugLevel.Items.Add(LogLevels.Info); + } + + if (LogLevels.Warning >= logger.LogLevel) + { + cmbDebugLevel.Items.Add(LogLevels.Warning); + } + + if (LogLevels.Error >= logger.LogLevel) + { + cmbDebugLevel.Items.Add(LogLevels.Error); + } + + if (LogLevels.Critical >= logger.LogLevel) + { + cmbDebugLevel.Items.Add(LogLevels.Critical); + }*/ + + this.Name = "DebugOutputForm"; + + cmbDebugLevel.SelectedItem = logger.LogLevel; + + Translation.Translate(this, true); + + fillDebugList(); + } + + /// <summary> + /// Clean up any resources being used. + /// </summary> + protected override void Dispose( bool disposing ) + { + if( disposing ) + { + if(components != null) + { + components.Dispose(); + } + } + base.Dispose( disposing ); + } + + #region Windows Form Designer generated code + /// <summary> + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// </summary> + private void InitializeComponent() + { + this.lstDebugItems = new System.Windows.Forms.ListBox(); + this.contextMenu = new System.Windows.Forms.ContextMenu(); + this.miCopy = new System.Windows.Forms.MenuItem(); + this.cmbDebugLevel = new System.Windows.Forms.ComboBox(); + this.lblDebugLevel = new System.Windows.Forms.Label(); + this.txtDetail = new System.Windows.Forms.TextBox(); + this.splitter1 = new System.Windows.Forms.Splitter(); + this.panel1 = new System.Windows.Forms.Panel(); + this.SuspendLayout(); + // + // lstDebugItems + // + this.lstDebugItems.ContextMenu = this.contextMenu; + this.lstDebugItems.Dock = System.Windows.Forms.DockStyle.Fill; + this.lstDebugItems.IntegralHeight = false; + this.lstDebugItems.Location = new System.Drawing.Point(0, 24); + this.lstDebugItems.Name = "lstDebugItems"; + this.lstDebugItems.ScrollAlwaysVisible = true; + this.lstDebugItems.SelectionMode = System.Windows.Forms.SelectionMode.MultiExtended; + this.lstDebugItems.Size = new System.Drawing.Size(656, 144); + this.lstDebugItems.TabIndex = 0; + this.lstDebugItems.MouseDown += new System.Windows.Forms.MouseEventHandler(this.lstDebugItems_MouseDown); + this.lstDebugItems.SelectedIndexChanged += new System.EventHandler(this.lstDebugItems_SelectedIndexChanged); + // + // contextMenu + // + this.contextMenu.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] { + this.miCopy}); + this.contextMenu.Popup += new System.EventHandler(this.contextMenu_Popup); + // + // miCopy + // + this.miCopy.Index = 0; + this.miCopy.Text = "&Copy"; + this.miCopy.Click += new System.EventHandler(this.miCopy_Click); + // + // cmbDebugLevel + // + this.cmbDebugLevel.Location = new System.Drawing.Point(190, 2); + this.cmbDebugLevel.Name = "cmbDebugLevel"; + this.cmbDebugLevel.Size = new System.Drawing.Size(464, 21); + this.cmbDebugLevel.TabIndex = 1; + this.cmbDebugLevel.SelectedIndexChanged += new System.EventHandler(this.cmbDebugLevel_SelectedIndexChanged); + // + // lblDebugLevel + // + this.lblDebugLevel.Location = new System.Drawing.Point(16, 0); + this.lblDebugLevel.Name = "lblDebugLevel"; + this.lblDebugLevel.Size = new System.Drawing.Size(168, 21); + this.lblDebugLevel.TabIndex = 2; + this.lblDebugLevel.Text = "debug level:"; + this.lblDebugLevel.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // txtDetail + // + this.txtDetail.Dock = System.Windows.Forms.DockStyle.Bottom; + this.txtDetail.Location = new System.Drawing.Point(0, 172); + this.txtDetail.Multiline = true; + this.txtDetail.Name = "txtDetail"; + this.txtDetail.ReadOnly = true; + this.txtDetail.ScrollBars = System.Windows.Forms.ScrollBars.Vertical; + this.txtDetail.Size = new System.Drawing.Size(656, 64); + this.txtDetail.TabIndex = 3; + this.txtDetail.TabStop = false; + this.txtDetail.Text = ""; + this.txtDetail.KeyDown += new System.Windows.Forms.KeyEventHandler(this.txtDetail_KeyDown); + // + // splitter1 + // + this.splitter1.Cursor = System.Windows.Forms.Cursors.HSplit; + this.splitter1.Dock = System.Windows.Forms.DockStyle.Bottom; + this.splitter1.Location = new System.Drawing.Point(0, 168); + this.splitter1.MinExtra = 50; + this.splitter1.MinSize = 50; + this.splitter1.Name = "splitter1"; + this.splitter1.Size = new System.Drawing.Size(656, 4); + this.splitter1.TabIndex = 4; + this.splitter1.TabStop = false; + // + // panel1 + // + this.panel1.Dock = System.Windows.Forms.DockStyle.Top; + this.panel1.Location = new System.Drawing.Point(0, 0); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(656, 24); + this.panel1.TabIndex = 5; + // + // FrmDebugOutput + // + this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); + this.ClientSize = new System.Drawing.Size(656, 236); + this.Controls.Add(this.lblDebugLevel); + this.Controls.Add(this.cmbDebugLevel); + this.Controls.Add(this.lstDebugItems); + this.Controls.Add(this.splitter1); + this.Controls.Add(this.panel1); + this.Controls.Add(this.txtDetail); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; + this.Name = "FrmDebugOutput"; + this.ShowInTaskbar = false; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "FrmDebugOutput"; + this.ResumeLayout(false); + + } + #endregion + + private void cmbDebugLevel_SelectedIndexChanged(object sender, System.EventArgs e) + { + fillDebugList(); + } + + private void fillDebugList() + { + lstDebugItems.Items.Clear(); + /*LogItem[] items = logger.GetLogItems((LogLevels)cmbDebugLevel.SelectedItem); + int last = items.Length - 1; + int stop = last - MAX_LIST_LENGTH; + + if (stop < 0) + { + stop = 0; + } + + //reverse fill the list so that we can have newest items at the top + for (int i = last; i >= stop; i--) + { + lstDebugItems.Items.Add(items[i]); + }*/ + } + + private void logger_LogUpdatedEvent(LogItem item) + { + /*if (item.Level >= (LogLevels)cmbDebugLevel.SelectedItem) + { + lock (lstDebugItems) + { + lstDebugItems.Items.Insert(0, item); + + if (lstDebugItems.Items.Count > MAX_LIST_LENGTH) + { + lstDebugItems.Items.RemoveAt(lstDebugItems.Items.Count - 1); + } + } + }*/ + } + + private void miCopy_Click(object sender, System.EventArgs e) + { + if (lstDebugItems.SelectedIndices.Count==1) + { + Clipboard.SetDataObject(lstDebugItems.SelectedItem.ToString()); + } + else if (lstDebugItems.SelectedIndices.Count > 1) + { + StringBuilder sb = new StringBuilder(); + + foreach (int idx in lstDebugItems.SelectedIndices) + { + sb.Append(lstDebugItems.Items[idx].ToString()+Environment.NewLine); + } + + Clipboard.SetDataObject(sb.ToString().Trim()); + } + } + + private void contextMenu_Popup(object sender, System.EventArgs e) + { + foreach (MenuItem mi in contextMenu.MenuItems) + { + mi.Visible = lstDebugItems.SelectedIndex > -1; + } + } + + private void lstDebugItems_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e) + { + if (e.Button == MouseButtons.Right) + { + int idx = lstDebugItems.IndexFromPoint(e.X, e.Y); + + if (lstDebugItems.SelectedIndices.Contains(idx)) + { + lstDebugItems.SelectedIndex = idx; + } + } + } + + private void lstDebugItems_SelectedIndexChanged(object sender, System.EventArgs e) + { + if (lstDebugItems.SelectedIndex > -1) + { + LogItem item = (LogItem)lstDebugItems.SelectedItem; + txtDetail.Text = item.ToString() + Environment.NewLine + Environment.NewLine + "Stack Trace: "+ item.StackTrace; + } + else + { + txtDetail.Text = ""; + } + } + + private void txtDetail_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e) + { + if(e.KeyData == (Keys.Control|Keys.A) && e.Control) + { + txtDetail.SelectAll(); + } + } + } +}