From 92da3798b31e455190d776c19dee7cea4ea86767 Mon Sep 17 00:00:00 2001 From: Daniel Grunwald Date: Sat, 28 Jul 2012 00:38:42 +0200 Subject: [PATCH] Add IResourceService interface. --- .../Src/SearchPanelLocalization.cs | 3 +- .../Src/Gui/Pads/ErrorList/ErrorListPad.cs | 2 +- .../Src/Gui/Pads/TaskList/TaskListPad.cs | 2 +- .../Src/Services/Language/LanguageService.cs | 2 +- src/Main/Base/Project/Src/Services/SD.cs | 5 + src/Main/Core/Project/ICSharpCode.Core.csproj | 1 + .../Core/Project/Src/AddInTree/AddInTree.cs | 4 +- .../Core/Project/Src/AddInTree/CoreStartup.cs | 3 +- .../PropertyService/PropertyService.cs | 4 + .../ResourceService/IResourceService.cs | 60 +++++++++++ .../ResourceNotFoundException.cs | 9 +- .../ResourceService/ResourceService.cs | 100 +++++++++++------- .../LanguageChangeWeakEventManager.cs | 6 +- .../PresentationResourceService.cs | 10 +- .../ToolBar/ToolBarService.cs | 5 +- .../WinFormsResourceService.cs | 11 +- src/Main/SharpDevelop/Sda/CallHelper.cs | 7 +- .../Workbench/AvalonWorkbenchWindow.cs | 4 +- .../Workbench/ChooseLayoutCommand.cs | 2 +- .../SharpDevelop/Workbench/WpfWorkbench.cs | 2 +- 20 files changed, 174 insertions(+), 68 deletions(-) create mode 100644 src/Main/Core/Project/Src/Services/ResourceService/IResourceService.cs diff --git a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/SearchPanelLocalization.cs b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/SearchPanelLocalization.cs index e726bf0630..48689b0e69 100644 --- a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/SearchPanelLocalization.cs +++ b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/SearchPanelLocalization.cs @@ -6,6 +6,7 @@ using System.ComponentModel; using ICSharpCode.AvalonEdit.Search; using ICSharpCode.Core; using ICSharpCode.Core.Presentation; +using ICSharpCode.SharpDevelop; namespace ICSharpCode.AvalonEdit.AddIn { @@ -23,7 +24,7 @@ namespace ICSharpCode.AvalonEdit.AddIn public SearchPanelLocalization() { - ResourceService.LanguageChanged += delegate { PropertiesChanged(); }; + SD.ResourceService.LanguageChanged += delegate { PropertiesChanged(); }; } public override string ErrorText { diff --git a/src/Main/Base/Project/Src/Gui/Pads/ErrorList/ErrorListPad.cs b/src/Main/Base/Project/Src/Gui/Pads/ErrorList/ErrorListPad.cs index 9ae7c24143..d55dcbaaa0 100644 --- a/src/Main/Base/Project/Src/Gui/Pads/ErrorList/ErrorListPad.cs +++ b/src/Main/Base/Project/Src/Gui/Pads/ErrorList/ErrorListPad.cs @@ -77,7 +77,7 @@ namespace ICSharpCode.SharpDevelop.Gui properties = PropertyService.NestedProperties("ErrorListPad"); RedrawContent(); - ResourceService.LanguageChanged += delegate { RedrawContent(); }; + SD.ResourceService.LanguageChanged += delegate { RedrawContent(); }; TaskService.Cleared += new EventHandler(TaskServiceCleared); TaskService.Added += new TaskEventHandler(TaskServiceAdded); diff --git a/src/Main/Base/Project/Src/Gui/Pads/TaskList/TaskListPad.cs b/src/Main/Base/Project/Src/Gui/Pads/TaskList/TaskListPad.cs index eea8e3d67a..8c66d2bfd7 100644 --- a/src/Main/Base/Project/Src/Gui/Pads/TaskList/TaskListPad.cs +++ b/src/Main/Base/Project/Src/Gui/Pads/TaskList/TaskListPad.cs @@ -61,7 +61,7 @@ namespace ICSharpCode.SharpDevelop.Gui this.displayedTokens = new Dictionary(); RedrawContent(); - ResourceService.LanguageChanged += delegate { RedrawContent(); }; + SD.ResourceService.LanguageChanged += delegate { RedrawContent(); }; InitializeToolStrip(); diff --git a/src/Main/Base/Project/Src/Services/Language/LanguageService.cs b/src/Main/Base/Project/Src/Services/Language/LanguageService.cs index 49647df985..724bb66ec7 100644 --- a/src/Main/Base/Project/Src/Services/Language/LanguageService.cs +++ b/src/Main/Base/Project/Src/Services/Language/LanguageService.cs @@ -64,7 +64,7 @@ namespace ICSharpCode.SharpDevelop /// public static void ValidateLanguage() { - ResourceService.Language = GetLanguage(ResourceService.Language).Code; + SD.ResourceService.Language = GetLanguage(SD.ResourceService.Language).Code; } } } diff --git a/src/Main/Base/Project/Src/Services/SD.cs b/src/Main/Base/Project/Src/Services/SD.cs index 08a3399f14..184d000380 100644 --- a/src/Main/Base/Project/Src/Services/SD.cs +++ b/src/Main/Base/Project/Src/Services/SD.cs @@ -4,6 +4,7 @@ using System; using System.ComponentModel; using System.ComponentModel.Design; + using ICSharpCode.Core; using ICSharpCode.Core.Implementation; using ICSharpCode.SharpDevelop.Editor; @@ -84,6 +85,10 @@ namespace ICSharpCode.SharpDevelop get { return GetRequiredService(); } } + public static Core.IResourceService ResourceService { + get { return GetRequiredService(); } + } + public static IEditorControlService EditorControlService { get { return GetRequiredService(); } } diff --git a/src/Main/Core/Project/ICSharpCode.Core.csproj b/src/Main/Core/Project/ICSharpCode.Core.csproj index 28d541508f..8fc9a80cf6 100644 --- a/src/Main/Core/Project/ICSharpCode.Core.csproj +++ b/src/Main/Core/Project/ICSharpCode.Core.csproj @@ -122,6 +122,7 @@ + diff --git a/src/Main/Core/Project/Src/AddInTree/AddInTree.cs b/src/Main/Core/Project/Src/AddInTree/AddInTree.cs index 9e8aece74f..9d94313b3e 100644 --- a/src/Main/Core/Project/Src/AddInTree/AddInTree.cs +++ b/src/Main/Core/Project/Src/AddInTree/AddInTree.cs @@ -234,14 +234,14 @@ namespace ICSharpCode.Core { string path = Path.Combine(addInRoot, bitmapResource); ResourceManager resourceManager = ResourceManager.CreateFileBasedResourceManager(Path.GetFileNameWithoutExtension(path), Path.GetDirectoryName(path), null); - ResourceService.RegisterNeutralImages(resourceManager); + ServiceSingleton.ServiceProvider.GetRequiredService().RegisterNeutralImages(resourceManager); } foreach(string stringResource in addIn.StringResources) { string path = Path.Combine(addInRoot, stringResource); ResourceManager resourceManager = ResourceManager.CreateFileBasedResourceManager(Path.GetFileNameWithoutExtension(path), Path.GetDirectoryName(path), null); - ResourceService.RegisterNeutralStrings(resourceManager); + ServiceSingleton.ServiceProvider.GetRequiredService().RegisterNeutralStrings(resourceManager); } } addIns.Add(addIn); diff --git a/src/Main/Core/Project/Src/AddInTree/CoreStartup.cs b/src/Main/Core/Project/Src/AddInTree/CoreStartup.cs index 28ea58a110..3ec0af9633 100644 --- a/src/Main/Core/Project/Src/AddInTree/CoreStartup.cs +++ b/src/Main/Core/Project/Src/AddInTree/CoreStartup.cs @@ -207,7 +207,8 @@ namespace ICSharpCode.Core dataDirectory ?? Path.Combine(FileUtility.ApplicationRootPath, "data"), propertiesName); container.AddService(typeof(IPropertyService), propertyService); - ResourceService.InitializeService(Path.Combine(propertyService.DataDirectory, "resources"), propertyService); + container.AddService(typeof(IResourceService), new ResourceServiceImpl( + Path.Combine(propertyService.DataDirectory, "resources"), propertyService)); StringParser.RegisterStringTagProvider(new AppNameProvider { appName = applicationName }); } diff --git a/src/Main/Core/Project/Src/Services/PropertyService/PropertyService.cs b/src/Main/Core/Project/Src/Services/PropertyService/PropertyService.cs index 1d64410cb3..35ae20060c 100644 --- a/src/Main/Core/Project/Src/Services/PropertyService/PropertyService.cs +++ b/src/Main/Core/Project/Src/Services/PropertyService/PropertyService.cs @@ -12,6 +12,10 @@ using System.Xml; namespace ICSharpCode.Core { + /// + /// Compatibility class; forwards calls to the IPropertyService. + /// TODO: Remove + /// public static class PropertyService { static IPropertyService Service { diff --git a/src/Main/Core/Project/Src/Services/ResourceService/IResourceService.cs b/src/Main/Core/Project/Src/Services/ResourceService/IResourceService.cs new file mode 100644 index 0000000000..5a5301da2e --- /dev/null +++ b/src/Main/Core/Project/Src/Services/ResourceService/IResourceService.cs @@ -0,0 +1,60 @@ +// 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.Reflection; +using System.Resources; + +namespace ICSharpCode.Core +{ + /// + /// Provides string and bitmap resources. + /// + public interface IResourceService + { + /// + /// Gets/Sets the current UI language. + /// + string Language { get; set; } + + event EventHandler LanguageChanged; + + /// + /// Returns a string from the resource database, it handles localization + /// transparent for the user. + /// + /// + /// The string in the (localized) resource database. + /// + /// + /// The name of the requested resource. + /// + /// + /// Is thrown when the GlobalResource manager can't find a requested resource. + /// + string GetString(string name); + + object GetImageResource(string name); + + + /// + /// Registers string resources in the resource service. + /// + /// The base name of the resource file embedded in the assembly. + /// The assembly which contains the resource file. + /// ResourceService.RegisterStrings("TestAddin.Resources.StringResources", GetType().Assembly); + void RegisterStrings(string baseResourceName, Assembly assembly); + + void RegisterNeutralStrings(ResourceManager stringManager); + + /// + /// Registers image resources in the resource service. + /// + /// The base name of the resource file embedded in the assembly. + /// The assembly which contains the resource file. + /// ResourceService.RegisterImages("TestAddin.Resources.BitmapResources", GetType().Assembly); + void RegisterImages(string baseResourceName, Assembly assembly); + + void RegisterNeutralImages(ResourceManager imageManager); + } +} diff --git a/src/Main/Core/Project/Src/Services/ResourceService/ResourceNotFoundException.cs b/src/Main/Core/Project/Src/Services/ResourceService/ResourceNotFoundException.cs index 455b1e6a9d..d9a1f283c2 100644 --- a/src/Main/Core/Project/Src/Services/ResourceService/ResourceNotFoundException.cs +++ b/src/Main/Core/Project/Src/Services/ResourceService/ResourceNotFoundException.cs @@ -13,16 +13,21 @@ namespace ICSharpCode.Core [Serializable()] public class ResourceNotFoundException : CoreException { - public ResourceNotFoundException(string resource) : base("Resource not found : " + resource) + string resourceName; + public string ResourceName { get { return resourceName; } } + + public ResourceNotFoundException(string resourceName) : base("Resource not found : " + resourceName) { + this.resourceName = resourceName; } public ResourceNotFoundException() : base() { } - public ResourceNotFoundException(string message, Exception innerException) : base(message, innerException) + public ResourceNotFoundException(string resourceName, Exception innerException) : base("Resource not found : " + resourceName, innerException) { + this.resourceName = resourceName; } protected ResourceNotFoundException(SerializationInfo info, StreamingContext context) : base(info, context) diff --git a/src/Main/Core/Project/Src/Services/ResourceService/ResourceService.cs b/src/Main/Core/Project/Src/Services/ResourceService/ResourceService.cs index ec56da66f3..de75f6e6b8 100644 --- a/src/Main/Core/Project/Src/Services/ResourceService/ResourceService.cs +++ b/src/Main/Core/Project/Src/Services/ResourceService/ResourceService.cs @@ -12,34 +12,54 @@ using System.Threading; namespace ICSharpCode.Core { + /// + /// Compatibility class; forwards calls to the IResourceService. + /// TODO: Remove + /// + public static class ResourceService + { + static IResourceService Service { + get { return ServiceSingleton.ServiceProvider.GetRequiredService(); } + } + + public static string GetString(string resourceName) + { + return Service.GetString(resourceName); + } + + public static string Language { + get { return Service.Language; } + } + } + /// /// This Class contains two ResourceManagers, which handle string and image resources /// for the application. It do handle localization strings on this level. /// - public static class ResourceService + public class ResourceServiceImpl : IResourceService { const string uiLanguageProperty = "CoreProperties.UILanguage"; const string stringResources = "StringResources"; const string imageResources = "BitmapResources"; - static string resourceDirectory; - static IPropertyService propertyService; + string resourceDirectory; + IPropertyService propertyService; - public static void InitializeService(string resourceDirectory, IPropertyService propertyService) + public ResourceServiceImpl(string resourceDirectory, IPropertyService propertyService) { - if (ResourceService.resourceDirectory != null) - throw new InvalidOperationException("Service is already initialized."); if (resourceDirectory == null) throw new ArgumentNullException("resourceDirectory"); + if (propertyService == null) + throw new ArgumentNullException("propertyService"); - ResourceService.resourceDirectory = resourceDirectory; - ResourceService.propertyService = propertyService; + this.resourceDirectory = resourceDirectory; + this.propertyService = propertyService; propertyService.PropertyChanged += new PropertyChangedEventHandler(OnPropertyChange); - LoadLanguageResources(ResourceService.Language); + LoadLanguageResources(this.Language); } - public static string Language { + public string Language { get { return propertyService.Get(uiLanguageProperty, Thread.CurrentThread.CurrentUICulture.Name); } @@ -50,33 +70,35 @@ namespace ICSharpCode.Core } } - static readonly object loadLock = new object(); + readonly object loadLock = new object(); /// English strings (list of resource managers) - static List strings = new List(); + List strings = new List(); /// Neutral/English images (list of resource managers) - static List icons = new List(); + List icons = new List(); /// Hashtable containing the local strings from the main application. - static Hashtable localStrings = null; - static Hashtable localIcons = null; + Hashtable localStrings = null; + Hashtable localIcons = null; /// Strings resource managers for the current language - static List localStringsResMgrs = new List(); + List localStringsResMgrs = new List(); /// Image resource managers for the current language - static List localIconsResMgrs = new List(); + List localIconsResMgrs = new List(); /// List of ResourceAssembly - static List resourceAssemblies = new List(); + List resourceAssemblies = new List(); class ResourceAssembly { + ResourceServiceImpl service; Assembly assembly; string baseResourceName; bool isIcons; - public ResourceAssembly(Assembly assembly, string baseResourceName, bool isIcons) + public ResourceAssembly(ResourceServiceImpl service, Assembly assembly, string baseResourceName, bool isIcons) { + this.service = service; this.assembly = assembly; this.baseResourceName = baseResourceName; this.isIcons = isIcons; @@ -98,6 +120,7 @@ namespace ICSharpCode.Core public void Load() { + string currentLanguage = service.currentLanguage; string logMessage = "Loading resources " + baseResourceName + "." + currentLanguage + ": "; ResourceManager manager = null; if (assembly.GetManifestResourceInfo(baseResourceName + "." + currentLanguage + ".resources") != null) { @@ -119,9 +142,9 @@ namespace ICSharpCode.Core LoggingService.Warn(logMessage + "NOT FOUND"); } else { if (isIcons) - localIconsResMgrs.Add(manager); + service.localIconsResMgrs.Add(manager); else - localStringsResMgrs.Add(manager); + service.localStringsResMgrs.Add(manager); } } } @@ -132,15 +155,15 @@ namespace ICSharpCode.Core /// The base name of the resource file embedded in the assembly. /// The assembly which contains the resource file. /// ResourceService.RegisterStrings("TestAddin.Resources.StringResources", GetType().Assembly); - public static void RegisterStrings(string baseResourceName, Assembly assembly) + public void RegisterStrings(string baseResourceName, Assembly assembly) { RegisterNeutralStrings(new ResourceManager(baseResourceName, assembly)); - ResourceAssembly ra = new ResourceAssembly(assembly, baseResourceName, false); + ResourceAssembly ra = new ResourceAssembly(this, assembly, baseResourceName, false); resourceAssemblies.Add(ra); ra.Load(); } - public static void RegisterNeutralStrings(ResourceManager stringManager) + public void RegisterNeutralStrings(ResourceManager stringManager) { strings.Add(stringManager); } @@ -151,35 +174,33 @@ namespace ICSharpCode.Core /// The base name of the resource file embedded in the assembly. /// The assembly which contains the resource file. /// ResourceService.RegisterImages("TestAddin.Resources.BitmapResources", GetType().Assembly); - public static void RegisterImages(string baseResourceName, Assembly assembly) + public void RegisterImages(string baseResourceName, Assembly assembly) { RegisterNeutralImages(new ResourceManager(baseResourceName, assembly)); - ResourceAssembly ra = new ResourceAssembly(assembly, baseResourceName, true); + ResourceAssembly ra = new ResourceAssembly(this, assembly, baseResourceName, true); resourceAssemblies.Add(ra); ra.Load(); } - public static void RegisterNeutralImages(ResourceManager imageManager) + public void RegisterNeutralImages(ResourceManager imageManager) { icons.Add(imageManager); } - static void OnPropertyChange(object sender, PropertyChangedEventArgs e) + void OnPropertyChange(object sender, PropertyChangedEventArgs e) { if (e.PropertyName == uiLanguageProperty) { LoadLanguageResources(Language); EventHandler handler = LanguageChanged; if (handler != null) - handler(null, e); + handler(this, e); } } - public static event EventHandler ClearCaches; - - public static event EventHandler LanguageChanged; - static string currentLanguage; + public event EventHandler LanguageChanged; + string currentLanguage; - static void LoadLanguageResources(string language) + void LoadLanguageResources(string language) { lock (loadLock) { try { @@ -207,12 +228,9 @@ namespace ICSharpCode.Core ra.Load(); } } - EventHandler handler = ClearCaches; - if (handler != null) - handler(null, EventArgs.Empty); } - static Hashtable Load(string fileName) + Hashtable Load(string fileName) { if (File.Exists(fileName)) { Hashtable resources = new Hashtable(); @@ -226,7 +244,7 @@ namespace ICSharpCode.Core return null; } - static Hashtable Load(string name, string language) + Hashtable Load(string name, string language) { return Load(resourceDirectory + Path.DirectorySeparatorChar + name + "." + language + ".resources"); } @@ -244,7 +262,7 @@ namespace ICSharpCode.Core /// /// Is thrown when the GlobalResource manager can't find a requested resource. /// - public static string GetString(string name) + public string GetString(string name) { lock (loadLock) { if (localStrings != null && localStrings[name] != null) { @@ -283,7 +301,7 @@ namespace ICSharpCode.Core } } - public static object GetImageResource(string name) + public object GetImageResource(string name) { lock (loadLock) { object iconobj = null; diff --git a/src/Main/ICSharpCode.Core.Presentation/LanguageChangeWeakEventManager.cs b/src/Main/ICSharpCode.Core.Presentation/LanguageChangeWeakEventManager.cs index 602988104e..f9cb0b8f4d 100644 --- a/src/Main/ICSharpCode.Core.Presentation/LanguageChangeWeakEventManager.cs +++ b/src/Main/ICSharpCode.Core.Presentation/LanguageChangeWeakEventManager.cs @@ -39,14 +39,16 @@ namespace ICSharpCode.Core.Presentation } } + readonly IResourceService resourceService = ServiceSingleton.ServiceProvider.GetRequiredService(); + protected override void StartListening(object source) { - ResourceService.LanguageChanged += DeliverEvent; + resourceService.LanguageChanged += DeliverEvent; } protected override void StopListening(object source) { - ResourceService.LanguageChanged -= DeliverEvent; + resourceService.LanguageChanged -= DeliverEvent; } } } diff --git a/src/Main/ICSharpCode.Core.Presentation/PresentationResourceService.cs b/src/Main/ICSharpCode.Core.Presentation/PresentationResourceService.cs index deb57b7671..a76f781a7c 100644 --- a/src/Main/ICSharpCode.Core.Presentation/PresentationResourceService.cs +++ b/src/Main/ICSharpCode.Core.Presentation/PresentationResourceService.cs @@ -17,13 +17,15 @@ namespace ICSharpCode.Core.Presentation public static class PresentationResourceService { static readonly Dictionary bitmapCache = new Dictionary(); + static readonly IResourceService resourceService; static PresentationResourceService() { - ResourceService.ClearCaches += ResourceService_ClearCaches; + resourceService = ServiceSingleton.ServiceProvider.GetRequiredService(); + resourceService.LanguageChanged += OnLanguageChanged; } - static void ResourceService_ClearCaches(object sender, EventArgs e) + static void OnLanguageChanged(object sender, EventArgs e) { lock (bitmapCache) { bitmapCache.Clear(); @@ -59,11 +61,13 @@ namespace ICSharpCode.Core.Presentation /// public static BitmapSource GetBitmapSource(string name) { + if (resourceService == null) + throw new ArgumentNullException("resourceService"); lock (bitmapCache) { BitmapSource bs; if (bitmapCache.TryGetValue(name, out bs)) return bs; - System.Drawing.Bitmap bmp = (System.Drawing.Bitmap)ResourceService.GetImageResource(name); + System.Drawing.Bitmap bmp = (System.Drawing.Bitmap)resourceService.GetImageResource(name); if (bmp == null) { throw new ResourceNotFoundException(name); } diff --git a/src/Main/ICSharpCode.Core.WinForms/ToolBar/ToolBarService.cs b/src/Main/ICSharpCode.Core.WinForms/ToolBar/ToolBarService.cs index 7658e9c17e..0562a99c26 100644 --- a/src/Main/ICSharpCode.Core.WinForms/ToolBar/ToolBarService.cs +++ b/src/Main/ICSharpCode.Core.WinForms/ToolBar/ToolBarService.cs @@ -74,17 +74,18 @@ namespace ICSharpCode.Core.WinForms } class LanguageChangeWatcher { + readonly IResourceService resourceService = ServiceSingleton.ServiceProvider.GetRequiredService(); ToolStrip toolStrip; public LanguageChangeWatcher(ToolStrip toolStrip) { this.toolStrip = toolStrip; toolStrip.Disposed += Disposed; - ResourceService.LanguageChanged += OnLanguageChanged; + resourceService.LanguageChanged += OnLanguageChanged; } void OnLanguageChanged(object sender, EventArgs e) { ToolbarService.UpdateToolbarText(toolStrip); } void Disposed(object sender, EventArgs e) { - ResourceService.LanguageChanged -= OnLanguageChanged; + resourceService.LanguageChanged -= OnLanguageChanged; } } diff --git a/src/Main/ICSharpCode.Core.WinForms/WinFormsResourceService.cs b/src/Main/ICSharpCode.Core.WinForms/WinFormsResourceService.cs index 3f8573b4be..455f6b835a 100644 --- a/src/Main/ICSharpCode.Core.WinForms/WinFormsResourceService.cs +++ b/src/Main/ICSharpCode.Core.WinForms/WinFormsResourceService.cs @@ -17,12 +17,15 @@ namespace ICSharpCode.Core.WinForms static Dictionary iconCache = new Dictionary(); static Dictionary bitmapCache = new Dictionary(); + static readonly IResourceService resourceService; + static WinFormsResourceService() { - ResourceService.ClearCaches += ResourceService_ClearCaches; + resourceService = ServiceSingleton.ServiceProvider.GetRequiredService(); + resourceService.LanguageChanged += OnLanguageChanged; } - static void ResourceService_ClearCaches(object sender, EventArgs e) + static void OnLanguageChanged(object sender, EventArgs e) { lock (iconCache) { iconCache.Clear(); @@ -162,7 +165,7 @@ namespace ICSharpCode.Core.WinForms if (iconCache.TryGetValue(name, out ico)) return ico; - object iconobj = ResourceService.GetImageResource(name); + object iconobj = resourceService.GetImageResource(name); if (iconobj == null) { return null; } @@ -218,7 +221,7 @@ namespace ICSharpCode.Core.WinForms Bitmap bmp; if (bitmapCache.TryGetValue(name, out bmp)) return bmp; - bmp = (Bitmap)ResourceService.GetImageResource(name); + bmp = (Bitmap)resourceService.GetImageResource(name); if (bmp == null) { throw new ResourceNotFoundException(name); } diff --git a/src/Main/SharpDevelop/Sda/CallHelper.cs b/src/Main/SharpDevelop/Sda/CallHelper.cs index 3b8d95049f..9b28f5c1d3 100644 --- a/src/Main/SharpDevelop/Sda/CallHelper.cs +++ b/src/Main/SharpDevelop/Sda/CallHelper.cs @@ -62,8 +62,8 @@ namespace ICSharpCode.SharpDevelop.Sda startup.StartCoreServices(); Assembly exe = Assembly.Load(properties.ResourceAssemblyName); - ResourceService.RegisterNeutralStrings(new ResourceManager("ICSharpCode.SharpDevelop.Resources.StringResources", exe)); - ResourceService.RegisterNeutralImages(new ResourceManager("ICSharpCode.SharpDevelop.Resources.BitmapResources", exe)); + SD.ResourceService.RegisterNeutralStrings(new ResourceManager("ICSharpCode.SharpDevelop.Resources.StringResources", exe)); + SD.ResourceService.RegisterNeutralImages(new ResourceManager("ICSharpCode.SharpDevelop.Resources.BitmapResources", exe)); MenuCommand.LinkCommandCreator = delegate(string link) { return new LinkCommand(link); }; MenuCommand.KnownCommandCreator = CreateICommandForWPFCommand; @@ -181,8 +181,9 @@ namespace ICSharpCode.SharpDevelop.Sda LoggingService.Info("Unloading services..."); try { WorkbenchSingleton.OnWorkbenchUnloaded(); + var propertyService = SD.PropertyService; ((IDisposable)SD.Services).Dispose(); // dispose all services - PropertyService.Save(); + propertyService.Save(); } catch (Exception ex) { LoggingService.Warn("Exception during unloading", ex); if (exception == null) { diff --git a/src/Main/SharpDevelop/Workbench/AvalonWorkbenchWindow.cs b/src/Main/SharpDevelop/Workbench/AvalonWorkbenchWindow.cs index c62033887c..54a46f9c2a 100644 --- a/src/Main/SharpDevelop/Workbench/AvalonWorkbenchWindow.cs +++ b/src/Main/SharpDevelop/Workbench/AvalonWorkbenchWindow.cs @@ -34,7 +34,7 @@ namespace ICSharpCode.SharpDevelop.Workbench this.dockLayout = dockLayout; viewContents = new ViewContentCollection(this); - ResourceService.LanguageChanged += OnTabPageTextChanged; + SD.ResourceService.LanguageChanged += OnTabPageTextChanged; } protected override void FocusContent() @@ -284,7 +284,7 @@ namespace ICSharpCode.SharpDevelop.Workbench void Dispose() { - ResourceService.LanguageChanged -= OnTabPageTextChanged; + SD.ResourceService.LanguageChanged -= OnTabPageTextChanged; // DetachContent must be called before the controls are disposed List viewContents = this.ViewContents.ToList(); this.ViewContents.Clear(); diff --git a/src/Main/SharpDevelop/Workbench/ChooseLayoutCommand.cs b/src/Main/SharpDevelop/Workbench/ChooseLayoutCommand.cs index f23adbdcc3..fc42cb6f6a 100644 --- a/src/Main/SharpDevelop/Workbench/ChooseLayoutCommand.cs +++ b/src/Main/SharpDevelop/Workbench/ChooseLayoutCommand.cs @@ -22,7 +22,7 @@ namespace ICSharpCode.SharpDevelop.Workbench public ChooseLayoutCommand() { LayoutConfiguration.LayoutChanged += new EventHandler(LayoutChanged); - ResourceService.LanguageChanged += new EventHandler(ResourceService_LanguageChanged); + SD.ResourceService.LanguageChanged += new EventHandler(ResourceService_LanguageChanged); } void ResourceService_LanguageChanged(object sender, EventArgs e) diff --git a/src/Main/SharpDevelop/Workbench/WpfWorkbench.cs b/src/Main/SharpDevelop/Workbench/WpfWorkbench.cs index 1707cc33de..487398458d 100644 --- a/src/Main/SharpDevelop/Workbench/WpfWorkbench.cs +++ b/src/Main/SharpDevelop/Workbench/WpfWorkbench.cs @@ -133,7 +133,7 @@ namespace ICSharpCode.SharpDevelop.Workbench requerySuggestedEventHandler = new EventHandler(CommandManager_RequerySuggested); CommandManager.RequerySuggested += requerySuggestedEventHandler; - ResourceService.LanguageChanged += OnLanguageChanged; + SD.ResourceService.LanguageChanged += OnLanguageChanged; SD.StatusBar.SetMessage("${res:MainWindow.StatusBar.ReadyMessage}"); }