2007-06-04 Jonathan Pobst <monkey@jpobst.com>
[mono.git] / mcs / class / Managed.Windows.Forms / System.Windows.Forms / PrintPreviewDialog.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) 2006 Novell, Inc.
21 //
22 // Authors:
23 //      Jonathan Chambers (jonathan.chambers@ansys.com)
24 //      Peter Dennis Bartok (pbartok@novell.com)
25 //
26
27 using System;
28 using System.ComponentModel;
29 using System.ComponentModel.Design;
30 using System.ComponentModel.Design.Serialization;
31 using System.Collections;
32 using System.Diagnostics;
33 using System.Drawing;
34 using System.Drawing.Printing;
35 using System.Reflection;
36 using System.Runtime.InteropServices;
37
38 namespace System.Windows.Forms {
39         [DefaultProperty("Document")]
40         [Designer("System.ComponentModel.Design.ComponentDesigner, " + Consts.AssemblySystem_Design)]
41         [DesignTimeVisible(true)]
42         [ToolboxItem(true)]
43 #if NET_2_0
44         [ClassInterface (ClassInterfaceType.AutoDispatch)]
45         [ComVisible (true)]
46         [ToolboxItemFilter ("System.Windows.Forms.Control.TopLevel", ToolboxItemFilterType.Allow)]
47 #endif
48         public class PrintPreviewDialog : Form {
49                 PrintPreviewControl print_preview;
50                 MenuItem previous_checked_menu_item;
51                 Menu mag_menu;
52                 MenuItem auto_zoom_item;
53                 NumericUpDown pageUpDown;
54
55                 public PrintPreviewDialog()
56                 {
57                         this.ClientSize = new Size (400, 300);
58                         ToolBar toolbar = CreateToolBar ();
59
60                         toolbar.Location = new Point (0, 0);
61                         toolbar.Dock = DockStyle.Top;
62                         Controls.Add (toolbar);
63
64
65                         print_preview = new PrintPreviewControl();
66                         print_preview.Location = new Point (0, toolbar.Location.Y + toolbar.Size.Height);
67                         print_preview.Dock = DockStyle.Fill;
68                         Controls.Add (print_preview);
69                         print_preview.Show ();
70                 }
71
72                 ToolBar CreateToolBar ()
73                 {
74                         ImageList image_list = new ImageList ();
75                         image_list.Images.Add (ResourceImageLoader.Get ("32_printer.png"));
76                         image_list.Images.Add (ResourceImageLoader.Get ("22_page-magnifier.png"));
77                         image_list.Images.Add (ResourceImageLoader.Get ("1-up.png"));
78                         image_list.Images.Add (ResourceImageLoader.Get ("2-up.png"));
79                         image_list.Images.Add (ResourceImageLoader.Get ("3-up.png"));
80                         image_list.Images.Add (ResourceImageLoader.Get ("4-up.png"));
81                         image_list.Images.Add (ResourceImageLoader.Get ("6-up.png"));
82
83                         MenuItem mi;
84                         mag_menu = new ContextMenu ();
85
86                         ToolBar toolbar = new ToolBar();
87                         ToolBarButton print = new ToolBarButton();
88                         ToolBarButton zoom = new ToolBarButton();
89                         ToolBarButton separator1 = new ToolBarButton();
90
91                         ToolBarButton one_page = new ToolBarButton();
92                         ToolBarButton two_page = new ToolBarButton();
93                         ToolBarButton three_page = new ToolBarButton();
94                         ToolBarButton four_page = new ToolBarButton();
95                         ToolBarButton six_page = new ToolBarButton();
96                         ToolBarButton separator2 = new ToolBarButton();
97
98                         Button close = new Button();
99                         Label label = new Label();
100                         pageUpDown = new NumericUpDown();
101
102                         toolbar.ImageList = image_list;
103                         toolbar.Size = new Size(792, 43);
104                         toolbar.Dock = DockStyle.Top;
105                         toolbar.Appearance = ToolBarAppearance.Flat;
106                         toolbar.ShowToolTips = true;
107                         toolbar.DropDownArrows = true;
108                         toolbar.Buttons.AddRange(new ToolBarButton[] { print, zoom, separator1, 
109                                                                                                                    one_page, two_page, three_page, four_page, six_page, separator2 });
110                         toolbar.ButtonClick += new ToolBarButtonClickEventHandler (OnClickToolBarButton);
111
112                         /* print button */
113                         print.ImageIndex = 0;
114                         print.Tag = 0;
115                         print.ToolTipText = "Print";
116
117                         /* magnify dropdown */
118                         zoom.ImageIndex = 1;
119                         zoom.Tag = 1;
120                         zoom.ToolTipText = "Zoom";
121                         zoom.Style = ToolBarButtonStyle.DropDownButton;
122                         zoom.DropDownMenu = mag_menu;
123                 
124                         mi = mag_menu.MenuItems.Add ("Auto", new EventHandler (OnClickPageMagnifierItem)); mi.RadioCheck = true;
125                         mi.Checked = true;
126                         previous_checked_menu_item = mi;
127                         auto_zoom_item = mi;
128
129                         mi = mag_menu.MenuItems.Add ("500%", new EventHandler (OnClickPageMagnifierItem)); mi.RadioCheck = true;
130                         mi = mag_menu.MenuItems.Add ("200%", new EventHandler (OnClickPageMagnifierItem)); mi.RadioCheck = true;
131                         mi = mag_menu.MenuItems.Add ("150%", new EventHandler (OnClickPageMagnifierItem)); mi.RadioCheck = true;
132                         mi = mag_menu.MenuItems.Add ("100%", new EventHandler (OnClickPageMagnifierItem)); mi.RadioCheck = true;
133                         mi = mag_menu.MenuItems.Add ("75%", new EventHandler (OnClickPageMagnifierItem)); mi.RadioCheck = true;
134                         mi = mag_menu.MenuItems.Add ("50%", new EventHandler (OnClickPageMagnifierItem)); mi.RadioCheck = true;
135                         mi = mag_menu.MenuItems.Add ("25%", new EventHandler (OnClickPageMagnifierItem)); mi.RadioCheck = true;
136                         mi = mag_menu.MenuItems.Add ("10%", new EventHandler (OnClickPageMagnifierItem)); mi.RadioCheck = true;
137
138
139                         /* separator */
140                         separator1.Style = ToolBarButtonStyle.Separator;
141
142                         /* n-up icons */
143                         one_page.ImageIndex = 2;
144                         one_page.Tag = 2;
145                         one_page.ToolTipText = "One page";
146
147                         two_page.ImageIndex = 3;
148                         two_page.Tag = 3;
149                         two_page.ToolTipText = "Two pages";
150
151                         three_page.ImageIndex = 4;
152                         three_page.Tag = 4;
153                         three_page.ToolTipText = "Three pages";
154                         
155                         four_page.ImageIndex = 5;
156                         four_page.Tag = 5;
157                         four_page.ToolTipText = "Four pages";
158                         
159                         six_page.ImageIndex = 6;
160                         six_page.Tag = 6;
161                         six_page.ToolTipText = "Six pages";
162                         
163
164                         /* separator */
165                         separator2.Style = ToolBarButtonStyle.Separator;
166
167                         /* Page label */
168                         label.Text = "Page";
169                         label.TabStop = false;
170                         label.Size = new Size(50, 18);
171                         label.TextAlign = ContentAlignment.MiddleLeft;
172                         label.Dock = DockStyle.Right;
173
174                         /* the page number updown */
175                         pageUpDown.Dock = DockStyle.Right;
176                         pageUpDown.TextAlign = HorizontalAlignment.Right;
177                         pageUpDown.DecimalPlaces = 0;
178                         pageUpDown.TabIndex = 1;
179                         pageUpDown.Text = "1";
180                         pageUpDown.Minimum = 0;
181                         pageUpDown.Maximum = 1000;
182                         pageUpDown.Size = new Size(64, 14);
183                         pageUpDown.Dock = DockStyle.Right;
184 //                      pageUpDown.Location = new Point(568, 0);
185                         pageUpDown.ValueChanged += new EventHandler (OnPageUpDownValueChanged);
186
187                         /* close button */
188                         close.Location = new Point(196, 2);
189                         close.Size = new Size(50, 20);
190                         close.TabIndex = 2;
191                         close.FlatStyle = FlatStyle.Popup;
192                         close.Text = "Close";
193                         close.Click += new EventHandler (CloseButtonClicked);
194
195                         toolbar.Controls.Add(label);
196                         toolbar.Controls.Add(pageUpDown);
197                         toolbar.Controls.Add(close);
198
199 //                      close.Location = new Point (b.Rectangle.X + b.Rectangle.Width, toolbar.Height / 2 - close.Height / 2);
200 //                      MinimumSize = new Size (close.Location.X + close.Width + label.Width + pageUpDown.Width, 220);
201
202                         return toolbar;
203                 }
204
205                 void CloseButtonClicked (object sender, EventArgs e)
206                 {
207                         Close ();
208                 }
209
210                 void OnPageUpDownValueChanged (object sender, EventArgs e)
211                 {
212                         print_preview.StartPage = (int)pageUpDown.Value;
213                 }
214
215                 void OnClickToolBarButton (object sender, ToolBarButtonClickEventArgs e)
216                 {
217                         if (e.Button.Tag == null || !(e.Button.Tag is int))
218                                 return;
219
220                         switch ((int)e.Button.Tag)
221                         {
222                         case 0:
223                                 Console.WriteLine ("do print here");
224                                 break;
225                         case 1:
226                                 OnClickPageMagnifierItem (auto_zoom_item, EventArgs.Empty);
227                                 break;
228                         case 2:
229                                 print_preview.Rows = 0;
230                                 print_preview.Columns = 1;
231                                 break;
232                         case 3:
233                                 print_preview.Rows = 0;
234                                 print_preview.Columns = 2;
235                                 break;
236                         case 4:
237                                 print_preview.Rows = 0;
238                                 print_preview.Columns = 3;
239                                 break;
240                         case 5:
241                                 print_preview.Rows = 1;
242                                 print_preview.Columns = 2;
243                                 break;
244                         case 6:
245                                 print_preview.Rows = 1;
246                                 print_preview.Columns = 3;
247                                 break;
248                         }
249                 }
250
251                 void OnClickPageMagnifierItem (object sender, EventArgs e)
252                 {
253                         MenuItem clicked_item = (MenuItem)sender;
254
255                         previous_checked_menu_item.Checked = false;
256
257                         switch (clicked_item.Index) {
258                         case 0:
259                                 print_preview.AutoZoom = true;
260                                 break;
261                         case 1:
262                                 print_preview.AutoZoom = false;
263                                 print_preview.Zoom = 5.0;
264                                 break;
265                         case 2:
266                                 print_preview.AutoZoom = false;
267                                 print_preview.Zoom = 2.0;
268                                 break;
269                         case 3:
270                                 print_preview.AutoZoom = false;
271                                 print_preview.Zoom = 1.5;
272                                 break;
273                         case 4:
274                                 print_preview.AutoZoom = false;
275                                 print_preview.Zoom = 1.0;
276                                 break;
277                         case 5:
278                                 print_preview.AutoZoom = false;
279                                 print_preview.Zoom = 0.75;
280                                 break;
281                         case 6:
282                                 print_preview.AutoZoom = false;
283                                 print_preview.Zoom = 0.50;
284                                 break;
285                         case 7:
286                                 print_preview.AutoZoom = false;
287                                 print_preview.Zoom = 0.25;
288                                 break;
289                         case 8:
290                                 print_preview.AutoZoom = false;
291                                 print_preview.Zoom = 0.10;
292                                 break;
293                         }
294
295                         clicked_item.Checked = true;
296                         previous_checked_menu_item = clicked_item;
297                 }
298
299                 // new property so we can set EditorBrowsable to never.
300                 [Browsable(false)]
301                 [EditorBrowsable(EditorBrowsableState.Never)]
302                 public new IButtonControl AcceptButton {
303                         get { return base.AcceptButton; }
304                         set { base.AcceptButton = value; }
305                 }
306
307                 // new property so we can set EditorBrowsable to never.
308                 [Browsable(false)]
309                 [EditorBrowsable(EditorBrowsableState.Never)]
310                 public new string AccessibleDescription {
311                         get { return base.AccessibleDescription; }
312                         set { base.AccessibleDescription = value; }
313                 }
314  
315                 // new property so we can set EditorBrowsable to never.
316                 [Browsable(false)]
317                 [EditorBrowsable(EditorBrowsableState.Never)]
318                 public new string AccessibleName {
319                         get { return base.AccessibleName; }
320                         set { base.AccessibleName = value; }
321                 }
322  
323                 // new property so we can set EditorBrowsable to never.
324                 [Browsable(false)]
325                 [EditorBrowsable(EditorBrowsableState.Never)]
326                 public new AccessibleRole AccessibleRole {
327                         get { return base.AccessibleRole; }
328                         set { base.AccessibleRole = value; }
329                 }
330  
331                 [Browsable(false)]
332                 [EditorBrowsable(EditorBrowsableState.Never)]
333                 public override bool AllowDrop {
334                         get {
335                                 return base.AllowDrop;
336                         }
337
338                         set {
339                                 base.AllowDrop = value;
340                         }
341                 }
342  
343                 [Browsable(false)]
344                 [EditorBrowsable(EditorBrowsableState.Never)]
345                 public override AnchorStyles Anchor {
346                         get {
347                                 return base.Anchor;
348                         }
349
350                         set {
351                                 base.Anchor = value;
352                         }
353                 }
354
355                 // new property so we can set EditorBrowsable to never.
356                 [Browsable(false)]
357                 [EditorBrowsable(EditorBrowsableState.Never)]
358                 public new bool AutoScale {
359                         get { return base.AutoScale; }
360                         set { base.AutoScale = value; }
361                 }
362
363                 [Browsable(false)]
364                 [EditorBrowsable(EditorBrowsableState.Never)]
365 #if NET_2_0
366                 [Obsolete ("This property has been deprecated.  Use AutoScaleDimensions instead.")]
367 #endif
368                 public override Size AutoScaleBaseSize {
369                         get {
370                                 return base.AutoScaleBaseSize;
371                         }
372
373                         set {
374                                 base.AutoScaleBaseSize = value;
375                         }
376                 }
377  
378                 [Browsable(false)]
379                 [EditorBrowsable(EditorBrowsableState.Never)]
380                 public override bool AutoScroll {
381                         get {
382                                 return base.AutoScroll;
383                         }
384
385                         set {
386                                 base.AutoScroll = value;
387                         }
388                 }
389  
390                 // new property so we can set EditorBrowsable to never.
391                 [Browsable(false)]
392                 [EditorBrowsable(EditorBrowsableState.Never)]
393                 public new Size AutoScrollMargin {
394                         get { return base.AutoScrollMargin; }
395                         set { base.AutoScrollMargin = value; }
396                 }
397
398                 // new property so we can set EditorBrowsable to never.
399                 [Browsable(false)]
400                 [EditorBrowsable(EditorBrowsableState.Never)]
401                 public new Size AutoScrollMinSize {
402                         get { return base.AutoScrollMinSize; }
403                         set { base.AutoScrollMinSize = value; }
404                 }
405  
406                 [Browsable(false)]
407                 [EditorBrowsable(EditorBrowsableState.Never)]
408                 public override Color BackColor {
409                         get {
410                                 return base.BackColor;
411                         }
412
413                         set {
414                                 base.BackColor = value;
415                         }
416                 }
417  
418                 [Browsable(false)]
419                 [EditorBrowsable(EditorBrowsableState.Never)]
420                 public override Image BackgroundImage {
421                         get {
422                                 return base.BackgroundImage;
423                         }
424
425                         set {
426                                 base.BackgroundImage = value;
427                         }
428                 }
429  
430                 // new property so we can set EditorBrowsable to never.
431                 [Browsable(false)]
432                 [EditorBrowsable(EditorBrowsableState.Never)]
433                 public new IButtonControl CancelButton {
434                         get { return base.CancelButton; }
435                         set { base.CancelButton = value; }
436                 }
437  
438                 // new property so we can set EditorBrowsable to never.
439                 [Browsable(false)]
440                 [EditorBrowsable(EditorBrowsableState.Never)]
441                 public new bool CausesValidation {
442                         get { return base.CausesValidation; }
443                         set { base.CausesValidation = value; }
444                 }
445  
446                 [Browsable(false)]
447                 [EditorBrowsable(EditorBrowsableState.Never)]
448                 public override ContextMenu ContextMenu {
449                         get {
450                                 return base.ContextMenu;
451                         }
452
453                         set {
454                                 base.ContextMenu = value;
455                         }
456                 }
457  
458                 // new property so we can set EditorBrowsable to never.
459                 [Browsable(false)]
460                 [EditorBrowsable(EditorBrowsableState.Never)]
461                 public new bool ControlBox {
462                         get { return base.ControlBox; }
463                         set { base.ControlBox = value; }
464                 }
465  
466                 [Browsable(false)]
467                 [EditorBrowsable(EditorBrowsableState.Never)]
468                 public override Cursor Cursor {
469                         get {
470                                 return base.Cursor;
471                         }
472
473                         set {
474                                 base.Cursor = value;
475                         }
476                 }
477  
478                 // new property so we can set EditorBrowsable to never.
479                 [Browsable(false)]
480                 [EditorBrowsable(EditorBrowsableState.Never)]
481                 public new ControlBindingsCollection DataBindings {
482                         get { return base.DataBindings; }
483                 }
484  
485                 [Browsable(false)]
486                 [EditorBrowsable(EditorBrowsableState.Never)]
487                 public override DockStyle Dock {
488                         get {
489                                 return base.Dock;
490                         }
491
492                         set {
493                                 base.Dock = value;
494                         }
495                 }
496  
497                 // new property so we can set EditorBrowsable to never.
498                 [Browsable(false)]
499                 [EditorBrowsable(EditorBrowsableState.Never)]
500                 public new DockPaddingEdges DockPadding {
501                         get { return base.DockPadding; }
502                 }
503  
504                 
505                 [DefaultValue(null)]
506                 public PrintDocument Document {
507                         get { return print_preview.Document; }
508                         set {
509                                 print_preview.Document = value;
510                         }
511                 }
512
513                 // new property so we can set EditorBrowsable to never.
514                 [Browsable(false)]
515                 [EditorBrowsable(EditorBrowsableState.Never)]
516                 public new bool Enabled {
517                         get { return base.Enabled; }
518                         set { base.Enabled = value; }
519                 }
520  
521                 [Browsable(false)]
522                 [EditorBrowsable(EditorBrowsableState.Never)]
523                 public override Font Font {
524                         get {
525                                 return base.Font;
526                         }
527
528                         set {
529                                 base.Font = value;
530                         }
531                 }
532  
533                 [Browsable(false)]
534                 [EditorBrowsable(EditorBrowsableState.Never)]
535                 public override Color ForeColor {
536                         get {
537                                 return base.ForeColor;
538                         }
539
540                         set {
541                                 base.ForeColor = value;
542                         }
543                 }
544  
545                 // new property so we can set EditorBrowsable to never.
546                 [Browsable(false)]
547                 [EditorBrowsable(EditorBrowsableState.Never)]
548                 public new FormBorderStyle FormBorderStyle {
549                         get { return base.FormBorderStyle; }
550                         set { base.FormBorderStyle = value; }
551                 }
552  
553                 // new property so we can set EditorBrowsable to never.
554                 [Browsable(false)]
555                 [EditorBrowsable(EditorBrowsableState.Never)]
556                 public new bool HelpButton {
557                         get { return base.HelpButton; }
558                         set { base.HelpButton = value; }
559                 }
560
561                 // new property so we can set EditorBrowsable to never.
562                 [Browsable(false)]
563                 [EditorBrowsable(EditorBrowsableState.Never)]
564                 public new Icon Icon {
565                         get { return base.Icon; }
566                         set { base.Icon = value; }
567                 }
568  
569                 // new property so we can set EditorBrowsable to never.
570                 [Browsable(false)]
571                 [EditorBrowsable(EditorBrowsableState.Never)]
572                 public new ImeMode ImeMode {
573                         get { return base.ImeMode; }
574                         set { base.ImeMode = value; }
575                 }
576  
577                 // new property so we can set EditorBrowsable to never.
578                 [Browsable(false)]
579                 [EditorBrowsable(EditorBrowsableState.Never)]
580                 public new bool IsMdiContainer {
581                         get { return base.IsMdiContainer; }
582                         set { base.IsMdiContainer = value; }
583                 }
584  
585                 // new property so we can set EditorBrowsable to never.
586                 [Browsable(false)]
587                 [EditorBrowsable(EditorBrowsableState.Never)]
588                 public new bool KeyPreview {
589                         get { return base.KeyPreview; }
590                         set { base.KeyPreview = value; }
591                 }
592  
593                 // new property so we can set EditorBrowsable to never.
594                 [Browsable(false)]
595                 [EditorBrowsable(EditorBrowsableState.Never)]
596 #if NET_2_0
597                 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
598 #endif
599                 public new Point Location {
600                         get { return base.Location; }
601                         set { base.Location = value; }
602                 }
603  
604                 // new property so we can set EditorBrowsable to never.
605                 [Browsable(false)]
606                 [EditorBrowsable(EditorBrowsableState.Never)]
607                 public new bool MaximizeBox {
608                         get { return base.MaximizeBox; }
609                         set { base.MaximizeBox = value; }
610                 }
611  
612                 // new property so we can set EditorBrowsable to never.
613                 [Browsable(false)]
614                 [EditorBrowsable(EditorBrowsableState.Never)]
615                 public new Size MaximumSize {
616                         get { return base.MaximumSize; }
617                         set { base.MaximumSize = value; }
618                 }
619  
620                 // new property so we can set EditorBrowsable to never.
621                 [Browsable(false)]
622                 [EditorBrowsable(EditorBrowsableState.Never)]
623                 public new MainMenu Menu {
624                         get { return base.Menu; }
625                         set { base.Menu = value; }
626                 }
627  
628                 // new property so we can set EditorBrowsable to never.
629                 [Browsable(false)]
630                 [DefaultValue(false)]
631                 [EditorBrowsable(EditorBrowsableState.Never)]
632                 public new bool MinimizeBox {
633                         get { return base.MinimizeBox; }
634                         set { base.MinimizeBox = value; }
635                 }
636  
637                 // new property so we can set EditorBrowsable to never.
638                 [Browsable(false)]
639                 [EditorBrowsable(EditorBrowsableState.Never)]
640 #if NET_2_0
641                 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
642 #endif
643                 public new Size MinimumSize {
644                         get { return base.MinimumSize; }
645                         set { base.MinimumSize = value; }
646                 }
647  
648                 // new property so we can set Browsable/EditorBrowsable.
649                 [Browsable(false)]
650                 [EditorBrowsable(EditorBrowsableState.Advanced)]
651                 public new double Opacity {
652                         get { return base.Opacity; }
653                         set { base.Opacity = value; }
654                 }
655  
656                 [Browsable(false)]
657 #if !NET_2_0
658                 [EditorBrowsable(EditorBrowsableState.Never)]
659 #endif
660                 public PrintPreviewControl PrintPreviewControl {
661                         get { return print_preview; }
662                 }
663  
664                 [Browsable(false)]
665                 [EditorBrowsable(EditorBrowsableState.Never)]
666                 public override RightToLeft RightToLeft {
667                         get {
668                                 return base.RightToLeft;
669                         }
670
671                         set {
672                                 base.RightToLeft = value;
673                         }
674                 }
675  
676                 // new property so we can set Browsable/EditorBrowsable
677                 [Browsable(false)]
678                 [DefaultValue(false)]
679                 [EditorBrowsable(EditorBrowsableState.Never)]
680                 public new bool ShowInTaskbar {
681                         get { return base.ShowInTaskbar; }
682                         set { base.ShowInTaskbar = value; }
683                 }
684  
685                 // new property so we can set Browsable/EditorBrowsable
686                 [Browsable(false)]
687                 [EditorBrowsable(EditorBrowsableState.Never)]
688                 public new Size Size {
689                         get { return base.Size; }
690                         set { base.Size = value; }
691                 }
692  
693                 // new property so we can set Browsable/EditorBrowsable
694                 [Browsable(false)]
695                 [DefaultValue(SizeGripStyle.Hide)]
696                 [EditorBrowsable(EditorBrowsableState.Never)]
697                 public new SizeGripStyle SizeGripStyle {
698                         get { return base.SizeGripStyle; }
699                         set { base.SizeGripStyle = value; }
700                 }
701  
702                 // new property so we can set Browsable/EditorBrowsable
703                 [Browsable(false)]
704                 [EditorBrowsable(EditorBrowsableState.Never)]
705                 public new FormStartPosition StartPosition {
706                         get { return base.StartPosition; }
707                         set { base.StartPosition = value; }
708                 }
709  
710                 // new property so we can set Browsable/EditorBrowsable
711                 [Browsable(false)]
712                 [EditorBrowsable(EditorBrowsableState.Never)]
713                 public new bool TabStop {
714                         get { return base.TabStop; }
715                         set { base.TabStop = value; }
716                 }
717  
718                 // new property so we can set Browsable/EditorBrowsable
719                 [Browsable(false)]
720                 [EditorBrowsable(EditorBrowsableState.Never)]
721                 public new object Tag {
722                         get { return base.Tag; }
723                         set { base.Tag = value; }
724                 }
725  
726                 [Browsable(false)]
727                 [EditorBrowsable(EditorBrowsableState.Never)]
728                 public override string Text {
729                         get {
730                                 return base.Text;
731                         }
732
733                         set {
734                                 base.Text = value;
735                         }
736                 }
737  
738                 // new property so we can set Browsable/EditorBrowsable
739                 [Browsable(false)]
740                 [EditorBrowsable(EditorBrowsableState.Never)]
741                 public new bool TopMost {
742                         get { return base.TopMost; }
743                         set { base.TopMost = value; }
744                 }
745  
746                 // new property so we can set Browsable/EditorBrowsable
747                 [Browsable(false)]
748                 [EditorBrowsable(EditorBrowsableState.Never)]
749                 public new Color TransparencyKey {
750                         get { return base.TransparencyKey; }
751                         set { base.TransparencyKey = value; }
752                 }
753  
754                 [DefaultValue(false)]
755                 public bool UseAntiAlias {
756                         get {
757                                 return print_preview.UseAntiAlias;
758                         }
759
760                         set {
761                                 print_preview.UseAntiAlias = value;
762                         }
763                 }
764
765                 // new property so we can set Browsable/EditorBrowsable
766                 [Browsable(false)]
767                 [EditorBrowsable(EditorBrowsableState.Never)]
768                 public new bool Visible {
769                         get { return base.Visible; }
770                         set { base.Visible = value; }
771                 }
772  
773                 // new property so we can set Browsable/EditorBrowsable
774                 [Browsable(false)]
775                 [EditorBrowsable(EditorBrowsableState.Never)]
776                 public new FormWindowState WindowState {
777                         get { return base.WindowState; }
778                         set { base.WindowState = value; }
779                 }
780
781                 [MonoTODO("Throw InvalidPrinterException")]
782                 protected override void CreateHandle() {
783
784 //                      if (this.Document != null && !this.Document.PrinterSettings.IsValid) {
785 //                              throw new InvalidPrinterException(this.Document.PrinterSettings);
786 //                      }
787                         base.CreateHandle ();
788                 }
789
790                 protected override void OnClosing(CancelEventArgs e) {
791                         print_preview.InvalidatePreview ();
792                         base.OnClosing (e);
793                 }
794
795                 // new event so we can set Browsable/EditorBrowsable
796                 [Browsable(false)]
797                 [EditorBrowsable(EditorBrowsableState.Never)]
798                 public new event EventHandler BackColorChanged {
799                         add { base.BackColorChanged += value; }
800                         remove { base.BackColorChanged -= value; }
801                 }
802  
803                 // new event so we can set Browsable/EditorBrowsable
804                 [Browsable(false)]
805                 [EditorBrowsable(EditorBrowsableState.Never)]
806                 public new event EventHandler BackgroundImageChanged {
807                         add { base.BackgroundImageChanged += value; }
808                         remove { base.BackgroundImageChanged -= value; }
809                 }
810  
811                 // new event so we can set Browsable/EditorBrowsable
812                 [Browsable(false)]
813                 [EditorBrowsable(EditorBrowsableState.Never)]
814                 public new event EventHandler CausesValidationChanged {
815                         add { base.CausesValidationChanged += value; }
816                         remove { base.CausesValidationChanged -= value; }
817                 }
818  
819                 // new event so we can set Browsable/EditorBrowsable
820                 [Browsable(false)]
821                 [EditorBrowsable(EditorBrowsableState.Never)]
822                 public new event EventHandler ContextMenuChanged {
823                         add { base.ContextMenuChanged += value; }
824                         remove { base.ContextMenuChanged -= value; }
825                 }
826  
827                 // new event so we can set Browsable/EditorBrowsable
828                 [Browsable(false)]
829                 [EditorBrowsable(EditorBrowsableState.Never)]
830                 public new event EventHandler CursorChanged {
831                         add { base.CursorChanged += value; }
832                         remove { base.CursorChanged -= value; }
833                 }
834  
835                 // new event so we can set Browsable/EditorBrowsable
836                 [Browsable(false)]
837                 [EditorBrowsable(EditorBrowsableState.Never)]
838                 public new event EventHandler DockChanged {
839                         add { base.DockChanged += value; }
840                         remove { base.DockChanged -= value; }
841                 }
842  
843                 // new event so we can set Browsable/EditorBrowsable
844                 [Browsable(false)]
845                 [EditorBrowsable(EditorBrowsableState.Never)]
846                 public new event EventHandler EnabledChanged {
847                         add { base.EnabledChanged += value; }
848                         remove { base.EnabledChanged -= value; }
849                 }
850  
851                 // new event so we can set Browsable/EditorBrowsable
852                 [Browsable(false)]
853                 [EditorBrowsable(EditorBrowsableState.Never)]
854                 public new event EventHandler FontChanged {
855                         add { base.FontChanged += value; }
856                         remove { base.FontChanged -= value; }
857                 }
858  
859                 // new event so we can set Browsable/EditorBrowsable
860                 [Browsable(false)]
861                 [EditorBrowsable(EditorBrowsableState.Never)]
862                 public new event EventHandler ForeColorChanged {
863                         add { base.ForeColorChanged += value; }
864                         remove { base.ForeColorChanged -= value; }
865                 }
866  
867                 // new event so we can set Browsable/EditorBrowsable
868                 [Browsable(false)]
869                 [EditorBrowsable(EditorBrowsableState.Never)]
870                 public new event EventHandler ImeModeChanged {
871                         add { base.ImeModeChanged += value; }
872                         remove { base.ImeModeChanged -= value; }
873                 }
874  
875                 // new event so we can set Browsable/EditorBrowsable
876                 [Browsable(false)]
877                 [EditorBrowsable(EditorBrowsableState.Never)]
878                 public new event EventHandler LocationChanged {
879                         add { base.LocationChanged += value; }
880                         remove { base.LocationChanged -= value; }
881                 }
882  
883                 // new event so we can set Browsable/EditorBrowsable
884                 [Browsable(false)]
885                 [EditorBrowsable(EditorBrowsableState.Never)]
886                 public new event EventHandler MaximumSizeChanged {
887                         add { base.MaximumSizeChanged += value; }
888                         remove { base.MaximumSizeChanged -= value; }
889                 }
890  
891                 // new event so we can set Browsable/EditorBrowsable
892                 [Browsable(false)]
893                 [EditorBrowsable(EditorBrowsableState.Never)]
894                 public new event EventHandler MinimumSizeChanged {
895                         add { base.MinimumSizeChanged += value; }
896                         remove { base.MinimumSizeChanged -= value; }
897                 }
898  
899                 // new event so we can set Browsable/EditorBrowsable
900                 [Browsable(false)]
901                 [EditorBrowsable(EditorBrowsableState.Never)]
902                 public new event EventHandler RightToLeftChanged {
903                         add { base.RightToLeftChanged += value; }
904                         remove { base.RightToLeftChanged -= value; }
905                 }
906  
907                 // new event so we can set Browsable/EditorBrowsable
908                 [Browsable(false)]
909                 [EditorBrowsable(EditorBrowsableState.Never)]
910                 public new event EventHandler SizeChanged {
911                         add { base.SizeChanged += value; }
912                         remove { base.SizeChanged -= value; }
913                 }
914  
915                 // new event so we can set Browsable/EditorBrowsable
916                 [Browsable(false)]
917                 [EditorBrowsable(EditorBrowsableState.Never)]
918                 public new event EventHandler TabStopChanged {
919                         add { base.TabStopChanged += value; }
920                         remove { base.TabStopChanged -= value; }
921                 }
922  
923                 // new event so we can set Browsable/EditorBrowsable
924                 [Browsable(false)]
925                 [EditorBrowsable(EditorBrowsableState.Never)]
926                 public new event EventHandler TextChanged {
927                         add { base.TextChanged += value; }
928                         remove { base.TextChanged -= value; }
929                 }
930  
931                 // new event so we can set Browsable/EditorBrowsable
932                 [Browsable(false)]
933                 [EditorBrowsable(EditorBrowsableState.Never)]
934                 public new event EventHandler VisibleChanged {
935                         add { base.VisibleChanged += value; }
936                         remove { base.VisibleChanged -= value; }
937                 }
938         }
939 }