~halega/+junk/sharpdevelop

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)

using System;
using System.Windows;

namespace ICSharpCode.Core.Presentation
{
	public sealed class LanguageChangeWeakEventManager : WeakEventManager
	{
		/// <summary>
		/// Adds a weak event listener.
		/// </summary>
		public static void AddListener(IWeakEventListener listener)
		{
			CurrentManager.ProtectedAddListener(null, listener);
		}
		
		/// <summary>
		/// Removes a weak event listener.
		/// </summary>
		public static void RemoveListener(IWeakEventListener listener)
		{
			CurrentManager.ProtectedRemoveListener(null, listener);
		}
		
		/// <summary>
		/// Gets the current manager.
		/// </summary>
		[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1721:PropertyNamesShouldNotMatchGetMethods")]
		private static LanguageChangeWeakEventManager CurrentManager {
			get {
				LanguageChangeWeakEventManager manager = (LanguageChangeWeakEventManager)GetCurrentManager(typeof(LanguageChangeWeakEventManager));
				if (manager == null) {
					manager = new LanguageChangeWeakEventManager();
					SetCurrentManager(typeof(LanguageChangeWeakEventManager), manager);
				}
				return manager;
			}
		}
		
		protected override void StartListening(object source)
		{
			ResourceService.LanguageChanged += DeliverEvent;
		}
		
		protected override void StopListening(object source)
		{
			ResourceService.LanguageChanged -= DeliverEvent;
		}
	}
}