- Added CommonDialog.cs
authorPeter Dennis Bartok <pbartok@mono-cvs.ximian.com>
Mon, 20 Dec 2004 23:38:40 +0000 (23:38 -0000)
committerPeter Dennis Bartok <pbartok@mono-cvs.ximian.com>
Mon, 20 Dec 2004 23:38:40 +0000 (23:38 -0000)
svn path=/trunk/mcs/; revision=38005

mcs/class/Managed.Windows.Forms/ChangeLog
mcs/class/Managed.Windows.Forms/System.Windows.Forms.dll.sources
mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog
mcs/class/Managed.Windows.Forms/System.Windows.Forms/CommonDialog.cs [new file with mode: 0644]

index e02c92889844228295032a6e50ec5d17b0db7074..a13c41ef9ac3053165075b7af3705456e962600e 100644 (file)
@@ -1,3 +1,7 @@
+2004-12-20  Peter Bartok  <pbartok@novell.com>
+
+       * System.Windows.Forms.dll.Sources: Added CommonDialog.cs
+
 2004-12-16  Peter Bartok  <pbartok@novell.com>
 
        * System.Windows.Forms.dll.Sources: Added TextBoxBase.cs and
index d7c2defaa630f71427c7eb935b5d917e205ede03..35473cb67562fbe627f8ffc6b66e90811572a2fa 100644 (file)
@@ -39,6 +39,7 @@ System.Windows.Forms/ColumnClickEventArgs.cs
 System.Windows.Forms/ColumnClickEventHandler.cs
 System.Windows.Forms/ColumnHeader.cs
 System.Windows.Forms/ColumnHeaderStyle.cs
+System.Windows.Forms/CommonDialog.cs
 System.Windows.Forms/ContainerControl.cs
 System.Windows.Forms/ContextMenu.cs
 System.Windows.Forms/Control.cs
index 9a9e73f50f89e87dd86028e59e67afdab94e88b2..b047abc288254988c551d045da0caca022725122 100644 (file)
@@ -1,3 +1,7 @@
+2004-12-20  Peter Bartok  <pbartok@novell.com>
+
+       * CommonDialog.cs: Initial check-in
+
 2004-12-20  Peter Bartok  <pbartok@novell.com>
 
        * Control.cs (Visible): Now uses the parent window instead of the
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/CommonDialog.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/CommonDialog.cs
new file mode 100644 (file)
index 0000000..9033866
--- /dev/null
@@ -0,0 +1,172 @@
+// 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) 2004 Novell, Inc. (http://www.novell.com)
+//
+// Authors:
+//     Peter Bartok    (pbartok@novell.com)
+//
+//
+
+// NOT COMPLETE
+
+namespace System.Windows.Forms {
+       public abstract class CommonDialog : System.ComponentModel.Component {
+               #region DialogForm
+               internal class DialogForm : Form {
+                       #region FormParentWindow Override
+                       internal class FormParentWindow : Form.FormParentWindow {
+                               internal FormParentWindow(Form owner) : base(owner) {
+                               }
+
+                               protected override CreateParams CreateParams {
+                                       get {
+                                               CreateParams    cp;
+
+                                               cp = base.CreateParams;
+                                               cp.Style = (int)(WindowStyles.WS_POPUP | WindowStyles.WS_CAPTION | WindowStyles.WS_SYSMENU);
+                                               return cp;
+                                       }
+                               }
+
+                       }
+                       #endregion
+
+                       #region DialogForm Local Variables
+                       CommonDialog    owner;
+                       #endregion DialogForm Local Variables
+
+                       #region DialogForm Constructors
+                       internal DialogForm(CommonDialog owner) {
+                               this.owner = owner;
+                       }
+                       #endregion DialogForm Constructors
+
+                       #region Protected Instance Properties
+                       protected override CreateParams CreateParams {
+                               get {
+                                       if (this.form_parent_window == null) {
+                                               form_parent_window = new FormParentWindow(this);
+                                       }
+
+                                       return base.CreateParams;
+                               }
+                       }
+
+                       protected override void WndProc(ref Message m) {
+                               base.WndProc (ref m);
+                       }
+
+                       #endregion      // Protected Instance Properties
+
+                       #region Internal Methods
+                       internal DialogResult RunDialog () {
+                               this.StartPosition = FormStartPosition.CenterScreen;
+
+                               owner.InitFormsSize (this);
+
+                               this.ShowDialog ();
+
+                               return this.DialogResult;
+
+                       }
+                       #endregion Internal Methods
+               }
+               #endregion DialogForm
+
+               #region Local Variables
+               internal DialogForm     form;
+               #endregion Local Variables
+
+               #region Public Constructors
+               public CommonDialog() {
+                       form = new DialogForm(this);
+               }
+               #endregion Public Constructors
+
+               #region Internal Methods
+               internal virtual void InitFormsSize(Form form) {
+                       // Override this to set a default size for the form
+                       form.Width = 200;
+                       form.Height = 200;
+               }
+               #endregion Internal Methods
+       
+               #region Public Instance Methods
+               public abstract void Reset();
+
+               public DialogResult ShowDialog() {
+                       return ShowDialog(null);
+               }
+
+               public DialogResult ShowDialog(IWin32Window ownerWin32) {
+                       Control         owner = null;
+
+                       if (ownerWin32 != null) {
+                               owner = Control.FromHandle(ownerWin32.Handle);
+                       }
+
+                       RunDialog(form.Handle);
+
+                       if (form.Visible) {
+                               throw new InvalidOperationException("Already visible forms cannot be displayed as a modal dialog. Set the Visible property to 'false' prior to calling Form.ShowDialog.");
+                       }
+
+                       if (!form.IsHandleCreated) {
+                               form.CreateControl();
+                       }
+
+                       XplatUI.SetModal(form.form_parent_window.Handle, true);
+
+                       form.Show();
+
+                       form.is_modal = true;
+                       Application.ModalRun(form);
+                       form.is_modal = false;
+                       form.Hide();
+
+                       XplatUI.SetModal(form.form_parent_window.Handle, false);
+
+                       return form.DialogResult;
+               }
+               #endregion      // Public Instance Methods
+
+               #region Protected Instance Methods
+               protected virtual IntPtr HookProc(IntPtr hWnd, int msg, IntPtr wparam, IntPtr lparam) {
+                       return IntPtr.Zero;
+               }
+
+               protected virtual void OnHelpRequest(EventArgs e) {
+                       if (HelpRequest != null) {
+                               HelpRequest(this, e);
+                       }
+               }
+
+               protected virtual IntPtr OwnerWndProc(IntPtr hWnd, int msg, IntPtr wparam, IntPtr lparam) {
+                       return IntPtr.Zero;
+               }
+
+               protected abstract bool RunDialog(IntPtr hwndOwner);
+               #endregion      // Protected Instance Methods
+
+               #region Events
+               public event EventHandler HelpRequest;
+               #endregion      // Events
+       }
+}