Наследование: IWpfTextViewMarginProvider
Пример #1
0
 /// <summary>
 /// Constructor for the OverviewChangeTrackingMargin.
 /// </summary>
 private OverviewMarkMargin(
     IWpfTextViewHost textViewHost,
     IVerticalScrollBar scrollBar,
     OverviewMarkMarginProvider provider)
 {
     _markMarginElement = new MarkMarginElement(textViewHost.TextView, scrollBar, provider);
 }
 /// <summary>
 /// Constructor for the OverviewChangeTrackingMargin.
 /// </summary>
 private OverviewMarkMargin(
     IWpfTextViewHost textViewHost,
     IVerticalScrollBar scrollBar,
     OverviewMarkMarginProvider provider)
 {
     _markMarginElement = new MarkMarginElement(textViewHost.TextView, scrollBar, provider);
 }
        /// <summary>
        /// Factory for the OverviewMarkMargin.
        /// </summary>
        public static OverviewMarkMargin Create(
            IWpfTextViewHost textViewHost,
            IVerticalScrollBar scrollBar,
            OverviewMarkMarginProvider provider)
        {
            // Validate
            if (textViewHost == null)
                throw new ArgumentNullException("textViewHost");

            return new OverviewMarkMargin(textViewHost, scrollBar, provider);
        }
Пример #4
0
        /// <summary>
        /// Factory for the OverviewMarkMargin.
        /// </summary>
        public static OverviewMarkMargin Create(
            IWpfTextViewHost textViewHost,
            IVerticalScrollBar scrollBar,
            OverviewMarkMarginProvider provider)
        {
            // Validate
            if (textViewHost == null)
            {
                throw new ArgumentNullException("textViewHost");
            }

            return(new OverviewMarkMargin(textViewHost, scrollBar, provider));
        }
Пример #5
0
        public MarkMarginElement(IWpfTextView textView, IVerticalScrollBar scrollbar, OverviewMarkMarginProvider provider)
        {
            provider.LoadOption(textView.Options, DefaultOverviewMarginOptions.MarkMarginId.Name);
            provider.LoadOption(textView.Options, MarkMarginWidthId.Name);

            _markPen = new Pen(Brushes.DimGray, 1.0);
            _markPen.Freeze();

            _textView        = textView;
            _scrollBar       = scrollbar;
            _editorFormatMap = provider.EditorFormatMapService.GetEditorFormatMap(_textView);

            _factories = new List <IOverviewMarkFactory>();
            foreach (var markProvider in provider.MarkProviders)
            {
                IEnumerable <string> providerRoles = markProvider.Metadata.TextViewRoles;
                if (_textView.Roles.ContainsAny(providerRoles))
                {
                    IOverviewMarkFactory factory = markProvider.Value.GetOverviewMarkFactory(textView);
                    if (factory != null)
                    {
                        _factories.Add(factory);
                        factory.MarksChanged += delegate
                        {
                            this.AsynchInvalidateVisual();
                        };
                    }
                }
            }

            //Make our width big enough to see, but not so big that it consumes a lot of
            //real-estate.
            this.Width = textView.Options.GetOptionValue(MarkMarginWidthId);

            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 caret margin current.
                    _scrollBar.TrackSpanChanged += OnTrackSpanChanged;

                    //Force the margin to be rerendered since things might have changed while the margin was hidden.
                    this.AsynchInvalidateVisual();
                }
                else
                {
                    _scrollBar.TrackSpanChanged -= OnTrackSpanChanged;
                }
            };
        }