Esempio n. 1
0
        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);
                }
            }
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
            }
        }
Esempio n. 6
0
        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;
        }
Esempio n. 8
0
        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);
        }
Esempio n. 9
0
        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);
 }
Esempio n. 11
0
        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);
            }
        }