2
// ObjectDescriptionCollection.cs
7
// Copyright (C) 2007 Novell, Inc (http://www.novell.com)
9
// Permission is hereby granted, free of charge, to any person obtaining
10
// a copy of this software and associated documentation files (the
11
// "Software"), to deal in the Software without restriction, including
12
// without limitation the rights to use, copy, modify, merge, publish,
13
// distribute, sublicense, and/or sell copies of the Software, and to
14
// permit persons to whom the Software is furnished to do so, subject to
15
// the following conditions:
17
// The above copyright notice and this permission notice shall be
18
// included in all copies or substantial portions of the Software.
20
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
21
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
23
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
24
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
25
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
26
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
32
using System.Collections;
33
using System.Collections.Specialized;
35
namespace Mono.Addins.Description
38
/// Base class for add-in description collections.
40
public class ObjectDescriptionCollection: CollectionBase
44
internal ObjectDescriptionCollection (object owner)
50
/// Initializes a new instance of the <see cref="Mono.Addins.Description.ObjectDescriptionCollection"/> class.
52
public ObjectDescriptionCollection ()
62
public void Add (ObjectDescription ep)
68
/// Adds a collection of objects.
70
/// <param name='collection'>
71
/// The objects to add.
73
public void AddRange (ObjectDescriptionCollection collection)
75
foreach (ObjectDescription ob in collection)
82
/// <param name='index'>
88
public void Insert (int index, ObjectDescription ep)
90
List.Insert (index, ep);
94
/// Removes an object.
99
public void Remove (ObjectDescription ep)
105
/// Checks if an object is present in the collection.
107
/// <param name='ob'>
108
/// Objecect to check.
110
public bool Contains (ObjectDescription ob)
112
return List.Contains (ob);
115
#pragma warning disable 1591
116
protected override void OnRemove (int index, object value)
118
ObjectDescription ep = (ObjectDescription) value;
119
if (ep.Element != null) {
120
ep.Element.ParentNode.RemoveChild (ep.Element);
127
protected override void OnInsertComplete (int index, object value)
130
((ObjectDescription)value).SetParent (owner);
133
protected override void OnSetComplete (int index, object oldValue, object newValue)
136
((ObjectDescription)newValue).SetParent (owner);
137
((ObjectDescription)oldValue).SetParent (null);
141
protected override void OnClear ()
144
foreach (ObjectDescription ob in List)
148
#pragma warning restore 1591
151
internal void SaveXml (XmlElement parent)
153
foreach (ObjectDescription ob in this)
157
internal void Verify (string location, StringCollection errors)
160
foreach (ObjectDescription ob in this) {
161
ob.Verify (location + "[" + n + "]/", errors);