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;
		}
Exemple #3
0
		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),
		};
Exemple #6
0
		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());
		}
Exemple #8
0
		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();
		}
Exemple #11
0
		CompletionSourceProvider(IImageMonikerService imageMonikerService, IMruCompletionService mruCompletionService) {
			this.imageMonikerService = imageMonikerService;
			this.mruCompletionService = mruCompletionService;
		}
Exemple #12
0
		public RoslynCompletion(IImageMonikerService imageMonikerService, CompletionItem completionItem)
			: base(completionItem.DisplayText, completionItem.FilterText) {
			this.imageMonikerService = imageMonikerService;
			CompletionItem = completionItem;
		}