private void SourceCollection_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e) { switch (e.Action) { case NotifyCollectionChangedAction.Add: AddItems(e.NewItems?.Cast <T>()); break; case NotifyCollectionChangedAction.Remove: RemoveItems(e.OldItems?.Cast <T>()); break; case NotifyCollectionChangedAction.Reset: WeakEvents.Unsubscribe(this); Items.Clear(); AttachCollectionEvents((INotifyCollectionChanged)sender); break; case NotifyCollectionChangedAction.Replace: RemoveItems(e.OldItems?.Cast <T>()); AddItems(e.NewItems?.Cast <T>()); break; case NotifyCollectionChangedAction.Move: break; default: throw new NotImplementedException("Source action not supported"); } }
private void HandleViewChanged(object sender, ViewChangedEventArgs e) { BackgroundParser = null; Tagger = null; Tokens3 = null; Tokens4 = null; Snapshot = null; Tree.Dispatcher.Invoke( (Action)(() => { try { Tree.Items.Clear(); } catch (Exception ex) { if (ErrorHandler.IsCriticalException(ex)) { throw; } } })); if (e.NewView != null) { var backgroundParser = BackgroundParserFactoryService.GetBackgroundParser(e.NewView.TextBuffer); BackgroundParser = backgroundParser; if (backgroundParser != null) { Tagger = AstReferenceTaggerProvider.GetAstReferenceTagger(e.NewView.TextBuffer); backgroundParser.ParseComplete += WeakEvents.AsWeak <ParseResultEventArgs>(HandleParseComplete, eh => backgroundParser.ParseComplete -= eh); backgroundParser.RequestParse(false); } } }
public CodeWindowManager(IVsCodeWindow codeWindow, SVsServiceProvider serviceProvider, LanguagePreferences languagePreferences) { Contract.Requires <ArgumentNullException>(codeWindow != null, "codeWindow"); Contract.Requires <ArgumentNullException>(serviceProvider != null, "serviceProvider"); Contract.Requires <ArgumentNullException>(languagePreferences != null, "languagePreferences"); _codeWindow = codeWindow; _serviceProvider = serviceProvider; _languagePreferences = languagePreferences; _languagePreferences.PreferencesChanged += WeakEvents.AsWeak(HandleLanguagePreferencesChanged, handler => _languagePreferences.PreferencesChanged -= handler); }
public CodeWindowManager([NotNull] IVsCodeWindow codeWindow, [NotNull] SVsServiceProvider serviceProvider, [NotNull] LanguagePreferences languagePreferences) { Requires.NotNull(codeWindow, nameof(codeWindow)); Requires.NotNull(serviceProvider, nameof(serviceProvider)); Requires.NotNull(languagePreferences, nameof(languagePreferences)); _codeWindow = codeWindow; _serviceProvider = serviceProvider; _languagePreferences = languagePreferences; _languagePreferences.PreferencesChanged += WeakEvents.AsWeak(HandleLanguagePreferencesChanged, handler => _languagePreferences.PreferencesChanged -= handler); }
public EditorNavigationSourceAggregator(IEnumerable <IEditorNavigationSource> sources) { Contract.Requires <ArgumentNullException>(sources != null, "sources"); this._sources = sources.ToArray(); foreach (var source in this._sources) { source.NavigationTargetsChanged += WeakEvents.AsWeak(OnSourceNavigationTargetsChanged, eh => source.NavigationTargetsChanged -= eh); } }
public EditorNavigationSourceAggregator([NotNull] IEnumerable <IEditorNavigationSource> sources) { Requires.NotNull(sources, nameof(sources)); this._sources = sources.ToArray(); foreach (var source in this._sources) { source.NavigationTargetsChanged += WeakEvents.AsWeak(OnSourceNavigationTargetsChanged, eh => source.NavigationTargetsChanged -= eh); } }
public AstExplorerControl(IServiceProvider serviceProvider) { IComponentModel componentModel = (IComponentModel)serviceProvider.GetService <SComponentModel>(); this.ActiveViewTrackerService = componentModel.GetService <IActiveViewTrackerService>(); this.BackgroundParserFactoryService = componentModel.GetService <IBackgroundParserFactoryService>(); this.AstReferenceTaggerProvider = componentModel.GetService <IAstReferenceTaggerProvider>(); this.Tree = new AstExplorerTreeControl(); this.Content = this.Tree; this.ActiveViewTrackerService.ViewChanged += WeakEvents.AsWeak <ViewChangedEventArgs>(HandleViewChanged, eh => this.ActiveViewTrackerService.ViewChanged -= eh); this.Tree.SelectedItemChanged += HandleTreeViewSelectedItemChanged; }
public MarkdownPreviewControl(MarkdownPreviewToolWindowPane toolWindowPane, IServiceProvider serviceProvider) { this.ToolWindowPane = toolWindowPane; IComponentModel componentModel = (IComponentModel)serviceProvider.GetService <SComponentModel>(); this.ActiveViewTrackerService = componentModel.GetService <IActiveViewTrackerService>(); this.BackgroundParserFactoryService = componentModel.GetService <IBackgroundParserFactoryService>(); this.Browser = new WebBrowser(); this.Browser.NavigateToString(EmptyWindowHtml); this.Browser.LoadCompleted += OnBrowserLoadCompleted; this.Content = this.Browser; this.ActiveViewTrackerService.ViewChanged += WeakEvents.AsWeak <ViewChangedEventArgs>(OnViewChanged, eh => this.ActiveViewTrackerService.ViewChanged -= eh); }
private void OnViewChanged(object sender, ViewChangedEventArgs e) { BackgroundParser = null; if (e.NewView != null) { var backgroundParser = BackgroundParserFactoryService.GetBackgroundParser(e.NewView.TextBuffer); BackgroundParser = backgroundParser; if (backgroundParser != null) { ToolWindowPane.Caption = "Markdown Preview - "; backgroundParser.ParseComplete += WeakEvents.AsWeak <ParseResultEventArgs>(HandleBackgroundParseComplete, eh => backgroundParser.ParseComplete -= eh); backgroundParser.RequestParse(false); } } CurrentView = e.NewView; if (BackgroundParser == null) { ToolWindowPane.Caption = "Markdown Preview"; Browser.NavigateToString(EmptyWindowHtml); } }
public void UnsubscribeAll() { WeakEvents.Unsubscribe(this); }
public EditorNavigationMargin([NotNull] IWpfTextView wpfTextView, [NotNull] IEnumerable <IEditorNavigationSource> sources, [NotNull] IEditorNavigationTypeRegistryService editorNavigationTypeRegistryService) { Requires.NotNull(wpfTextView, nameof(wpfTextView)); Requires.NotNull(sources, nameof(sources)); Requires.NotNull(editorNavigationTypeRegistryService, nameof(editorNavigationTypeRegistryService)); this._wpfTextView = wpfTextView; this._sources = sources; this._editorNavigationTypeRegistryService = editorNavigationTypeRegistryService; _navigationControls = this._sources .SelectMany(source => source.GetNavigationTypes()) .Distinct() //.OrderBy(...) .Select(type => Tuple.Create(type, default(EditorNavigationComboBox))) .ToArray(); if (this._navigationControls.Length == 0) { this._container = new UniformGrid() { Visibility = Visibility.Collapsed }; return; } this._container = new UniformGrid() { Columns = _navigationControls.Length, Rows = 1 }; _navigationControls = Array.ConvertAll(_navigationControls, pair => { EditorNavigationComboBox comboBox = new EditorNavigationComboBox() { Cursor = Cursors.Arrow, ToolTip = new ToolTip() { Content = pair.Item1.Definition.DisplayName } }; comboBox.DropDownOpened += OnDropDownOpened; comboBox.SelectionChanged += OnSelectionChanged; return(Tuple.Create(pair.Item1, comboBox)); }); foreach (var controlPair in _navigationControls) { this._container.Children.Add(controlPair.Item2); } this._wpfTextView.Caret.PositionChanged += OnCaretPositionChanged; foreach (var source in this._sources) { source.NavigationTargetsChanged += WeakEvents.AsWeak(OnNavigationTargetsChanged, eh => source.NavigationTargetsChanged -= eh); UpdateNavigationTargets(source); } }