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) 2004-2006 Novell, Inc. (http://www.novell.com) 21 // 22 // Authors: 23 // Peter Bartok (pbartok@novell.com) 24 // 25 // 26 27 // NOT COMPLETE 28 29 using System.ComponentModel; 30 31 namespace System.Windows.Forms { 32 [ToolboxItemFilter("System.Windows.Forms")] 33 public abstract class CommonDialog : System.ComponentModel.Component { 34 #region DialogForm 35 internal class DialogForm : Form { 36 #region DialogForm Local Variables 37 protected CommonDialog owner; 38 #endregion DialogForm Local Variables 39 40 #region DialogForm Constructors DialogForm(CommonDialog owner)41 internal DialogForm(CommonDialog owner) { 42 this.owner = owner; 43 ControlBox = true; 44 MinimizeBox = false; 45 MaximizeBox = false; 46 ShowInTaskbar = false; 47 FormBorderStyle = FormBorderStyle.Sizable; 48 StartPosition = FormStartPosition.CenterScreen; 49 } 50 #endregion DialogForm Constructors 51 52 #region Protected Instance Properties 53 protected override CreateParams CreateParams { 54 get { 55 CreateParams cp; 56 57 cp = base.CreateParams; 58 59 cp.Style |= (int)(WindowStyles.WS_POPUP | WindowStyles.WS_CAPTION | WindowStyles.WS_SYSMENU); 60 61 return cp; 62 } 63 } 64 #endregion // Protected Instance Properties 65 66 #region Internal Methods RunDialog()67 internal DialogResult RunDialog () { 68 owner.InitFormsSize (this); 69 70 this.ShowDialog (); 71 72 return this.DialogResult; 73 74 } 75 #endregion Internal Methods 76 } 77 #endregion DialogForm 78 79 #region Local Variables 80 internal DialogForm form; 81 private object tag; 82 #endregion Local Variables 83 84 #region Public Constructors CommonDialog()85 public CommonDialog() { 86 } 87 #endregion Public Constructors 88 89 #region Public Properties 90 [Localizable (false)] 91 [Bindable (true)] 92 [TypeConverter (typeof (StringConverter))] 93 [DefaultValue (null)] 94 [MWFCategory ("Data")] 95 public object Tag { 96 get { return this.tag; } 97 set { this.tag = value; } 98 } 99 #endregion 100 101 #region Internal Methods InitFormsSize(Form form)102 internal virtual void InitFormsSize(Form form) { 103 // Override this to set a default size for the form 104 form.Width = 200; 105 form.Height = 200; 106 } 107 #endregion Internal Methods 108 109 #region Public Instance Methods Reset()110 public abstract void Reset (); 111 ShowDialog()112 public DialogResult ShowDialog() { 113 return ShowDialog (null); 114 } 115 ShowDialog(IWin32Window owner)116 public DialogResult ShowDialog (IWin32Window owner) 117 { 118 // This is an external derived CommonDialog 119 if (form == null) { 120 if (RunDialog (owner == null ? IntPtr.Zero : owner.Handle)) 121 return DialogResult.OK; 122 return DialogResult.Cancel; 123 } 124 125 // This is an internal derived CommonDialog 126 if (RunDialog (form.Handle)) 127 form.ShowDialog (owner); 128 129 return form.DialogResult; 130 } 131 #endregion // Public Instance Methods 132 133 #region Protected Instance Methods HookProc(IntPtr hWnd, int msg, IntPtr wparam, IntPtr lparam)134 protected virtual IntPtr HookProc(IntPtr hWnd, int msg, IntPtr wparam, IntPtr lparam) { 135 return IntPtr.Zero; 136 } 137 OnHelpRequest(EventArgs e)138 protected virtual void OnHelpRequest(EventArgs e) { 139 EventHandler eh = (EventHandler)(Events [HelpRequestEvent]); 140 if (eh != null) 141 eh (this, e); 142 } 143 OwnerWndProc(IntPtr hWnd, int msg, IntPtr wparam, IntPtr lparam)144 protected virtual IntPtr OwnerWndProc(IntPtr hWnd, int msg, IntPtr wparam, IntPtr lparam) { 145 return IntPtr.Zero; 146 } 147 RunDialog(IntPtr hwndOwner)148 protected abstract bool RunDialog(IntPtr hwndOwner); 149 #endregion // Protected Instance Methods 150 151 #region Events 152 static object HelpRequestEvent = new object (); 153 154 public event EventHandler HelpRequest { 155 add { Events.AddHandler (HelpRequestEvent, value); } 156 remove { Events.RemoveHandler (HelpRequestEvent, value); } 157 } 158 #endregion // Events 159 } 160 } 161