/// <summary> /// Factory for the ChangeTrackingMargin. /// </summary> public static OverviewChangeTrackingMargin Create(IWpfTextViewHost textViewHost, IVerticalScrollBar scrollBar, OverviewChangeTrackingMarginProvider provider) { // Validate if (textViewHost == null) throw new ArgumentNullException("textViewHost"); return new OverviewChangeTrackingMargin(textViewHost, scrollBar, provider); }
/// <summary> /// Constructor for the ChangeTrackingMarginElement. /// </summary> /// <param name="textView">ITextView to which this ChangeTrackingMargenElement will be attached.</param> /// <param name="verticalScrollbar">Vertical scrollbar of the ITextViewHost that contains <paramref name="textView"/>.</param> public ChangeTrackingMarginElement(IWpfTextView textView, IVerticalScrollBar verticalScrollbar, OverviewChangeTrackingMarginProvider provider) { provider.LoadOption(textView.Options, DefaultOverviewMarginOptions.ChangeTrackingMarginId.Name); provider.LoadOption(textView.Options, ChangeTrackingMarginWidthId.Name); _textView = textView; _scrollBar = verticalScrollbar; _tagAggregatorFactoryService = provider.TagAggregatorFactoryService; _editorFormatMap = provider.EditorFormatMapService.GetEditorFormatMap(textView); _editorFormatMap.FormatMappingChanged += OnFormatMappingChanged; _textView.Closed += (sender, args) => _editorFormatMap.FormatMappingChanged -= OnFormatMappingChanged; UpdateBrushes(); //Make our width big enough to see, but not so big that it consumes a lot of //real-estate. this.Width = _textView.Options.GetOptionValue(ChangeTrackingMarginWidthId); this.OnOptionsChanged(null, null); textView.Options.OptionChanged += this.OnOptionsChanged; this.IsVisibleChanged += delegate(object sender, DependencyPropertyChangedEventArgs e) { if ((bool)e.NewValue) { //Hook up to the various events we need to keep the changeTracking margin current. _textView.LayoutChanged += OnLayoutChanged; _scrollBar.TrackSpanChanged += OnTrackSpanChanged; this.InvalidateVisual(); } else { _textView.LayoutChanged -= OnLayoutChanged; _scrollBar.TrackSpanChanged -= OnTrackSpanChanged; } }; }
/// <summary> /// Factory for the ChangeTrackingMargin. /// </summary> public static OverviewChangeTrackingMargin Create(IWpfTextViewHost textViewHost, IVerticalScrollBar scrollBar, OverviewChangeTrackingMarginProvider provider) { // Validate if (textViewHost == null) { throw new ArgumentNullException("textViewHost"); } return(new OverviewChangeTrackingMargin(textViewHost, scrollBar, provider)); }
/// <summary> /// Constructor for the OverviewChangeTrackingMargin. /// </summary> private OverviewChangeTrackingMargin(IWpfTextViewHost textViewHost, IVerticalScrollBar scrollBar, OverviewChangeTrackingMarginProvider provider) { _changeTrackingMarginElement = new ChangeTrackingMarginElement(textViewHost.TextView, scrollBar, provider); }