ensure the tests files are in sync; see run-mono-tests.bat diff
[mono.git] / mcs / class / System.Web / System.Web.UI / UserControl.cs
index b09fe314506005a368a6eb3dc24aa09325698488..c5f405cec62283a1b9626e8e4648a3ae0aa875c2 100644 (file)
@@ -6,22 +6,55 @@
 //   Andreas Nahr (ClassDevelopment@A-SoftTech.com)
 //
 // (C) 2002 Ximian, Inc (http://www.ximian.com)
+// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
-using System;
+// 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.
+//
+
 using System.ComponentModel;
 using System.ComponentModel.Design;
 using System.ComponentModel.Design.Serialization;
+using System.Security.Permissions;
 using System.Web.Caching;
 using System.Web.SessionState;
 
-namespace System.Web.UI
-{
+namespace System.Web.UI {
+
+       // CAS
+       [AspNetHostingPermission (SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal)]
+       [AspNetHostingPermission (SecurityAction.InheritanceDemand, Level = AspNetHostingPermissionLevel.Minimal)]
+       // attributes
        [ControlBuilder (typeof (UserControlControlBuilder))]
        [DefaultEvent ("Load"), DesignerCategory ("ASPXCodeBehind")]
        [ToolboxItem (false)]
        [Designer ("System.Web.UI.Design.UserControlDesigner, " + Consts.AssemblySystem_Design, typeof (IDesigner))]
+       [ParseChildren (true)]
+#if NET_2_0
+       [Designer ("Microsoft.VisualStudio.Web.WebForms.WebFormDesigner, " + Consts.AssemblyMicrosoft_VisualStudio_Web, typeof (IRootDesigner))]
+#else
        [RootDesignerSerializer ("Microsoft.VSDesigner.WebForms.RootCodeDomSerializer, " + Consts.AssemblyMicrosoft_VSDesigner, "System.ComponentModel.Design.Serialization.CodeDomSerializer, " + Consts.AssemblySystem_Design, true)]
+#endif
        public class UserControl : TemplateControl, IAttributeAccessor, IUserControlDesignerAccessor
+#if NET_2_0
+       , INamingContainer, IFilterResolutionService
+#endif
        {
                private bool initialized;
                private AttributeCollection attributes;
@@ -29,7 +62,6 @@ namespace System.Web.UI
 
                public UserControl ()
                {
-                       //??
                }
 
                [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
@@ -59,6 +91,7 @@ namespace System.Web.UI
                public AttributeCollection Attributes
                {
                        get {
+                               EnsureAttributes ();
                                return attributes;
                        }
                }
@@ -75,6 +108,17 @@ namespace System.Web.UI
                        }
                }
 
+#if NET_2_0
+               [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
+               [Browsable (false)]
+               public ControlCachePolicy CachePolicy 
+               {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+#endif         
+
                [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
                [Browsable (false)]
                public bool IsPostBack
@@ -147,11 +191,10 @@ namespace System.Web.UI
                        }
                }
 
-               [MonoTODO]
                [EditorBrowsable (EditorBrowsableState.Never)]
                public void DesignerInitialize ()
                {
-                       throw new NotImplementedException ();
+                       InitRecursive (null);
                }
 
                [EditorBrowsable (EditorBrowsableState.Never)]
@@ -159,8 +202,15 @@ namespace System.Web.UI
                {
                        if (initialized)
                                return;
-                       initialized = true;
                        this.Page = page;
+                       InitializeAsUserControlInternal ();
+               }
+
+               internal void InitializeAsUserControlInternal ()
+               {
+                       if (initialized)
+                               return;
+                       initialized = true;
                        WireupAutomaticEvents ();
                        FrameworkInitialize ();
                }
@@ -183,7 +233,12 @@ namespace System.Web.UI
 
                }
 
-               protected override void OnInit (EventArgs e)
+#if NET_2_0
+               protected internal
+#else
+               protected
+#endif
+               override void OnInit (EventArgs e)
                {
                        InitializeAsUserControl (Page);
 
@@ -235,6 +290,18 @@ namespace System.Web.UI
                        }
                        set { ViewState["!DesignTimeTagName"] = value; }
                }
+#if NET_2_0
+               [MonoTODO ("Not implemented")]
+               int IFilterResolutionService.CompareFilters (string filter1, string filter2)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO ("Not implemented")]
+               bool IFilterResolutionService.EvaluateFilter (string filterName)
+               {
+                       throw new NotImplementedException ();
+               }
+#endif
        }
 }
-