//------------------------------------------------------------------------------
// <copyright file=”*.cs” company=”EhLib Team”>
//     Copyright (c) 2017 Dmitry V. Bolshakov   
// </copyright>
//------------------------------------------------------------------------------

using System;
using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;
using System.Windows.Forms.VisualStyles;
using System.Drawing.Drawing2D;

namespace EhLib
{

  public class DataGridIndicatorCellPaintEventArgs : BaseGridCellPaintEventArgs
  {
    private readonly DataGridRow dataRowIndex;

    public DataGridIndicatorCellPaintEventArgs(BaseGridCellManager cellManager, Graphics graphics, int colIndex, int rowIndex,
      Rectangle cellRect, BasePaintCellStates state, int areaColIndex, int areaRowIndex, Point inCellMousePos, DataGridRow dataRowIndex)
      : base (cellManager, graphics, colIndex, rowIndex, cellRect, state, areaColIndex, areaRowIndex, inCellMousePos)
    {
      this.dataRowIndex = dataRowIndex;
    }

    public DataGridRow Row
    {
      get { return dataRowIndex; }
    }
  }

  public class DataGridIndicatorCellMouseEventArgs : BaseGridCellMouseEventArgs
  {
    private readonly DataGridRow row;

    public DataGridIndicatorCellMouseEventArgs(BaseGridCellManager cellManager, int colIndex, int rowIndex,
      int areaColIndex, int areaRowIndex, int inCellX, int inCellY,Rectangle cellRect,
      MouseEventArgs e, DataGridRow row)
      : base(cellManager, colIndex, rowIndex, areaColIndex, areaRowIndex, inCellX, inCellY, cellRect, e)
    {
      this.row = row;
    }

    public DataGridRow Row
    {
      get { return row; }
    }
  }

  public class DataGridIndicatorCellEventArgs : BaseGridCellEventArgs
  {
    private readonly DataGridRow row;

    public DataGridIndicatorCellEventArgs(
      int colIndex, int rowIndex, int areaColIndex, int areaRowIndex, Rectangle cellRect, DataGridRow row)
      : base(colIndex, rowIndex, areaColIndex, areaRowIndex, cellRect)
    {
      this.row = row;
    }

    public DataGridRow Row
    {
      get { return row; }
    }
  }

  public class DataGridIndicatorCellWidthNeededEventArgs : DataGridIndicatorCellEventArgs
  {
    int cellWidth;

    public DataGridIndicatorCellWidthNeededEventArgs(
      int colIndex, int rowIndex, int areaColIndex, int areaRowIndex, Rectangle cellRect, DataGridRow row, int cellWidth)
      : base(colIndex, rowIndex, areaColIndex, areaRowIndex, cellRect, row)
    {
      this.cellWidth = cellWidth;
    }

    public int CellWidth 
    {
      get { return cellWidth; }
      set { cellWidth = value; }
    }
  }

  public class DataGridIndicatorCellHeightNeededEventArgs : DataGridIndicatorCellEventArgs
  {
    int cellHeight;

    public DataGridIndicatorCellHeightNeededEventArgs(
      int colIndex, int rowIndex, int areaColIndex, int areaRowIndex, Rectangle cellRect, DataGridRow row, int cellHeight)
      : base(colIndex, rowIndex, areaColIndex, areaRowIndex, cellRect, row)
    {
      this.cellHeight = cellHeight;
    }

    public int CellHeight
    {
      get { return cellHeight; }
      set { cellHeight = value; }
    }
  }

  public class DataGridIndicatorCellEnterEventArgs : BaseGridCellEnterEventArgs
  {
    private readonly DataGridRow row;

    public DataGridIndicatorCellEnterEventArgs(
      int colIndex, int rowIndex, int areaColIndex, int areaRowIndex, Rectangle cellRect, int leaveColIndex, int leaveRowIndex, DataGridRow row)
      : base(colIndex, rowIndex, areaColIndex, areaRowIndex, cellRect, leaveColIndex, leaveRowIndex)
    {
      this.row = row;
    }

    public DataGridRow Row
    {
      get { return row; }
    }
  }

  public class DataGridIndicatorCellLeaveEventArgs : BaseGridCellLeaveEventArgs
  {
    private readonly DataGridRow row;

    public DataGridIndicatorCellLeaveEventArgs(
      int colIndex, int rowIndex, int areaColIndex, int areaRowIndex, Rectangle cellRect, int enterColIndex, int enterRowIndex, DataGridRow row)
      : base(colIndex, rowIndex, areaColIndex, areaRowIndex, cellRect, enterColIndex, enterRowIndex)
    {
      this.row = row;
    }

    public DataGridRow Row
    {
      get { return row; }
    }
  }

}