private void model_UpdateTable(Object sender, ReversiUpdateTableEventArgs e)
        {
            _eventUpdateTableInvoked = true;

            if (!_simpleEvents)
            {
                _lastUpdateArg = e;
                updateStepsArray();
            }
        }
 /// <summary>
 /// Invoke the 'UpdateTable' event handler if it is set.
 /// </summary>
 /// <param name="arg">The event hadler argumentum.</param>
 private void OnUpdateTable(ReversiUpdateTableEventArgs arg)
 {
     if (UpdateTable != null)
     {
         UpdateTable(this, arg);
     }
 }
        /// <summary>
        /// The model told us to update the table.
        /// </summary>
        /// <param name="sender">The _model object, we do not use it as a param.</param>
        /// <param name="e">Read about it at the ReversiUpdateTableEventArgs consturctor.</param>
        private void model_UpdateTable(Object sender, ReversiUpdateTableEventArgs e)
        {
            _toolStripStatusLabel.Text = "Player 1: " + e.Player1Points.ToString() + " -- Player 2: " + e.Player2Points.ToString();

            _isPlayer1TurnOn = e.IsPlayer1TurnOn;
            _passButton.Enabled = e.IsPassingTurnOn;

            if (e.UpdatedFieldsCount == 0)
            {
                setButtonGridUp();

                Int32 index = 0;
                for (Int32 x = 0; x < _model.ActiveTableSize; ++x)
                {
                    for (Int32 y = 0; y < _model.ActiveTableSize; ++y)
                    {
                        updateButtonGrid(x, y, e.UpdatedFieldsDatas[index]);
                        ++index;
                    }
                } 
            }
            else
            {
                for (Int32 i = 0; i < e.UpdatedFieldsCount; i += 3)
                {
                    updateButtonGrid(e.UpdatedFieldsDatas[i], e.UpdatedFieldsDatas[i + 1], e.UpdatedFieldsDatas[i + 2]);
                }
            }
        }