Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRow.cs')
-rw-r--r--mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRow.cs484
1 files changed, 484 insertions, 0 deletions
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRow.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRow.cs
new file mode 100644
index 00000000000..0ca311b69e1
--- /dev/null
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRow.cs
@@ -0,0 +1,484 @@
+// 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.Drawing;
+using System.Runtime.InteropServices;
+
+namespace System.Windows.Forms {
+
+ public class DataGridViewRow : DataGridViewBand {
+
+ private AccessibleObject accessibilityObject;
+ private DataGridViewCellCollection cells;
+ //private ContextMenuStrip contextMenuStrip;
+ private object dataBoundItem;
+ private int dividerHeight;
+ private string errorText;
+ private DataGridViewRowHeaderCell headerCell;
+ private int height;
+ private int minimumHeight;
+
+ public DataGridViewRow () {
+ cells = new DataGridViewCellCollection(this);
+ minimumHeight = 3;
+ height = -1;
+ headerCell = new DataGridViewRowHeaderCell();
+ }
+
+ public AccessibleObject AccessibilityObject {
+ get { return accessibilityObject; }
+ }
+
+ public DataGridViewCellCollection Cells {
+ get { return cells; }
+ }
+
+ /*
+ public override ContextMenuStrip ContextMenuStrip {
+ get { return contextMenuStrip; }
+ set {
+ if (contextMenuStrip != value) {
+ contextMenuStrip = value;
+ if (DataGridView != null) {
+ DataGridView.OnRowContextMenuStripChanged(new DataGridViewRowEventArgs(this));
+ }
+ }
+ }
+ }
+ */
+
+ public object DataBoundItem {
+ get { return dataBoundItem; }
+ }
+
+ public override DataGridViewCellStyle DefaultCellStyle {
+ get { return base.DefaultCellStyle; }
+ set {
+ if (DefaultCellStyle != value) {
+ base.DefaultCellStyle = value;
+ if (DataGridView != null) {
+ DataGridView.OnRowDefaultCellStyleChanged(new DataGridViewRowEventArgs(this));
+ }
+ }
+ }
+ }
+
+ public override bool Displayed {
+ get { return base.Displayed; }
+ }
+
+ public int DividerHeight {
+ get { return dividerHeight; }
+ set { dividerHeight = value; }
+ }
+
+ public string ErrorText {
+ get { return errorText; }
+ set {
+ if (errorText != value) {
+ errorText = value;
+ if (DataGridView != null) {
+ DataGridView.OnRowErrorTextChanged(new DataGridViewRowEventArgs(this));
+ }
+ }
+ }
+ }
+
+ public override bool Frozen {
+ get { return base.Frozen; }
+ set { base.Frozen = value; }
+ }
+
+ public DataGridViewRowHeaderCell HeaderCell {
+ get { return headerCell; }
+ set {
+ if (headerCell != value) {
+ headerCell = value;
+ if (DataGridView != null) {
+ DataGridView.OnRowHeaderCellChanged(new DataGridViewRowEventArgs(this));
+ }
+ }
+ }
+ }
+
+ public int Height {
+ get {
+ if (height < 0) {
+ if (DefaultCellStyle != null && DefaultCellStyle.Font != null) {
+ return DefaultCellStyle.Font.Height + 9;
+ }
+ if (InheritedStyle != null && InheritedStyle.Font != null) {
+ return InheritedStyle.Font.Height + 9;
+ }
+ return System.Windows.Forms.Control.DefaultFont.Height + 9;
+ }
+ return height;
+ }
+ set {
+ if (height != value) {
+ if (height < minimumHeight) {
+ throw new ArgumentOutOfRangeException("Height can't be less than MinimumHeight.");
+ }
+ height = value;
+ if (DataGridView != null) {
+ DataGridView.OnRowHeightChanged(new DataGridViewRowEventArgs(this));
+ }
+ }
+ }
+ }
+
+ public override DataGridViewCellStyle InheritedStyle {
+ get {
+ if (DataGridView == null) {
+ return DefaultCellStyle;
+ }
+ else {
+ if (DefaultCellStyle == null) {
+ return DataGridView.DefaultCellStyle;
+ }
+ else {
+ DataGridViewCellStyle style = (DataGridViewCellStyle) DefaultCellStyle.Clone();
+ /////// Combination with dataGridView.DefaultCellStyle
+ return style;
+ }
+ }
+ }
+ }
+
+ public bool IsNewRow {
+ get {
+ if (DataGridView != null && DataGridView.Rows[DataGridView.Rows.Count - 1] == this) {
+ return true;
+ }
+ return false;
+ }
+ }
+
+ public int MinimumHeight {
+ get { return minimumHeight; }
+ set {
+ if (minimumHeight != value) {
+ if (value < 2 || value > Int32.MaxValue) {
+ throw new ArgumentOutOfRangeException("MinimumHeight should be between 2 and Int32.MaxValue.");
+ }
+ minimumHeight = value;
+ if (DataGridView != null) {
+ DataGridView.OnRowMinimumHeightChanged(new DataGridViewRowEventArgs(this));
+ }
+ }
+ }
+ }
+
+ public override bool ReadOnly {
+ get { return base.ReadOnly; }
+ set { base.ReadOnly = value; }
+ }
+
+ public override DataGridViewTriState Resizable {
+ get { return base.Resizable; }
+ set { base.Resizable = value; }
+ }
+
+ public override bool Selected {
+ get {
+ if (Index == -1) {
+ throw new InvalidOperationException("The row is a shared row.");
+ }
+ if (DataGridView == null) {
+ throw new InvalidOperationException("The row has not been added to a DataGridView control.");
+ }
+ return base.Selected;
+ }
+ set {
+ if (Index == -1) {
+ throw new InvalidOperationException("The row is a shared row.");
+ }
+ if (DataGridView == null) {
+ throw new InvalidOperationException("The row has not been added to a DataGridView control.");
+ }
+ base.Selected = value;
+ foreach (DataGridViewCell cell in cells) {
+ cell.Selected = value;
+ }
+ }
+ }
+
+ public override DataGridViewElementStates State {
+ get { return base.State; }
+ }
+
+ public override bool Visible {
+ get { return base.Visible; }
+ set {
+ if (IsNewRow && value == false) {
+ throw new InvalidOperationException("Cant make invisible a new row.");
+ }
+ base.Visible = value;
+ }
+ }
+
+ public virtual DataGridViewAdvancedBorderStyle AdjustRowHeaderBorderStyle (DataGridViewAdvancedBorderStyle dataGridViewAdvancedBorderStyleInput, DataGridViewAdvancedBorderStyle dataGridViewAdvancedBorderStylePlaceholder, bool singleVerticalBorderAdded, bool singleHorizontalBorderAdded, bool isFirstDisplayedRow, bool isLastVisibleRow) {
+ throw new NotImplementedException();
+ }
+
+ public override object Clone () {
+ DataGridViewRow row = (DataGridViewRow) MemberwiseClone();
+ row.cells = new DataGridViewCellCollection(row);
+ foreach (DataGridViewCell cell in cells) {
+ row.cells.Add(cell.Clone() as DataGridViewCell);
+ }
+ return row;
+ }
+
+ public void CreateCells (DataGridView dataGridView) {
+ if (dataGridView == null) {
+ throw new ArgumentNullException("DataGridView is null.");
+ }
+ if (dataGridView.Rows.Contains(this)) {
+ throw new InvalidOperationException("The row already exists in the DataGridView.");
+ }
+ DataGridViewCellCollection newCellCollection = new DataGridViewCellCollection(this);
+ foreach (DataGridViewColumn column in dataGridView.Columns) {
+ if (column.CellTemplate == null) {
+ throw new InvalidOperationException("Cell template not set in column: " + column.Index.ToString() + ".");
+ }
+ newCellCollection.Add((DataGridViewCell) column.CellTemplate.Clone());
+ }
+ cells = newCellCollection;
+ }
+
+ public void CreateCells (DataGridView dataGridView, params object[] values) {
+ if (values == null) {
+ throw new ArgumentNullException("values is null");
+ }
+ CreateCells(dataGridView);
+ for (int i = 0; i < values.Length; i++) {
+ cells[i].Value = values[i];
+ }
+ }
+
+ /*
+ public ContextMenuStrip GetContextMenuStrip (int rowIndex) {
+ if (rowIndex == -1) {
+ throw new InvalidOperationException("rowIndex is -1");
+ }
+ if (rowIndex < 0 || rowIndex >= dataGridView.Rows.Count) {
+ throw new ArgumentOutOfRangeException("rowIndex is out of range");
+ }
+ }
+ */
+
+ public string GetErrorText (int rowIndex) {
+ return "";
+ }
+
+ public virtual int GetPreferredHeight (int rowIndex, DataGridViewAutoSizeRowMode autoSizeRowMode, bool fixedWidth) {
+ throw new NotImplementedException();
+ }
+
+ public virtual DataGridViewElementStates GetState (int rowIndex) {
+ throw new NotImplementedException();
+ }
+
+ public void SetValues (params object[] values) {
+ if (values == null) {
+ throw new ArgumentNullException("vues is null");
+ }
+ if (DataGridView != null && DataGridView.VirtualMode) {
+ throw new InvalidOperationException("DataGridView is operating in virtual mode");
+ }
+ /////// COLUMNAS //////////
+ for (int i = 0; i < values.Length; i++) {
+ DataGridViewCell cell = new DataGridViewTextBoxCell();
+ cell.Value = values[i];
+ cells.Add(cell);
+ }
+ }
+
+ public override string ToString () {
+ return this.GetType().Name + ", Band Index: " + base.Index.ToString();
+ }
+
+ protected virtual AccessibleObject CreateAccessibilityInstance () {
+ return new DataGridViewRowAccessibleObject(this);
+ }
+
+ protected virtual DataGridViewCellCollection CreateCellsInstance () {
+ cells = new DataGridViewCellCollection(this);
+ return cells;
+ }
+
+ protected internal virtual void DrawFocus (Graphics graphics, Rectangle clipBounds, Rectangle bounds, int rowIndex, DataGridViewElementStates rowState, DataGridViewCellStyle cellStyle, bool cellsPaintSelectionBackground) {
+ }
+
+ protected internal virtual void Paint (Graphics graphics, Rectangle clipBounds, Rectangle rowBounds, int rowIndex, DataGridViewElementStates rowState, bool isFirstDisplayedRow, bool isLastVisibleRow) {
+ }
+
+ protected internal virtual void PaintCells (Graphics graphics, Rectangle clipBounds, Rectangle rowBounds, int rowIndex, DataGridViewElementStates rowState, bool isFirstDisplayedRow, bool isLastVisibleRow, DataGridViewPaintParts paintParts) {
+ }
+
+ protected internal virtual void PaintHeader (Graphics graphics, Rectangle clipBounds, Rectangle rowBounds, int rowIndex, DataGridViewElementStates rowState, bool isFirstDisplayedRow, bool isLastVisibleRow, DataGridViewPaintParts paintParts) {
+ }
+
+ internal override void SetDataGridView (DataGridView dataGridView) {
+ base.SetDataGridView(dataGridView);
+ headerCell.SetDataGridView(dataGridView);
+ }
+
+ internal override void SetState (DataGridViewElementStates state) {
+ if (State != state) {
+ base.SetState(state);
+ if (DataGridView != null) {
+ DataGridView.OnRowStateChanged(this.Index, new DataGridViewRowStateChangedEventArgs(this, state));
+ }
+ }
+ }
+
+ [ComVisibleAttribute(true)]
+ protected class DataGridViewRowAccessibleObject : AccessibleObject {
+
+ private DataGridViewRow dataGridViewRow;
+
+ public DataGridViewRowAccessibleObject () {
+ }
+
+ public DataGridViewRowAccessibleObject (DataGridViewRow row) {
+ this.dataGridViewRow = row;
+ }
+
+ public override Rectangle Bounds {
+ get { throw new NotImplementedException(); }
+ }
+
+ public override string DefaultAction {
+ get { return "Edit"; }
+ }
+
+ public override string Name {
+ get { return "Index: " + dataGridViewRow.Index.ToString(); }
+ }
+
+ public DataGridViewRow Owner {
+ get { return dataGridViewRow; }
+ set { dataGridViewRow = value; }
+ }
+
+ public override AccessibleObject Parent {
+ get { return dataGridViewRow.AccessibilityObject; }
+ }
+
+ public override AccessibleRole Role {
+ get { return AccessibleRole.Row; }
+ }
+
+ public override AccessibleStates State {
+ get {
+ if (dataGridViewRow.Selected) {
+ return AccessibleStates.Selected;
+ }
+ else {
+ return AccessibleStates.Focused;
+ }
+ }
+ }
+
+ public override string Value {
+ get {
+ if (dataGridViewRow.Cells.Count == 0) {
+ return "(Create New)";
+ }
+ string result = "";
+ foreach (DataGridViewCell cell in dataGridViewRow.Cells) {
+ result += cell.AccessibilityObject.Value;
+ }
+ return result;
+ }
+ }
+
+ public override AccessibleObject GetChild (int index) {
+ throw new NotImplementedException();
+ }
+
+ public override int GetChildCount () {
+ throw new NotImplementedException();
+ }
+
+ 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:
+ dataGridViewRow.DataGridView.Focus();
+ break;
+ case AccessibleSelection.TakeSelection:
+ //dataGridViewRow.Focus();
+ break;
+ case AccessibleSelection.AddSelection:
+ dataGridViewRow.DataGridView.SelectedRows.InternalAdd(dataGridViewRow);
+ break;
+ case AccessibleSelection.RemoveSelection:
+ dataGridViewRow.DataGridView.SelectedRows.InternalRemove(dataGridViewRow);
+ break;
+ }
+ }
+
+ }
+
+
+
+ }
+
+}
+
+#endif