Fix bugs in sizing TableLayoutPanel (Xamarin bug 18638)
[mono.git] / mcs / class / System.ComponentModel.Composition / src / ComponentModel / System / ComponentModel / Composition / Hosting / ComposablePartCatalogChangeEventArgs.cs
1 // -----------------------------------------------------------------------\r
2 // Copyright (c) Microsoft Corporation.  All rights reserved.\r
3 // -----------------------------------------------------------------------\r
4 using System;\r
5 using System.Collections.Generic;\r
6 using System.ComponentModel.Composition.Primitives;\r
7 using Microsoft.Internal;\r
8 using Microsoft.Internal.Collections;\r
9 \r
10 namespace System.ComponentModel.Composition.Hosting\r
11 {\r
12     /// <summary>\r
13     ///     Provides data for the <see cref="INotifyComposablePartCatalogChanged.Changed"/> and\r
14     ///     <see cref="INotifyComposablePartCatalogChanged.Changing"/> events.\r
15     /// </summary>\r
16     public class ComposablePartCatalogChangeEventArgs : EventArgs\r
17     {\r
18         /// <summary>\r
19         ///     Initializes a new instance of the <see cref="ComposablePartCatalogChangeEventArgs"/>.\r
20         /// </summary>\r
21         /// <param name="addedDefinitions">\r
22         ///     An <see cref="IEnumerable{T}"/> of <see cref="ComposablePartDefinition"/> objects that \r
23         ///     are being added to the <see cref="ComposablePartCatalog"/>.\r
24         /// </param>\r
25         /// <param name="removedDefinitions">\r
26         ///     An <see cref="IEnumerable{T}"/> of <see cref="ComposablePartDefinition"/> objects that \r
27         ///     are being removed from the <see cref="ComposablePartCatalog"/>.\r
28         /// </param>\r
29         /// <param name="atomicComposition">\r
30         ///     A <see cref="AtomicComposition"/> representing all tentative changes that will\r
31         ///     be completed if the change is successful, or discarded if it is not. \r
32         ///     <see langword="null"/> if being applied outside a <see cref="AtomicComposition"/> \r
33         ///     or during a <see cref="INotifyComposablePartCatalogChanged.Changed"/> event.\r
34         /// </param>\r
35         /// <exception cref="ArgumentNullException">\r
36         ///     <paramref name="addedDefinitions"/> or <paramref name="removedDefinitions"/> is <see langword="null"/>.\r
37         /// </exception>\r
38         public ComposablePartCatalogChangeEventArgs(IEnumerable<ComposablePartDefinition> addedDefinitions,\r
39             IEnumerable<ComposablePartDefinition> removedDefinitions, AtomicComposition atomicComposition)\r
40         {\r
41             Requires.NotNull(addedDefinitions, "addedDefinitions");\r
42             Requires.NotNull(removedDefinitions, "removedDefinitions");\r
43 \r
44             this.AddedDefinitions = addedDefinitions.AsArray();\r
45             this.RemovedDefinitions = removedDefinitions.AsArray();\r
46             this.AtomicComposition = atomicComposition;\r
47         }\r
48 \r
49         /// <summary>\r
50         ///     Gets the identifiers of the parts that have been added.\r
51         /// </summary>\r
52         /// <value>\r
53         ///     An <see cref="IEnumerable{T}"/> of <see cref="ComposablePartDefinition"/> objects that \r
54         ///     have been added to the <see cref="ComposablePartCatalog"/>.\r
55         /// </value>\r
56         public IEnumerable<ComposablePartDefinition> AddedDefinitions { get; private set; }\r
57 \r
58         /// <summary>\r
59         ///     Gets the identifiers of the parts that have been removed.\r
60         /// </summary>\r
61         /// <value>\r
62         ///     An <see cref="IEnumerable{T}"/> of <see cref="ComposablePartDefinition"/> objects that \r
63         ///     have been removed from from the <see cref="ComposablePartCatalog"/>.\r
64         /// </value>\r
65         public IEnumerable<ComposablePartDefinition> RemovedDefinitions { get; private set; }\r
66 \r
67         /// <summary>\r
68         ///     Gets the atomicComposition, if any, that this change applies to.\r
69         /// </summary>\r
70         /// <value>\r
71         ///     A <see cref="AtomicComposition"/> that this set of changes applies too. \r
72         ///     It can be <see langword="null"/> if the changes are being applied outside a \r
73         ///     <see cref="AtomicComposition"/> or during a \r
74         ///     <see cref="INotifyComposablePartCatalogChanged.Changed"/> event.\r
75         ///     \r
76         ///     When the value is non-null it should be used to record temporary changed state\r
77         ///     and actions that will be executed when the atomicComposition is completeed.\r
78         /// </value>\r
79         public AtomicComposition AtomicComposition { get; private set; }\r
80     }\r
81 }\r