From 0437f76f3a65193d85485a6d5b86b70ce3fc31b0 Mon Sep 17 00:00:00 2001 From: Rich Date: Thu, 28 Feb 2008 16:44:37 +0000 Subject: [PATCH] Stack Trace Class. Fixing logic between ItemSelected and DisplayRTB --- PROMS/Volian.Controls.Library/DisplayPanel.cs | 31 +++----------- .../DisplayPanel.designer.cs | 2 +- .../Volian.Controls.Library/vlnStackTrace.cs | 41 +++++++++++++++++++ 3 files changed, 48 insertions(+), 26 deletions(-) create mode 100644 PROMS/Volian.Controls.Library/vlnStackTrace.cs diff --git a/PROMS/Volian.Controls.Library/DisplayPanel.cs b/PROMS/Volian.Controls.Library/DisplayPanel.cs index 3f2073f8..2a2defd6 100644 --- a/PROMS/Volian.Controls.Library/DisplayPanel.cs +++ b/PROMS/Volian.Controls.Library/DisplayPanel.cs @@ -167,23 +167,12 @@ namespace Volian.Controls.Library if (_DisplayRTB != null) { _DisplayRTB.BackColor = InactiveColor; - _DisplayRTB.SaveText(); // Save any changes to the text + //_DisplayRTB.SaveText(); // Save any changes to the text } - _DisplayRTB = value; - _ItemSelected = value.MyItem; - //AddExpandItem(_ItemSelected); - ExpandAsNeeded(_ItemSelected); - OnItemSelectedChanged(this, new DisplayPanelEventArgs(ItemLookup[_ItemSelected.ItemID], null)); - // Show StackTrace - //Console.WriteLine("_DisplayRTB = {0}", _DisplayRTB.MyItem.ItemID); - //StackTrace st = new StackTrace(true); - //StackFrame[] sfs = st.GetFrames(); - //int ii = 1; - //foreach (StackFrame sf in sfs) - //{ - // if (ii < 50 && sf.GetFileLineNumber() != 0) - // Console.WriteLine("{0}{1}", "".PadLeft(ii++ * 2), sf); - //} + _DisplayRTB = value; + if (_ItemSelected.ItemID != value.MyItem.ItemID) + ItemSelected = value.MyItem; + //vlnStackTrace.ShowStack("_DisplayRTB = {0}", _DisplayRTB.MyItem.ItemID);// Show StackTrace } } internal ItemInfo _ItemSelected; @@ -196,17 +185,9 @@ namespace Volian.Controls.Library int id = value.ItemID; ExpandAsNeeded(value); DisplayItem itm = ItemLookup[id]; - _DisplayRTB = itm.MyDisplayRTB;// This keeps the code above from repeating itm.ItemSelect(); OnItemSelectedChanged(this, new DisplayPanelEventArgs(itm, null)); - //StackTrace st = new StackTrace(true); - //StackFrame[] sfs = st.GetFrames(); - //int ii = 1; - //foreach (StackFrame sf in sfs) - //{ - // if (ii < 50 && sf.GetFileLineNumber() != 0) - // Console.WriteLine("{0}{1}", "".PadLeft(ii++ * 2), sf); - //} + //vlnStackTrace.ShowStack("_ItemSelected = {0}", _ItemSelected.ItemID);// Show StackTrace } } public DisplayItem DisplayItemSelected diff --git a/PROMS/Volian.Controls.Library/DisplayPanel.designer.cs b/PROMS/Volian.Controls.Library/DisplayPanel.designer.cs index 1abab71a..f2264973 100644 --- a/PROMS/Volian.Controls.Library/DisplayPanel.designer.cs +++ b/PROMS/Volian.Controls.Library/DisplayPanel.designer.cs @@ -15,7 +15,7 @@ namespace Volian.Controls.Library { if (disposing && (components != null)) { - if (_DisplayRTB != null) _DisplayRTB.SaveText(); + //if (_DisplayRTB != null) _DisplayRTB.SaveText(); components.Dispose(); } base.Dispose(disposing); diff --git a/PROMS/Volian.Controls.Library/vlnStackTrace.cs b/PROMS/Volian.Controls.Library/vlnStackTrace.cs new file mode 100644 index 00000000..c96de2e3 --- /dev/null +++ b/PROMS/Volian.Controls.Library/vlnStackTrace.cs @@ -0,0 +1,41 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Diagnostics; + +namespace Volian.Controls.Library +{ + public static class vlnStackTrace + { + public static string GetStack(string str, params object[] objects) + { + return string.Format(str, objects) + StackToString(); + } + public static void ShowStack(string str, params object[] objects) + { + Console.WriteLine(string.Format(str, objects) + StackToString()); + } + public static string GetStack() + { + return StackToString(); + } + public static void ShowStack() + { + Console.WriteLine(StackToString()); + } + private static string StackToString() + { + StringBuilder sb = new StringBuilder(); + StackTrace st = new StackTrace(true); + StackFrame[] sfs = st.GetFrames(); + int ii = 0; + foreach (StackFrame sf in sfs) + { + if (ii < 2) ii++; + else if (sf.GetFileLineNumber() != 0) + sb.Append(string.Format("\r\n{0}{1}", "".PadLeft(ii++ * 2), sf.ToString().TrimEnd(" \r\n".ToCharArray()))); + } + return sb.ToString(); + } + } +}