//---------------------------------------------------------------------------
//
// Copyright (C) Microsoft Corporation. All rights reserved.
//
//---------------------------------------------------------------------------
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Text;
namespace ExtendedGrid.Microsoft.Windows.Controls
{
///
/// This class encapsulates a selected row information necessary for CopyingRowClipboardContent event
///
public class DataGridRowClipboardEventArgs : EventArgs
{
///
/// Creates DataGridRowClipboardEventArgs object initializing the properties.
///
///
///
///
///
public DataGridRowClipboardEventArgs(object item, int startColumnDisplayIndex, int endColumnDisplayIndex, bool isColumnHeadersRow)
{
_item = item;
_startColumnDisplayIndex = startColumnDisplayIndex;
_endColumnDisplayIndex = endColumnDisplayIndex;
_isColumnHeadersRow = isColumnHeadersRow;
}
internal DataGridRowClipboardEventArgs(object item, int startColumnDisplayIndex, int endColumnDisplayIndex, bool isColumnHeadersRow, int rowIndexHint) :
this(item, startColumnDisplayIndex, endColumnDisplayIndex, isColumnHeadersRow)
{
_rowIndexHint = rowIndexHint;
}
///
/// DataGrid row item for which we prepare ClipboardRowContent
///
public object Item
{
get { return _item; }
}
///
/// This list should be used to modify, add ot remove a cell content before it gets stored into the clipboard.
///
public List ClipboardRowContent
{
get
{
if (_clipboardRowContent == null)
{
_clipboardRowContent = new List();
}
return _clipboardRowContent;
}
}
///
/// This method serialize ClipboardRowContent list into string using the specified format.
///
///
///
public string FormatClipboardCellValues(string format)
{
StringBuilder sb = new StringBuilder();
int count = ClipboardRowContent.Count;
for (int i = 0; i < count; i++)
{
ClipboardHelper.FormatCell(ClipboardRowContent[i].Content, i == 0 /* firstCell */, i == count - 1 /* lastCell */, sb, format);
}
return sb.ToString();
}
///
/// Represents the DisplayIndex of the first selected column
///
public int StartColumnDisplayIndex
{
get { return _startColumnDisplayIndex; }
}
///
/// Represents the DisplayIndex of the last selected column
///
public int EndColumnDisplayIndex
{
get { return _endColumnDisplayIndex; }
}
///
/// This property is true when the ClipboardRowContent represents column headers. In this case Item is null.
///
public bool IsColumnHeadersRow
{
get { return _isColumnHeadersRow; }
}
///
/// If the row index was known at creation time, this will be non-negative.
///
internal int RowIndexHint
{
get { return _rowIndexHint; }
}
private int _startColumnDisplayIndex;
private int _endColumnDisplayIndex;
private object _item;
private bool _isColumnHeadersRow;
private List _clipboardRowContent;
private int _rowIndexHint = -1;
}
}