[reflection] Coop handles icalls in System.Reflection and System.RuntimeTypeHandle...
[mono.git] / mcs / class / referencesource / System.Activities.Presentation / System.Activities.Presentation / System / Activities / Presentation / Base / Interaction / Services / ModelChangeInfoImpl.cs
1 //----------------------------------------------------------------
2 // <copyright company="Microsoft Corporation">
3 //     Copyright (c) Microsoft Corporation.  All rights reserved.
4 // </copyright>
5 //----------------------------------------------------------------
6
7 namespace System.Activities.Presentation.Services
8 {
9     using System.Activities.Presentation.Model;
10
11     internal class ModelChangeInfoImpl : ModelChangeInfo
12     {
13         private ModelChangeType modelChangeType;
14         private ModelItem subject;
15         private string propertyName;
16         private ModelItem key;
17         private ModelItem oldValue;
18         private ModelItem value;
19
20         private ModelChangeInfoImpl(ModelChangeType modelChangeType, ModelItem subject, string propertyName, ModelItem key, ModelItem oldValue, ModelItem value)
21         {
22             this.modelChangeType = modelChangeType;
23             this.subject = subject;
24             this.propertyName = propertyName;
25             this.key = key;
26             this.oldValue = oldValue;
27             this.value = value;
28         }
29
30         public override ModelChangeType ModelChangeType
31         {
32             get { return this.modelChangeType; }
33         }
34
35         public override ModelItem Subject
36         {
37             get { return this.subject; }
38         }
39
40         public override string PropertyName
41         {
42             get { return this.propertyName; }
43         }
44
45         public override ModelItem Key
46         {
47             get { return this.key; }
48         }
49
50         public override ModelItem OldValue
51         {
52             get { return this.oldValue; }
53         }
54
55         public override ModelItem Value
56         {
57             get { return this.value; }
58         }
59
60         public static ModelChangeInfoImpl CreatePropertyChanged(ModelItem subject, string propertyName, ModelItem oldValue, ModelItem newValue)
61         {
62             return new ModelChangeInfoImpl(ModelChangeType.PropertyChanged, subject, propertyName, null, oldValue, newValue);
63         }
64
65         public static ModelChangeInfoImpl CreateCollectionItemAdded(ModelItem subject, ModelItem item)
66         {
67             return new ModelChangeInfoImpl(ModelChangeType.CollectionItemAdded, subject, null, null, null, item);
68         }
69
70         public static ModelChangeInfoImpl CreateCollectionItemRemoved(ModelItem subject, ModelItem item)
71         {
72             return new ModelChangeInfoImpl(ModelChangeType.CollectionItemRemoved, subject, null, null, null, item);
73         }
74
75         public static ModelChangeInfoImpl CreateDictionaryKeyValueAdded(ModelItem subject, ModelItem key, ModelItem value)
76         {
77             return new ModelChangeInfoImpl(ModelChangeType.DictionaryKeyValueAdded, subject, null, key, null, value);
78         }
79
80         public static ModelChangeInfoImpl CreateDictionaryKeyValueRemoved(ModelItem subject, ModelItem key, ModelItem value)
81         {
82             return new ModelChangeInfoImpl(ModelChangeType.DictionaryKeyValueRemoved, subject, null, key, null, value);
83         }
84
85         public static ModelChangeInfoImpl CreateDictionaryValueChanged(ModelItem subject, ModelItem key, ModelItem oldValue, ModelItem newValue)
86         {
87             return new ModelChangeInfoImpl(ModelChangeType.DictionaryValueChanged, subject, null, key, oldValue, newValue);
88         }
89     }
90 }