Example #1
0
        /// <summary>
        /// Removes the <see cref="ISearchItem{TKey}"/>.
        /// </summary>
        /// <param name="item">The item to remove.</param>
        /// <returns><see langword="true"/>, if <paramref name="item"/> was removed. <see langword="false"/>, if <paramref name="item"/> was not found.</returns>
        public static bool RemoveCommand(ISearchItem <string> item)
        {
            var    assembly     = Assembly.GetCallingAssembly();
            string assemblyName = assembly?.GetName()?.Name ?? "Null";

            assemblyName = assemblyName.Replace("_", " ");

            var sourceName = "___UNNAMEDITEMSOURCE___";
            var combined   = $"{assemblyName}_{sourceName}";

            if (searchItemSources.TryGetValue(combined, out var existing))
            {
                ExternalCommandItemSource source = (ExternalCommandItemSource)existing;
                var key = source.entries.Where(e => e.Value == item).Select(e => e.Key).FirstOrDefault();
                if (key != null)
                {
                    source.entries.Remove(key);
                    return(true);
                }
                if (source.entries.Count == 0)
                {
                    searchItemSources.TryRemove(combined, out var _);
                }
            }
            return(false);
        }
Example #2
0
        private static ExternalCommandItemSource GetOrCreateSource(string assemblyName)
        {
            var sourceName = "___UNNAMEDITEMSOURCE___";
            var combined   = $"{assemblyName}_{sourceName}";

            ExternalCommandItemSource source;

            if (searchItemSources.TryGetValue(combined, out var existing))
            {
                source = (ExternalCommandItemSource)existing;
            }
            else
            {
                source = new ExternalCommandItemSource();
                searchItemSources.TryAdd(combined, source);
            }

            return(source);
        }