/// <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); }
/// <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); } }
/// <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); }
/// <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); }
/// <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); }