private HttpContext _Context;\r
private bool _Enabled;\r
private TraceMode _Mode;\r
- private DataTable info;\r
- private bool is_first;\r
- private DateTime first_time;\r
- private double prev_time;\r
- private int control_pos;\r
-\r
+ private TraceData data;\r
+ private bool data_saved;\r
+ \r
public TraceContext(HttpContext Context) {\r
_Context = Context;\r
_Enabled = false;\r
- is_first = true;\r
}\r
\r
public bool IsEnabled {\r
}\r
\r
set {\r
- if (value && info == null)\r
- InitInfoTable ();\r
+ if (value && data == null)\r
+ data = new TraceData ();\r
_Enabled = value;\r
}\r
}\r
private void Write(string category, string msg, Exception error, bool Warning) {\r
if (!_Enabled)\r
return;\r
- \r
- double time;\r
- if (is_first) {\r
- time = 0;\r
- is_first = false;\r
- first_time = DateTime.Now;\r
- } else\r
- time = (DateTime.Now - first_time).TotalSeconds;\r
-\r
- DataRow r = info.NewRow ();\r
- r ["Category"] = category;\r
- r ["Message"] = msg;\r
- r ["Exception"] = (error != null ? error.ToString () : null);\r
- r ["TimeSinceFirst"] = time;\r
- r ["IsWarning"] = Warning;\r
-\r
- info.Rows.Add (r);\r
+ data.Write (category, msg, error, Warning);\r
}\r
\r
- private void InitInfoTable ()\r
- {\r
- info = new DataTable ();\r
- info.Columns.Add (new DataColumn ("Category", typeof (string)));\r
- info.Columns.Add (new DataColumn ("Message", typeof (string)));\r
- info.Columns.Add (new DataColumn ("Exception", typeof (string)));\r
- info.Columns.Add (new DataColumn ("TimeSinceFirst", typeof (double)));\r
- info.Columns.Add (new DataColumn ("IsWarning", typeof (bool)));\r
- }\r
-\r
+ internal void SaveData ()\r
+ {\r
+ SetRequestDetails ();\r
+ data.AddControlTree ((Page) _Context.Handler);\r
+ AddCookies ();\r
+ AddHeaders ();\r
+ AddServerVars ();\r
+ data_saved = true;\r
+ }\r
+ \r
internal void Render (HtmlTextWriter output)\r
{\r
- output.AddAttribute ("id", "__asptrace");\r
- output.RenderBeginTag (HtmlTextWriterTag.Div);\r
-\r
- RenderStyleSheet (output);\r
-\r
- output.AddAttribute ("class", "tracecontent");\r
- output.RenderBeginTag (HtmlTextWriterTag.Span);\r
- \r
- RenderRequestDetails (output);\r
- RenderTraceInfo (output);\r
- RenderControlTree (output);\r
- RenderCookies (output);\r
- RenderHeaders (output);\r
- RenderServerVars (output);\r
- \r
- output.RenderEndTag ();\r
- output.RenderEndTag ();\r
- }\r
-\r
- private void RenderRequestDetails (HtmlTextWriter output)\r
- {\r
- Table table = CreateTable ();\r
-\r
- table.Rows.Add (AltRow ("Request Details:"));\r
- table.Rows.Add (InfoRow2 ("Session Id:", _Context.Session.SessionID,\r
- "Request Type", _Context.Request.RequestType));\r
- table.Rows.Add (InfoRow2 ("Time of Request:", _Context.Timestamp.ToString (),\r
- "State Code:", _Context.Response.StatusCode.ToString ()));\r
- table.Rows.Add (InfoRow2 ("Request Encoding:", _Context.Request.ContentEncoding.EncodingName,\r
- "Response Encoding:", _Context.Response.ContentEncoding.EncodingName)); \r
- table.RenderControl (output);\r
+ if (data_saved)\r
+ SaveData ();\r
+ data.Render (output);\r
}\r
\r
- private void RenderTraceInfo (HtmlTextWriter output)\r
+ private void SetRequestDetails ()\r
{\r
- Table table = CreateTable ();\r
-\r
- table.Rows.Add (AltRow ("Trace Information"));\r
- table.Rows.Add (SubHeadRow ("Category", "Message", "From First(s)", "From Lasts(s)"));\r
-\r
- int pos = 0;\r
- foreach (DataRow r in info.Rows)\r
- RenderTraceInfoRow (table, r, pos++);\r
- \r
- table.RenderControl (output);\r
+ data.SessionID = _Context.Session.SessionID;\r
+ data.RequestType = _Context.Request.RequestType;\r
+ data.RequestTime = _Context.Timestamp;\r
+ data.StatusCode = _Context.Response.StatusCode;\r
+ data.RequestEncoding = _Context.Request.ContentEncoding;\r
+ data.ResponseEncoding = _Context.Response.ContentEncoding;\r
}\r
\r
- private void RenderControlTree (HtmlTextWriter output)\r
+ private void AddCookies ()\r
{\r
- Table table = CreateTable ();\r
-\r
- table.Rows.Add (AltRow ("Control Tree"));\r
- table.Rows.Add (SubHeadRow ("Control Id", "Type",\r
- "Render Size Bytes (including children)",\r
- "Viewstate Size Bytes (excluding children)"));\r
-\r
- Page page = (Page) _Context.Handler;\r
- control_pos = 0;\r
- RenderControl (table, page, "__PAGE", "", control_pos);\r
-\r
- table.RenderControl (output);\r
- }\r
- \r
- private void RenderCookies (HtmlTextWriter output)\r
- {\r
- Table table = CreateTable ();\r
-\r
- table.Rows.Add (AltRow ("Cookies Collection"));\r
- table.Rows.Add (SubHeadRow ("Name", "Value", "Size"));\r
-\r
- int pos = 0;\r
foreach (string key in _Context.Request.Cookies.Keys)\r
- RenderCookie (table, _Context.Request.Cookies [key], pos++);\r
- \r
- table.RenderControl (output);\r
+ data.AddCookie (key, _Context.Request.Cookies [key].Value);\r
}\r
\r
- private void RenderHeaders (HtmlTextWriter output)\r
+ private void AddHeaders ()\r
{\r
- Table table = CreateTable ();\r
-\r
- table.Rows.Add (AltRow ("Headers Collection"));\r
- table.Rows.Add (SubHeadRow ("Name", "Value"));\r
-\r
- int pos = 0;\r
foreach (string key in _Context.Request.Headers.Keys)\r
- RenderHeader (table, key, _Context.Request.Headers [key], pos++);\r
-\r
- table.RenderControl (output);\r
+ data.AddHeader (key, _Context.Request.Headers [key]);\r
}\r
\r
- private void RenderServerVars (HtmlTextWriter output)\r
+ private void AddServerVars ()\r
{\r
- Table table = CreateTable ();\r
-\r
- table.Rows.Add (AltRow ("Server Variables"));\r
- table.Rows.Add (SubHeadRow ("Name", "Value"));\r
-\r
- int pos = 0;\r
foreach (string key in _Context.Request.ServerVariables)\r
- RenderServerVar (table, key, _Context.Request.ServerVariables [key], pos++);\r
-\r
- table.RenderControl (output);\r
- }\r
-\r
- private void RenderServerVar (Table table, string name, string value, int pos)\r
- {\r
- RenderAltRow (table, pos, name, value);\r
- }\r
- \r
- private void RenderHeader (Table table, string name, string value, int pos)\r
- {\r
- RenderAltRow (table, pos, name, value);\r
- }\r
- \r
- private void RenderCookie (Table table, HttpCookie c, int pos)\r
- {\r
- int length = c.Name.Length + (c.Value == null ? 0 : c.Value.Length);\r
- RenderAltRow (table, pos, c.Name, c.Value, length.ToString ());\r
- }\r
- \r
- private void RenderControl (Table table, Control c, string id, string p, int pos)\r
- {\r
- RenderAltRow (table, pos, p + id, c.GetType ().FullName, " ", " ");\r
- \r
- foreach (Control child in c.Controls)\r
- RenderControl (table, child, c.UniqueID, p + " ", ++control_pos);\r
- }\r
- \r
- private TableRow AltRow (string title)\r
- {\r
- TableRow row = new TableRow ();\r
- TableHeaderCell header = new TableHeaderCell ();\r
- header.CssClass = "alt";\r
- header.HorizontalAlign = HorizontalAlign.Left;\r
- header.Attributes ["colspan"] = "10";\r
- header.Text = "<h3><b>" + title + "</b></h3>";\r
-\r
- row.Cells.Add (header);\r
- return row;\r
- }\r
-\r
- private TableRow RenderTraceInfoRow (Table table, DataRow r, int pos)\r
- {\r
- string open, close;\r
- open = close = String.Empty;\r
- if ((bool) r ["IsWarning"]) {\r
- open = "<font color=\"Red\">";\r
- close = "</font>";\r
- }\r
- \r
- double t = (double) r ["TimeSinceFirst"];\r
- string t1, t2;\r
- if (t == 0) {\r
- t1 = t2 = String.Empty;\r
- prev_time = 0;\r
- } else {\r
- t1 = t.ToString ("0.000000");\r
- t2 = (t - prev_time).ToString ("0.000000");\r
- prev_time = t;\r
- }\r
- \r
- return RenderAltRow (table, pos, open + (string) r ["Category"] + close,\r
- open + (string) r ["Message"] + close, t1, t2);\r
- }\r
- \r
- private TableRow SubHeadRow (params string[] cells)\r
- {\r
- TableRow row = new TableRow ();\r
- foreach (string s in cells) {\r
- TableHeaderCell cell = new TableHeaderCell ();\r
- cell.Text = s;\r
- row.Cells.Add (cell);\r
- }\r
-\r
- row.CssClass = "subhead";\r
- row.HorizontalAlign = HorizontalAlign.Left;\r
- \r
- return row;\r
- }\r
- \r
- private TableRow RenderAltRow (Table table, int pos, params string[] cells)\r
- {\r
- TableRow row = new TableRow ();\r
- foreach (string s in cells) {\r
- TableCell cell = new TableCell ();\r
- cell.Text = s;\r
- row.Cells.Add (cell);\r
- }\r
-\r
- if ((pos % 2) != 0)\r
- row.CssClass = "alt";\r
-\r
- table.Rows.Add (row);\r
- return row;\r
- }\r
- \r
- private TableRow InfoRow2 (string title1, string info1, string title2, string info2)\r
- {\r
- TableRow row = new TableRow ();\r
- TableHeaderCell header1 = new TableHeaderCell ();\r
- TableHeaderCell header2 = new TableHeaderCell ();\r
- TableCell cell1 = new TableCell ();\r
- TableCell cell2 = new TableCell ();\r
-\r
- header1.Text = title1;\r
- header2.Text = title2;\r
- cell1.Text = info1;\r
- cell2.Text = info2;\r
-\r
- row.Cells.Add (header1);\r
- row.Cells.Add (cell1);\r
- row.Cells.Add (header2);\r
- row.Cells.Add (cell2);\r
-\r
- row.HorizontalAlign = HorizontalAlign.Left;\r
- \r
- return row;\r
- }\r
-\r
- private Table CreateTable ()\r
- {\r
- Table table = new Table ();\r
-\r
- table.Width = Unit.Percentage (100);\r
- table.CellSpacing = 0;\r
- table.CellPadding = 0;\r
-\r
- return table;\r
- }\r
- \r
- private void RenderStyleSheet (HtmlTextWriter o)\r
- {\r
- o.WriteLine ("<style type=\"text/css\">");\r
- o.Write ("span.tracecontent { background-color:white; ");\r
- o.WriteLine ("color:black;font: 10pt verdana, arial; }");\r
- o.Write ("span.tracecontent table { font: 10pt verdana, ");\r
- o.WriteLine ("arial; cellspacing:0; cellpadding:0; margin-bottom:25}");\r
- o.WriteLine ("span.tracecontent tr.subhead { background-color:cccccc;}");\r
- o.WriteLine ("span.tracecontent th { padding:0,3,0,3 }");\r
- o.WriteLine ("span.tracecontent th.alt { background-color:black; color:white; padding:3,3,2,3; }");\r
- o.WriteLine ("span.tracecontent td { padding:0,3,0,3 }");\r
- o.WriteLine ("span.tracecontent tr.alt { background-color:eeeeee }");\r
- o.WriteLine ("span.tracecontent h1 { font: 24pt verdana, arial; margin:0,0,0,0}");\r
- o.WriteLine ("span.tracecontent h2 { font: 18pt verdana, arial; margin:0,0,0,0}");\r
- o.WriteLine ("span.tracecontent h3 { font: 12pt verdana, arial; margin:0,0,0,0}");\r
- o.WriteLine ("span.tracecontent th a { color:darkblue; font: 8pt verdana, arial; }");\r
- o.WriteLine ("span.tracecontent a { color:darkblue;text-decoration:none }");\r
- o.WriteLine ("span.tracecontent a:hover { color:darkblue;text-decoration:underline; }");\r
- o.WriteLine ("span.tracecontent div.outer { width:90%; margin:15,15,15,15}");\r
- o.Write ("span.tracecontent table.viewmenu td { background-color:006699; ");\r
- o.WriteLine ("color:white; padding:0,5,0,5; }");\r
- o.WriteLine ("span.tracecontent table.viewmenu td.end { padding:0,0,0,0; }");\r
- o.WriteLine ("span.tracecontent table.viewmenu a {color:white; font: 8pt verdana, arial; }");\r
- o.WriteLine ("span.tracecontent table.viewmenu a:hover {color:white; font: 8pt verdana, arial; }");\r
- o.WriteLine ("span.tracecontent a.tinylink {color:darkblue; font: 8pt verdana, ");\r
- o.WriteLine ("arial;text-decoration:underline;}");\r
- o.WriteLine ("span.tracecontent a.link {color:darkblue; text-decoration:underline;}");\r
- o.WriteLine ("span.tracecontent div.buffer {padding-top:7; padding-bottom:17;}");\r
- o.WriteLine ("span.tracecontent .small { font: 8pt verdana, arial }");\r
- o.WriteLine ("span.tracecontent table td { padding-right:20 }");\r
- o.WriteLine ("span.tracecontent table td.nopad { padding-right:5 }");\r
- o.WriteLine ("</style>");\r
+ data.AddServerVar (key, _Context.Request.ServerVariables [key]);\r
}\r
}\r
}\r
--- /dev/null
+//
+// System.Web.TraceData
+//
+// Author(s):
+// Jackson Harper (jackson@ximian.com)
+//
+// (C) 2004 Novell, Inc (http://www.novell.com)
+//
+
+
+using System;
+using System.Text;
+using System.Data;
+using System.Web.UI;
+using System.Web.UI.WebControls;
+
+namespace System.Web {
+
+ internal class TraceData {
+
+ private bool is_first_time;
+ private DateTime first_time;
+ private double prev_time;
+
+ private DataTable info;
+ private DataTable control_data;
+ private DataTable cookie_data;
+ private DataTable header_data;
+ private DataTable servervar_data;
+
+ private string session_id;
+ private DateTime request_time;
+ private Encoding request_encoding;
+ private Encoding response_encoding;
+ private string request_type;
+ private int status_code;
+
+ public TraceData ()
+ {
+ info = new DataTable ();
+ info.Columns.Add (new DataColumn ("Category", typeof (string)));
+ info.Columns.Add (new DataColumn ("Message", typeof (string)));
+ info.Columns.Add (new DataColumn ("Exception", typeof (string)));
+ info.Columns.Add (new DataColumn ("TimeSinceFirst", typeof (double)));
+ info.Columns.Add (new DataColumn ("IsWarning", typeof (bool)));
+
+ control_data = new DataTable ();
+ control_data.Columns.Add (new DataColumn ("ControlId", typeof (string)));
+ control_data.Columns.Add (new DataColumn ("Type", typeof (System.Type)));
+ control_data.Columns.Add (new DataColumn ("RenderSize", typeof (int)));
+ control_data.Columns.Add (new DataColumn ("ViewstateSize", typeof (int)));
+ control_data.Columns.Add (new DataColumn ("Depth", typeof (int)));
+
+ cookie_data = new DataTable ();
+ cookie_data.Columns.Add (new DataColumn ("Name", typeof (string)));
+ cookie_data.Columns.Add (new DataColumn ("Value", typeof (string)));
+
+ header_data = new DataTable ();
+ header_data.Columns.Add (new DataColumn ("Name", typeof (string)));
+ header_data.Columns.Add (new DataColumn ("Value", typeof (string)));
+
+ servervar_data = new DataTable ();
+ servervar_data.Columns.Add (new DataColumn ("Name", typeof (string)));
+ servervar_data.Columns.Add (new DataColumn ("Value", typeof (string)));
+
+ is_first_time = true;
+ }
+
+ public string SessionID {
+ get { return session_id; }
+ set { session_id = value; }
+ }
+
+ public DateTime RequestTime {
+ get { return request_time; }
+ set { request_time = value; }
+ }
+
+ public Encoding RequestEncoding {
+ get { return request_encoding; }
+ set { request_encoding = value; }
+ }
+
+ public Encoding ResponseEncoding {
+ get { return response_encoding; }
+ set { response_encoding = value; }
+ }
+
+ public string RequestType {
+ get { return request_type; }
+ set { request_type = value; }
+ }
+
+ public int StatusCode {
+ get { return status_code; }
+ set { status_code = value; }
+ }
+
+ public void Write (string category, string msg, Exception error, bool Warning)
+ {
+ double time;
+ if (is_first_time) {
+ time = 0;
+ is_first_time = false;
+ first_time = DateTime.Now;
+ } else
+ time = (DateTime.Now - first_time).TotalSeconds;
+
+ DataRow r = info.NewRow ();
+ r ["Category"] = category;
+ r ["Message"] = msg;
+ r ["Exception"] = (error != null ? error.ToString () : null);
+ r ["TimeSinceFirst"] = time;
+ r ["IsWarning"] = Warning;
+
+ info.Rows.Add (r);
+ }
+
+ public void AddControlTree (Page page)
+ {
+ AddControl (page, 0);
+ }
+
+ private void AddControl (Control c, int control_pos)
+ {
+ DataRow r = control_data.NewRow ();
+ r ["ControlId"] = c.UniqueID;
+ r ["Type"] = c.GetType ();
+ r ["Depth"] = control_pos;
+
+ control_data.Rows.Add (r);
+
+ foreach (Control child in c.Controls)
+ AddControl (child, control_pos++);
+ }
+
+ public void AddCookie (string name, string value)
+ {
+ DataRow r = cookie_data.NewRow ();
+
+ r ["Name"] = name;
+ r ["Value"] = value;
+
+ cookie_data.Rows.Add (r);
+ }
+
+ public void AddHeader (string name, string value)
+ {
+ DataRow r = header_data.NewRow ();
+
+ r ["Name"] = name;
+ r ["Value"] = value;
+
+ header_data.Rows.Add (r);
+ }
+
+ public void AddServerVar (string name, string value)
+ {
+ DataRow r = servervar_data.NewRow ();
+
+ r ["Name"] = name;
+ r ["Value"] = value;
+
+ servervar_data.Rows.Add (r);
+ }
+
+ public void Render (HtmlTextWriter output)
+ {
+ output.AddAttribute ("id", "__asptrace");
+ output.RenderBeginTag (HtmlTextWriterTag.Div);
+
+ RenderStyleSheet (output);
+
+ output.AddAttribute ("class", "tracecontent");
+ output.RenderBeginTag (HtmlTextWriterTag.Span);
+
+ RenderRequestDetails (output);
+ RenderTraceInfo (output);
+ RenderControlTree (output);
+ RenderCookies (output);
+ RenderHeaders (output);
+ RenderServerVars (output);
+
+ output.RenderEndTag ();
+ output.RenderEndTag ();
+ }
+
+ private void RenderRequestDetails (HtmlTextWriter output)
+ {
+ Table table = CreateTable ();
+
+ table.Rows.Add (AltRow ("Request Details:"));
+ table.Rows.Add (InfoRow2 ("Session Id:", session_id,
+ "Request Type", request_type));
+ table.Rows.Add (InfoRow2 ("Time of Re quest:", request_time.ToString (),
+ "State Code:", status_code.ToString ()));
+ table.Rows.Add (InfoRow2 ("Request Encoding:", request_encoding.EncodingName,
+ "Response Encoding:", response_encoding.EncodingName));
+ table.RenderControl (output);
+ }
+
+ private void RenderTraceInfo (HtmlTextWriter output)
+ {
+ Table table = CreateTable ();
+
+ table.Rows.Add (AltRow ("Trace Information"));
+ table.Rows.Add (SubHeadRow ("Category", "Message", "From First(s)", "From Lasts(s)"));
+
+ int pos = 0;
+ foreach (DataRow r in info.Rows)
+ RenderTraceInfoRow (table, r, pos++);
+
+ table.RenderControl (output);
+ }
+
+ private void RenderControlTree (HtmlTextWriter output)
+ {
+ Table table = CreateTable ();
+
+ table.Rows.Add (AltRow ("Control Tree"));
+ table.Rows.Add (SubHeadRow ("Control Id", "Type",
+ "Render Size Bytes (including children)",
+ "View state Size Bytes (excluding children)"));
+
+ int pos = 0;
+ foreach (DataRow r in control_data.Rows) {
+ int depth = (int) r ["Depth"];
+ string prefix = String.Empty;
+ for (int i=0; i<depth; i++)
+ prefix += "&nb sp; ";
+ RenderAltRow (table, pos++, prefix + r ["ControlId"],
+ r ["Type"].ToString (), " ", " ");
+ }
+
+ table.RenderControl (output);
+ }
+
+ private void RenderCookies (HtmlTextWriter output)
+ {
+ Table table = CreateTable ();
+
+ table.Rows.Add (AltRow ("Cookies Collection"));
+ table.Rows.Add (SubHeadRow ("Name", "Value", "Size"));
+
+ int pos = 0;
+ foreach (DataRow r in cookie_data.Rows) {
+ string name = (string) r ["Name"];
+ string value = (string) r ["Value"];
+ int length = name.Length + (value == null ? 0 : value.Length);
+ RenderAltRow (table, pos++, name, value, length.ToString ());
+ }
+
+ table.RenderControl (output);
+ }
+
+ private void RenderHeaders (HtmlTextWriter output)
+ {
+ Table table = CreateTable ();
+
+ table.Rows.Add (AltRow ("Headers Collection"));
+ table.Rows.Add (SubHeadRow ("Name", "Value"));
+
+ int pos = 0;
+ foreach (DataRow r in header_data.Rows)
+ RenderAltRow (table, pos++, (string) r ["Name"], (string) r ["Value"]);
+
+ table.RenderControl (output);
+ }
+
+ private void RenderServerVars (HtmlTextWriter output)
+ {
+ Table table = CreateTable ();
+
+ table.Rows.Add (AltRow ("Server Variables"));
+ table.Rows.Add (SubHeadRow ("Name", "Value"));
+
+ int pos = 0;
+ foreach (DataRow r in servervar_data.Rows)
+ RenderAltRow (table, pos++, (string) r ["Name"], (string) r ["Value"]);
+
+ table.RenderControl (output);
+ }
+
+ private TableRow AltRow (string title)
+ {
+ TableRow row = new TableRow ();
+ TableHeaderCell header = new TableHeaderCell ();
+ header.CssClass = "alt";
+ header.HorizontalAlign = HorizontalAlign.Left;
+ header.Attributes [" colspan"] = "10";
+ header.Text = "<h3><b>" + title + "</b></h3>";
+
+ row.Cells.Add (header);
+ return row;
+ }
+
+ private TableRow RenderTraceInfoRow (Table table, DataRow r, int pos)
+ {
+ string open, close;
+ open = close = String.Empty;
+ if ((bool) r ["IsWarning"]) {
+ open = "<font color=\"Red\">";
+ close = "</f ont>";
+ }
+
+ double t = (double) r ["TimeSinceFirst"];
+ string t1, t2;
+ if (t == 0) {
+ t1 = t2 = String.Empty;
+ prev_time = 0;
+ } else {
+ t1 = t.ToString ("0.000000");
+ t2 = (t - prev_time).ToString ("0.000000");
+ prev_time = t;
+ }
+
+ return RenderAltRow (table, pos, open + (string) r ["Category"] + close,
+ open + (string) r ["Message"] + close, t1, t2);
+ }
+
+ private TableRow SubHeadRow (params string[] cells)
+ {
+ TableRow row = new TableRow ();
+ foreach (string s in cells) {
+ TableHeaderCell cell = new TableHeaderCell ();
+ cell.Text = s;
+ row.Cells.Add (cell);
+ }
+
+ row.CssClass = "subhead";
+ row.HorizontalAlign = HorizontalAlign.Left;
+
+ return row;
+ }
+
+ private TableRow RenderAltRow (Table table, int pos, params string[] cells)
+ {
+ TableRow row = new TableRow ();
+ foreach (string s in cells) {
+ TableCell cell = new TableCell ();
+ cell.Text = s;
+ row.Cells.Add (cell);
+ }
+
+ if ((pos % 2) != 0)
+ row.CssClass = "alt";
+
+ table.Rows.Add (row);
+ return row;
+ }
+
+ private TableRow InfoRow2 (string title1, string info1, string title2, string info2)
+ {
+ TableRow row = new TableRow ();
+ TableHeaderCell header1 = new TableHeaderCell ();
+ TableHeaderCell header2 = new TableHeaderCell ();
+ TableCell cell1 = new TableCell ();
+ TableCell cell2 = new TableCell ();
+
+ header1.Text = title1;
+ header2.Text = title2;
+ cell1.Text = info1;
+ cell2.Text = info2;
+
+ row.Cells.Add (header1);
+ row.Cells.Add (cell1);
+ row.Cells.Add (header2);
+ row.Cells.Add (cell2);
+
+ row.HorizontalAlign = HorizontalAlign.Left;
+
+ return row;
+ }
+
+ private Table CreateTable ()
+ {
+ Table table = new Table ();
+
+ table.Width = Unit.Percentage (100);
+ table.CellSpacing = 0;
+ table.CellPadding = 0;
+
+ return table;
+ }
+
+ private void RenderStyleSheet (HtmlTextWriter o)
+ {
+ o.WriteLine ("<style type=\"text/css\">");
+ o.Write ("span.tracecontent { background-color:white; ");
+ o.WriteLine ("color:black;font: 10pt verdana, arial; }");
+ o.Write ("span.tracecontent table { font: 10pt verdana, ");
+ o.WriteLine ("arial; cellspacing:0; cellpadding:0; margin-bottom:25}");
+ o.WriteLine ("span.tracecontent tr.subhead { background-color:cccccc;}");
+ o.WriteLine ("span.tracecontent th { padding:0,3,0,3 }");
+ o.WriteLine ("span.tracecontent th.alt { background-color:black; color:white; padding:3,3,2,3; }");
+ o.WriteLine ("span.tracecontent td { padding:0,3,0,3 }");
+ o.WriteLine ("span.tracecontent tr.alt { background-color:eeeeee }");
+ o.WriteLine ("span.tracecontent h1 { font: 24pt verdana, arial; margin:0,0,0,0}");
+ o.WriteLine ("span.tracecontent h2 { font: 18pt verdana, arial; margin:0,0,0,0}");
+ o.WriteLine ("span.tracecontent h3 { font: 12pt verdana, arial; margin:0,0,0,0}");
+ o.WriteLine ("span.tracecontent th a { color:darkblue; font: 8pt verdana, arial; }");
+ o.WriteLine ("span.tracecontent a { color:darkblue;text-decoration:none }");
+ o.WriteLine ("span.tracecontent a:hover { color:darkblue;text-decoration:underline; }");
+ o.WriteLine ("span.tracecontent div.outer { width:90%; margin:15,15,15,15}");
+ o.Write ("span.tracecontent table.viewmenu td { background-color:006699; ");
+ o.WriteLine ("color:white; padding:0,5,0,5; }");
+ o.WriteLine ("span.tracecontent table.viewmenu td.end { padding:0,0,0,0; }");
+ o.WriteLine ("span.tracecontent table.viewmenu a {color:white; font: 8pt verdana, arial; }");
+ o.WriteLine ("span.tracecontent table.viewmenu a:hover {color:white; font: 8pt verdana, arial; }");
+ o.WriteLine ("span.tracecontent a.tinylink {color:darkblue; font: 8pt verdana, ");
+ o.WriteLine ("arial;text-decoration:underline;}");
+ o.WriteLine ("span.tracecontent a.link {color:darkblue; text-decoration:underline;}");
+ o.WriteLine ("span.tracecontent div.buffer {padding-top:7; padding-bottom:17;}");
+ o.WriteLine ("span.tracecontent .small { font: 8pt verdana, arial }");
+ o.WriteLine ("span.tracecontent table td { padding-right:20 }");
+ o.WriteLine ("span.tracecontent table td.nopad { padding-right:5 }");
+ o.WriteLine ("</style>");
+ }
+ }
+}
+