// ********************************************************************************************************************************

        /// <summary>
        /// Builds the formatted description string for the specified resource.
        /// </summary>
        public static string FormatResourceDescription(IResourceFileContent content, string key)
        {
            StringBuilder sb = new StringBuilder();

            IMultiResourceFileContent mrfc;

            if (key != null && (mrfc = (content as IMultiResourceFileContent)) != null)
            {
                string file = mrfc.GetFileNameForKey(key);
                if (file == null)
                {
                    file = content.FileName;
                }
                sb.AppendFormat(StringParser.Parse("${res:Hornung.ResourceToolkit.ToolTips.PlaceMessage}"), file);
            }
            else
            {
                sb.AppendFormat(StringParser.Parse("${res:Hornung.ResourceToolkit.ToolTips.PlaceMessage}"), content.FileName);
            }

            sb.AppendLine();
            sb.Append(StringParser.Parse("${res:Hornung.ResourceToolkit.KeyLabel}"));
            sb.Append(' ');

            if (key != null)
            {
                sb.AppendLine(key);
                sb.AppendLine();
                sb.AppendLine(StringParser.Parse("${res:Hornung.ResourceToolkit.ValueLabel}"));

                object value;
                if (content.TryGetValue(key, out value))
                {
                    if (value is string)
                    {
                        sb.Append(value);
                    }
                    else
                    {
                        sb.AppendFormat(StringParser.Parse("${res:Hornung.ResourceToolkit.ToolTips.TypeMessage}"), value.GetType().ToString());
                        sb.Append(' ');
                        sb.Append(value.ToString());
                    }
                }
                else
                {
                    sb.Append(StringParser.Parse("${res:Hornung.ResourceToolkit.ToolTips.KeyNotFound}"));
                }
            }
            else
            {
                sb.Append(StringParser.Parse("${res:Hornung.ResourceToolkit.ToolTips.UnknownKey}"));
            }

            return(sb.ToString());
        }
        // ********************************************************************************************************************************
        /// <summary>
        /// Builds the formatted description string for the specified resource.
        /// </summary>
        public static string FormatResourceDescription(IResourceFileContent content, string key)
        {
            StringBuilder sb = new StringBuilder();

            IMultiResourceFileContent mrfc;
            if (key != null && (mrfc = (content as IMultiResourceFileContent)) != null) {
                string file = mrfc.GetFileNameForKey(key);
                if (file == null) {
                    file = content.FileName;
                }
                sb.AppendFormat(StringParser.Parse("${res:Hornung.ResourceToolkit.ToolTips.PlaceMessage}"), file);
            } else {
                sb.AppendFormat(StringParser.Parse("${res:Hornung.ResourceToolkit.ToolTips.PlaceMessage}"), content.FileName);
            }

            sb.AppendLine();
            sb.Append(StringParser.Parse("${res:Hornung.ResourceToolkit.KeyLabel}"));
            sb.Append(' ');

            if (key != null) {

                sb.AppendLine(key);
                sb.AppendLine();
                sb.AppendLine(StringParser.Parse("${res:Hornung.ResourceToolkit.ValueLabel}"));

                object value;
                if (content.TryGetValue(key, out value)) {
                    if (value is string) {
                        sb.Append(value);
                    } else {
                        sb.AppendFormat(StringParser.Parse("${res:Hornung.ResourceToolkit.ToolTips.TypeMessage}"), value.GetType().ToString());
                        sb.Append(' ');
                        sb.Append(value.ToString());
                    }
                } else {
                    sb.Append(StringParser.Parse("${res:Hornung.ResourceToolkit.ToolTips.KeyNotFound}"));
                }

            } else {
                sb.Append(StringParser.Parse("${res:Hornung.ResourceToolkit.ToolTips.UnknownKey}"));
            }

            return sb.ToString();
        }
Exemplo n.º 3
0
        /// <summary>
        /// Fills the list view with all unused resource keys that match the current filter.
        /// </summary>
        void FillListViewInternal()
        {
            Application.DoEvents();
            Cursor oldCursor = Cursor.Current;

            Cursor.Current = Cursors.WaitCursor;

            try {
                this.ListView.Items.Clear();
                this.ListView.Groups.Clear();
                // Suspend sorting to improve performance
                System.Collections.IComparer comparer = this.ListView.ListViewItemSorter;
                this.ListView.ListViewItemSorter = null;
                this.ListView.BeginUpdate();

                Dictionary <string, ListViewGroup> fileGroups = new Dictionary <string, ListViewGroup>();

                // Create the ListViewItems.
                foreach (ResourceItem entry in this.UnusedKeys)
                {
                    // Skip if any filter rejects this item.
                    if (!this.ItemMatchesCurrentFilter(entry))
                    {
                        continue;
                    }

                    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.FileName));
                    item.ToolTipText = entry.FileName;
                    item.SubItems.Add(entry.Key);
                    if (c.TryGetValue(entry.Key, out o))
                    {
                        item.SubItems.Add((o ?? (object)"<<null>>").ToString());
                    }
                    else
                    {
                        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.FileName, out grp))
                    {
                        grp = new ListViewGroup(entry.FileName);
                        fileGroups.Add(entry.FileName, grp);
                        this.ListView.Groups.Add(grp);
                    }
                    grp.Items.Add(item);

                    this.ListView.Items.Add(item);
                }

                this.ListView.ListViewItemSorter = comparer;
                this.ListView.EndUpdate();
            } finally {
                this.fillListViewQueued = false;
                Cursor.Current          = oldCursor;
            }
        }