public static T Choose <T>(this RouterMirrorSide side, T objSideA, T objSideB, bool invert = false)
 {
     if ((!invert && (side == RouterMirrorSide.SideA)) || (invert && (side == RouterMirrorSide.SideB)))
     {
         return(objSideA);
     }
     return(objSideB);
 }
        private void syncButtonClickMethod(RouterMirror routerMirror, RouterMirrorSide sourceSide)
        {
            if ((routerMirror.RouterA == null) || (routerMirror.RouterB == null))
            {
                return;
            }
            Router sourceRouter      = sourceSide.Choose(routerMirror.RouterA, routerMirror.RouterB);
            Router destinationRouter = sourceSide.Choose(routerMirror.RouterA, routerMirror.RouterB, true);
            string messageBoxText    = string.Format("Are sure you want to synchronize crosspoints from router [(#{0}) {1}] to router [(#{2}) {3}]?",
                                                     sourceRouter.ID, sourceRouter.Name, destinationRouter.ID, destinationRouter.Name);

            if (MessageBox.Show(messageBoxText, "Router synchronization", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
            {
                routerMirror.Synchronize(sourceSide);
            }
        }
        private void routerRefCellUpdaterMethod(RouterMirror routerMirror, DataGridViewCell cell, RouterMirrorSide side)
        {
            Router router = side.Choose(routerMirror.RouterA, routerMirror.RouterB);

            if (router == null)
            {
                cell.Value = "-";
                return;
            }
            cell.Value = string.Format("(#{0}) {1}", router.ID, router.Name);
        }