002-08-19 Tim Coleman <tim@timcoleman.com>
[mono.git] / mcs / class / System.Web.Services / System.Web.Services.Description / ServiceDescriptionBaseCollection.cs
1 // \r
2 // System.Web.Services.Description.ServiceDescriptionBaseCollection.cs\r
3 //\r
4 // Author:\r
5 //   Tim Coleman (tim@timcoleman.com)\r
6 //\r
7 // Copyright (C) Tim Coleman, 2002\r
8 //\r
9 \r
10 using System.Collections;\r
11 using System.Web.Services;\r
12 \r
13 namespace System.Web.Services.Description {\r
14         public abstract class ServiceDescriptionBaseCollection : CollectionBase {\r
15                 \r
16                 #region Fields\r
17 \r
18                 Hashtable table = new Hashtable ();\r
19                 object parent;\r
20 \r
21                 #endregion // Fields\r
22 \r
23                 #region Constructors\r
24 \r
25                 internal ServiceDescriptionBaseCollection (object parent)\r
26                 {\r
27                         this.parent = parent;\r
28                 }\r
29 \r
30                 #endregion // Constructors\r
31 \r
32                 #region Properties\r
33 \r
34                 protected virtual IDictionary Table {\r
35                         get { return table; }\r
36                 }\r
37 \r
38                 #endregion // Properties\r
39 \r
40                 #region Methods\r
41 \r
42                 protected virtual string GetKey (object value) \r
43                 {\r
44                         return null; \r
45                 }\r
46 \r
47                 protected override void OnClear ()\r
48                 {\r
49                         Table.Clear ();\r
50                 }\r
51 \r
52                 protected override void OnInsertComplete (int index, object value)\r
53                 {\r
54                         if (GetKey (value) != null)\r
55                                 Table [GetKey (value)] = value;\r
56                         SetParent (value, parent);\r
57                 }\r
58 \r
59                 protected override void OnRemove (int index, object value)\r
60                 {\r
61                         if (GetKey (value) != null)\r
62                                 Table.Remove (GetKey (value));\r
63                 }\r
64 \r
65                 protected override void OnSet (int index, object oldValue, object newValue)\r
66                 {\r
67                         if (GetKey (oldValue) != null) \r
68                                 Table.Remove (GetKey (oldValue));\r
69                         if (GetKey (newValue) != null)\r
70                                 Table [GetKey (newValue)] = newValue;\r
71                         SetParent (newValue, parent);\r
72                 }\r
73 \r
74                 protected virtual void SetParent (object value, object parent)\r
75                 {\r
76                 }\r
77                         \r
78                 #endregion // Methods\r
79         }\r
80 }\r