File: ChangeSignature\AddParameterDialog.xaml.cs
Web Access
Project: src\src\VisualStudio\Core\Def\Microsoft.VisualStudio.LanguageServices_pxr0p0dn_wpftmp.csproj (Microsoft.VisualStudio.LanguageServices)
// 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.
 
using System;
using System.Windows;
using Microsoft.CodeAnalysis;
using Microsoft.VisualStudio.PlatformUI;
 
namespace Microsoft.VisualStudio.LanguageServices.Implementation.ChangeSignature;
 
/// <summary>
/// Interaction logic for AddParameterDialog.xaml
/// </summary>
internal partial class AddParameterDialog : DialogWindow
{
    private readonly AddParameterDialogViewModel _viewModel;
 
    public string OK { get { return ServicesVSResources.OK; } }
    public string Cancel { get { return EditorFeaturesResources.Cancel; } }
    public string ParameterInformation { get { return ServicesVSResources.Parameter_information; } }
    public string TypeNameLabel { get { return ServicesVSResources.Type_Name; } }
    public string ParameterNameLabel { get { return ServicesVSResources.Parameter_Name; } }
    public string CallSiteValueLabel { get { return ServicesVSResources.Call_site_value; } }
    public string AddParameterDialogTitle { get { return ServicesVSResources.Add_Parameter; } }
    public string ParameterKind { get { return ServicesVSResources.Parameter_kind; } }
    public string Required { get { return ServicesVSResources.Required; } }
    public string OptionalWithDefaultValue { get { return ServicesVSResources.Optional_with_default_value_colon; } }
    public string ValueToInjectAtCallsites { get { return ServicesVSResources.Value_to_inject_at_call_sites; } }
    public string Value { get { return FeaturesResources.Value_colon; } }
    public string UseNamedArgument { get { return ServicesVSResources.Use_named_argument; } }
    public string IntroduceUndefinedTodoVariables { get { return ServicesVSResources.IntroduceUndefinedTodoVariables; } }
    public string OmitOnlyForOptionalParameters { get { return ServicesVSResources.Omit_only_for_optional_parameters; } }
    public string InferFromContext { get { return ServicesVSResources.Infer_from_context; } }
 
    public AddParameterDialog(AddParameterDialogViewModel viewModel)
    {
        _viewModel = viewModel;
        this.Loaded += AddParameterDialog_Loaded;
        DataContext = _viewModel;
 
        InitializeComponent();
    }
 
    private void AddParameterDialog_Loaded(object sender, RoutedEventArgs e)
    {
        MinHeight = Height;
        TypeContentControl.Focus();
    }
 
    protected override void OnClosed(EventArgs e)
    {
        base.OnClosed(e);
 
        // Workaround WPF bug: https://dev.azure.com/devdiv/DevDiv/_workitems/edit/1101094
        DataContext = null;
    }
 
    private void OK_Click(object sender, RoutedEventArgs e)
    {
        if (_viewModel.TrySubmit())
        {
            DialogResult = true;
        }
    }
 
    private void Cancel_Click(object sender, RoutedEventArgs e)
    {
        DialogResult = false;
    }
 
    internal TestAccessor GetTestAccessor()
        => new(this);
 
    internal readonly struct TestAccessor
    {
        private readonly AddParameterDialog _dialog;
 
        public TestAccessor(AddParameterDialog dialog)
        {
            _dialog = dialog;
        }
 
        public DialogButton OKButton => _dialog.OKButton;
 
        public DialogButton CancelButton => _dialog.CancelButton;
    }
}