// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.Editor.Host;
using Microsoft.CodeAnalysis.Shared.TestHooks;
using Microsoft.VisualStudio.Text;
using Roslyn.Utilities;
namespace Microsoft.CodeAnalysis.Editor.Implementation.Suggestions
{
internal partial class SuggestedActionWithNestedFlavors
{
///
/// Suggested action for showing the preview-changes dialog. Note: this is only used
/// as a 'flavor' inside CodeFixSuggestionAction and CodeRefactoringSuggestedAction.
///
private sealed partial class PreviewChangesSuggestedAction : SuggestedAction
{
private PreviewChangesSuggestedAction(
SuggestedActionsSourceProvider sourceProvider,
Workspace workspace,
ITextBuffer subjectBuffer,
object provider,
PreviewChangesCodeAction codeAction)
: base(sourceProvider, workspace, subjectBuffer, provider, codeAction)
{
}
public static async Task CreateAsync(
SuggestedActionWithNestedFlavors suggestedAction, CancellationToken cancellationToken)
{
var previewResult = await suggestedAction.GetPreviewResultAsync(cancellationToken).ConfigureAwait(true);
if (previewResult == null)
{
return null;
}
var changeSummary = previewResult.ChangeSummary;
if (changeSummary == null)
{
return null;
}
return new PreviewChangesSuggestedAction(
suggestedAction.SourceProvider, suggestedAction.Workspace,
suggestedAction.SubjectBuffer, suggestedAction.Provider,
new PreviewChangesCodeAction(
suggestedAction.Workspace, suggestedAction.CodeAction, changeSummary));
}
}
}
}