/// <summary>
            /// Compare two columns
            /// </summary>
            /// <param name="x"></param>
            /// <param name="y"></param>
            /// <returns></returns>
            public int Compare(Object x, Object y)
            {
                MM_UserInteraction X = (MM_UserInteraction)x;
                MM_UserInteraction Y = (MM_UserInteraction)y;

                if (SortColumn == 0)
                {
                    return(X.EventTime.CompareTo(Y.EventTime) * (Ascending ? 1 : -1));
                }
                else if (SortColumn == 1)
                {
                    return(X.Elem.Substation.CompareTo(Y.Elem.Substation) * (Ascending ? 1 : -1));
                }
                else if (SortColumn == 2)
                {
                    return(X.Elem.ElemType.CompareTo(Y.Elem.ElemType) * (Ascending ? 1 : -1));
                }
                else if (SortColumn == 3)
                {
                    return(X.Elem.Name.CompareTo(Y.Elem.Name) * (Ascending ? 1 : -1));
                }
                else if (SortColumn == 4)
                {
                    return(X.Action.CompareTo(Y.Action) * (Ascending ? 1 : -1));
                }
                else if (SortColumn == 5)
                {
                    return(X.NewValue.CompareTo(Y.NewValue) * (Ascending ? 1 : -1));
                }
                else
                {
                    return(X.OldValue.CompareTo(Y.OldValue) * (Ascending ? 1 : -1));
                }
            }
        /// <summary>
        /// Handle the mouse click on our component
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void lvHistory_MouseClick(object sender, MouseEventArgs e)
        {
            ListViewHitTestInfo hti = lvHistory.HitTest(e.Location);

            if (hti.Item != null && e.Button == MouseButtons.Right)
            {
                MM_UserInteraction FoundInteraction = hti.Item as MM_UserInteraction;
                MM_Substation      FoundSub         = FoundInteraction.Elem.Substation;
                if (FoundSub == null)
                {
                    return;
                }
                PopupMenu.Show(this, e.Location, FoundSub, true);
            }
        }
        /// <summary>
        /// Handle the left mouse double-click by opening up our one-line
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void lvHistory_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            ListViewHitTestInfo hti = lvHistory.HitTest(e.Location);

            if (hti.Item == null || e.Button != MouseButtons.Left)
            {
                return;
            }
            MM_UserInteraction FoundInteraction = hti.Item as MM_UserInteraction;
            MM_Substation      FoundSub         = FoundInteraction.Elem.Substation;

            if (FoundSub == null)
            {
                return;
            }
            MM_Form_Builder.OneLine_Display(FoundSub, Program.MM.ctlNetworkMap);
        }