diff options
Diffstat (limited to 'mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCell.cs')
-rw-r--r-- | mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCell.cs | 1074 |
1 files changed, 1074 insertions, 0 deletions
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCell.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCell.cs new file mode 100644 index 00000000000..24fd6a4bd02 --- /dev/null +++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCell.cs @@ -0,0 +1,1074 @@ +// Permission is hereby granted, free of charge, to any person obtaining +// a copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to +// permit persons to whom the Software is furnished to do so, subject to +// the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +// Copyright (c) 2005 Novell, Inc. (http://www.novell.com) +// +// Author: +// Pedro Martínez Juliá <pedromj@gmail.com> +// + + +#if NET_2_0 + +using System; +using System.Drawing; +using System.ComponentModel; +using System.Runtime.InteropServices; + +namespace System.Windows.Forms { + + public abstract class DataGridViewCell : DataGridViewElement, ICloneable, IDisposable { + + private DataGridView dataGridViewOwner; + + private AccessibleObject accessibilityObject; + private int columnIndex; + private Rectangle contentBounds; + // private ContextMenuStrip contextMenuStrip; + private object defaultNewRowValue; + private bool displayed; + private object editedFormattedValue; + private Type editType; + private Rectangle errorIconBounds; + private string errorText; + private Type formattedValueType; + private bool frozen; + private DataGridViewElementStates inheritedState; + private bool isInEditMode; + private DataGridViewColumn owningColumn; + private DataGridViewRow owningRow; + private Size preferredSize; + private bool readOnly; + private bool resizable; + private bool selected; + private Size size; + private DataGridViewCellStyle style; + private object tag; + private string toolTipText; + private object valuex; + private Type valueType; + private bool visible; + + protected DataGridViewCell () { + columnIndex = -1; + } + + ~DataGridViewCell () { + Dispose(false); + } + + public AccessibleObject AccessibilityObject { + get { + if (accessibilityObject == null) { + accessibilityObject = CreateAccessibilityInstance(); + } + return accessibilityObject; + } + } + + public int ColumnIndex { + get { return columnIndex; } + } + + public Rectangle ContentBounds { + get { return contentBounds; } + } + + /* + public virtual ContextMenuStrip ContextMenuStrip { + get { return contextMenuStrip; } + set { contextMenuStrip = value; } + } + */ + + public virtual object DefaultNewRowValue { + get { return defaultNewRowValue; } + } + + public virtual bool Displayed { + get { return displayed; } + } + + public object EditedFormattedValue { + get { return editedFormattedValue; } + } + + public virtual Type EditType { + get { return editType; } + } + + public Rectangle ErrorIconBounds { + get { return errorIconBounds; } + } + + public string ErrorText { + get { return errorText; } + set { + if (errorText != value) { + errorText = value; + OnErrorTextChanged(new DataGridViewCellEventArgs(ColumnIndex, RowIndex)); + } + } + } + + public object FormattedValue { + get { + DataGridViewCellStyle style = InheritedStyle; + if (style.Format != String.Empty && FormattedValueType == typeof(string)) { + return String.Format("{0:" + style.Format + "}", Value); + } + return Convert.ChangeType(Value, FormattedValueType, style.FormatProvider); + } + } + + public virtual Type FormattedValueType { + get { return formattedValueType; } + } + + public virtual bool Frozen { + get { return frozen; } + } + + public bool HasStyle { + get { return style != null; } + } + + public DataGridViewElementStates InheritedState { + get { return inheritedState; } + } + + public DataGridViewCellStyle InheritedStyle { + get { + DataGridViewCellStyle result = new DataGridViewCellStyle(); + if (style != null && style.Alignment != DataGridViewContentAlignment.NotSet) { + result.Alignment = style.Alignment; + } + else if (OwningRow != null && OwningRow.DefaultCellStyle.Alignment != DataGridViewContentAlignment.NotSet) { + result.Alignment = OwningRow.DefaultCellStyle.Alignment; + } + else if (DataGridView != null) { + if ((RowIndex % 2) == 1 && DataGridView.AlternatingRowsDefaultCellStyle.Alignment != DataGridViewContentAlignment.NotSet) { + result.Alignment = DataGridView.AlternatingRowsDefaultCellStyle.Alignment; + } + else if (DataGridView.RowsDefaultCellStyle.Alignment != DataGridViewContentAlignment.NotSet) { + result.Alignment = DataGridView.RowsDefaultCellStyle.Alignment; + } + else if (ColumnIndex >= 0 && DataGridView.Columns[ColumnIndex].DefaultCellStyle.Alignment != DataGridViewContentAlignment.NotSet) { + result.Alignment = DataGridView.Columns[ColumnIndex].DefaultCellStyle.Alignment; + } + else { + result.Alignment = DataGridView.DefaultCellStyle.Alignment; + } + } + if (style != null && style.BackColor != Color.Empty) { + result.BackColor = style.BackColor; + } + else if (OwningRow != null && OwningRow.DefaultCellStyle.BackColor != Color.Empty) { + result.BackColor = OwningRow.DefaultCellStyle.BackColor; + } + else if (DataGridView != null) { + if ((RowIndex % 2) == 1 && DataGridView.AlternatingRowsDefaultCellStyle.BackColor != Color.Empty) { + result.BackColor = DataGridView.AlternatingRowsDefaultCellStyle.BackColor; + } + else if (DataGridView.RowsDefaultCellStyle.BackColor != Color.Empty) { + result.BackColor = DataGridView.RowsDefaultCellStyle.BackColor; + } + else if (ColumnIndex >= 0 && DataGridView.Columns[ColumnIndex].DefaultCellStyle.BackColor != Color.Empty) { + result.BackColor = DataGridView.Columns[ColumnIndex].DefaultCellStyle.BackColor; + } + else { + result.BackColor = DataGridView.DefaultCellStyle.BackColor; + } + } + if (style != null && style.Font != null) { + result.Font = style.Font; + } + else if (OwningRow != null && OwningRow.DefaultCellStyle.Font != null) { + result.Font = OwningRow.DefaultCellStyle.Font; + } + else if (DataGridView != null) { + if ((RowIndex % 2) == 1 && DataGridView.AlternatingRowsDefaultCellStyle.Font != null) { + result.Font = DataGridView.AlternatingRowsDefaultCellStyle.Font; + } + else if (DataGridView.RowsDefaultCellStyle.Font != null) { + result.Font = DataGridView.RowsDefaultCellStyle.Font; + } + else if (ColumnIndex >= 0 && DataGridView.Columns[ColumnIndex].DefaultCellStyle.Font != null) { + result.Font = DataGridView.Columns[ColumnIndex].DefaultCellStyle.Font; + } + else { + result.Font = DataGridView.DefaultCellStyle.Font; + } + } + if (style != null && style.ForeColor != Color.Empty) { + result.ForeColor = style.ForeColor; + } + else if (OwningRow != null && OwningRow.DefaultCellStyle.ForeColor != Color.Empty) { + result.ForeColor = OwningRow.DefaultCellStyle.ForeColor; + } + else if (DataGridView != null) { + if ((RowIndex % 2) == 1 && DataGridView.AlternatingRowsDefaultCellStyle.ForeColor != Color.Empty) { + result.ForeColor = DataGridView.AlternatingRowsDefaultCellStyle.ForeColor; + } + else if (DataGridView.RowsDefaultCellStyle.ForeColor != Color.Empty) { + result.ForeColor = DataGridView.RowsDefaultCellStyle.ForeColor; + } + else if (ColumnIndex >= 0 && DataGridView.Columns[ColumnIndex].DefaultCellStyle.ForeColor != Color.Empty) { + result.ForeColor = DataGridView.Columns[ColumnIndex].DefaultCellStyle.ForeColor; + } + else { + result.ForeColor = DataGridView.DefaultCellStyle.ForeColor; + } + } + if (style != null && style.Format != String.Empty) { + result.Format = style.Format; + } + else if (OwningRow != null && OwningRow.DefaultCellStyle.Format != String.Empty) { + result.Format = OwningRow.DefaultCellStyle.Format; + } + else if (DataGridView != null) { + if ((RowIndex % 2) == 1 && DataGridView.AlternatingRowsDefaultCellStyle.Format != String.Empty) { + result.Format = DataGridView.AlternatingRowsDefaultCellStyle.Format; + } + else if (DataGridView.RowsDefaultCellStyle.Format != String.Empty) { + result.Format = DataGridView.RowsDefaultCellStyle.Format; + } + else if (ColumnIndex >= 0 && DataGridView.Columns[ColumnIndex].DefaultCellStyle.Format != String.Empty) { + result.Format = DataGridView.Columns[ColumnIndex].DefaultCellStyle.Format; + } + else { + result.Format = DataGridView.DefaultCellStyle.Format; + } + } + if (style != null && style.FormatProvider != System.Globalization.CultureInfo.CurrentUICulture) { + result.FormatProvider = style.FormatProvider; + } + else if (OwningRow != null && OwningRow.DefaultCellStyle.FormatProvider != System.Globalization.CultureInfo.CurrentUICulture) { + result.FormatProvider = OwningRow.DefaultCellStyle.FormatProvider; + } + else if (DataGridView != null) { + if ((RowIndex % 2) == 1 && DataGridView.AlternatingRowsDefaultCellStyle.FormatProvider != System.Globalization.CultureInfo.CurrentUICulture) { + result.FormatProvider = DataGridView.AlternatingRowsDefaultCellStyle.FormatProvider; + } + else if (DataGridView.RowsDefaultCellStyle.FormatProvider != System.Globalization.CultureInfo.CurrentUICulture) { + result.FormatProvider = DataGridView.RowsDefaultCellStyle.FormatProvider; + } + else if (ColumnIndex >= 0 && DataGridView.Columns[ColumnIndex].DefaultCellStyle.FormatProvider != System.Globalization.CultureInfo.CurrentUICulture) { + result.FormatProvider = DataGridView.Columns[ColumnIndex].DefaultCellStyle.FormatProvider; + } + else { + result.FormatProvider = DataGridView.DefaultCellStyle.FormatProvider; + } + } + if (style != null && style.NullValue != "(null)") { + result.NullValue = style.NullValue; + } + else if (OwningRow != null && OwningRow.DefaultCellStyle.NullValue != "(null)") { + result.NullValue = OwningRow.DefaultCellStyle.NullValue; + } + else if (DataGridView != null) { + if ((RowIndex % 2) == 1 && DataGridView.AlternatingRowsDefaultCellStyle.NullValue != "(null)") { + result.NullValue = DataGridView.AlternatingRowsDefaultCellStyle.NullValue; + } + else if (DataGridView.RowsDefaultCellStyle.NullValue != "(null)") { + result.NullValue = DataGridView.RowsDefaultCellStyle.NullValue; + } + else if (ColumnIndex >= 0 && DataGridView.Columns[ColumnIndex].DefaultCellStyle.NullValue != "(null)") { + result.NullValue = DataGridView.Columns[ColumnIndex].DefaultCellStyle.NullValue; + } + else { + result.NullValue = DataGridView.DefaultCellStyle.NullValue; + } + } + if (style != null && style.Padding != Padding.Empty) { + result.Padding = style.Padding; + } + else if (OwningRow != null && OwningRow.DefaultCellStyle.Padding != Padding.Empty) { + result.Padding = OwningRow.DefaultCellStyle.Padding; + } + else if (DataGridView != null) { + if ((RowIndex % 2) == 1 && DataGridView.AlternatingRowsDefaultCellStyle.Padding != Padding.Empty) { + result.Padding = DataGridView.AlternatingRowsDefaultCellStyle.Padding; + } + else if (DataGridView.RowsDefaultCellStyle.Padding != Padding.Empty) { + result.Padding = DataGridView.RowsDefaultCellStyle.Padding; + } + else if (ColumnIndex >= 0 && DataGridView.Columns[ColumnIndex].DefaultCellStyle.Padding != Padding.Empty) { + result.Padding = DataGridView.Columns[ColumnIndex].DefaultCellStyle.Padding; + } + else { + result.Padding = DataGridView.DefaultCellStyle.Padding; + } + } + if (style != null && style.SelectionBackColor != Color.Empty) { + result.SelectionBackColor = style.SelectionBackColor; + } + else if (OwningRow != null && OwningRow.DefaultCellStyle.SelectionBackColor != Color.Empty) { + result.SelectionBackColor = OwningRow.DefaultCellStyle.SelectionBackColor; + } + else if (DataGridView != null) { + if ((RowIndex % 2) == 1 && DataGridView.AlternatingRowsDefaultCellStyle.SelectionBackColor != Color.Empty) { + result.SelectionBackColor = DataGridView.AlternatingRowsDefaultCellStyle.SelectionBackColor; + } + else if (DataGridView.RowsDefaultCellStyle.SelectionBackColor != Color.Empty) { + result.SelectionBackColor = DataGridView.RowsDefaultCellStyle.SelectionBackColor; + } + else if (ColumnIndex >= 0 && DataGridView.Columns[ColumnIndex].DefaultCellStyle.SelectionBackColor != Color.Empty) { + result.SelectionBackColor = DataGridView.Columns[ColumnIndex].DefaultCellStyle.SelectionBackColor; + } + else { + result.SelectionBackColor = DataGridView.DefaultCellStyle.SelectionBackColor; + } + } + if (style != null && style.SelectionForeColor != Color.Empty) { + result.SelectionForeColor = style.SelectionForeColor; + } + else if (OwningRow != null && OwningRow.DefaultCellStyle.SelectionForeColor != Color.Empty) { + result.SelectionForeColor = OwningRow.DefaultCellStyle.SelectionForeColor; + } + else if (DataGridView != null) { + if ((RowIndex % 2) == 1 && DataGridView.AlternatingRowsDefaultCellStyle.SelectionForeColor != Color.Empty) { + result.SelectionForeColor = DataGridView.AlternatingRowsDefaultCellStyle.SelectionForeColor; + } + else if (DataGridView.RowsDefaultCellStyle.SelectionForeColor != Color.Empty) { + result.SelectionForeColor = DataGridView.RowsDefaultCellStyle.SelectionForeColor; + } + else if (ColumnIndex >= 0 && DataGridView.Columns[ColumnIndex].DefaultCellStyle.SelectionForeColor != Color.Empty) { + result.SelectionForeColor = DataGridView.Columns[ColumnIndex].DefaultCellStyle.SelectionForeColor; + } + else { + result.SelectionForeColor = DataGridView.DefaultCellStyle.SelectionForeColor; + } + } + if (style != null && style.Tag != null) { + result.Tag = style.Tag; + } + else if (OwningRow != null && OwningRow.DefaultCellStyle.Tag != null) { + result.Tag = OwningRow.DefaultCellStyle.Tag; + } + else if (DataGridView != null) { + if ((RowIndex % 2) == 1 && DataGridView.AlternatingRowsDefaultCellStyle.Tag != null) { + result.Tag = DataGridView.AlternatingRowsDefaultCellStyle.Tag; + } + else if (DataGridView.RowsDefaultCellStyle.Tag != null) { + result.Tag = DataGridView.RowsDefaultCellStyle.Tag; + } + else if (ColumnIndex >= 0 && DataGridView.Columns[ColumnIndex].DefaultCellStyle.Tag != null) { + result.Tag = DataGridView.Columns[ColumnIndex].DefaultCellStyle.Tag; + } + else { + result.Tag = DataGridView.DefaultCellStyle.Tag; + } + } + if (style != null && style.WrapMode != DataGridViewTriState.NotSet) { + result.WrapMode = style.WrapMode; + } + else if (OwningRow != null && OwningRow.DefaultCellStyle.WrapMode != DataGridViewTriState.NotSet) { + result.WrapMode = OwningRow.DefaultCellStyle.WrapMode; + } + else if (DataGridView != null) { + if ((RowIndex % 2) == 1 && DataGridView.AlternatingRowsDefaultCellStyle.WrapMode != DataGridViewTriState.NotSet) { + result.WrapMode = DataGridView.AlternatingRowsDefaultCellStyle.WrapMode; + } + else if (DataGridView.RowsDefaultCellStyle.WrapMode != DataGridViewTriState.NotSet) { + result.WrapMode = DataGridView.RowsDefaultCellStyle.WrapMode; + } + else if (ColumnIndex >= 0 && DataGridView.Columns[ColumnIndex].DefaultCellStyle.WrapMode != DataGridViewTriState.NotSet) { + result.WrapMode = DataGridView.Columns[ColumnIndex].DefaultCellStyle.WrapMode; + } + else { + result.WrapMode = DataGridView.DefaultCellStyle.WrapMode; + } + } + return result; + } + } + + public bool IsInEditMode { + get { return isInEditMode; } + } + + public DataGridViewColumn OwningColumn { + get { return owningColumn; } + } + + public DataGridViewRow OwningRow { + get { return owningRow; } + } + + public Size PreferredSize { + get { return preferredSize; } + } + + public virtual bool ReadOnly { + get { return readOnly; } + set { readOnly = value; } + } + + public virtual bool Resizable { + get { return resizable; } + } + + public int RowIndex { + get { + if (owningRow == null) { + return -1; + } + return owningRow.Index; + } + } + + public virtual bool Selected { + get { return selected; } + set { + if (value != ((State & DataGridViewElementStates.Selected) != 0)) { + SetState(State ^ DataGridViewElementStates.Selected); + } + selected = value; + } + } + + public Size Size { + get { return size; } + } + + public DataGridViewCellStyle Style { + get { + if (style != null) { + style = new DataGridViewCellStyle(); + style.StyleChanged += OnStyleChanged; + } + return style; + } + set { style = value; } + } + + public object Tag { + get { return tag; } + set { tag = value; } + } + + public string ToolTipText { + get { return toolTipText; } + set { toolTipText = value; } + } + + public object Value { + get { return valuex; } + set { + if (valuex != value) { + valuex = value; + RaiseCellValueChanged(new DataGridViewCellEventArgs(ColumnIndex, RowIndex)); + } + } + } + + public virtual Type ValueType { + get { return valueType; } + set { valueType = value; } + } + + public virtual bool Visible { + get { return visible; } + } + + public virtual DataGridViewAdvancedBorderStyle AdjustCellBorderStyle (DataGridViewAdvancedBorderStyle dataGridViewAdvancedBorderStyleInput, DataGridViewAdvancedBorderStyle dataGridViewAdvancedBorderStylePlaceholder, bool singleVerticalBorderAdded, bool singleHorizontalBorderAdded, bool isFirstDisplayedColumn, bool isFirstDisplayedRow) { + return dataGridViewAdvancedBorderStyleInput; + } + + public virtual object Clone () { + return this.MemberwiseClone(); + /* + DataGridViewCell result = null; // = new DataGridViewCell(); + result.accessibilityObject = this.accessibilityObject; + result.columnIndex = this.columnIndex; + result.contentBounds = this.contentBounds; + //result.contextMenuStrip = this.contextMenuStrip; + result.defaultNewRowValue = this.defaultNewRowValue; + result.displayed = this.displayed; + result.editedFormattedValue = this.editedFormattedValue; + result.editType = this.editType; + result.errorIconBounds = this.errorIconBounds; + result.errorText = this.errorText; + result.formattedValueType = this.formattedValueType; + result.frozen = this.frozen; + result.hasStyle = this.hasStyle; + result.inheritedState = this.inheritedState; + result.inheritedStyle = this.inheritedStyle; + result.isInEditMode = this.isInEditMode; + result.owningColumn = this.owningColumn; + result.owningRow = this.owningRow; + result.preferredSize = this.preferredSize; + result.readOnly = this.readOnly; + result.resizable = this.resizable; + result.selected = this.selected; + result.size = this.size; + result.style = this.style; + result.tag = this.tag; + result.toolTipText = this.toolTipText; + result.valuex = this.valuex; + result.valueType = this.valueType; + result.visible = this.visible; + return result; + */ + } + + public virtual void DetachEditingControl () { + } + + //public sealed void Dispose () { + public void Dispose () { + } + + public Rectangle GetContentBounds (int rowIndex) { + throw new NotImplementedException(); + } + + public object GetEditedFormattedValue (int rowIndex, DataGridViewDataErrorContexts context) { + throw new NotImplementedException(); + } + + /* + public virtual ContextMenuStrip GetInheritedContextMenuStrip (int rowIndex) { + } + */ + + public virtual DataGridViewElementStates GetInheritedState (int rowIndex) { + throw new NotImplementedException(); + } + + public virtual DataGridViewCellStyle GetInheritedStyle (DataGridViewCellStyle inheritedCellStyle, int rowIndex, bool includeColors) { + /* + * System.InvalidOperationException :: The cell has no associated System.Windows.Forms.DataGridView, or the cell's System.Windows.Forms.DataGridViewCell.ColumnIndex is less than 0. + * System.ArgumentOutOfRangeException :: rowIndex is less than 0, or greater than or equal to the number of rows in the parent System.Windows.Forms.DataGridView. + * */ + throw new NotImplementedException(); + } + + public virtual void InitializeEditingControl (int rowIndex, object initialFormattedValue, DataGridViewCellStyle dataGridViewCellStyle) { + if (DataGridView == null || DataGridView.EditingControl == null) { + throw new InvalidOperationException("No editing control defined"); + } + } + + public virtual bool KeyEntersEditMode (KeyEventArgs e) { + throw new NotImplementedException(); + } + + public static int MeasureTextHeight (Graphics graphics, string text, Font font, int maxWidth, TextFormatFlags flags) { + if (graphics == null) { + throw new ArgumentNullException("Graphics argument null"); + } + if (font == null) { + throw new ArgumentNullException("Font argument null"); + } + if (maxWidth < 1) { + throw new ArgumentOutOfRangeException("maxWidth is less than 1."); + } + // if (flags ---> InvalidEnumArgumentException + throw new NotImplementedException(); + } + + public static int MeasureTextHeight (Graphics graphics, string text, Font font, int maxWidth, TextFormatFlags flags, out bool widthTruncated) { + throw new NotImplementedException(); + } + + public static Size MeasureTextPreferredSize (Graphics graphics, string text, Font font, float maxRatio, TextFormatFlags flags) { + if (graphics == null) { + throw new ArgumentNullException("Graphics argument null"); + } + if (font == null) { + throw new ArgumentNullException("Font argument null"); + } + if (maxRatio <= 0) { + throw new ArgumentOutOfRangeException("maxRatio is less than or equals to 0."); + } + throw new NotImplementedException(); + } + + public static Size MeasureTextSize (Graphics graphics, string text, Font font, TextFormatFlags flags) { + /////////////////////////// ¿flags? + return graphics.MeasureString(text, font).ToSize(); + } + + public static int MeasureTextWidth (Graphics graphics, string text, Font font, int maxHeight, TextFormatFlags flags) { + if (graphics == null) { + throw new ArgumentNullException("Graphics argument null"); + } + if (font == null) { + throw new ArgumentNullException("Font argument null"); + } + if (maxHeight < 1) { + throw new ArgumentOutOfRangeException("maxHeight is less than 1."); + } + throw new NotImplementedException(); + } + + public virtual object ParseFormattedValue (object formattedValue, DataGridViewCellStyle cellStyle, TypeConverter formattedValueTypeConverter, TypeConverter valueTypeConverter) { + if (cellStyle == null) { + throw new ArgumentNullException("cellStyle is null."); + } + if (formattedValueType == null) { + throw new FormatException("The System.Windows.Forms.DataGridViewCell.FormattedValueType property value is null."); + } + if (formattedValue == null) { + throw new ArgumentException("formattedValue is null."); + } + if (formattedValue.GetType() != formattedValueType) { + } + return null; + } + + public virtual void PositionEditingControl (bool setLocation, bool setSize, Rectangle cellBounds, Rectangle cellClip, DataGridViewCellStyle cellStyle, bool singleVerticalBorderAdded, bool singleHorizontalBorderAdded, bool isFirstDisplayedColumn, bool isFirstDisplayedRow) { + throw new NotImplementedException(); + } + + public virtual Rectangle PositionEditingPanel (Rectangle cellBounds, Rectangle cellClip, DataGridViewCellStyle cellStyle, bool singleVerticalBorderAdded, bool singleHorizontalBorderAdded, bool isFirstDisplayedColumn, bool isFirstDisplayedRow) { + throw new NotImplementedException(); + } + + public override string ToString () { + return String.Format("{0} {RowIndex = {1}, ColumnIndex = {2}}", this.GetType().FullName, RowIndex, columnIndex); + } + + protected virtual Rectangle BorderWidths (DataGridViewAdvancedBorderStyle advancedBorderStyle) { + throw new NotImplementedException(); + } + + protected virtual bool ClickUnsharesRow (DataGridViewCellEventArgs e) { + throw new NotImplementedException(); + } + + protected virtual bool ContentClickUnsharesRow (DataGridViewCellEventArgs e) { + throw new NotImplementedException(); + } + + protected virtual bool ContentDoubleClickUnsharesRow (DataGridViewCellEventArgs e) { + throw new NotImplementedException(); + } + + protected virtual AccessibleObject CreateAccessibilityInstance () { + return new DataGridViewCellAccessibleObject(this); + } + + protected virtual void Dispose (bool disposing) { + } + + protected virtual bool DoubleClickUnsharesRow (DataGridViewCellEventArgs e) { + throw new NotImplementedException(); + } + + protected virtual bool EnterUnsharesRow (int rowIndex) { + throw new NotImplementedException(); + } + + protected virtual object GetClipboardContent (int rowIndex, bool firstCell, bool lastCell, bool inFirstRow, bool inLastRow, string format) { + throw new NotImplementedException(); + } + + protected virtual Rectangle GetContentBounds (Graphics graphics, DataGridViewCellStyle cellStyle, int rowIndex) { + throw new NotImplementedException(); + } + + protected virtual Rectangle GetErrorIconBounds (Graphics graphics, DataGridViewCellStyle cellStyle, int rowIndex) { + throw new NotImplementedException(); + } + + protected internal virtual string GetErrorText (int rowIndex) { + throw new NotImplementedException(); + } + + protected virtual object GetFormattedValue (object value, int rowIndex, ref DataGridViewCellStyle cellStyle, TypeConverter valueTypeConverter, TypeConverter formattedValueTypeConverter, DataGridViewDataErrorContexts context) { + throw new NotImplementedException(); + } + + protected virtual Size GetPreferredSize (Graphics graphics, DataGridViewCellStyle cellStyle, int rowIndex, Size constraintSize) { + throw new NotImplementedException(); + } + + protected virtual Size GetSize (int rowIndex) { + throw new NotImplementedException(); + } + + protected virtual object GetValue (int rowIndex) { + throw new NotImplementedException(); + } + + protected virtual bool KeyDownUnsharesRow (KeyEventArgs e, int rowIndex) { + throw new NotImplementedException(); + } + + protected virtual bool KeyPressUnsharesRow (KeyPressEventArgs e, int rowIndex) { + throw new NotImplementedException(); + } + + protected virtual bool KeyUpUnsharesRow (KeyEventArgs e, int rowIndex) { + throw new NotImplementedException(); + } + + protected virtual bool LeaveUnsharesRow ( int rowIndex) { + throw new NotImplementedException(); + } + + protected virtual bool MouseClickUnsharesRow (DataGridViewCellMouseEventArgs e) { + throw new NotImplementedException(); + } + + protected virtual bool MouseDoubleClickUnsharesRow (DataGridViewCellMouseEventArgs e) { + throw new NotImplementedException(); + } + + protected virtual bool MouseDownUnsharesRow (DataGridViewCellMouseEventArgs e) { + throw new NotImplementedException(); + } + + protected virtual bool MouseEnterUnsharesRow (int rowIndex) { + throw new NotImplementedException(); + } + + protected virtual bool MouseLeaveUnsharesRow (int rowIndex) { + throw new NotImplementedException(); + } + + protected virtual bool MouseMoveUnsharesRow (DataGridViewCellMouseEventArgs e) { + throw new NotImplementedException(); + } + + protected virtual bool MouseUpUnsharesRow (DataGridViewCellMouseEventArgs e) { + throw new NotImplementedException(); + } + + protected virtual void OnClick (DataGridViewCellEventArgs e) { + } + + protected virtual void OnContentClick (DataGridViewCellEventArgs e) { + } + + protected virtual void OnContentDoubleClick (DataGridViewCellEventArgs e) { + } + + protected override void OnDataGridViewChanged () { + } + + protected virtual void OnDoubleClick (DataGridViewCellEventArgs e) { + } + + protected virtual void OnEnter (int rowIndex, bool throughMouseClick) { + } + + protected virtual void OnKeyDown (KeyEventArgs e, int rowIndex) { + } + + protected virtual void OnKeyPress (KeyPressEventArgs e, int rowIndex) { + } + + protected virtual void OnKeyUp (KeyEventArgs e, int rowIndex) { + } + + protected virtual void OnLeave (int rowIndex, bool throughMouseClick) { + } + + protected virtual void OnMouseClick (DataGridViewCellMouseEventArgs e) { + } + + protected virtual void OnMouseDoubleClick (DataGridViewCellMouseEventArgs e) { + } + + protected virtual void OnMouseDown (DataGridViewCellMouseEventArgs e) { + } + + protected virtual void OnMouseEnter (int rowIndex) { + } + + protected virtual void OnMouseLeave (int rowIndex) { + } + + protected virtual void OnMouseMove (DataGridViewCellMouseEventArgs e) { + } + + protected virtual void OnMouseUp (DataGridViewCellMouseEventArgs e) { + } + + protected virtual void Paint (Graphics graphics, Rectangle clipBounds, Rectangle cellBounds, int rowIndex, DataGridViewElementStates cellState, object value, object formattedValue, string errorText, DataGridViewCellStyle cellStyle, DataGridViewAdvancedBorderStyle advancedBorderStyle, DataGridViewPaintParts paintParts) { + throw new NotImplementedException(); + } + + protected virtual void PaintBorder (Graphics graphics, Rectangle clipBounds, Rectangle bounds, DataGridViewCellStyle cellStyle, DataGridViewAdvancedBorderStyle advancedBorderStyle) { + Pen pen = new Pen(DataGridView.GridColor); + /* + switch (advancedBorderStyle.All) { + case DataGridViewAdvancedCellBorderStyle.None: + break; + case DataGridViewAdvancedCellBorderStyle.Single: + graphics.DrawRectangle(pen, bounds); + break; + case DataGridViewAdvancedCellBorderStyle.Inset: + bounds.X += 1; + bounds.Y += 1; + bounds.Width -= 2; + bounds.Height -= 2; + graphics.DrawRectangle(pen, bounds); + break; + case DataGridViewAdvancedCellBorderStyle.InsetDouble: + case DataGridViewAdvancedCellBorderStyle.Outset: + case DataGridViewAdvancedCellBorderStyle.OutsetDouble: + case DataGridViewAdvancedCellBorderStyle.OutsetPartial: + break; + case DataGridViewAdvancedCellBorderStyle.NotSet: + */ + switch (advancedBorderStyle.Left) { + case DataGridViewAdvancedCellBorderStyle.None: + break; + case DataGridViewAdvancedCellBorderStyle.Single: + graphics.DrawLine(pen, bounds.X, bounds.Y, bounds.X, bounds.Y + bounds.Height - 1); + break; + case DataGridViewAdvancedCellBorderStyle.Inset: + graphics.DrawLine(pen, bounds.X + 2, bounds.Y, bounds.X + 2, bounds.Y + bounds.Height - 1); + break; + case DataGridViewAdvancedCellBorderStyle.InsetDouble: + case DataGridViewAdvancedCellBorderStyle.Outset: + case DataGridViewAdvancedCellBorderStyle.OutsetDouble: + graphics.DrawLine(pen, bounds.X, bounds.Y, bounds.X, bounds.Y + bounds.Height - 1); + graphics.DrawLine(pen, bounds.X + 2, bounds.Y, bounds.X + 2, bounds.Y + bounds.Height - 1); + break; + case DataGridViewAdvancedCellBorderStyle.OutsetPartial: + break; + } + switch (advancedBorderStyle.Right) { + case DataGridViewAdvancedCellBorderStyle.None: + break; + case DataGridViewAdvancedCellBorderStyle.Single: + graphics.DrawLine(pen, bounds.X + bounds.Width - 1, bounds.Y, bounds.X + bounds.Width - 1, bounds.Y + bounds.Height - 1); + break; + case DataGridViewAdvancedCellBorderStyle.Inset: + graphics.DrawLine(pen, bounds.X + bounds.Width + 1, bounds.Y, bounds.X + bounds.Width - 3, bounds.Y + bounds.Height - 1); + break; + case DataGridViewAdvancedCellBorderStyle.InsetDouble: + case DataGridViewAdvancedCellBorderStyle.Outset: + case DataGridViewAdvancedCellBorderStyle.OutsetDouble: + case DataGridViewAdvancedCellBorderStyle.OutsetPartial: + break; + } + switch (advancedBorderStyle.Top) { + case DataGridViewAdvancedCellBorderStyle.None: + break; + case DataGridViewAdvancedCellBorderStyle.Single: + graphics.DrawLine(pen, bounds.X, bounds.Y, bounds.X + bounds.Width - 1, bounds.Y); + break; + case DataGridViewAdvancedCellBorderStyle.Inset: + graphics.DrawLine(pen, bounds.X, bounds.Y + 2, bounds.X + bounds.Width - 1, bounds.Y + bounds.Height + 1); + break; + case DataGridViewAdvancedCellBorderStyle.InsetDouble: + case DataGridViewAdvancedCellBorderStyle.Outset: + case DataGridViewAdvancedCellBorderStyle.OutsetDouble: + case DataGridViewAdvancedCellBorderStyle.OutsetPartial: + break; + } + switch (advancedBorderStyle.Bottom) { + case DataGridViewAdvancedCellBorderStyle.None: + break; + case DataGridViewAdvancedCellBorderStyle.Single: + graphics.DrawLine(pen, bounds.X, bounds.Y + bounds.Height - 1, bounds.X + bounds.Width - 1, bounds.Y + bounds.Height - 1); + break; + case DataGridViewAdvancedCellBorderStyle.Inset: + case DataGridViewAdvancedCellBorderStyle.InsetDouble: + case DataGridViewAdvancedCellBorderStyle.Outset: + case DataGridViewAdvancedCellBorderStyle.OutsetDouble: + case DataGridViewAdvancedCellBorderStyle.OutsetPartial: + break; + } + // break; + //} + } + + protected virtual void PaintErrorIcon (Graphics graphics, Rectangle clipBounds, Rectangle cellValueBounds, string errorText) { + throw new NotImplementedException(); + } + + protected virtual bool SetValue (int rowIndex, object value) { + throw new NotImplementedException(); + } + + private void OnStyleChanged (object sender, EventArgs args) { + if (DataGridView != null) { + DataGridView.RaiseCellStyleChanged(new DataGridViewCellEventArgs(ColumnIndex, RowIndex)); + } + } + + internal void InternalPaint (Graphics graphics, Rectangle clipBounds, Rectangle cellBounds, int rowIndex, DataGridViewElementStates cellState, object value, object formattedValue, string errorText, DataGridViewCellStyle cellStyle, DataGridViewAdvancedBorderStyle advancedBorderStyle, DataGridViewPaintParts paintParts) { + Paint(graphics, clipBounds, cellBounds, rowIndex, cellState, value, formattedValue, errorText, cellStyle, advancedBorderStyle, paintParts); + } + + internal void SetOwningRow (DataGridViewRow row) { + owningRow = row; + } + + internal void SetColumnIndex (int index) { + columnIndex = index; + } + + internal void SetContentBounds (Rectangle bounds) { + contentBounds = bounds; + } + + internal void SetIsInEditMode (bool isInEditMode) { + this.isInEditMode = isInEditMode; + } + + internal void SetSize (Size size) { + this.size = size; + } + + internal void OnErrorTextChanged (DataGridViewCellEventArgs args) { + if (DataGridView != null) { + DataGridView.OnCellErrorTextChanged(args); + } + } + + [ComVisibleAttribute(true)] + protected class DataGridViewCellAccessibleObject : AccessibleObject { + + private DataGridViewCell dataGridViewCell; + + public DataGridViewCellAccessibleObject () { + } + + public DataGridViewCellAccessibleObject (DataGridViewCell cell) { + this.dataGridViewCell = cell; + } + + public override Rectangle Bounds { + get { throw new NotImplementedException(); } + } + + public override string DefaultAction { + get { return "Edit"; } + } + + public override string Name { + get { return dataGridViewCell.OwningColumn.HeaderText + ": " + dataGridViewCell.RowIndex.ToString(); } + } + + public DataGridViewCell Owner { + get { return dataGridViewCell; } + set { dataGridViewCell = value; } + } + + public override AccessibleObject Parent { + get { return dataGridViewCell.OwningRow.AccessibilityObject; } + } + + public override AccessibleRole Role { + get { return AccessibleRole.Cell; } + } + + public override AccessibleStates State { + get { + if (dataGridViewCell.Selected) { + return AccessibleStates.Selected; + } + else { + return AccessibleStates.Focused; + } + } + } + + public override string Value { + get { + if (dataGridViewCell.FormattedValue == null) { + return "(null)"; + } + return dataGridViewCell.FormattedValue.ToString(); + } + } + + public override void DoDefaultAction () { + if (dataGridViewCell.DataGridView.EditMode != DataGridViewEditMode.EditProgrammatically) { + if (dataGridViewCell.IsInEditMode) { + // commit edit + } + else { + // begin edit + } + } + } + + public override AccessibleObject GetChild (int index) { + throw new NotImplementedException(); + } + + public override int GetChildCount () { + if (dataGridViewCell.IsInEditMode) { + return 1; + } + return -1; + } + + public override AccessibleObject GetFocused () { + return null; + } + + public override AccessibleObject GetSelected () { + return null; + } + + public override AccessibleObject Navigate (AccessibleNavigation navigationDirection) { + switch (navigationDirection) { + case AccessibleNavigation.Right: + break; + case AccessibleNavigation.Left: + break; + case AccessibleNavigation.Next: + break; + case AccessibleNavigation.Previous: + break; + case AccessibleNavigation.Up: + break; + case AccessibleNavigation.Down: + break; + default: + return null; + } + return null; + } + + public override void Select (AccessibleSelection flags) { + switch (flags) { + case AccessibleSelection.TakeFocus: + dataGridViewCell.dataGridViewOwner.Focus(); + break; + case AccessibleSelection.TakeSelection: + //dataGridViewCell.Focus(); + break; + case AccessibleSelection.AddSelection: + dataGridViewCell.dataGridViewOwner.SelectedCells.InternalAdd(dataGridViewCell); + break; + case AccessibleSelection.RemoveSelection: + dataGridViewCell.dataGridViewOwner.SelectedCells.InternalRemove(dataGridViewCell); + break; + } + } + + } + + } + +} + +#endif |