Added Clear Conflict action to resolver
[pithos-ms-client] / trunk / NotifyIconWpf / RoutedEventHelper.cs
1 using System;
2 using System.Windows;
3
4 namespace Hardcodet.Wpf.TaskbarNotification
5 {
6   /// <summary>
7   /// Helper class used by routed events of the
8   /// <see cref="TaskbarIcon"/> class.
9   /// </summary>
10   internal static class RoutedEventHelper
11   {
12     #region RoutedEvent Helper Methods
13
14     /// <summary>
15     /// A static helper method to raise a routed event on a target UIElement or ContentElement.
16     /// </summary>
17     /// <param name="target">UIElement or ContentElement on which to raise the event</param>
18     /// <param name="args">RoutedEventArgs to use when raising the event</param>
19     internal static void RaiseEvent(DependencyObject target, RoutedEventArgs args)
20     {
21       if (target is UIElement)
22       {
23         (target as UIElement).RaiseEvent(args);
24       }
25       else if (target is ContentElement)
26       {
27         (target as ContentElement).RaiseEvent(args);
28       }
29     }
30
31     /// <summary>
32     /// A static helper method that adds a handler for a routed event 
33     /// to a target UIElement or ContentElement.
34     /// </summary>
35     /// <param name="element">UIElement or ContentElement that listens to the event</param>
36     /// <param name="routedEvent">Event that will be handled</param>
37     /// <param name="handler">Event handler to be added</param>
38     internal static void AddHandler(DependencyObject element, RoutedEvent routedEvent, Delegate handler)
39     {
40       UIElement uie = element as UIElement;
41       if (uie != null)
42       {
43         uie.AddHandler(routedEvent, handler);
44       }
45       else
46       {
47         ContentElement ce = element as ContentElement;
48         if (ce != null)
49         {
50           ce.AddHandler(routedEvent, handler);
51         }
52       }
53     }
54
55     /// <summary>
56     /// A static helper method that removes a handler for a routed event 
57     /// from a target UIElement or ContentElement.
58     /// </summary>
59     /// <param name="element">UIElement or ContentElement that listens to the event</param>
60     /// <param name="routedEvent">Event that will no longer be handled</param>
61     /// <param name="handler">Event handler to be removed</param>
62     internal static void RemoveHandler(DependencyObject element, RoutedEvent routedEvent, Delegate handler)
63     {
64       UIElement uie = element as UIElement;
65       if (uie != null)
66       {
67         uie.RemoveHandler(routedEvent, handler);
68       }
69       else
70       {
71         ContentElement ce = element as ContentElement;
72         if (ce != null)
73         {
74           ce.RemoveHandler(routedEvent, handler);
75         }
76       }
77     }
78
79     #endregion
80   }
81 }