Merge pull request #1275 from ranma42/fix-lib64
[mono.git] / mcs / class / Managed.Windows.Forms / System.Windows.Forms / DataGridViewTopLeftHeaderCell.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 using System.Drawing;
27
28 namespace System.Windows.Forms
29 {
30         public class DataGridViewTopLeftHeaderCell : DataGridViewColumnHeaderCell
31         {
32                 public DataGridViewTopLeftHeaderCell ()
33                 {
34                 }
35
36                 public override string ToString ()
37                 {
38                         return GetType ().Name;
39                 }
40
41                 protected override AccessibleObject CreateAccessibilityInstance ()
42                 {
43                         return new DataGridViewTopLeftHeaderCellAccessibleObject (this);
44                 }
45
46                 protected override Rectangle GetContentBounds (Graphics graphics, DataGridViewCellStyle cellStyle, int rowIndex)
47                 {
48                         if (DataGridView == null)
49                                 return Rectangle.Empty;
50
51                         Size s = new Size (36, 13);
52                         return new Rectangle (2, (DataGridView.ColumnHeadersHeight - s.Height) / 2, s.Width, s.Height);
53                 }
54
55                 protected override Rectangle GetErrorIconBounds (Graphics graphics, DataGridViewCellStyle cellStyle, int rowIndex)
56                 {
57                         if (DataGridView == null || string.IsNullOrEmpty (ErrorText))
58                                 return Rectangle.Empty;
59
60                         Size error_icon = new Size (12, 11);
61                         return new Rectangle (new Point (Size.Width - error_icon.Width - 5, (Size.Height - error_icon.Height) / 2), error_icon);
62                 }
63
64                 protected override Size GetPreferredSize (Graphics graphics, DataGridViewCellStyle cellStyle, int rowIndex, Size constraintSize)
65                 {
66                         object o = Value;
67
68                         if (o != null) {
69                                 Size s = DataGridViewCell.MeasureTextSize (graphics, o.ToString (), cellStyle.Font, TextFormatFlags.Default);
70                                 s.Height = Math.Max (s.Height, 17);
71                                 s.Width += 29;
72                                 return s;
73                         } else
74                                 return new Size (39, 17);
75                 }
76
77                 protected override void Paint (Graphics graphics, Rectangle clipBounds, Rectangle cellBounds, int rowIndex, DataGridViewElementStates  cellState, object value, object formattedValue, string errorText, DataGridViewCellStyle cellStyle, DataGridViewAdvancedBorderStyle advancedBorderStyle, DataGridViewPaintParts paintParts)
78                 {
79                         base.Paint (graphics, clipBounds, cellBounds, rowIndex,  cellState, value, formattedValue, errorText, cellStyle, advancedBorderStyle, paintParts);
80                 }
81         
82                 protected override void PaintBorder (Graphics graphics, Rectangle clipBounds, Rectangle bounds, DataGridViewCellStyle cellStyle, DataGridViewAdvancedBorderStyle advancedBorderStyle)
83                 {
84                         base.PaintBorder (graphics, clipBounds, bounds, cellStyle, advancedBorderStyle);
85                 }
86
87                 protected class DataGridViewTopLeftHeaderCellAccessibleObject : DataGridViewColumnHeaderCellAccessibleObject
88                 {
89                         public DataGridViewTopLeftHeaderCellAccessibleObject (DataGridViewTopLeftHeaderCell owner) : base (owner)
90                         {
91                         }
92
93                         public override Rectangle Bounds {
94                                 get { throw new NotImplementedException (); }
95                         }
96
97                         public override string DefaultAction {
98                                 get {
99                                         if (Owner.DataGridView != null && Owner.DataGridView.MultiSelect) {
100                                                 return "Press to Select All";
101                                         }
102                                         return string.Empty;
103                                 }
104                         }
105
106                         public override string Name {
107                                 get { return base.Name; }
108                         }
109
110                         public override AccessibleStates State {
111                                 get { return base.State; }
112                         }
113
114                         public override string Value {
115                                 get { return base.Value; }
116                         }
117                         
118                         public override void DoDefaultAction ()
119                         {
120                                 if (Owner.DataGridView != null)
121                                         Owner.DataGridView.SelectAll();
122                         }
123
124                         public override AccessibleObject Navigate (AccessibleNavigation navigationDirection)
125                         {
126                                 throw new NotImplementedException ();
127                         }
128
129                         public override void Select (AccessibleSelection flags)
130                         {
131                                 base.Select (flags);
132                         }
133                 }
134         }
135 }
136