File: QuickInfo\IContentControlService.cs
Web Access
Project: src\src\EditorFeatures\Core\Microsoft.CodeAnalysis.EditorFeatures_3hxu4syd_wpftmp.csproj (Microsoft.CodeAnalysis.EditorFeatures)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
 
#nullable disable
 
using System;
using System.Windows;
using Microsoft.CodeAnalysis.Editor.Shared.Utilities;
using Microsoft.CodeAnalysis.Host;
using Microsoft.VisualStudio.Text;
 
namespace Microsoft.CodeAnalysis.Editor.QuickInfo;
 
internal interface IContentControlService : IWorkspaceService
{
    /// <summary>
    /// return <see cref="ViewHostingControl"/> from the given <paramref name="textBuffer"/>'s <paramref name="contentSpan"/>
    /// </summary>
    ViewHostingControl CreateViewHostingControl(ITextBuffer textBuffer, Span contentSpan);
 
    /// <summary>
    /// get <see cref="DisposableToolTip"/> /> from the given <paramref name="textBuffer"/>'s <paramref name="contentSpan"/>
    /// based on given <paramref name="baseDocument"/>
    /// 
    /// tooltip will show embedded textview which shows code from the content span of the text buffer with the context of the
    /// base document
    /// </summary>
    /// <param name="baseDocument">document to be used as a context for the code</param>
    /// <param name="textBuffer">buffer to show in the tooltip text view</param>
    /// <param name="contentSpan">actual span to show in the tooptip</param>
    /// <param name="backgroundResourceKey">background of the tooltip control</param>
    /// <returns>ToolTip control with dispose method</returns>
    DisposableToolTip CreateDisposableToolTip(Document baseDocument, ITextBuffer textBuffer, Span contentSpan, object backgroundResourceKey);
 
    /// <summary>
    /// get <see cref="DisposableToolTip"/> /> from the given <paramref name="textBuffer"/>
    /// 
    /// tooltip will show embedded textview with whole content from the buffer. if the buffer has associated tags
    /// in its property bag, it will be picked up by taggers associated with the tooltip
    /// </summary>
    DisposableToolTip CreateDisposableToolTip(ITextBuffer textBuffer, object backgroundResourceKey);
 
    /// <summary>
    /// attach <see cref="DisposableToolTip"/> to the given <paramref name="element"/>
    /// 
    /// this will lazily create the tooltip and dispose it properly when it goes away
    /// </summary>
    void AttachToolTipToControl(FrameworkElement element, Func<DisposableToolTip> createToolTip);
}