Example #1
0
            /// <summary>
            /// Initializes a new instance of the <see cref="
            /// EditorDictionary"/> class with the specified <see cref="
            /// EditorSelector"/> as its parent.
            /// </summary>
            /// <param name="editorSelector">
            /// The <see cref="EditorSelector"/> that will own this <see
            /// cref="EditorDictionary"/>.
            /// </param>
            /// <exception cref="ArgumentNullException">
            /// <paramref name="editorSelector"/> is <see langword="null"/>.
            /// </exception>
            internal EditorDictionary(EditorSelector editorSelector)
            {
                EditorSelector = editorSelector
                                 ?? throw new ArgumentNullException(nameof(
                                                                        editorSelector));

                Editors = new Dictionary <string, IEditor>(
                    StringComparer.OrdinalIgnoreCase);
            }
Example #2
0
            /// <summary>
            /// Removes all keys and values from the <see cref="
            /// EditorDictionary"/>.
            /// </summary>
            public void Clear()
            {
                var values = new List <IEditor>(Values);

                Editors.Clear();
                foreach (var value in values)
                {
                    var e = new EditorEventArgs(value);
                    EditorSelector.OnEditorRemoved(e);
                }
            }
Example #3
0
            /// <inheritdoc/>
            ///
            bool ICollection <PathEditorPair> .Remove(PathEditorPair item)
            {
                var itemWithActualKey = new PathEditorPair(
                    GetFullPath(item.Key),
                    item.Value);

                if (IDictionary.Remove(itemWithActualKey))
                {
                    var e = new EditorEventArgs(item.Value);
                    EditorSelector.OnEditorRemoved(e);
                    return(true);
                }

                return(false);
            }
Example #4
0
            /// <summary>
            /// Removes the <see cref="IEditor"/> with the specified file path
            /// key.
            /// </summary>
            /// <param name="key">
            /// The file path of the <see cref="IEditor"/> to remove.
            /// </param>
            /// <returns>
            /// <see langword="true"/> if the <see cref="IEditor"/> is
            /// successfully found and removed; otherwise <see
            /// langword="false"/>.
            /// </returns>
            /// <exception cref="ArgumentException">
            /// <paramref name="key"/> is a zero-length string, contains only
            /// whitespace, or contains one or more of the invalid characters
            /// defined in <see cref=" GetInvalidPathChars"/>.
            /// <para/>
            /// -or-
            /// <para/>
            /// The system could not retrieve the absolute path.
            /// </exception>
            /// <exception cref="System.Security.SecurityException">
            /// The caller does not have the required permissions.
            /// </exception>
            /// <exception cref="ArgumentNullException">
            /// <paramref name="key"/> is <see langword="null"/>.
            /// </exception>
            /// <exception cref="NotSupportedException">
            /// <paramref name="key"/> contains a colon (":") that is not part
            /// of a volume identifier (for example, "c:\").
            /// </exception>
            /// <exception cref="System.IO.PathTooLongException">
            /// The specified path, file name, or both exceed the
            /// system-defined maximum length.
            /// </exception>
            public bool Remove(string key)
            {
                var actualKey = GetFullPath(key);

                if (Editors.TryGetValue(actualKey, out var value))
                {
                    Editors.Remove(actualKey);

                    var e = new EditorEventArgs(value);
                    EditorSelector.OnEditorRemoved(e);
                    return(true);
                }

                return(false);
            }
Example #5
0
            /// <summary>
            /// Adds the specified file path key and <see cref="IEditor"/>
            /// value to the <see cref="EditorDictionary"/>.
            /// </summary>
            /// <param name="key">
            /// The file path key of the <see cref="IEditor"/> to add.
            /// </param>
            /// <param name="value">
            /// The <see cref="IEditor"/> of the element to add.
            /// </param>
            /// <exception cref="ArgumentNullException">
            /// <paramref name="key"/> is <see langword="null"/>.
            /// <para/>
            /// -or-
            /// <para/>
            /// <paramref name="value"/> is <see langword="null"/>.
            /// </exception>
            /// <exception cref="ArgumentException">
            /// <paramref name="key"/> is a zero-length string, contains only
            /// whitespace, or contains one or more of the invalid characters
            /// defined in <see cref=" GetInvalidPathChars"/>.
            /// <para/>
            /// -or-
            /// <para/>
            /// The system could not retrieve the absolute path.
            /// </exception>
            /// <exception cref="System.Security.SecurityException">
            /// The caller does not have the required permissions.
            /// </exception>
            /// <exception cref="NotSupportedException">
            /// <paramref name="key"/> contains a colon (":") that is not part
            /// of a volume identifier (for example, "c:\").
            /// </exception>
            /// <exception cref="System.IO.PathTooLongException">
            /// The specified path, file name, or both exceed the
            /// system-defined maximum length.
            /// </exception>
            public void Add(string key, IEditor value)
            {
                if (value is null)
                {
                    throw new ArgumentNullException(nameof(value));
                }

                var actualKey = GetFullPath(key);

                Editors.Add(actualKey, value);

                var e = new EditorEventArgs(value);

                EditorSelector.OnEditorAdded(e);
            }