public CompletionSource(IImageMonikerService imageMonikerService, IMruCompletionService mruCompletionService) { if (imageMonikerService == null) throw new ArgumentNullException(nameof(imageMonikerService)); if (mruCompletionService == null) throw new ArgumentNullException(nameof(mruCompletionService)); this.imageMonikerService = imageMonikerService; this.mruCompletionService = mruCompletionService; }
public RoslynIntellisenseFilter(IImageMonikerService imageMonikerService, ImageReference imageReference, string toolTip, string accessKey, params string[] tags) : base(imageMonikerService.ToImageMoniker(imageReference), toolTip, accessKey, automationText: null, initialIsChecked: false, initialIsEnabled: true) { if (tags == null) throw new ArgumentNullException(nameof(tags)); if (tags.Length == 0) throw new ArgumentOutOfRangeException(nameof(tags)); Tags = tags; }
public CompletionVM(Completion completion, IImageMonikerService imageMonikerService) { if (completion == null) throw new ArgumentNullException(nameof(completion)); if (imageMonikerService == null) throw new ArgumentNullException(nameof(imageMonikerService)); Completion = completion; Completion.Properties.AddProperty(typeof(CompletionVM), this); ImageUIObject = CreateImageUIObject(completion, imageMonikerService); this.imageMonikerService = imageMonikerService; }
public CompletionCollectionVM(IList<Completion> completionList, IImageMonikerService imageMonikerService) { if (completionList == null) throw new ArgumentNullException(nameof(completionList)); if (imageMonikerService == null) throw new ArgumentNullException(nameof(imageMonikerService)); this.completionList = completionList; this.imageMonikerService = imageMonikerService; completionListNotifyCollectionChanged = completionList as INotifyCollectionChanged; if (completionListNotifyCollectionChanged != null) completionListNotifyCollectionChanged.CollectionChanged += CompletionList_CollectionChanged; list = new List<CompletionVM>(completionList.Count); ReinitializeList(); }
public static RoslynIntellisenseFilter[] CreateFilters(IImageMonikerService imageMonikerService) => new RoslynIntellisenseFilter[] { new RoslynIntellisenseFilter(imageMonikerService, DsImages.LocalVariable, dnSpy_Roslyn_Shared_Resources.LocalsAndParametersToolTip, "L", CompletionTags.Local, CompletionTags.Parameter), new RoslynIntellisenseFilter(imageMonikerService, DsImages.ConstantPublic, dnSpy_Roslyn_Shared_Resources.ConstantsToolTip, "O", CompletionTags.Constant), new RoslynIntellisenseFilter(imageMonikerService, DsImages.Property, dnSpy_Roslyn_Shared_Resources.PropertiesToolTip, "P", CompletionTags.Property), new RoslynIntellisenseFilter(imageMonikerService, DsImages.EventPublic, dnSpy_Roslyn_Shared_Resources.EventsToolTip, "V", CompletionTags.Event), new RoslynIntellisenseFilter(imageMonikerService, DsImages.FieldPublic, dnSpy_Roslyn_Shared_Resources.FieldsToolTip, "F", CompletionTags.Field), new RoslynIntellisenseFilter(imageMonikerService, DsImages.MethodPublic, dnSpy_Roslyn_Shared_Resources.MethodsToolTip, "M", CompletionTags.Method), new RoslynIntellisenseFilter(imageMonikerService, DsImages.ExtensionMethod, dnSpy_Roslyn_Shared_Resources.ExtensionMethodsToolTip, "X", CompletionTags.ExtensionMethod), new RoslynIntellisenseFilter(imageMonikerService, DsImages.InterfacePublic, dnSpy_Roslyn_Shared_Resources.InterfacesToolTip, "I", CompletionTags.Interface), new RoslynIntellisenseFilter(imageMonikerService, DsImages.ClassPublic, dnSpy_Roslyn_Shared_Resources.ClassesToolTip, "C", CompletionTags.Class), new RoslynIntellisenseFilter(imageMonikerService, DsImages.ModulePublic, dnSpy_Roslyn_Shared_Resources.ModulesToolTip, "U", CompletionTags.Module), new RoslynIntellisenseFilter(imageMonikerService, DsImages.StructurePublic, dnSpy_Roslyn_Shared_Resources.StructuresToolTip, "S", CompletionTags.Structure), new RoslynIntellisenseFilter(imageMonikerService, DsImages.EnumerationPublic, dnSpy_Roslyn_Shared_Resources.EnumsToolTip, "E", CompletionTags.Enum), new RoslynIntellisenseFilter(imageMonikerService, DsImages.DelegatePublic, dnSpy_Roslyn_Shared_Resources.DelegatesToolTip, "D", CompletionTags.Delegate), new RoslynIntellisenseFilter(imageMonikerService, DsImages.Namespace, dnSpy_Roslyn_Shared_Resources.NamespacesToolTip, "N", CompletionTags.Namespace), };
static object CreateImageUIObject(Completion completion, IImageMonikerService imageMonikerService) { var c3 = completion as Completion3; if (c3 == null) { var iconSource = completion.IconSource; if (iconSource == null) return null; return new Image { Width = 16, Height = 16, Source = iconSource, }; } var imageReference = imageMonikerService.ToImageReference(c3.IconMoniker); if (imageReference.IsDefault) return null; return new DsImage { ImageReference = imageReference }; }
public static RoslynCompletionSet Create(IImageMonikerService imageMonikerService, IMruCompletionService mruCompletionService, CompletionList completionList, CompletionService completionService, ITextView textView, string moniker, string displayName, ITrackingSpan applicableTo) { if (imageMonikerService == null) throw new ArgumentNullException(nameof(imageMonikerService)); if (mruCompletionService == null) throw new ArgumentNullException(nameof(mruCompletionService)); if (completionList == null) throw new ArgumentNullException(nameof(completionList)); if (completionService == null) throw new ArgumentNullException(nameof(completionService)); if (textView == null) throw new ArgumentNullException(nameof(textView)); if (moniker == null) throw new ArgumentNullException(nameof(moniker)); if (displayName == null) throw new ArgumentNullException(nameof(displayName)); if (applicableTo == null) throw new ArgumentNullException(nameof(applicableTo)); var completions = new List<Completion>(completionList.Items.Length); var remainingFilters = new List<KeyValuePair<RoslynIntellisenseFilter, int>>(RoslynIntellisenseFilters.CreateFilters(imageMonikerService).Select((a, index) => new KeyValuePair<RoslynIntellisenseFilter, int>(a, index))); var filters = new List<KeyValuePair<RoslynIntellisenseFilter, int>>(remainingFilters.Count); foreach (var item in completionList.Items) { if (string.IsNullOrEmpty(item.DisplayText)) continue; for (int i = remainingFilters.Count - 1; i >= 0; i--) { var kv = remainingFilters[i]; foreach (var tag in kv.Key.Tags) { if (item.Tags.Contains(tag)) { remainingFilters.RemoveAt(i); filters.Add(kv); break; } } } completions.Add(new RoslynCompletion(imageMonikerService, item)); } filters.Sort((a, b) => a.Value - b.Value); var completionBuilders = new List<Completion>(); return new RoslynCompletionSet(mruCompletionService, completionService, textView, moniker, displayName, applicableTo, completions, completionBuilders, filters.Select(a => a.Key).ToArray()); }
static object CreateImageUIObject(CompletionIcon icon, IImageMonikerService imageMonikerService) { var icon2 = icon as CompletionIcon2; if (icon2 == null) { var iconSource = icon.IconSource; if (iconSource == null) return null; return new Image { Width = 16, Height = 16, Source = iconSource, }; } var imageReference = imageMonikerService.ToImageReference(icon2.IconMoniker); if (imageReference.IsDefault) return null; var image = new DsImage { ImageReference = imageReference }; if (!((icon as IDsCompletionIcon)?.ThemeImage ?? false)) { DsImage.SetBackgroundColor(image, null); DsImage.SetBackgroundBrush(image, null); } return image; }
CompletionPresenterProvider(IImageMonikerService imageMonikerService, Lazy<ICompletionTextElementProviderService> completionTextElementProviderService, [ImportMany] IEnumerable<Lazy<IUIElementProvider<Completion, ICompletionSession>, IOrderableContentTypeMetadata>> completionUIElementProviders) { this.imageMonikerService = imageMonikerService; this.completionTextElementProviderService = completionTextElementProviderService; this.completionUIElementProviders = Orderer.Order(completionUIElementProviders).ToArray(); }
public CompletionPresenter(IImageMonikerService imageMonikerService, ICompletionSession session, ICompletionTextElementProvider completionTextElementProvider, Lazy<IUIElementProvider<Completion, ICompletionSession>, IOrderableContentTypeMetadata>[] completionUIElementProviders) { if (imageMonikerService == null) throw new ArgumentNullException(nameof(imageMonikerService)); if (session == null) throw new ArgumentNullException(nameof(session)); if (completionTextElementProvider == null) throw new ArgumentNullException(nameof(completionTextElementProvider)); if (completionUIElementProviders == null) throw new ArgumentNullException(nameof(completionUIElementProviders)); this.imageMonikerService = imageMonikerService; this.session = session; this.completionTextElementProvider = completionTextElementProvider; this.completionUIElementProviders = completionUIElementProviders; control = new CompletionPresenterControl { DataContext = this }; filters = new List<FilterVM>(); control.MinWidth = defaultMinWidth; control.completionsListBox.MaxHeight = defaultMaxHeight; session.SelectedCompletionSetChanged += CompletionSession_SelectedCompletionSetChanged; session.Dismissed += CompletionSession_Dismissed; session.TextView.LostAggregateFocus += TextView_LostAggregateFocus; session.TextView.TextBuffer.ChangedLowPriority += TextBuffer_ChangedLowPriority; wpfTextView = session.TextView as IWpfTextView; Debug.Assert(wpfTextView != null); if (wpfTextView != null) wpfTextView.VisualElement.PreviewKeyDown += VisualElement_PreviewKeyDown; session.TextView.LayoutChanged += TextView_LayoutChanged; control.completionsListBox.SelectionChanged += CompletionsListBox_SelectionChanged; control.completionsListBox.Loaded += CompletionsListBox_Loaded; control.completionsListBox.PreviewMouseDown += CompletionsListBox_PreviewMouseDown; control.completionsListBox.PreviewMouseUp += CompletionsListBox_PreviewMouseUp; control.completionsListBox.MouseLeave += CompletionsListBox_MouseLeave; control.completionsListBox.MouseDoubleClick += CompletionsListBox_MouseDoubleClick; control.SizeChanged += Control_SizeChanged; control.AddHandler(UIElement.GotKeyboardFocusEvent, new KeyboardFocusChangedEventHandler(Control_GotKeyboardFocus), true); toolTipTimer = new DispatcherTimer(DispatcherPriority.Background, control.Dispatcher); toolTipTimer.Tick += ToolTipTimer_Tick; toolTipTimer.Interval = TimeSpan.FromMilliseconds(toolTipDelayMilliSeconds); UpdateSelectedCompletion(); UpdateFilterCollection(); }
CompletionSourceProvider(IImageMonikerService imageMonikerService, IMruCompletionService mruCompletionService) { this.imageMonikerService = imageMonikerService; this.mruCompletionService = mruCompletionService; }
public RoslynCompletion(IImageMonikerService imageMonikerService, CompletionItem completionItem) : base(completionItem.DisplayText, completionItem.FilterText) { this.imageMonikerService = imageMonikerService; CompletionItem = completionItem; }