Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/monodevelop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/main
diff options
context:
space:
mode:
authorJeffrey Stedfast <jeff@xamarin.com>2013-09-17 20:38:56 +0400
committerJeffrey Stedfast <jeff@xamarin.com>2013-09-17 20:46:49 +0400
commit05ecc1c0a960d4023bade8c923d32282d5f176a4 (patch)
treea0ee0b56baa4b774cd3217cadc055639a276f7bd /main
parentbc8092b471faae1106d97b06f59897dadbfe93be (diff)
[Core] Added a Changed event to PropertyBag
Diffstat (limited to 'main')
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Core/PropertyBag.cs29
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;
+ }
+ }
}