diff --git a/src/AddIns/Misc/ResourceToolkit/Project/ResourceToolkit.csproj b/src/AddIns/Misc/ResourceToolkit/Project/ResourceToolkit.csproj index 61992be0fe..fa2c5dad9e 100644 --- a/src/AddIns/Misc/ResourceToolkit/Project/ResourceToolkit.csproj +++ b/src/AddIns/Misc/ResourceToolkit/Project/ResourceToolkit.csproj @@ -89,6 +89,7 @@ + diff --git a/src/AddIns/Misc/ResourceToolkit/Project/Src/Commands/RefactoringCommands.cs b/src/AddIns/Misc/ResourceToolkit/Project/Src/Commands/RefactoringCommands.cs index 7502bda4bc..7363f7cc49 100644 --- a/src/AddIns/Misc/ResourceToolkit/Project/Src/Commands/RefactoringCommands.cs +++ b/src/AddIns/Misc/ResourceToolkit/Project/Src/Commands/RefactoringCommands.cs @@ -36,7 +36,7 @@ namespace Hornung.ResourceToolkit.Commands { public override void Run() { - ICollection> unusedKeys = ResourceRefactoringService.FindUnusedKeys(); + ICollection unusedKeys = ResourceRefactoringService.FindUnusedKeys(); if (unusedKeys == null) { return; diff --git a/src/AddIns/Misc/ResourceToolkit/Project/Src/Commands/TextEditorContextMenuBuilder.cs b/src/AddIns/Misc/ResourceToolkit/Project/Src/Commands/TextEditorContextMenuBuilder.cs index d959b9f0dc..9b0ecd78fb 100644 --- a/src/AddIns/Misc/ResourceToolkit/Project/Src/Commands/TextEditorContextMenuBuilder.cs +++ b/src/AddIns/Misc/ResourceToolkit/Project/Src/Commands/TextEditorContextMenuBuilder.cs @@ -74,6 +74,7 @@ namespace Hornung.ResourceToolkit.Commands // ******************************************************************************************************************************** + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1303:DoNotPassLiteralsAsLocalizedParameters", MessageId = "ICSharpCode.Core.MessageService.ShowWarning(System.String)")] void EditResource(object sender, EventArgs e) { MenuCommand cmd = sender as MenuCommand; diff --git a/src/AddIns/Misc/ResourceToolkit/Project/Src/Gui/EditStringResourceDialog.cs b/src/AddIns/Misc/ResourceToolkit/Project/Src/Gui/EditStringResourceDialog.cs index ca3c78caf8..293f5f4906 100644 --- a/src/AddIns/Misc/ResourceToolkit/Project/Src/Gui/EditStringResourceDialog.cs +++ b/src/AddIns/Misc/ResourceToolkit/Project/Src/Gui/EditStringResourceDialog.cs @@ -55,6 +55,7 @@ namespace Hornung.ResourceToolkit.Gui SetupFromXmlStream(this.GetType().Assembly.GetManifestResourceStream("Hornung.ResourceToolkit.Resources.EditStringResourceDialog.xfrm")); } + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1303:DoNotPassLiteralsAsLocalizedParameters", MessageId = "ICSharpCode.Core.MessageService.ShowWarning(System.String)")] void KeyValidating(object sender, CancelEventArgs e) { TextBox textBox = (TextBox)sender; diff --git a/src/AddIns/Misc/ResourceToolkit/Project/Src/Gui/UnusedResourceKeysCommands.cs b/src/AddIns/Misc/ResourceToolkit/Project/Src/Gui/UnusedResourceKeysCommands.cs index 2ecf674491..30e48f2817 100644 --- a/src/AddIns/Misc/ResourceToolkit/Project/Src/Gui/UnusedResourceKeysCommands.cs +++ b/src/AddIns/Misc/ResourceToolkit/Project/Src/Gui/UnusedResourceKeysCommands.cs @@ -17,7 +17,7 @@ namespace Hornung.ResourceToolkit.Gui /// /// Hides or shows the ICSharpCode.Core host resources in an UnusedResourceKeysViewContent. /// - public class UnusedResourceKeysHideICSharpCodeCoreHostResourcesCommand : AbstractCheckableMenuCommand, IFilter> + public class UnusedResourceKeysHideICSharpCodeCoreHostResourcesCommand : AbstractCheckableMenuCommand, IFilter { string icSharpCodeCoreHostResourceFileName; @@ -25,7 +25,7 @@ namespace Hornung.ResourceToolkit.Gui { base.Run(); - IFilterHost> host = ((ToolBarCheckBox)this.Owner).Caller as IFilterHost>; + IFilterHost host = ((ToolBarCheckBox)this.Owner).Caller as IFilterHost; if (host != null) { if (this.IsChecked) { this.icSharpCodeCoreHostResourceFileName = ICSharpCodeCoreResourceResolver.GetICSharpCodeCoreHostResourceFileName(null); @@ -41,9 +41,9 @@ namespace Hornung.ResourceToolkit.Gui /// /// The item to test. /// true, if the specified item matches the current filter criteria, otherwise false. - public bool IsMatch(KeyValuePair item) + public bool IsMatch(ResourceItem item) { - return !FileUtility.IsEqualFileName(item.Value, this.icSharpCodeCoreHostResourceFileName); + return !FileUtility.IsEqualFileName(item.FileName, this.icSharpCodeCoreHostResourceFileName); } } } diff --git a/src/AddIns/Misc/ResourceToolkit/Project/Src/Gui/UnusedResourceKeysViewContent.cs b/src/AddIns/Misc/ResourceToolkit/Project/Src/Gui/UnusedResourceKeysViewContent.cs index bbf4871cfe..486ad486bb 100644 --- a/src/AddIns/Misc/ResourceToolkit/Project/Src/Gui/UnusedResourceKeysViewContent.cs +++ b/src/AddIns/Misc/ResourceToolkit/Project/Src/Gui/UnusedResourceKeysViewContent.cs @@ -22,9 +22,9 @@ namespace Hornung.ResourceToolkit.Gui /// /// Displays unused resource keys in a list and allows the user to delete them. /// - public class UnusedResourceKeysViewContent : AbstractViewContent, IClipboardHandler, IFilterHost> + public class UnusedResourceKeysViewContent : AbstractViewContent, IClipboardHandler, IFilterHost { - readonly ICollection> unusedKeys; + readonly ICollection unusedKeys; Panel panel; ListView listView; ToolStrip toolStrip; @@ -47,7 +47,7 @@ namespace Hornung.ResourceToolkit.Gui /// /// Gets a collection of key/value pairs where the values are the resource file names and the keys are the unused resource keys. /// - public ICollection> UnusedKeys { + public ICollection UnusedKeys { get { return this.unusedKeys; } @@ -56,8 +56,8 @@ namespace Hornung.ResourceToolkit.Gui /// /// Initializes a new instance of the class. /// - /// A collection of key/value pairs where the values are the resource file names and the keys are the unused resource keys. - public UnusedResourceKeysViewContent(ICollection> unusedKeys) + /// A collection of classes that represent the unused resource keys to display. + public UnusedResourceKeysViewContent(ICollection unusedKeys) : base(StringParser.Parse("${res:Hornung.ResourceToolkit.UnusedResourceKeys.Title}")) { LoggingService.Debug("ResourceToolkit: Creating new UnusedResourceKeysViewContent"); @@ -144,7 +144,7 @@ namespace Hornung.ResourceToolkit.Gui } } - bool fillListViewQueued = false; + bool fillListViewQueued; /// /// Fills the list view with all unused resource keys that match the current filter after processing the message queue. @@ -178,32 +178,32 @@ namespace Hornung.ResourceToolkit.Gui Dictionary fileGroups = new Dictionary(); // Create the ListViewItems. - foreach (KeyValuePair entry in this.UnusedKeys) { + foreach (ResourceItem entry in this.UnusedKeys) { // Skip if any filter rejects this item. if (!this.ItemMatchesCurrentFilter(entry)) { continue; } - IResourceFileContent c = ResourceFileContentRegistry.GetResourceFileContent(entry.Value); + IResourceFileContent c = ResourceFileContentRegistry.GetResourceFileContent(entry.FileName); object o; // only add the file name to save space // and show the full path as tooltip - ListViewItem item = new ListViewItem(Path.GetFileName(entry.Value)); - item.ToolTipText = entry.Value; + ListViewItem item = new ListViewItem(Path.GetFileName(entry.FileName)); + item.ToolTipText = entry.FileName; item.SubItems.Add(entry.Key); if (c.TryGetValue(entry.Key, out o)) { item.SubItems.Add((o ?? (object)"<>").ToString()); } else { - throw new InvalidOperationException("The key '"+entry.Key+"' in file '"+entry.Value+"' does not exist although it was reported as unused."); + throw new InvalidOperationException("The key '"+entry.Key+"' in file '"+entry.FileName+"' does not exist although it was reported as unused."); } // Use ListViewGroups to group by file names ListViewGroup grp; - if (!fileGroups.TryGetValue(entry.Value, out grp)) { - grp = new ListViewGroup(entry.Value); - fileGroups.Add(entry.Value, grp); + if (!fileGroups.TryGetValue(entry.FileName, out grp)) { + grp = new ListViewGroup(entry.FileName); + fileGroups.Add(entry.FileName, grp); this.ListView.Groups.Add(grp); } grp.Items.Add(item); @@ -222,7 +222,7 @@ namespace Hornung.ResourceToolkit.Gui #region Filter - readonly List>> filters = new List>>(); + readonly List> filters = new List>(); /// /// Registers a new filter with the filter host, if the filter is not already registered, @@ -230,7 +230,7 @@ namespace Hornung.ResourceToolkit.Gui /// /// The filter to be registered. /// The parameter is null. - public void RegisterFilter(IFilter> filter) + public void RegisterFilter(IFilter filter) { if (filter == null) { throw new ArgumentNullException("filter"); @@ -248,7 +248,7 @@ namespace Hornung.ResourceToolkit.Gui /// /// The filter to be removed. /// The parameter is null. - public void UnregisterFilter(IFilter> filter) + public void UnregisterFilter(IFilter filter) { if (filter == null) { throw new ArgumentNullException("filter"); @@ -264,9 +264,9 @@ namespace Hornung.ResourceToolkit.Gui /// according to the current filter. /// /// true, if the resource should be included in the list view, otherwise false. - bool ItemMatchesCurrentFilter(KeyValuePair item) + bool ItemMatchesCurrentFilter(ResourceItem item) { - foreach (IFilter> filter in this.filters) { + foreach (IFilter filter in this.filters) { if (!filter.IsMatch(item)) { return false; } @@ -325,6 +325,7 @@ namespace Hornung.ResourceToolkit.Gui throw new NotImplementedException(); } + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1814:PreferJaggedArraysOverMultidimensional", MessageId = "Body")] public void Delete() { if (this.ListView.SelectedItems.Count > 0) { diff --git a/src/AddIns/Misc/ResourceToolkit/Project/Src/Refactoring/ResourceRefactoringService.cs b/src/AddIns/Misc/ResourceToolkit/Project/Src/Refactoring/ResourceRefactoringService.cs index 76eefe6566..b5224e4f19 100644 --- a/src/AddIns/Misc/ResourceToolkit/Project/Src/Refactoring/ResourceRefactoringService.cs +++ b/src/AddIns/Misc/ResourceToolkit/Project/Src/Refactoring/ResourceRefactoringService.cs @@ -170,8 +170,8 @@ namespace Hornung.ResourceToolkit.Refactoring /// Finds all unused resource keys in all resource files that are referenced /// in code at least once in the whole solution. /// - /// A collection of key/value pairs where the values are the resource file names and the keys are the unused resource keys. - public static ICollection> FindUnusedKeys() + /// A collection of classes that represent the unused resource keys. + public static ICollection FindUnusedKeys() { List references = FindAllReferences(); if (references == null) { @@ -179,7 +179,7 @@ namespace Hornung.ResourceToolkit.Refactoring } DateTime startTime = DateTime.UtcNow; - List> unused = new List>(); + List unused = new List(); // Get a list of all referenced resource files. // Generate a dictonary of resource file names and the @@ -207,7 +207,7 @@ namespace Hornung.ResourceToolkit.Refactoring #endif foreach (KeyValuePair entry in ResourceFileContentRegistry.GetResourceFileContent(fileName).Data) { if (!referencedKeys[fileName].Contains(entry.Key)) { - unused.Add(new KeyValuePair(entry.Key, fileName)); + unused.Add(new ResourceItem(fileName, entry.Key)); } } } @@ -224,6 +224,7 @@ namespace Hornung.ResourceToolkit.Refactoring /// Asks the user for a new name. /// /// The resource to be renamed. + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1303:DoNotPassLiteralsAsLocalizedParameters", MessageId = "ICSharpCode.Core.MessageService.ShowInputBox(System.String,System.String,System.String)")] public static void Rename(ResourceResolveResult rrr) { string newKey = MessageService.ShowInputBox("${res:SharpDevelop.Refactoring.Rename}", "${res:Hornung.ResourceToolkit.RenameResourceText}", rrr.Key); @@ -275,7 +276,7 @@ namespace Hornung.ResourceToolkit.Refactoring /// Gets a list of names of files which can possibly contain resource references. /// [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate")] - public static List GetPossibleFiles() + public static ICollection GetPossibleFiles() { List files = new List(); @@ -307,7 +308,7 @@ namespace Hornung.ResourceToolkit.Refactoring } - return files; + return files.AsReadOnly(); } /// diff --git a/src/AddIns/Misc/ResourceToolkit/Project/Src/Resolver/NRefactoryAstCacheService.cs b/src/AddIns/Misc/ResourceToolkit/Project/Src/Resolver/NRefactoryAstCacheService.cs index 188e66a02b..98349b7b43 100644 --- a/src/AddIns/Misc/ResourceToolkit/Project/Src/Resolver/NRefactoryAstCacheService.cs +++ b/src/AddIns/Misc/ResourceToolkit/Project/Src/Resolver/NRefactoryAstCacheService.cs @@ -22,7 +22,7 @@ namespace Hornung.ResourceToolkit.Resolver /// public static class NRefactoryAstCacheService { - static bool cacheEnabled = false; + static bool cacheEnabled; static Dictionary cachedAstInfo = new Dictionary(); /// @@ -38,6 +38,7 @@ namespace Hornung.ResourceToolkit.Resolver /// Enables the AST cache. /// /// The AST cache is already enabled. + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1303:DoNotPassLiteralsAsLocalizedParameters", MessageId = "System.InvalidOperationException.#ctor(System.String)")] public static void EnableCache() { if (CacheEnabled) { diff --git a/src/AddIns/Misc/ResourceToolkit/Project/Src/Resolver/PropertyFieldAssociationVisitor.cs b/src/AddIns/Misc/ResourceToolkit/Project/Src/Resolver/PropertyFieldAssociationVisitor.cs index ad4f0cbedb..7f0ff3c8dc 100644 --- a/src/AddIns/Misc/ResourceToolkit/Project/Src/Resolver/PropertyFieldAssociationVisitor.cs +++ b/src/AddIns/Misc/ResourceToolkit/Project/Src/Resolver/PropertyFieldAssociationVisitor.cs @@ -228,6 +228,7 @@ namespace Hornung.ResourceToolkit.Resolver /// Initializes a new instance of the class. /// /// The field to find the associated property for. + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1303:DoNotPassLiteralsAsLocalizedParameters", MessageId = "System.ArgumentException.#ctor(System.String,System.String)")] public PropertyFieldAssociationVisitor(IField field) : base() { if (field == null) { diff --git a/src/AddIns/Misc/ResourceToolkit/Project/Src/ResourceFileContent/DefaultFileLocalizedResourcesFinder.cs b/src/AddIns/Misc/ResourceToolkit/Project/Src/ResourceFileContent/DefaultFileLocalizedResourcesFinder.cs index e560c776f8..1e3fd6bbf8 100644 --- a/src/AddIns/Misc/ResourceToolkit/Project/Src/ResourceFileContent/DefaultFileLocalizedResourcesFinder.cs +++ b/src/AddIns/Misc/ResourceToolkit/Project/Src/ResourceFileContent/DefaultFileLocalizedResourcesFinder.cs @@ -35,7 +35,7 @@ namespace Hornung.ResourceToolkit.ResourceFileContent string culture = Path.GetExtension(fileNameWithoutExtension); if (!String.IsNullOrEmpty(culture)) { try { - CultureInfo dummy = CultureInfo.GetCultureInfo(culture); + CultureInfo.GetCultureInfo(culture); // the specified file is a localized resource file itself LoggingService.Debug("ResourceToolkit: DefaultFileLocalizedResourcesFinder.GetLocalizedContents: Returning null for file '"+fileName+"' because it has been detected as being a localized resource file itself."); return null; diff --git a/src/AddIns/Misc/ResourceToolkit/Project/Src/ResourceFileContent/MergedResourceFileContent.cs b/src/AddIns/Misc/ResourceToolkit/Project/Src/ResourceFileContent/MergedResourceFileContent.cs index ce57402cd1..c32f81024b 100644 --- a/src/AddIns/Misc/ResourceToolkit/Project/Src/ResourceFileContent/MergedResourceFileContent.cs +++ b/src/AddIns/Misc/ResourceToolkit/Project/Src/ResourceFileContent/MergedResourceFileContent.cs @@ -28,6 +28,7 @@ namespace Hornung.ResourceToolkit.ResourceFileContent /// The master resource file content. /// Additional resource file contents. /// The cultures of the specified resource file contents do not match. + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1303:DoNotPassLiteralsAsLocalizedParameters", MessageId = "System.ArgumentException.#ctor(System.String)")] public MergedResourceFileContent(IResourceFileContent masterContent, IResourceFileContent[] otherContents) { this.masterContent = masterContent; @@ -123,6 +124,7 @@ namespace Hornung.ResourceToolkit.ResourceFileContent /// Modify the value of an existing entry. /// /// The specified key does not exist. + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1303:DoNotPassLiteralsAsLocalizedParameters", MessageId = "System.ArgumentException.#ctor(System.String,System.String)")] public void SetValue(string key, object value) { if (this.masterContent.ContainsKey(key)) { @@ -145,6 +147,7 @@ namespace Hornung.ResourceToolkit.ResourceFileContent /// The old name of the resource key to rename. /// The new name of the resource key. /// The specified key does not exist or the new key does already exist. + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1303:DoNotPassLiteralsAsLocalizedParameters", MessageId = "System.ArgumentException.#ctor(System.String,System.String)")] public void RenameKey(string oldName, string newName) { if (this.masterContent.ContainsKey(oldName)) { @@ -166,6 +169,7 @@ namespace Hornung.ResourceToolkit.ResourceFileContent /// /// The resource key to remove. /// The specified key does not exist. + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1303:DoNotPassLiteralsAsLocalizedParameters", MessageId = "System.ArgumentException.#ctor(System.String,System.String)")] public void RemoveKey(string key) { if (this.masterContent.ContainsKey(key)) { diff --git a/src/AddIns/Misc/ResourceToolkit/Project/Src/ResourceItem.cs b/src/AddIns/Misc/ResourceToolkit/Project/Src/ResourceItem.cs new file mode 100644 index 0000000000..f80580c152 --- /dev/null +++ b/src/AddIns/Misc/ResourceToolkit/Project/Src/ResourceItem.cs @@ -0,0 +1,53 @@ +// +// +// +// +// $Revision$ +// + +using System; + +namespace Hornung.ResourceToolkit +{ + /// + /// Describes a resource item by file name and key. + /// + public class ResourceItem + { + readonly string fileName; + readonly string key; + + /// + /// Initializes a new instance of the class. + /// + /// The name of the resource file. + /// The resource key. + /// The parameter is null. + public ResourceItem(string fileName, string key) + { + if (fileName == null) { + throw new ArgumentNullException("fileName"); + } + this.fileName = fileName; + this.key = key; + } + + /// + /// Gets the name of the resource file this resource item is contained in. + /// + public string FileName { + get { + return fileName; + } + } + + /// + /// Gets the resource key of this resource item. + /// + public string Key { + get { + return key; + } + } + } +}