merged Sys.Web.Services 2.0 support in my branch:
[mono.git] / mcs / class / System.Web / System.Web.UI / DataBindingCollection.cs
old mode 100755 (executable)
new mode 100644 (file)
index 89508c8..c919e35
@@ -4,8 +4,7 @@
 // Duncan Mak  (duncan@ximian.com)
 //
 // (C) Ximian, Inc.
-//
-
+// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-using System;
 using System.Collections;
+using System.Security.Permissions;
 
 namespace System.Web.UI {
 
+       // CAS - no InheritanceDemand here as the class is sealed
+       [AspNetHostingPermission (SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal)]
        public sealed class DataBindingCollection : ICollection, IEnumerable
        {
                Hashtable list;
@@ -70,6 +71,7 @@ namespace System.Web.UI {
                public void Add (DataBinding binding)
                {
                        list.Add (binding.PropertyName, binding);
+                       RaiseChanged ();
                }
 
                public void Clear ()
@@ -79,7 +81,7 @@ namespace System.Web.UI {
 
                public void CopyTo (Array array, int index)
                {
-                       list.CopyTo (array, index);
+                       list.Values.CopyTo (array, index);
                }
 
                public IEnumerator GetEnumerator ()
@@ -97,6 +99,7 @@ namespace System.Web.UI {
                {
                        removed.Add (propertyName);
                        list.Remove (propertyName);
+                       RaiseChanged ();
                }
 
                public void Remove (string propertyName,
@@ -109,5 +112,21 @@ namespace System.Web.UI {
 
                        list.Remove (propertyName);
                }
+
+#if NET_2_0
+               public bool Contains (string propertyName)
+               {
+                       return list.Contains (propertyName);
+               }
+
+               public event EventHandler Changed;
+#else
+               internal event EventHandler Changed;
+#endif
+               internal void RaiseChanged ()
+               {
+                       if (Changed != null)
+                               Changed (this, EventArgs.Empty);
+               }
        }
 }