diff options
author | Jeffrey Stedfast <jeff@xamarin.com> | 2013-09-17 20:38:56 +0400 |
---|---|---|
committer | Jeffrey Stedfast <jeff@xamarin.com> | 2013-09-17 20:46:49 +0400 |
commit | 05ecc1c0a960d4023bade8c923d32282d5f176a4 (patch) | |
tree | a0ee0b56baa4b774cd3217cadc055639a276f7bd /main | |
parent | bc8092b471faae1106d97b06f59897dadbfe93be (diff) |
[Core] Added a Changed event to PropertyBag
Diffstat (limited to 'main')
-rw-r--r-- | main/src/core/MonoDevelop.Core/MonoDevelop.Core/PropertyBag.cs | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Core/PropertyBag.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Core/PropertyBag.cs index f98a7f6a2e..453ef5ad2a 100644 --- a/main/src/core/MonoDevelop.Core/MonoDevelop.Core/PropertyBag.cs +++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Core/PropertyBag.cs @@ -69,6 +69,7 @@ namespace MonoDevelop.Core if (val is DataNode) { val = Deserialize (name, (DataNode) val, typeof(T), ctx ?? context); properties [name] = val; + OnChanged (name); } return (T) val; } @@ -106,6 +107,7 @@ namespace MonoDevelop.Core if (properties == null) properties = new Dictionary<string,object> (); properties [name] = value; + OnChanged (name); } public bool RemoveValue<T> () @@ -115,7 +117,12 @@ namespace MonoDevelop.Core public bool RemoveValue (string name) { - return properties != null && properties.Remove (name); + if (properties != null && properties.Remove (name)) { + OnChanged (name); + return true; + } + + return false; } public bool HasValue<T> () @@ -127,6 +134,16 @@ namespace MonoDevelop.Core { return properties != null && properties.ContainsKey (name); } + + public event EventHandler<PropertyBagChangedEventArgs> Changed; + + void OnChanged (string name) + { + var handler = Changed; + + if (handler != null) + handler (this, new PropertyBagChangedEventArgs (name)); + } public void Dispose () { @@ -248,4 +265,14 @@ namespace MonoDevelop.Core return sb.ToString (); } } + + public class PropertyBagChangedEventArgs : EventArgs + { + public string PropertyName { get; private set; } + + public PropertyBagChangedEventArgs (string name) + { + PropertyName = name; + } + } } |