//#########################################################################################
//★★★★★★★ http://www.cnpopsoft.com [华普软件] ★★★★★★★
//★★★★★★★ 华普软件 - VB & C#.NET 专业论文与源码荟萃! ★★★★★★★
//#########################################################################################
/*
* Copyright ?2005, Mathew Hall
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
* - Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* - Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
* OF SUCH DAMAGE.
*/
using System;
using System.Drawing;
using XPTable.Models;
namespace XPTable.Events
{
#region Delegates
///
/// Represents the methods that will handle the SelectionChanged event of a TableModel
///
public delegate void SelectionEventHandler(object sender, SelectionEventArgs e);
#endregion
#region SelectionEventArgs
///
/// Provides data for a TableModel's SelectionChanged event
///
public class SelectionEventArgs : EventArgs
{
#region Class Data
///
/// The TableModel that Raised the event
///
private TableModel source;
///
/// The previously selected Row indicies
///
private int[] oldSelectedIndicies;
///
/// The newly selected Row indicies
///
private int[] newSelectedIndicies;
///
/// The Rectangle that bounds the previously selected Rows
///
private Rectangle oldSelectionBounds;
///
/// The Rectangle that bounds the newly selected Rows
///
private Rectangle newSelectionBounds;
#endregion
#region Constructor
///
/// Initializes a new instance of the SelectionEventArgs class with
/// the specified TableModel source, old selected indicies and new
/// selected indicies
///
/// The TableModel that originated the event
/// An array of the previously selected Rows
/// An array of the newly selected Rows
public SelectionEventArgs(TableModel source, int[] oldSelectedIndicies, int[] newSelectedIndicies) : base()
{
if (source == null)
{
throw new ArgumentNullException("source", "TableModel cannot be null");
}
this.source = source;
this.oldSelectedIndicies = oldSelectedIndicies;
this.newSelectedIndicies = newSelectedIndicies;
this.oldSelectionBounds = Rectangle.Empty;
this.newSelectionBounds = Rectangle.Empty;
if (oldSelectedIndicies.Length > 0)
{
this.oldSelectionBounds = source.Selections.CalcSelectionBounds(oldSelectedIndicies[0],
oldSelectedIndicies[oldSelectedIndicies.Length-1]);
}
if (newSelectedIndicies.Length > 0)
{
this.newSelectionBounds = source.Selections.CalcSelectionBounds(newSelectedIndicies[0],
newSelectedIndicies[newSelectedIndicies.Length-1]);
}
}
#endregion
#region Properties
///
/// Gets the TableModel that Raised the event
///
public TableModel TableModel
{
get
{
return this.source;
}
}
///
/// Gets the previously selected Row indicies
///
public int[] OldSelectedIndicies
{
get
{
return this.oldSelectedIndicies;
}
}
///
/// Gets the newly selected Row indicies
///
public int[] NewSelectedIndicies
{
get
{
return this.newSelectedIndicies;
}
}
///
/// Gets the Rectangle that bounds the previously selected Rows
///
internal Rectangle OldSelectionBounds
{
get
{
return this.oldSelectionBounds;
}
}
///
/// Gets the Rectangle that bounds the newly selected Rows
///
internal Rectangle NewSelectionBounds
{
get
{
return this.newSelectionBounds;
}
}
#endregion
}
#endregion
}