/// <summary> /// Tells the instance that the <see cref="IContentAssistTextBox.ContentAssistModel"/> property has been changed. /// </summary> /// <param name="contentAssistModel">New model value</param> protected virtual void OnContentAssistModelChanged(IContentAssistModel contentAssistModel) { if (contentAssistModel == null) { return; } // No provider -> no box IContentAssistItemProvider itemProvider = contentAssistModel.ItemProvider; if (itemProvider == null) { return; } // Set up auto complete menu AutocompleteMenu autocompleteMenu = new AutocompleteMenu(this); autocompleteMenu.SearchPattern = contentAssistModel.SearchPattern; autocompleteMenu.MinFragmentLength = contentAssistModel.MinFragmentLength; autocompleteMenu.AppearInterval = contentAssistModel.AppearInterval; autocompleteMenu.AllowTabKey = contentAssistModel.AllowTab; autocompleteMenu.AlwaysShowTooltip = contentAssistModel.AlwaysShowInfotip; autocompleteMenu.ToolTipDuration = contentAssistModel.InfotipDuration; autocompleteMenu.Items.SetAutocompleteItems(new ContentAssistItemProjection(autocompleteMenu, itemProvider)); autocompleteMenu.Selected += (sender, args) => contentAssistModel.OnItemInserted((ContentAssistItem)args.Item.Tag, SelectionStart - args.Item.Text.Length); // TODO Unregister event }
/// <summary> /// Creates a new instance that projects each <see cref="ContentAssistItem"/> /// provided by the given <paramref name="contentAssistItemProvider"/> as /// <see cref="AutocompleteItem"/> into the given <paramref name="autocompleteMenu"/>. /// </summary> /// <param name="autocompleteMenu">Autocomplete menu</param> /// <param name="contentAssistItemProvider">Item provider</param> /// <exception cref="ArgumentNullException">If any argument is NULL</exception> public ContentAssistItemProjection(AutocompleteMenu autocompleteMenu, IContentAssistItemProvider contentAssistItemProvider) { fAutocompleteMenu = autocompleteMenu ?? throw new ArgumentNullException(nameof(autocompleteMenu)); fContentAssistItemProvider = contentAssistItemProvider ?? throw new ArgumentNullException(nameof(contentAssistItemProvider)); }