Anonymous avatar Anonymous committed 9c71dc3 Merge

Merge with last grozeille´s version (discarding my sorting hack)

Comments (0)

Files changed (14)

 bin
 obj
 _ReSharper*
-.suo
+.suo
+.user

AboutForm.Designer.cs

+namespace SOS.Net
+{
+    partial class AboutForm
+    {
+        /// <summary>
+        /// Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary>
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (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()
+        {
+            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AboutForm));
+            this.buttonOK = new System.Windows.Forms.Button();
+            this.labelHelp = new System.Windows.Forms.Label();
+            this.labelAuthor = new System.Windows.Forms.Label();
+            this.labelVersion = new System.Windows.Forms.Label();
+            this.labelWebSite = new System.Windows.Forms.Label();
+            this.labelReportBugs = new System.Windows.Forms.Label();
+            this.linkLabelAuthor = new System.Windows.Forms.LinkLabel();
+            this.tableLayoutPanelAbout = new System.Windows.Forms.TableLayoutPanel();
+            this.labelVersionInfo = new System.Windows.Forms.Label();
+            this.linkLabelWebSite = new System.Windows.Forms.LinkLabel();
+            this.linkLabelReportBugs = new System.Windows.Forms.LinkLabel();
+            this.labelLicence = new System.Windows.Forms.Label();
+            this.textBoxLicence = new System.Windows.Forms.TextBox();
+            this.tableLayoutPanelAbout.SuspendLayout();
+            this.SuspendLayout();
+            // 
+            // buttonOK
+            // 
+            this.buttonOK.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+            this.buttonOK.DialogResult = System.Windows.Forms.DialogResult.OK;
+            this.buttonOK.Location = new System.Drawing.Point(362, 183);
+            this.buttonOK.Name = "buttonOK";
+            this.buttonOK.Size = new System.Drawing.Size(75, 23);
+            this.buttonOK.TabIndex = 0;
+            this.buttonOK.Text = "&OK";
+            this.buttonOK.UseVisualStyleBackColor = true;
+            // 
+            // labelHelp
+            // 
+            this.labelHelp.AutoSize = true;
+            this.labelHelp.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+            this.labelHelp.Location = new System.Drawing.Point(12, 9);
+            this.labelHelp.Name = "labelHelp";
+            this.labelHelp.Size = new System.Drawing.Size(111, 20);
+            this.labelHelp.TabIndex = 1;
+            this.labelHelp.Text = "SOS for .Net";
+            // 
+            // labelAuthor
+            // 
+            this.labelAuthor.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
+            this.labelAuthor.AutoSize = true;
+            this.labelAuthor.Location = new System.Drawing.Point(3, 3);
+            this.labelAuthor.Name = "labelAuthor";
+            this.labelAuthor.Size = new System.Drawing.Size(68, 13);
+            this.labelAuthor.TabIndex = 2;
+            this.labelAuthor.Text = "Author:";
+            // 
+            // labelVersion
+            // 
+            this.labelVersion.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
+            this.labelVersion.AutoSize = true;
+            this.labelVersion.Location = new System.Drawing.Point(3, 23);
+            this.labelVersion.Name = "labelVersion";
+            this.labelVersion.Size = new System.Drawing.Size(68, 13);
+            this.labelVersion.TabIndex = 2;
+            this.labelVersion.Text = "Version:";
+            // 
+            // labelWebSite
+            // 
+            this.labelWebSite.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
+            this.labelWebSite.AutoSize = true;
+            this.labelWebSite.Location = new System.Drawing.Point(3, 43);
+            this.labelWebSite.Name = "labelWebSite";
+            this.labelWebSite.Size = new System.Drawing.Size(68, 13);
+            this.labelWebSite.TabIndex = 2;
+            this.labelWebSite.Text = "WebSite:";
+            // 
+            // labelReportBugs
+            // 
+            this.labelReportBugs.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
+            this.labelReportBugs.AutoSize = true;
+            this.labelReportBugs.Location = new System.Drawing.Point(3, 63);
+            this.labelReportBugs.Name = "labelReportBugs";
+            this.labelReportBugs.Size = new System.Drawing.Size(68, 13);
+            this.labelReportBugs.TabIndex = 2;
+            this.labelReportBugs.Text = "Report bugs:";
+            // 
+            // linkLabelAuthor
+            // 
+            this.linkLabelAuthor.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
+            this.linkLabelAuthor.AutoSize = true;
+            this.linkLabelAuthor.Location = new System.Drawing.Point(77, 3);
+            this.linkLabelAuthor.Name = "linkLabelAuthor";
+            this.linkLabelAuthor.Size = new System.Drawing.Size(345, 13);
+            this.linkLabelAuthor.TabIndex = 3;
+            this.linkLabelAuthor.TabStop = true;
+            this.linkLabelAuthor.Text = "http://grozeille.com";
+            this.linkLabelAuthor.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel_LinkClicked);
+            // 
+            // tableLayoutPanelAbout
+            // 
+            this.tableLayoutPanelAbout.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+                        | System.Windows.Forms.AnchorStyles.Left)
+                        | System.Windows.Forms.AnchorStyles.Right)));
+            this.tableLayoutPanelAbout.ColumnCount = 2;
+            this.tableLayoutPanelAbout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
+            this.tableLayoutPanelAbout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
+            this.tableLayoutPanelAbout.Controls.Add(this.labelLicence, 0, 4);
+            this.tableLayoutPanelAbout.Controls.Add(this.linkLabelReportBugs, 1, 3);
+            this.tableLayoutPanelAbout.Controls.Add(this.labelAuthor, 0, 0);
+            this.tableLayoutPanelAbout.Controls.Add(this.linkLabelAuthor, 1, 0);
+            this.tableLayoutPanelAbout.Controls.Add(this.labelVersion, 0, 1);
+            this.tableLayoutPanelAbout.Controls.Add(this.labelReportBugs, 0, 3);
+            this.tableLayoutPanelAbout.Controls.Add(this.labelWebSite, 0, 2);
+            this.tableLayoutPanelAbout.Controls.Add(this.labelVersionInfo, 1, 1);
+            this.tableLayoutPanelAbout.Controls.Add(this.linkLabelWebSite, 1, 2);
+            this.tableLayoutPanelAbout.Controls.Add(this.textBoxLicence, 1, 4);
+            this.tableLayoutPanelAbout.Location = new System.Drawing.Point(12, 32);
+            this.tableLayoutPanelAbout.Name = "tableLayoutPanelAbout";
+            this.tableLayoutPanelAbout.RowCount = 6;
+            this.tableLayoutPanelAbout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
+            this.tableLayoutPanelAbout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
+            this.tableLayoutPanelAbout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
+            this.tableLayoutPanelAbout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
+            this.tableLayoutPanelAbout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
+            this.tableLayoutPanelAbout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
+            this.tableLayoutPanelAbout.Size = new System.Drawing.Size(425, 145);
+            this.tableLayoutPanelAbout.TabIndex = 4;
+            // 
+            // labelVersionInfo
+            // 
+            this.labelVersionInfo.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
+            this.labelVersionInfo.AutoSize = true;
+            this.labelVersionInfo.Location = new System.Drawing.Point(77, 23);
+            this.labelVersionInfo.Name = "labelVersionInfo";
+            this.labelVersionInfo.Size = new System.Drawing.Size(345, 13);
+            this.labelVersionInfo.TabIndex = 2;
+            this.labelVersionInfo.Text = "1.0.0.0";
+            // 
+            // linkLabelWebSite
+            // 
+            this.linkLabelWebSite.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
+            this.linkLabelWebSite.AutoSize = true;
+            this.linkLabelWebSite.Location = new System.Drawing.Point(77, 43);
+            this.linkLabelWebSite.Name = "linkLabelWebSite";
+            this.linkLabelWebSite.Size = new System.Drawing.Size(345, 13);
+            this.linkLabelWebSite.TabIndex = 3;
+            this.linkLabelWebSite.TabStop = true;
+            this.linkLabelWebSite.Text = "http://bitbucket.org/grozeille/sosnet/wiki/Home";
+            this.linkLabelWebSite.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel_LinkClicked);
+            // 
+            // linkLabelReportBugs
+            // 
+            this.linkLabelReportBugs.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
+            this.linkLabelReportBugs.AutoSize = true;
+            this.linkLabelReportBugs.Location = new System.Drawing.Point(77, 63);
+            this.linkLabelReportBugs.Name = "linkLabelReportBugs";
+            this.linkLabelReportBugs.Size = new System.Drawing.Size(345, 13);
+            this.linkLabelReportBugs.TabIndex = 4;
+            this.linkLabelReportBugs.TabStop = true;
+            this.linkLabelReportBugs.Text = "http://bitbucket.org/grozeille/sosnet/issues/?status=new&status=open";
+            this.linkLabelReportBugs.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel_LinkClicked);
+            // 
+            // labelLicence
+            // 
+            this.labelLicence.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
+            this.labelLicence.AutoSize = true;
+            this.labelLicence.Location = new System.Drawing.Point(3, 83);
+            this.labelLicence.Name = "labelLicence";
+            this.labelLicence.Size = new System.Drawing.Size(68, 13);
+            this.labelLicence.TabIndex = 5;
+            this.labelLicence.Text = "Licence:";
+            // 
+            // textBoxLicence
+            // 
+            this.textBoxLicence.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+                        | System.Windows.Forms.AnchorStyles.Left)
+                        | System.Windows.Forms.AnchorStyles.Right)));
+            this.textBoxLicence.Location = new System.Drawing.Point(77, 83);
+            this.textBoxLicence.Multiline = true;
+            this.textBoxLicence.Name = "textBoxLicence";
+            this.textBoxLicence.ReadOnly = true;
+            this.tableLayoutPanelAbout.SetRowSpan(this.textBoxLicence, 2);
+            this.textBoxLicence.ScrollBars = System.Windows.Forms.ScrollBars.Both;
+            this.textBoxLicence.Size = new System.Drawing.Size(345, 59);
+            this.textBoxLicence.TabIndex = 6;
+            // 
+            // AboutForm
+            // 
+            this.AcceptButton = this.buttonOK;
+            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.CancelButton = this.buttonOK;
+            this.ClientSize = new System.Drawing.Size(449, 218);
+            this.Controls.Add(this.tableLayoutPanelAbout);
+            this.Controls.Add(this.labelHelp);
+            this.Controls.Add(this.buttonOK);
+            this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
+            this.MaximizeBox = false;
+            this.MinimizeBox = false;
+            this.Name = "AboutForm";
+            this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
+            this.Text = "About SOS for .Net";
+            this.Load += new System.EventHandler(this.AboutForm_Load);
+            this.tableLayoutPanelAbout.ResumeLayout(false);
+            this.tableLayoutPanelAbout.PerformLayout();
+            this.ResumeLayout(false);
+            this.PerformLayout();
+
+        }
+
+        #endregion
+
+        private System.Windows.Forms.Button buttonOK;
+        private System.Windows.Forms.Label labelHelp;
+        private System.Windows.Forms.Label labelAuthor;
+        private System.Windows.Forms.Label labelVersion;
+        private System.Windows.Forms.Label labelWebSite;
+        private System.Windows.Forms.Label labelReportBugs;
+        private System.Windows.Forms.LinkLabel linkLabelAuthor;
+        private System.Windows.Forms.TableLayoutPanel tableLayoutPanelAbout;
+        private System.Windows.Forms.LinkLabel linkLabelReportBugs;
+        private System.Windows.Forms.Label labelVersionInfo;
+        private System.Windows.Forms.LinkLabel linkLabelWebSite;
+        private System.Windows.Forms.Label labelLicence;
+        private System.Windows.Forms.TextBox textBoxLicence;
+    }
+}
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Windows.Forms;
+using System.Reflection;
+using System.IO;
+using SOS.Net.Properties;
+
+namespace SOS.Net
+{
+    public partial class AboutForm : Form
+    {
+        public AboutForm()
+        {
+            InitializeComponent();
+        }
+
+        private void linkLabel_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
+        {
+            Help.ShowHelp(this,(sender as LinkLabel).Text);
+        }
+
+        private void AboutForm_Load(object sender, EventArgs e)
+        {
+            this.labelVersionInfo.Text = Assembly.GetAssembly(this.GetType()).GetName().Version.ToString();
+            this.textBoxLicence.Text = Resources.LICENSE_2_0.Replace("\n", Environment.NewLine);
+        }
+    }
+}
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+  <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+        /wD///8A////AP///wD///8A////AK10RCOsckF9qnA/26htPPOnazrzpWk326RoNX2jZjMj////AP//
+        /wD///8A////AP///wD///8A////ALV+UVOzfE7m17uj/+nayv/s4NH/7ODR/+jYyP/TtZz/p2w65qZq
+        OFP///8A////AP///wD///8A////AL2JX1O7h1v059XE/+XSv//JpoX/uI5n/7aKZf/FoYD/4My6/+PQ
+        vv+rcED0qW49U////wD///8A////AMaVbSLDkmrl6tjJ/+PNuv/AlGv/uoxi/8+wlP/PsJT/t4lf/7KH
+        Yf/awKr/5NHA/651RuWtc0Mi////AP///wDMnnh+5My5/+rWxf/HmXH/v5Bm/7+QZv/38ez/9vDq/7eJ
+        X/+3iV//tYlj/+LOu//Zvab/sntNfv///wD///8A06eE2+/h0//ZtZX/x5hs/8OVaf/Bk2f/v5Bm/7+Q
+        Zv+7i2P/uYpj/7iKYv/Lp4b/6tzM/7iDV9v///8A////ANmwj/by5Nn/0aV6/8WZa//El2r/xJZp//r2
+        8v/z6uH/wpVt/76PZf++j2T/wJVt/+/j1f+/jGH2////AP///wDguZn28uXa/9Gmfv/MnXH/x5ps/8WY
+        a//izLb/+PPu//bu6P/ZvaH/wpRo/8Wbcf/w4tb/xZVs9v///wD///8A5sGj2/Pl2f/fu57/z6B1/82e
+        cv/16+P/5Mu0/+fTv//7+Pb/5dO//8SYa//WtJH/7uDS/8yeeNv///8A////AOvJrX7049T/79zN/9Wo
+        fv/QoHf/+/j1//z49f/8+PX/+/j1/9Gogf/PpHv/6tXD/+rUwv/Sp4N+////AP///wDx0LUi786z5fbp
+        3f/s2Mb/16yB/9y7mv/27OP/9ezi/+TIrv/Sp3v/5s66//Hi1f/bs5Hl2bCOIv///wD///8A////APTU
+        u1Py0rj09+rf/+7e0P/jwaf/2K6J/9eshv/du5z/69bH//Pm2f/jvp/04bucU////wD///8A////AP//
+        /wD///8A9ti/U/XWveb56dz/9ujd//Pl2v/z5dr/9efc//Xk1v/ryKzm6capU////wD///8A////AP//
+        /wD///8A////AP///wD528Qj+NrCfffYwNv2177z9NW88/PTudvx0bd98M+0I////wD///8A////AP//
+        /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+        /wD///8A//8AAPw/AADwDwAA4AcAAMADAADAAwAAgAEAAIABAACAAQAAgAEAAMADAADAAwAA4AcAAPAP
+        AAD8PwAA//8AAA==
+</value>
+  </data>
+</root>

FormMain.Designer.cs

             this.textBoxCBDPath = new System.Windows.Forms.TextBox();
             this.labelSosexPath = new System.Windows.Forms.Label();
             this.textBoxSosexPath = new System.Windows.Forms.TextBox();
-            this.textBoxSosexInfo = new System.Windows.Forms.TextBox();
+            this.panelHelpCDB = new System.Windows.Forms.Panel();
+            this.tableLayoutPanelHelpCDB = new System.Windows.Forms.TableLayoutPanel();
+            this.pictureBoxHelpCDB = new System.Windows.Forms.PictureBox();
+            this.labelCDBHelp1 = new System.Windows.Forms.Label();
+            this.linkLabelCDBHelp2 = new System.Windows.Forms.LinkLabel();
+            this.linkLabelCDBHelp3 = new System.Windows.Forms.LinkLabel();
+            this.linkLabelCDBHelp5 = new System.Windows.Forms.LinkLabel();
+            this.labelCDBHelp4 = new System.Windows.Forms.Label();
+            this.panelHelpSOSEX = new System.Windows.Forms.Panel();
+            this.tableLayoutPanelHELPSOSEX = new System.Windows.Forms.TableLayoutPanel();
+            this.pictureBoxHelpSOSEX = new System.Windows.Forms.PictureBox();
+            this.labelSOSEXHelp1 = new System.Windows.Forms.Label();
+            this.linkLabelSOSEXHelp2 = new System.Windows.Forms.LinkLabel();
+            this.linkLabelSOSEXHelp3 = new System.Windows.Forms.LinkLabel();
+            this.linkLabelSOSEXHelp5 = new System.Windows.Forms.LinkLabel();
+            this.labelSOSEXHelp4 = new System.Windows.Forms.Label();
             this.toolStripSettings = new System.Windows.Forms.ToolStrip();
             this.toolStripSplitButtonRefresh = new System.Windows.Forms.ToolStripSplitButton();
             this.processesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
             this.toolStripButtonAttach = new System.Windows.Forms.ToolStripButton();
             this.toolStripButtonDetach = new System.Windows.Forms.ToolStripButton();
             this.toolStripButtonSaveSettings = new System.Windows.Forms.ToolStripButton();
+            this.toolStripButtonHelp = new System.Windows.Forms.ToolStripSplitButton();
+            this.aboutToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+            this.helpOnlineToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
             this.timerFilter = new System.Windows.Forms.Timer(this.components);
             this.timerTypeFilter = new System.Windows.Forms.Timer(this.components);
-            this.textBoxHelpCdb = new System.Windows.Forms.TextBox();
+            this.labelObjectDumpAddress = new System.Windows.Forms.Label();
+            this.textBoxObjectDumpAddress = new System.Windows.Forms.TextBox();
             this.tabControlMain.SuspendLayout();
             this.tabPageProcesses.SuspendLayout();
             this.panelSearchProcesses.SuspendLayout();
             this.tabPageOutput.SuspendLayout();
             this.tabPageSettings.SuspendLayout();
             this.tableLayoutPanelSettings.SuspendLayout();
+            this.panelHelpCDB.SuspendLayout();
+            this.tableLayoutPanelHelpCDB.SuspendLayout();
+            ((System.ComponentModel.ISupportInitialize)(this.pictureBoxHelpCDB)).BeginInit();
+            this.panelHelpSOSEX.SuspendLayout();
+            this.tableLayoutPanelHELPSOSEX.SuspendLayout();
+            ((System.ComponentModel.ISupportInitialize)(this.pictureBoxHelpSOSEX)).BeginInit();
             this.toolStripSettings.SuspendLayout();
             this.SuspendLayout();
             // 
             this.listViewProcesses.View = System.Windows.Forms.View.Details;
             this.listViewProcesses.SelectedIndexChanged += new System.EventHandler(this.listViewProcesses_SelectedIndexChanged);
             this.listViewProcesses.DoubleClick += new System.EventHandler(this.listViewProcesses_DoubleClick);
+            this.listViewProcesses.ColumnClick += new System.Windows.Forms.ColumnClickEventHandler(this.listView_ColumnClick);
             // 
             // columnHeaderProcessId
             // 
             this.listViewAppDomains.UseCompatibleStateImageBehavior = false;
             this.listViewAppDomains.View = System.Windows.Forms.View.Details;
             this.listViewAppDomains.DoubleClick += new System.EventHandler(this.listViewAppDomains_DoubleClick);
+            this.listViewAppDomains.ColumnClick += new System.Windows.Forms.ColumnClickEventHandler(this.listView_ColumnClick);
             // 
             // columnHeaderAppDomainAddress
             // 
             this.listViewAssemblies.TabIndex = 1;
             this.listViewAssemblies.UseCompatibleStateImageBehavior = false;
             this.listViewAssemblies.View = System.Windows.Forms.View.Details;
+            this.listViewAssemblies.ColumnClick += new System.Windows.Forms.ColumnClickEventHandler(this.listView_ColumnClick);
             // 
             // columnHeaderAssemblyAddress
             // 
             this.listViewHeap.UseCompatibleStateImageBehavior = false;
             this.listViewHeap.View = System.Windows.Forms.View.Details;
             this.listViewHeap.DoubleClick += new System.EventHandler(this.listViewHeap_DoubleClick);
+            this.listViewHeap.ColumnClick += new System.Windows.Forms.ColumnClickEventHandler(this.listView_ColumnClick);
             // 
             // columnHeaderHeapAddress
             // 
             this.listViewInstances.UseCompatibleStateImageBehavior = false;
             this.listViewInstances.View = System.Windows.Forms.View.Details;
             this.listViewInstances.DoubleClick += new System.EventHandler(this.listViewInstances_DoubleClick);
+            this.listViewInstances.ColumnClick += new System.Windows.Forms.ColumnClickEventHandler(this.listView_ColumnClick);
             // 
             // columnHeaderInstanceAddress
             // 
             // 
             this.splitContainerObjectDumpDetails.Dock = System.Windows.Forms.DockStyle.Fill;
             this.splitContainerObjectDumpDetails.FixedPanel = System.Windows.Forms.FixedPanel.Panel2;
-            this.splitContainerObjectDumpDetails.Location = new System.Drawing.Point(0, 134);
+            this.splitContainerObjectDumpDetails.Location = new System.Drawing.Point(0, 198);
             this.splitContainerObjectDumpDetails.Name = "splitContainerObjectDumpDetails";
             this.splitContainerObjectDumpDetails.Orientation = System.Windows.Forms.Orientation.Horizontal;
             // 
             // 
             this.splitContainerObjectDumpDetails.Panel2.Controls.Add(this.listViewFieldArray);
             this.splitContainerObjectDumpDetails.Panel2Collapsed = true;
-            this.splitContainerObjectDumpDetails.Size = new System.Drawing.Size(723, 469);
+            this.splitContainerObjectDumpDetails.Size = new System.Drawing.Size(723, 405);
             this.splitContainerObjectDumpDetails.SplitterDistance = 311;
             this.splitContainerObjectDumpDetails.TabIndex = 7;
             // 
             this.listViewObjectDump.HideSelection = false;
             this.listViewObjectDump.Location = new System.Drawing.Point(0, 0);
             this.listViewObjectDump.Name = "listViewObjectDump";
-            this.listViewObjectDump.Size = new System.Drawing.Size(723, 469);
+            this.listViewObjectDump.Size = new System.Drawing.Size(723, 405);
             this.listViewObjectDump.TabIndex = 4;
             this.listViewObjectDump.UseCompatibleStateImageBehavior = false;
             this.listViewObjectDump.View = System.Windows.Forms.View.Details;
             this.listViewObjectDump.DoubleClick += new System.EventHandler(this.listViewObjectDump_DoubleClick);
+            this.listViewObjectDump.ColumnClick += new System.Windows.Forms.ColumnClickEventHandler(this.listView_ColumnClick);
             // 
             // columnHeaderObjectDumpField
             // 
             this.listViewFieldArray.UseCompatibleStateImageBehavior = false;
             this.listViewFieldArray.View = System.Windows.Forms.View.Details;
             this.listViewFieldArray.DoubleClick += new System.EventHandler(this.listViewFieldArray_DoubleClick);
+            this.listViewFieldArray.ColumnClick += new System.Windows.Forms.ColumnClickEventHandler(this.listView_ColumnClick);
             // 
             // columnHeaderFieldArrayNumber
             // 
             // 
             this.panelObjectDumpDetails.Controls.Add(this.textBoxObjectDumpToString);
             this.panelObjectDumpDetails.Controls.Add(this.textBoxObjectDumpSize);
+            this.panelObjectDumpDetails.Controls.Add(this.textBoxObjectDumpAddress);
             this.panelObjectDumpDetails.Controls.Add(this.textBoxObjectDumpType);
             this.panelObjectDumpDetails.Controls.Add(this.labelObjectDumpToString);
+            this.panelObjectDumpDetails.Controls.Add(this.labelObjectDumpAddress);
             this.panelObjectDumpDetails.Controls.Add(this.labelObjectDumpTrueSize);
             this.panelObjectDumpDetails.Controls.Add(this.labelObjectDumpTypeName);
             this.panelObjectDumpDetails.Dock = System.Windows.Forms.DockStyle.Top;
             this.panelObjectDumpDetails.Location = new System.Drawing.Point(0, 48);
             this.panelObjectDumpDetails.Name = "panelObjectDumpDetails";
-            this.panelObjectDumpDetails.Size = new System.Drawing.Size(723, 86);
+            this.panelObjectDumpDetails.Size = new System.Drawing.Size(723, 150);
             this.panelObjectDumpDetails.TabIndex = 5;
             // 
             // textBoxObjectDumpToString
             // 
-            this.textBoxObjectDumpToString.Location = new System.Drawing.Point(100, 58);
+            this.textBoxObjectDumpToString.Location = new System.Drawing.Point(102, 84);
+            this.textBoxObjectDumpToString.Multiline = true;
             this.textBoxObjectDumpToString.Name = "textBoxObjectDumpToString";
             this.textBoxObjectDumpToString.ReadOnly = true;
-            this.textBoxObjectDumpToString.Size = new System.Drawing.Size(428, 20);
+            this.textBoxObjectDumpToString.ScrollBars = System.Windows.Forms.ScrollBars.Both;
+            this.textBoxObjectDumpToString.Size = new System.Drawing.Size(428, 60);
             this.textBoxObjectDumpToString.TabIndex = 3;
             // 
             // textBoxObjectDumpSize
             // 
-            this.textBoxObjectDumpSize.Location = new System.Drawing.Point(100, 32);
+            this.textBoxObjectDumpSize.Location = new System.Drawing.Point(102, 58);
             this.textBoxObjectDumpSize.Name = "textBoxObjectDumpSize";
             this.textBoxObjectDumpSize.ReadOnly = true;
-            this.textBoxObjectDumpSize.Size = new System.Drawing.Size(107, 20);
+            this.textBoxObjectDumpSize.Size = new System.Drawing.Size(180, 20);
             this.textBoxObjectDumpSize.TabIndex = 2;
             // 
             // textBoxObjectDumpType
             // 
-            this.textBoxObjectDumpType.Location = new System.Drawing.Point(100, 6);
+            this.textBoxObjectDumpType.Location = new System.Drawing.Point(102, 32);
             this.textBoxObjectDumpType.Name = "textBoxObjectDumpType";
             this.textBoxObjectDumpType.ReadOnly = true;
             this.textBoxObjectDumpType.Size = new System.Drawing.Size(428, 20);
             // labelObjectDumpToString
             // 
             this.labelObjectDumpToString.AutoSize = true;
-            this.labelObjectDumpToString.Location = new System.Drawing.Point(5, 61);
+            this.labelObjectDumpToString.Location = new System.Drawing.Point(7, 87);
             this.labelObjectDumpToString.Name = "labelObjectDumpToString";
             this.labelObjectDumpToString.Size = new System.Drawing.Size(53, 13);
             this.labelObjectDumpToString.TabIndex = 0;
             // labelObjectDumpTrueSize
             // 
             this.labelObjectDumpTrueSize.AutoSize = true;
-            this.labelObjectDumpTrueSize.Location = new System.Drawing.Point(5, 35);
+            this.labelObjectDumpTrueSize.Location = new System.Drawing.Point(7, 61);
             this.labelObjectDumpTrueSize.Name = "labelObjectDumpTrueSize";
             this.labelObjectDumpTrueSize.Size = new System.Drawing.Size(89, 13);
             this.labelObjectDumpTrueSize.TabIndex = 0;
             // labelObjectDumpTypeName
             // 
             this.labelObjectDumpTypeName.AutoSize = true;
-            this.labelObjectDumpTypeName.Location = new System.Drawing.Point(5, 9);
+            this.labelObjectDumpTypeName.Location = new System.Drawing.Point(7, 35);
             this.labelObjectDumpTypeName.Name = "labelObjectDumpTypeName";
             this.labelObjectDumpTypeName.Size = new System.Drawing.Size(34, 13);
             this.labelObjectDumpTypeName.TabIndex = 0;
             this.tableLayoutPanelSettings.Controls.Add(this.textBoxCBDPath, 1, 0);
             this.tableLayoutPanelSettings.Controls.Add(this.labelSosexPath, 0, 2);
             this.tableLayoutPanelSettings.Controls.Add(this.textBoxSosexPath, 1, 2);
-            this.tableLayoutPanelSettings.Controls.Add(this.textBoxSosexInfo, 1, 3);
-            this.tableLayoutPanelSettings.Controls.Add(this.textBoxHelpCdb, 1, 1);
+            this.tableLayoutPanelSettings.Controls.Add(this.panelHelpCDB, 1, 1);
+            this.tableLayoutPanelSettings.Controls.Add(this.panelHelpSOSEX, 1, 3);
             this.tableLayoutPanelSettings.Dock = System.Windows.Forms.DockStyle.Fill;
             this.tableLayoutPanelSettings.Location = new System.Drawing.Point(3, 3);
             this.tableLayoutPanelSettings.Name = "tableLayoutPanelSettings";
             this.tableLayoutPanelSettings.RowStyles.Add(new System.Windows.Forms.RowStyle());
             this.tableLayoutPanelSettings.RowStyles.Add(new System.Windows.Forms.RowStyle());
             this.tableLayoutPanelSettings.RowStyles.Add(new System.Windows.Forms.RowStyle());
-            this.tableLayoutPanelSettings.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
+            this.tableLayoutPanelSettings.RowStyles.Add(new System.Windows.Forms.RowStyle());
             this.tableLayoutPanelSettings.Size = new System.Drawing.Size(945, 603);
             this.tableLayoutPanelSettings.TabIndex = 0;
             // 
             // 
             this.labelSosexPath.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
             this.labelSosexPath.AutoSize = true;
-            this.labelSosexPath.Location = new System.Drawing.Point(3, 113);
+            this.labelSosexPath.Location = new System.Drawing.Point(3, 142);
             this.labelSosexPath.Name = "labelSosexPath";
             this.labelSosexPath.Size = new System.Drawing.Size(70, 13);
             this.labelSosexPath.TabIndex = 0;
             // textBoxSosexPath
             // 
             this.textBoxSosexPath.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
-            this.textBoxSosexPath.Location = new System.Drawing.Point(79, 110);
+            this.textBoxSosexPath.Location = new System.Drawing.Point(79, 139);
             this.textBoxSosexPath.Name = "textBoxSosexPath";
             this.textBoxSosexPath.Size = new System.Drawing.Size(863, 20);
             this.textBoxSosexPath.TabIndex = 1;
             // 
-            // textBoxSosexInfo
+            // panelHelpCDB
             // 
-            this.textBoxSosexInfo.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+            this.panelHelpCDB.BackColor = System.Drawing.Color.RoyalBlue;
+            this.panelHelpCDB.Controls.Add(this.tableLayoutPanelHelpCDB);
+            this.panelHelpCDB.Location = new System.Drawing.Point(79, 29);
+            this.panelHelpCDB.Name = "panelHelpCDB";
+            this.panelHelpCDB.Padding = new System.Windows.Forms.Padding(2);
+            this.panelHelpCDB.Size = new System.Drawing.Size(380, 104);
+            this.panelHelpCDB.TabIndex = 11;
+            // 
+            // tableLayoutPanelHelpCDB
+            // 
+            this.tableLayoutPanelHelpCDB.BackColor = System.Drawing.Color.GhostWhite;
+            this.tableLayoutPanelHelpCDB.ColumnCount = 2;
+            this.tableLayoutPanelHelpCDB.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
+            this.tableLayoutPanelHelpCDB.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
+            this.tableLayoutPanelHelpCDB.Controls.Add(this.pictureBoxHelpCDB, 0, 0);
+            this.tableLayoutPanelHelpCDB.Controls.Add(this.labelCDBHelp1, 1, 0);
+            this.tableLayoutPanelHelpCDB.Controls.Add(this.linkLabelCDBHelp2, 1, 1);
+            this.tableLayoutPanelHelpCDB.Controls.Add(this.linkLabelCDBHelp3, 1, 2);
+            this.tableLayoutPanelHelpCDB.Controls.Add(this.linkLabelCDBHelp5, 1, 4);
+            this.tableLayoutPanelHelpCDB.Controls.Add(this.labelCDBHelp4, 1, 3);
+            this.tableLayoutPanelHelpCDB.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.tableLayoutPanelHelpCDB.Location = new System.Drawing.Point(2, 2);
+            this.tableLayoutPanelHelpCDB.Name = "tableLayoutPanelHelpCDB";
+            this.tableLayoutPanelHelpCDB.RowCount = 6;
+            this.tableLayoutPanelHelpCDB.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
+            this.tableLayoutPanelHelpCDB.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
+            this.tableLayoutPanelHelpCDB.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
+            this.tableLayoutPanelHelpCDB.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
+            this.tableLayoutPanelHelpCDB.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
+            this.tableLayoutPanelHelpCDB.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
+            this.tableLayoutPanelHelpCDB.Size = new System.Drawing.Size(376, 100);
+            this.tableLayoutPanelHelpCDB.TabIndex = 10;
+            // 
+            // pictureBoxHelpCDB
+            // 
+            this.pictureBoxHelpCDB.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
                         | System.Windows.Forms.AnchorStyles.Left)
                         | System.Windows.Forms.AnchorStyles.Right)));
-            this.textBoxSosexInfo.Location = new System.Drawing.Point(79, 136);
-            this.textBoxSosexInfo.Multiline = true;
-            this.textBoxSosexInfo.Name = "textBoxSosexInfo";
-            this.textBoxSosexInfo.ReadOnly = true;
-            this.textBoxSosexInfo.Size = new System.Drawing.Size(863, 50);
-            this.textBoxSosexInfo.TabIndex = 3;
-            this.textBoxSosexInfo.Text = "You can download Sosex from :\r\n- http://www.stevestechspot.com/downloads/sosex_64" +
-                ".zip\r\n- http://www.stevestechspot.com/downloads/sosex_32.zip";
+            this.pictureBoxHelpCDB.Image = global::SOS.Net.Properties.Resources.help;
+            this.pictureBoxHelpCDB.Location = new System.Drawing.Point(3, 3);
+            this.pictureBoxHelpCDB.Name = "pictureBoxHelpCDB";
+            this.tableLayoutPanelHelpCDB.SetRowSpan(this.pictureBoxHelpCDB, 2);
+            this.pictureBoxHelpCDB.Size = new System.Drawing.Size(16, 34);
+            this.pictureBoxHelpCDB.TabIndex = 0;
+            this.pictureBoxHelpCDB.TabStop = false;
+            // 
+            // labelCDBHelp1
+            // 
+            this.labelCDBHelp1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
+            this.labelCDBHelp1.AutoSize = true;
+            this.labelCDBHelp1.Location = new System.Drawing.Point(25, 3);
+            this.labelCDBHelp1.Name = "labelCDBHelp1";
+            this.labelCDBHelp1.Size = new System.Drawing.Size(348, 13);
+            this.labelCDBHelp1.TabIndex = 5;
+            this.labelCDBHelp1.Text = "You can download CDB/WinDBG from:";
+            // 
+            // linkLabelCDBHelp2
+            // 
+            this.linkLabelCDBHelp2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
+            this.linkLabelCDBHelp2.AutoSize = true;
+            this.linkLabelCDBHelp2.Location = new System.Drawing.Point(25, 20);
+            this.linkLabelCDBHelp2.Name = "linkLabelCDBHelp2";
+            this.linkLabelCDBHelp2.Size = new System.Drawing.Size(348, 20);
+            this.linkLabelCDBHelp2.TabIndex = 6;
+            this.linkLabelCDBHelp2.TabStop = true;
+            this.linkLabelCDBHelp2.Text = "http://www.microsoft.com/whdc/devtools/debugging/installx86.mspx#a";
+            this.linkLabelCDBHelp2.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel_LinkClicked);
+            // 
+            // linkLabelCDBHelp3
+            // 
+            this.linkLabelCDBHelp3.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
+            this.linkLabelCDBHelp3.AutoSize = true;
+            this.linkLabelCDBHelp3.Location = new System.Drawing.Point(25, 40);
+            this.linkLabelCDBHelp3.Name = "linkLabelCDBHelp3";
+            this.linkLabelCDBHelp3.Size = new System.Drawing.Size(348, 20);
+            this.linkLabelCDBHelp3.TabIndex = 6;
+            this.linkLabelCDBHelp3.TabStop = true;
+            this.linkLabelCDBHelp3.Text = "http://www.microsoft.com/whdc/devtools/debugging/install64bit.mspx#";
+            this.linkLabelCDBHelp3.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel_LinkClicked);
+            // 
+            // linkLabelCDBHelp5
+            // 
+            this.linkLabelCDBHelp5.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
+            this.linkLabelCDBHelp5.AutoSize = true;
+            this.linkLabelCDBHelp5.Location = new System.Drawing.Point(25, 83);
+            this.linkLabelCDBHelp5.Name = "linkLabelCDBHelp5";
+            this.linkLabelCDBHelp5.Size = new System.Drawing.Size(348, 13);
+            this.linkLabelCDBHelp5.TabIndex = 8;
+            this.linkLabelCDBHelp5.TabStop = true;
+            this.linkLabelCDBHelp5.Text = "http://www.microsoft.com/whdc/Devtools/Debugging/default.mspx ";
+            this.linkLabelCDBHelp5.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel_LinkClicked);
+            // 
+            // labelCDBHelp4
+            // 
+            this.labelCDBHelp4.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
+            this.labelCDBHelp4.AutoSize = true;
+            this.labelCDBHelp4.Location = new System.Drawing.Point(25, 63);
+            this.labelCDBHelp4.Name = "labelCDBHelp4";
+            this.labelCDBHelp4.Size = new System.Drawing.Size(348, 13);
+            this.labelCDBHelp4.TabIndex = 7;
+            this.labelCDBHelp4.Text = "For more information:";
+            // 
+            // panelHelpSOSEX
+            // 
+            this.panelHelpSOSEX.BackColor = System.Drawing.Color.RoyalBlue;
+            this.panelHelpSOSEX.Controls.Add(this.tableLayoutPanelHELPSOSEX);
+            this.panelHelpSOSEX.Location = new System.Drawing.Point(79, 165);
+            this.panelHelpSOSEX.Name = "panelHelpSOSEX";
+            this.panelHelpSOSEX.Padding = new System.Windows.Forms.Padding(2);
+            this.panelHelpSOSEX.Size = new System.Drawing.Size(380, 104);
+            this.panelHelpSOSEX.TabIndex = 12;
+            // 
+            // tableLayoutPanelHELPSOSEX
+            // 
+            this.tableLayoutPanelHELPSOSEX.BackColor = System.Drawing.Color.GhostWhite;
+            this.tableLayoutPanelHELPSOSEX.ColumnCount = 2;
+            this.tableLayoutPanelHELPSOSEX.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
+            this.tableLayoutPanelHELPSOSEX.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
+            this.tableLayoutPanelHELPSOSEX.Controls.Add(this.pictureBoxHelpSOSEX, 0, 0);
+            this.tableLayoutPanelHELPSOSEX.Controls.Add(this.labelSOSEXHelp1, 1, 0);
+            this.tableLayoutPanelHELPSOSEX.Controls.Add(this.linkLabelSOSEXHelp2, 1, 1);
+            this.tableLayoutPanelHELPSOSEX.Controls.Add(this.linkLabelSOSEXHelp3, 1, 2);
+            this.tableLayoutPanelHELPSOSEX.Controls.Add(this.linkLabelSOSEXHelp5, 1, 4);
+            this.tableLayoutPanelHELPSOSEX.Controls.Add(this.labelSOSEXHelp4, 1, 3);
+            this.tableLayoutPanelHELPSOSEX.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.tableLayoutPanelHELPSOSEX.Location = new System.Drawing.Point(2, 2);
+            this.tableLayoutPanelHELPSOSEX.Name = "tableLayoutPanelHELPSOSEX";
+            this.tableLayoutPanelHELPSOSEX.RowCount = 6;
+            this.tableLayoutPanelHELPSOSEX.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
+            this.tableLayoutPanelHELPSOSEX.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
+            this.tableLayoutPanelHELPSOSEX.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
+            this.tableLayoutPanelHELPSOSEX.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
+            this.tableLayoutPanelHELPSOSEX.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
+            this.tableLayoutPanelHELPSOSEX.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
+            this.tableLayoutPanelHELPSOSEX.Size = new System.Drawing.Size(376, 100);
+            this.tableLayoutPanelHELPSOSEX.TabIndex = 10;
+            // 
+            // pictureBoxHelpSOSEX
+            // 
+            this.pictureBoxHelpSOSEX.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+                        | System.Windows.Forms.AnchorStyles.Left)
+                        | System.Windows.Forms.AnchorStyles.Right)));
+            this.pictureBoxHelpSOSEX.Image = global::SOS.Net.Properties.Resources.help;
+            this.pictureBoxHelpSOSEX.Location = new System.Drawing.Point(3, 3);
+            this.pictureBoxHelpSOSEX.Name = "pictureBoxHelpSOSEX";
+            this.tableLayoutPanelHELPSOSEX.SetRowSpan(this.pictureBoxHelpSOSEX, 2);
+            this.pictureBoxHelpSOSEX.Size = new System.Drawing.Size(16, 34);
+            this.pictureBoxHelpSOSEX.TabIndex = 0;
+            this.pictureBoxHelpSOSEX.TabStop = false;
+            // 
+            // labelSOSEXHelp1
+            // 
+            this.labelSOSEXHelp1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
+            this.labelSOSEXHelp1.AutoSize = true;
+            this.labelSOSEXHelp1.Location = new System.Drawing.Point(25, 3);
+            this.labelSOSEXHelp1.Name = "labelSOSEXHelp1";
+            this.labelSOSEXHelp1.Size = new System.Drawing.Size(348, 13);
+            this.labelSOSEXHelp1.TabIndex = 5;
+            this.labelSOSEXHelp1.Text = "You can downloadSOSEX from:";
+            // 
+            // linkLabelSOSEXHelp2
+            // 
+            this.linkLabelSOSEXHelp2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
+            this.linkLabelSOSEXHelp2.AutoSize = true;
+            this.linkLabelSOSEXHelp2.Location = new System.Drawing.Point(25, 23);
+            this.linkLabelSOSEXHelp2.Name = "linkLabelSOSEXHelp2";
+            this.linkLabelSOSEXHelp2.Size = new System.Drawing.Size(348, 13);
+            this.linkLabelSOSEXHelp2.TabIndex = 6;
+            this.linkLabelSOSEXHelp2.TabStop = true;
+            this.linkLabelSOSEXHelp2.Text = "http://www.stevestechspot.com/downloads/sosex_32.zip\r\n";
+            this.linkLabelSOSEXHelp2.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel_LinkClicked);
+            // 
+            // linkLabelSOSEXHelp3
+            // 
+            this.linkLabelSOSEXHelp3.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
+            this.linkLabelSOSEXHelp3.AutoSize = true;
+            this.linkLabelSOSEXHelp3.Location = new System.Drawing.Point(25, 43);
+            this.linkLabelSOSEXHelp3.Name = "linkLabelSOSEXHelp3";
+            this.linkLabelSOSEXHelp3.Size = new System.Drawing.Size(348, 13);
+            this.linkLabelSOSEXHelp3.TabIndex = 6;
+            this.linkLabelSOSEXHelp3.TabStop = true;
+            this.linkLabelSOSEXHelp3.Text = "http://www.stevestechspot.com/downloads/sosex_64.zip";
+            this.linkLabelSOSEXHelp3.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel_LinkClicked);
+            // 
+            // linkLabelSOSEXHelp5
+            // 
+            this.linkLabelSOSEXHelp5.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
+            this.linkLabelSOSEXHelp5.AutoSize = true;
+            this.linkLabelSOSEXHelp5.Location = new System.Drawing.Point(25, 83);
+            this.linkLabelSOSEXHelp5.Name = "linkLabelSOSEXHelp5";
+            this.linkLabelSOSEXHelp5.Size = new System.Drawing.Size(348, 13);
+            this.linkLabelSOSEXHelp5.TabIndex = 8;
+            this.linkLabelSOSEXHelp5.TabStop = true;
+            this.linkLabelSOSEXHelp5.Text = "http://www.stevestechspot.com";
+            this.linkLabelSOSEXHelp5.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel_LinkClicked);
+            // 
+            // labelSOSEXHelp4
+            // 
+            this.labelSOSEXHelp4.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
+            this.labelSOSEXHelp4.AutoSize = true;
+            this.labelSOSEXHelp4.Location = new System.Drawing.Point(25, 63);
+            this.labelSOSEXHelp4.Name = "labelSOSEXHelp4";
+            this.labelSOSEXHelp4.Size = new System.Drawing.Size(348, 13);
+            this.labelSOSEXHelp4.TabIndex = 9;
+            this.labelSOSEXHelp4.Text = "For more information:";
             // 
             // toolStripSettings
             // 
             this.toolStripSplitButtonRefresh,
             this.toolStripButtonAttach,
             this.toolStripButtonDetach,
-            this.toolStripButtonSaveSettings});
+            this.toolStripButtonSaveSettings,
+            this.toolStripButtonHelp});
             this.toolStripSettings.Location = new System.Drawing.Point(0, 0);
             this.toolStripSettings.Name = "toolStripSettings";
             this.toolStripSettings.Size = new System.Drawing.Size(959, 25);
             this.toolStripButtonSaveSettings.Text = "Save settings";
             this.toolStripButtonSaveSettings.Click += new System.EventHandler(this.toolStripButtonSaveSettings_Click);
             // 
+            // toolStripButtonHelp
+            // 
+            this.toolStripButtonHelp.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.aboutToolStripMenuItem,
+            this.helpOnlineToolStripMenuItem});
+            this.toolStripButtonHelp.Image = global::SOS.Net.Properties.Resources.help;
+            this.toolStripButtonHelp.ImageTransparentColor = System.Drawing.Color.Magenta;
+            this.toolStripButtonHelp.Name = "toolStripButtonHelp";
+            this.toolStripButtonHelp.Size = new System.Drawing.Size(64, 22);
+            this.toolStripButtonHelp.Text = "Help";
+            this.toolStripButtonHelp.ButtonClick += new System.EventHandler(this.toolStripButtonHelp_ButtonClick);
+            // 
+            // aboutToolStripMenuItem
+            // 
+            this.aboutToolStripMenuItem.Name = "aboutToolStripMenuItem";
+            this.aboutToolStripMenuItem.Size = new System.Drawing.Size(144, 22);
+            this.aboutToolStripMenuItem.Text = "About...";
+            this.aboutToolStripMenuItem.Click += new System.EventHandler(this.aboutToolStripMenuItem_Click);
+            // 
+            // helpOnlineToolStripMenuItem
+            // 
+            this.helpOnlineToolStripMenuItem.Name = "helpOnlineToolStripMenuItem";
+            this.helpOnlineToolStripMenuItem.Size = new System.Drawing.Size(144, 22);
+            this.helpOnlineToolStripMenuItem.Text = "Help online...";
+            this.helpOnlineToolStripMenuItem.Click += new System.EventHandler(this.helpOnlineToolStripMenuItem_Click);
+            // 
             // timerFilter
             // 
             this.timerFilter.Interval = 500;
             this.timerTypeFilter.Interval = 500;
             this.timerTypeFilter.Tick += new System.EventHandler(this.timerTypeFilter_Tick);
             // 
-            // textBoxHelpCdb
+            // labelObjectDumpAddress
             // 
-            this.textBoxHelpCdb.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
-                        | System.Windows.Forms.AnchorStyles.Left)
-                        | System.Windows.Forms.AnchorStyles.Right)));
-            this.textBoxHelpCdb.Location = new System.Drawing.Point(79, 29);
-            this.textBoxHelpCdb.Multiline = true;
-            this.textBoxHelpCdb.Name = "textBoxHelpCdb";
-            this.textBoxHelpCdb.ReadOnly = true;
-            this.textBoxHelpCdb.Size = new System.Drawing.Size(863, 75);
-            this.textBoxHelpCdb.TabIndex = 4;
-            this.textBoxHelpCdb.Text = resources.GetString("textBoxHelpCdb.Text");
+            this.labelObjectDumpAddress.AutoSize = true;
+            this.labelObjectDumpAddress.Location = new System.Drawing.Point(7, 9);
+            this.labelObjectDumpAddress.Name = "labelObjectDumpAddress";
+            this.labelObjectDumpAddress.Size = new System.Drawing.Size(48, 13);
+            this.labelObjectDumpAddress.TabIndex = 0;
+            this.labelObjectDumpAddress.Text = "Address:";
+            // 
+            // textBoxObjectDumpAddress
+            // 
+            this.textBoxObjectDumpAddress.Location = new System.Drawing.Point(102, 6);
+            this.textBoxObjectDumpAddress.Name = "textBoxObjectDumpAddress";
+            this.textBoxObjectDumpAddress.ReadOnly = true;
+            this.textBoxObjectDumpAddress.Size = new System.Drawing.Size(180, 20);
+            this.textBoxObjectDumpAddress.TabIndex = 1;
             // 
             // FormMain
             // 
             this.tabPageSettings.ResumeLayout(false);
             this.tableLayoutPanelSettings.ResumeLayout(false);
             this.tableLayoutPanelSettings.PerformLayout();
+            this.panelHelpCDB.ResumeLayout(false);
+            this.tableLayoutPanelHelpCDB.ResumeLayout(false);
+            this.tableLayoutPanelHelpCDB.PerformLayout();
+            ((System.ComponentModel.ISupportInitialize)(this.pictureBoxHelpCDB)).EndInit();
+            this.panelHelpSOSEX.ResumeLayout(false);
+            this.tableLayoutPanelHELPSOSEX.ResumeLayout(false);
+            this.tableLayoutPanelHELPSOSEX.PerformLayout();
+            ((System.ComponentModel.ISupportInitialize)(this.pictureBoxHelpSOSEX)).EndInit();
             this.toolStripSettings.ResumeLayout(false);
             this.toolStripSettings.PerformLayout();
             this.ResumeLayout(false);
         private System.Windows.Forms.ColumnHeader columnHeaderHeapInstanceCount;
         private System.Windows.Forms.ColumnHeader columnHeaderHeapTotalSize;
         private System.Windows.Forms.ColumnHeader columnHeaderHeapTypeName;
-        private System.Windows.Forms.TextBox textBoxSosexInfo;
         private System.Windows.Forms.ListView listViewInstances;
         private System.Windows.Forms.ColumnHeader columnHeaderInstanceAddress;
         private System.Windows.Forms.ColumnHeader columnHeaderInstanceSite;
         private System.Windows.Forms.ListView listViewFieldArray;
         private System.Windows.Forms.ColumnHeader columnHeaderFieldArrayNumber;
         private System.Windows.Forms.ColumnHeader columnHeaderFieldArrayAddress;
-        private System.Windows.Forms.TextBox textBoxHelpCdb;
+        private System.Windows.Forms.ToolStripSplitButton toolStripButtonHelp;
+        private System.Windows.Forms.ToolStripMenuItem aboutToolStripMenuItem;
+        private System.Windows.Forms.ToolStripMenuItem helpOnlineToolStripMenuItem;
+        private System.Windows.Forms.Label labelCDBHelp1;
+        private System.Windows.Forms.LinkLabel linkLabelCDBHelp2;
+        private System.Windows.Forms.LinkLabel linkLabelCDBHelp3;
+        private System.Windows.Forms.Label labelCDBHelp4;
+        private System.Windows.Forms.LinkLabel linkLabelCDBHelp5;
+        private System.Windows.Forms.Label labelSOSEXHelp1;
+        private System.Windows.Forms.LinkLabel linkLabelSOSEXHelp2;
+        private System.Windows.Forms.LinkLabel linkLabelSOSEXHelp3;
+        private System.Windows.Forms.Label labelSOSEXHelp4;
+        private System.Windows.Forms.LinkLabel linkLabelSOSEXHelp5;
+        private System.Windows.Forms.TableLayoutPanel tableLayoutPanelHelpCDB;
+        private System.Windows.Forms.Panel panelHelpCDB;
+        private System.Windows.Forms.PictureBox pictureBoxHelpCDB;
+        private System.Windows.Forms.Panel panelHelpSOSEX;
+        private System.Windows.Forms.TableLayoutPanel tableLayoutPanelHELPSOSEX;
+        private System.Windows.Forms.PictureBox pictureBoxHelpSOSEX;
+        private System.Windows.Forms.TextBox textBoxObjectDumpAddress;
+        private System.Windows.Forms.Label labelObjectDumpAddress;
     }
 }
 
 using System;
+using System.Collections;
 using System.Collections.Generic;
 using System.ComponentModel;
 using System.Data;
             button.Font = new Font(button.Font, FontStyle.Bold);
             string address = ((ObjectInfo)button.Tag).Address;
             string index = ((ObjectInfo)button.Tag).Index;
+            string type = ((ObjectInfo) button.Tag).Name;
 
             if (string.IsNullOrEmpty(index))
             {
                 this.textBoxObjectDumpType.Text = instanceInfo.Name;
                 this.textBoxObjectDumpToString.Text = instanceInfo.String;
                 this.textBoxObjectDumpSize.Text = instanceInfo.TrueSize;
+                this.textBoxObjectDumpAddress.Text = instanceInfo.Address;
             }
             else
             {
                 this.textBoxObjectDumpType.Text = instanceInfo.Name;
                 this.textBoxObjectDumpToString.Text = instanceInfo.String;
                 this.textBoxObjectDumpSize.Text = instanceInfo.TrueSize;
+                this.textBoxObjectDumpAddress.Text = instanceInfo.Address;
             }
+
+            if (type.EndsWith("[]") || type.Equals("SZARRAY"))
+            {
+                // the type is an array, display the collection
+                this.splitContainerObjectDumpDetails.Panel2Collapsed = false;
+                this.listViewFieldArray.BeginUpdate();
+                this.listViewFieldArray.Items.Clear();
+                this.listViewFieldArray.Items.AddRange(this.controller.GetArrayInstances(address));
+                this.listViewFieldArray.EndUpdate();
+            }
+            else
+            {
+                this.splitContainerObjectDumpDetails.Panel2Collapsed = true;
+            }
+
             currentInstance = ((ObjectInfo)button.Tag);
         }
 
             {
                 var selected = this.listViewFieldArray.Items[this.listViewFieldArray.SelectedIndices[0]];
 
-                var selectedField = this.listViewObjectDump.Items[this.listViewObjectDump.SelectedIndices[0]];
+                string address;
+                if (textBoxObjectDumpType.Text.EndsWith("[]") || textBoxObjectDumpType.Text.Equals("SZARRAY"))
+                {
+                    address = this.textBoxObjectDumpAddress.Text;
+                }
+                else
+                {
+                    var selectedField = this.listViewObjectDump.Items[this.listViewObjectDump.SelectedIndices[0]];
+                    address = selectedField.SubItems[3].Text;
+                }                
 
                 this.splitContainerObjectDumpDetails.Panel2Collapsed = true;
-                Button newInstance = CreateInstanceButton(selectedField.SubItems[3].Text, selected.SubItems[0].Text);
+                Button newInstance = CreateInstanceButton(address, selected.SubItems[0].Text);
                 this.DisplayInstanceDetails(newInstance);
             }
         }
+
+        private void helpOnlineToolStripMenuItem_Click(object sender, EventArgs e)
+        {
+            Help.ShowHelp(this, "http://bitbucket.org/grozeille/sosnet/wiki/Home");
+        }
+
+        private void aboutToolStripMenuItem_Click(object sender, EventArgs e)
+        {
+            new AboutForm().ShowDialog();
+        }
+
+        private void linkLabel_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
+        {
+            Help.ShowHelp(this, (sender as LinkLabel).Text);
+        }
+
+        private void toolStripButtonHelp_ButtonClick(object sender, EventArgs e)
+        {
+            new AboutForm().ShowDialog();
+        }
+
+        private void listView_ColumnClick(object sender, ColumnClickEventArgs e)
+        {
+            var listview = (ListView)sender;
+
+            // Create an instance of the ColHeader class.
+            ColumnHeader clickedCol = (ColumnHeader)listview.Columns[e.Column];
+
+            // Set the ascending property to sort in the opposite order.
+            if (clickedCol.Tag == null)
+                clickedCol.Tag = true;
+            else
+            {
+                clickedCol.Tag = !((bool)clickedCol.Tag);
+            }
+
+
+            var ascending = (bool)clickedCol.Tag;
+
+            // Get the number of items in the list.
+            int numItems = listview.Items.Count;
+
+            // Turn off display while data is repoplulated.
+            listview.BeginUpdate();
+
+            // Populate an ArrayList with a SortWrapper of each list item.
+            ArrayList SortArray = new ArrayList();
+            for (int i = 0; i < numItems; i++)
+            {
+                SortArray.Add(new SortWrapper(listview.Items[i], e.Column));
+            }
+
+            // Sort the elements in the ArrayList using a new instance of the SortComparer
+            // class. The parameters are the starting index, the length of the range to sort,
+            // and the IComparer implementation to use for comparing elements. Note that
+            // the IComparer implementation (SortComparer) requires the sort
+            // direction for its constructor; true if ascending, othwise false.
+            SortArray.Sort(0, SortArray.Count, new SortWrapper.SortComparer(ascending));
+
+            // Clear the list, and repopulate with the sorted items.
+            listview.Items.Clear();
+            for (int i = 0; i < numItems; i++)
+                listview.Items.Add(((SortWrapper)SortArray[i]).sortItem);
+
+            // Turn display back on.
+            listview.EndUpdate();
+        }
     }
 }
   <resheader name="writer">
     <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </resheader>
-  <data name="textBoxHelpCdb.Text" xml:space="preserve">
-    <value>You can download CDB/WinDBG from:
-- http://www.microsoft.com/whdc/devtools/debugging/installx86.mspx#a
-- http://www.microsoft.com/whdc/devtools/debugging/install64bit.mspx#
-
-See http://www.microsoft.com/whdc/Devtools/Debugging/default.mspx for more information.</value>
-  </data>
   <metadata name="toolStripSettings.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
     <value>17, 17</value>
   </metadata>
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.

Properties/Resources.Designer.cs

             }
         }
         
+        internal static System.Drawing.Bitmap help {
+            get {
+                object obj = ResourceManager.GetObject("help", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to 
+        ///                                 Apache License
+        ///                           Version 2.0, January 2004
+        ///                        http://www.apache.org/licenses/
+        ///
+        ///   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+        ///
+        ///   1. Definitions.
+        ///
+        ///      &quot;License&quot; shall mean the terms and conditions for use, reproduction,
+        ///      and distribution as defined by Sections 1 through 9 of this document.
+        ///
+        ///      &quot;Licensor&quot; shall mean the copyright owner or entity authorized by
+        ///      the copyright owner that is granting t [rest of string was truncated]&quot;;.
+        /// </summary>
+        internal static string LICENSE_2_0 {
+            get {
+                return ResourceManager.GetString("LICENSE_2_0", resourceCulture);
+            }
+        }
+        
         internal static System.Drawing.Bitmap resultset_next {
             get {
                 object obj = ResourceManager.GetObject("resultset_next", resourceCulture);

Properties/Resources.resx

     <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </resheader>
   <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
-  <data name="resultset_next" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\resultset_next.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  <data name="stop" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\stop.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
   <data name="arrow_refresh" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\arrow_refresh.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   <data name="disk" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\disk.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
+  <data name="connect" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\connect.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
   <data name="disconnect" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\disconnect.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="connect" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\connect.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  <data name="resultset_next" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\resultset_next.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="stop" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\stop.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  <data name="help" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\help.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="LICENSE_2_0" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\license-2.0.txt;System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value>
   </data>
 </root>
Added
New image
     <Reference Include="System.Xml" />
   </ItemGroup>
   <ItemGroup>
+    <Compile Include="AboutForm.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="AboutForm.Designer.cs">
+      <DependentUpon>AboutForm.cs</DependentUpon>
+    </Compile>
     <Compile Include="CdbEventArgs.cs" />
     <Compile Include="Model\AppDomainInfo.cs" />
     <Compile Include="Model\ArrayInstanceInfo.cs" />
     <Compile Include="Model\TypeInfo.cs" />
     <Compile Include="Program.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
+    <EmbeddedResource Include="AboutForm.resx">
+      <DependentUpon>AboutForm.cs</DependentUpon>
+    </EmbeddedResource>
     <EmbeddedResource Include="FormMain.resx">
       <DependentUpon>FormMain.cs</DependentUpon>
     </EmbeddedResource>
       <DesignTimeSharedInput>True</DesignTimeSharedInput>
       <DependentUpon>Settings.settings</DependentUpon>
     </Compile>
+    <Compile Include="SortWrapper.cs" />
     <Compile Include="SosController.cs" />
   </ItemGroup>
   <ItemGroup>
       <LastGenOutput>Settings.Designer.cs</LastGenOutput>
     </None>
     <Content Include="bug.ico" />
+    <Content Include="LICENSE-2.0.txt" />
+    <None Include="Resources\help.png" />
     <None Include="Resources\resultset_next.png" />
     <None Include="Resources\stop.png" />
   </ItemGroup>
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Windows.Forms;
+using System.Globalization;
+
+namespace SOS.Net
+{
+    public class SortWrapper
+    {
+        internal ListViewItem sortItem;
+        internal int sortColumn;
+
+
+        // A SortWrapper requires the item and the index of the clicked column.
+        public SortWrapper(ListViewItem Item, int iColumn)
+        {
+            sortItem = Item;
+            sortColumn = iColumn;
+        }
+
+        // Text property for getting the text of an item.
+        public string Text
+        {
+            get
+            {
+                return sortItem.SubItems[sortColumn].Text;
+            }
+        }
+
+        // Implementation of the IComparer
+        // interface for sorting ArrayList items.
+        public class SortComparer : IComparer
+        {
+            bool ascending;
+
+            // Constructor requires the sort order;
+            // true if ascending, otherwise descending.
+            public SortComparer(bool asc)
+            {
+                this.ascending = asc;
+            }
+
+            // Implemnentation of the IComparer:Compare
+            // method for comparing two objects.
+            public int Compare(object x, object y)
+            {
+                SortWrapper xItem = (SortWrapper)x;
+                SortWrapper yItem = (SortWrapper)y;
+
+                string xText = xItem.sortItem.SubItems[xItem.sortColumn].Text;
+                string yText = yItem.sortItem.SubItems[yItem.sortColumn].Text;
+
+                int xInt;
+                int yInt;
+                if (int.TryParse(xText, out xInt) && int.TryParse(yText, out yInt))
+                    return xInt.CompareTo(yInt) * (this.ascending ? 1 : -1);
+                
+                return xText.CompareTo(yText) * (this.ascending ? 1 : -1);
+            }
+        }
+    }
+}
                 match = Regex.Match(line, ".*String: (.*)");
                 if (match.Success)
                 {
-                    result.String = match.Groups[1].Value;
+                    StringBuilder toString = new StringBuilder();
+                    toString.AppendLine(match.Groups[1].Value);
+
+                    // read the other lines to reach the "Fields"
+                    match = Regex.Match(line, ".*Fields: (.*)");
+                    while (!match.Success && line != null)
+                    {
+                        line = reader.ReadLine();
+                        if (line != null)
+                        {
+                            match = Regex.Match(line, ".*Fields:(.*)");
+                            if(!match.Success)
+                                toString.AppendLine(line);
+                        }
+                    }
+                    result.String = toString.ToString();
                 }
                 line = reader.ReadLine();
             }
                     match = Regex.Match(line, ".*String: (.*)");
                     if (match.Success)
                     {
-                        result.String = match.Groups[1].Value;
+                        StringBuilder toString = new StringBuilder();
+                        toString.AppendLine(match.Groups[1].Value);
+
+                        // read the other lines to reach the "Fields"
+                        match = Regex.Match(line, ".*Fields: (.*)");
+                        while (!match.Success && line != null)
+                        {
+                            line = reader.ReadLine();
+                            if (line != null)
+                            {
+                                match = Regex.Match(line, ".*Fields:(.*)");
+                                if (!match.Success)
+                                    toString.AppendLine(line);
+                            }
+                        }
+                        result.String = toString.ToString();
                     }
                     line = reader.ReadLine();
                 }                
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.