* DataGridViewElement.cs: Initialize state.
[mono.git] / mcs / class / Managed.Windows.Forms / System.Windows.Forms / DataGridViewColumnHeaderCell.cs
1 // Permission is hereby granted, free of charge, to any person obtaining
2 // a copy of this software and associated documentation files (the
3 // "Software"), to deal in the Software without restriction, including
4 // without limitation the rights to use, copy, modify, merge, publish,
5 // distribute, sublicense, and/or sell copies of the Software, and to
6 // permit persons to whom the Software is furnished to do so, subject to
7 // the following conditions:
8 // 
9 // The above copyright notice and this permission notice shall be
10 // included in all copies or substantial portions of the Software.
11 // 
12 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
13 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
14 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
15 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
16 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
17 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
18 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
19 //
20 // Copyright (c) 2005 Novell, Inc. (http://www.novell.com)
21 //
22 // Author:
23 //      Pedro Martínez Juliá <pedromj@gmail.com>
24 //
25
26
27 #if NET_2_0
28
29 using System;
30 using System.Drawing;
31 using System.ComponentModel;
32
33 namespace System.Windows.Forms {
34
35         public class DataGridViewColumnHeaderCell : DataGridViewHeaderCell {
36
37                 private SortOrder sortGlyphDirection = SortOrder.None;
38                 private object header_text;
39                 
40                 public DataGridViewColumnHeaderCell () {
41                 }
42
43                 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
44                 public SortOrder SortGlyphDirection {
45                         get { return sortGlyphDirection; }
46                         set { sortGlyphDirection = value; }
47                 }
48
49                 public override object Clone () {
50                         return MemberwiseClone();
51                 }
52
53                 public override ContextMenuStrip GetInheritedContextMenuStrip (int rowIndex) {
54                         if (rowIndex != -1) {
55                                 throw new ArgumentOutOfRangeException("RowIndex is not -1");
56                         }
57                         if (base.ContextMenuStrip != null) {
58                                 return base.ContextMenuStrip;
59                         }
60                         return base.GetInheritedContextMenuStrip(rowIndex); //////////////////////////////
61                 }
62
63                 public override DataGridViewCellStyle GetInheritedStyle (DataGridViewCellStyle inheritedCellStyle, int rowIndex, bool includeColors) {
64                         
65                         DataGridViewCellStyle result;
66                         
67                         if (HasStyle) {
68                                 result = Style;
69                         } else {
70                                 result = DataGridView.ColumnHeadersDefaultCellStyle;
71                         }
72                         
73                         return result;                  
74                 }
75
76                 public override string ToString () {
77                         return GetType().Name;
78                 }
79
80                 protected override AccessibleObject CreateAccessibilityInstance () {
81                         return new DataGridViewColumnHeaderCellAccessibleObject(this);
82                 }
83
84                 protected override object GetClipboardContent (int rowIndex, bool firstCell, bool lastCell, bool inFirstRow, bool inLastRow, string format) {
85                         throw new NotImplementedException();
86                         //////////////////////////////////////////
87                 }
88
89                 protected override Rectangle GetContentBounds (Graphics graphics, DataGridViewCellStyle cellStyle, int rowIndex) {
90                         return new Rectangle();
91                 }
92
93                 protected override Size GetPreferredSize (Graphics graphics, DataGridViewCellStyle cellStyle, int rowIndex, Size constraintSize) {
94                         throw new NotImplementedException();
95                 }
96
97                 protected override object GetValue (int rowIndex) {
98                         if (header_text != null)
99                                 return header_text;
100                                 
101                         if (OwningColumn != null)
102                                 return OwningColumn.Name;
103                         
104                         return null;
105                 }
106
107                 protected override void Paint (Graphics graphics, Rectangle clipBounds, Rectangle cellBounds, int rowIndex, DataGridViewElementStates dataGridViewElementState, object value, object formattedValue, string errorText, DataGridViewCellStyle cellStyle, DataGridViewAdvancedBorderStyle advancedBorderStyle, DataGridViewPaintParts paintParts) {
108                         graphics.FillRectangle(new SolidBrush(cellStyle.BackColor), cellBounds);
109                         graphics.DrawString((string) formattedValue, cellStyle.Font, new SolidBrush(cellStyle.ForeColor), cellBounds, StringFormat.GenericDefault);
110                         PaintBorder(graphics, clipBounds, cellBounds, cellStyle, advancedBorderStyle);
111                 }
112
113                 protected override bool SetValue (int rowIndex, object value) {
114                         header_text = value;
115                         return true;
116                 }
117
118                 protected class DataGridViewColumnHeaderCellAccessibleObject : DataGridViewCellAccessibleObject {
119
120                         public DataGridViewColumnHeaderCellAccessibleObject (DataGridViewColumnHeaderCell owner) : base (owner) {
121                         }
122
123                         public override Rectangle Bounds {
124                                 get { return base.Bounds; }
125                         }
126
127                         public override string DefaultAction {
128                                 get { return base.DefaultAction; }
129                         }
130
131                         public override string Name {
132                                 get { return base.Name; }
133                         }
134
135                         public override AccessibleObject Parent {
136                                 get { return base.Parent; }
137                         }
138
139                         public override AccessibleRole Role {
140                                 get { return base.Role; }
141                         }
142
143                         public override string Value {
144                                 get { return base.Value; }
145                         }
146
147                         public override void DoDefaultAction () {
148                                 base.DoDefaultAction();
149                         }
150
151                         public override AccessibleObject Navigate (AccessibleNavigation navigationDirection) {
152                                 return base.Navigate(navigationDirection);
153                         }
154
155                 }
156
157         }
158
159 }
160
161 #endif