File: Options\AbstractRadioButtonViewModel.cs
Web Access
Project: ..\..\..\src\VisualStudio\Core\Impl\Microsoft.VisualStudio.LanguageServices.Implementation_zmmkbl53_wpftmp.csproj (Microsoft.VisualStudio.LanguageServices.Implementation)
// 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.Collections.Generic;
using System.ComponentModel;
using System.Runtime.CompilerServices;
using Microsoft.CodeAnalysis.Options;
using Microsoft.VisualStudio.LanguageServices.Implementation.Utilities;
 
namespace Microsoft.VisualStudio.LanguageServices.Implementation.Options
{
    internal abstract class AbstractRadioButtonViewModel : AbstractNotifyPropertyChanged
    {
        private readonly AbstractOptionPreviewViewModel _info;
        internal readonly string Preview;
        private bool _isChecked;
 
        public string Description { get; }
        public string GroupName { get; }
 
        public bool IsChecked
        {
            get
            {
                return _isChecked;
            }
 
            set
            {
                SetProperty(ref _isChecked, value);
 
                if (_isChecked)
                {
                    SetOptionAndUpdatePreview(_info, Preview);
                }
            }
        }
 
        public AbstractRadioButtonViewModel(string description, string preview, AbstractOptionPreviewViewModel info, bool isChecked, string group)
        {
            Description = description;
            this.Preview = preview;
            _info = info;
            this.GroupName = group;
 
            SetProperty(ref _isChecked, isChecked);
        }
 
        internal abstract void SetOptionAndUpdatePreview(AbstractOptionPreviewViewModel info, string preview);
    }
}