public ICmd Exec()
        {
            var inverse = new RestoreBackgroundColor(cell, cell.getBGColor()); //create inverse object

            cell.setBGColor(BGColor);                                          //restore the cell's previous background color
            return(inverse);                                                   //return inverse object to add to the undo or redo stack
        }
        public void pushToUndoBGColorGroup(List <Cell> list) //push group of color changes to undo stack
        {
            List <ICmd> cmds = new List <ICmd>();

            for (int i = 0; i < list.Count; i++) //loop through list of cells to create list of restore background color objects
            {
                RestoreBackgroundColor temp = new RestoreBackgroundColor(list[i], list[i].getBGColor());
                cmds.Add(temp);
            }
            MultiCmd mcmd = new MultiCmd(cmds); //create new multi command object

            mcmd.setMessage(" change in background color of cells");
            undo.Push(mcmd); //add multi command object to list
        }