提交 b14d08ca 编写于 作者: B Balaji Krishnan

Merge pull request #10332 from balajikris/CodeStyleUI-updates

Code style options page UI updates
......@@ -20,8 +20,6 @@ namespace Microsoft.VisualStudio.LanguageServices.CSharp.Options.Formatting
/// </remarks>
internal class StyleViewModel : AbstractOptionPreviewViewModel
{
public ObservableCollection<AbstractCodeStyleOptionViewModel> CodeStyleItems { get; set; }
internal override bool ShouldPersistOption(OptionKey key)
{
return key.Option.Feature == CSharpCodeStyleOptions.FeatureName || key.Option.Feature == SimplificationOptions.PerLanguageFeatureName;
......@@ -29,24 +27,92 @@ internal override bool ShouldPersistOption(OptionKey key)
#region "Preview Text"
private static readonly string s_declarationPreviewTrue = @"
private static readonly string s_fieldDeclarationPreviewTrue = @"
class C{
int capacity;
void Method()
{
//[
this.capacity = 0;
//]
}
}";
private static readonly string s_fieldDeclarationPreviewFalse = @"
class C{
int capacity;
void Method()
{
//[
capacity = 0;
//]
}
}";
private static readonly string s_propertyDeclarationPreviewTrue = @"
class C{
public int Id { get; set; }
void Method()
{
//[
this.Id = 0;
//]
}
}";
private static readonly string s_propertyDeclarationPreviewFalse = @"
class C{
public int Id { get; set; }
void Method()
{
//[
Id = 0;
//]
}
}";
private static readonly string s_eventDeclarationPreviewTrue = @"
using System;
class C{
event EventHandler Elapsed;
void Handler(object sender, EventArgs args)
{
//[
this.Elapsed += Handler;
//]
}
}";
private static readonly string s_eventDeclarationPreviewFalse = @"
using System;
class C{
event EventHandler Elapsed;
void Handler(object sender, EventArgs args)
{
//[
Elapsed += Handler;
//]
}
}";
private static readonly string s_methodDeclarationPreviewTrue = @"
using System;
class C{
int x;
void foo()
void Display()
{
//[
this.x = 0;
this.Display();
//]
}
}";
private static readonly string s_declarationPreviewFalse = @"
private static readonly string s_methodDeclarationPreviewFalse = @"
using System;
class C{
int x;
void foo()
void Display()
{
//[
x = 0;
Display();
//]
}
}";
......@@ -102,10 +168,10 @@ static void M()
private static readonly string s_varForIntrinsicsPreviewFalse = @"
using System;
class C{
void foo()
void Method()
{
//[
int x = 5; // intrinsic types
int x = 5; // built-in types
//]
}
}";
......@@ -113,10 +179,10 @@ void foo()
private static readonly string s_varForIntrinsicsPreviewTrue = @"
using System;
class C{
void foo()
void Method()
{
//[
var x = 5; // intrinsic types
var x = 5; // built-in types
//]
}
}";
......@@ -124,10 +190,10 @@ void foo()
private static readonly string s_varWhereApparentPreviewFalse = @"
using System;
class C{
void foo()
void Method()
{
//[
C cobj = new C(); // typing is apparent from assignment expression
C cobj = new C(); // type is apparent from assignment expression
//]
}
}";
......@@ -135,10 +201,10 @@ void foo()
private static readonly string s_varWhereApparentPreviewTrue = @"
using System;
class C{
void foo()
void Method()
{
//[
var cobj = new C(); // typing is apparent from assignment expression
var cobj = new C(); // type is apparent from assignment expression
//]
}
}";
......@@ -146,10 +212,10 @@ void foo()
private static readonly string s_varWherePossiblePreviewFalse = @"
using System;
class C{
void foo()
void Init()
{
//[
Action f = this.foo(); // everywhere else.
Action f = this.Init(); // everywhere else.
//]
}
}";
......@@ -157,10 +223,10 @@ void foo()
private static readonly string s_varWherePossiblePreviewTrue = @"
using System;
class C{
void foo()
void Init()
{
//[
var f = this.foo(); // everywhere else.
var f = this.Init(); // everywhere else.
//]
}
}";
......@@ -168,8 +234,6 @@ void foo()
internal StyleViewModel(OptionSet optionSet, IServiceProvider serviceProvider) : base(optionSet, serviceProvider, LanguageNames.CSharp)
{
CodeStyleItems = new ObservableCollection<AbstractCodeStyleOptionViewModel>();
var collectionView = (ListCollectionView)CollectionViewSource.GetDefaultView(CodeStyleItems);
collectionView.GroupDescriptions.Add(new PropertyGroupDescription(nameof(AbstractCodeStyleOptionViewModel.GroupName)));
......@@ -195,10 +259,10 @@ internal StyleViewModel(OptionSet optionSet, IServiceProvider serviceProvider) :
new CodeStylePreference(CSharpVSResources.PreferExplicitType, isChecked: false),
};
CodeStyleItems.Add(new BooleanCodeStyleOptionViewModel(SimplificationOptions.QualifyFieldAccess, CSharpVSResources.QualifyFieldAccessWithThis, s_declarationPreviewTrue, s_declarationPreviewFalse, this, optionSet, qualifyGroupTitle, qualifyMemberAccessPreferences));
CodeStyleItems.Add(new BooleanCodeStyleOptionViewModel(SimplificationOptions.QualifyPropertyAccess, CSharpVSResources.QualifyPropertyAccessWithThis, s_declarationPreviewTrue, s_declarationPreviewFalse, this, optionSet, qualifyGroupTitle, qualifyMemberAccessPreferences));
CodeStyleItems.Add(new BooleanCodeStyleOptionViewModel(SimplificationOptions.QualifyMethodAccess, CSharpVSResources.QualifyMethodAccessWithThis, s_declarationPreviewTrue, s_declarationPreviewFalse, this, optionSet, qualifyGroupTitle, qualifyMemberAccessPreferences));
CodeStyleItems.Add(new BooleanCodeStyleOptionViewModel(SimplificationOptions.QualifyEventAccess, CSharpVSResources.QualifyEventAccessWithThis, s_declarationPreviewTrue, s_declarationPreviewFalse, this, optionSet, qualifyGroupTitle, qualifyMemberAccessPreferences));
CodeStyleItems.Add(new BooleanCodeStyleOptionViewModel(SimplificationOptions.QualifyFieldAccess, CSharpVSResources.QualifyFieldAccessWithThis, s_fieldDeclarationPreviewTrue, s_fieldDeclarationPreviewFalse, this, optionSet, qualifyGroupTitle, qualifyMemberAccessPreferences));
CodeStyleItems.Add(new BooleanCodeStyleOptionViewModel(SimplificationOptions.QualifyPropertyAccess, CSharpVSResources.QualifyPropertyAccessWithThis, s_propertyDeclarationPreviewTrue, s_propertyDeclarationPreviewFalse, this, optionSet, qualifyGroupTitle, qualifyMemberAccessPreferences));
CodeStyleItems.Add(new BooleanCodeStyleOptionViewModel(SimplificationOptions.QualifyMethodAccess, CSharpVSResources.QualifyMethodAccessWithThis, s_methodDeclarationPreviewTrue, s_methodDeclarationPreviewFalse, this, optionSet, qualifyGroupTitle, qualifyMemberAccessPreferences));
CodeStyleItems.Add(new BooleanCodeStyleOptionViewModel(SimplificationOptions.QualifyEventAccess, CSharpVSResources.QualifyEventAccessWithThis, s_eventDeclarationPreviewTrue, s_eventDeclarationPreviewFalse, this, optionSet, qualifyGroupTitle, qualifyMemberAccessPreferences));
CodeStyleItems.Add(new BooleanCodeStyleOptionViewModel(SimplificationOptions.PreferIntrinsicPredefinedTypeKeywordInDeclaration, CSharpVSResources.PreferIntrinsicPredefinedTypeKeywordInDeclaration, s_intrinsicPreviewDeclarationTrue, s_intrinsicPreviewDeclarationFalse, this, optionSet, predefinedTypesGroupTitle, predefinedTypesPreferences));
CodeStyleItems.Add(new BooleanCodeStyleOptionViewModel(SimplificationOptions.PreferIntrinsicPredefinedTypeKeywordInMemberAccess, CSharpVSResources.PreferIntrinsicPredefinedTypeKeywordInMemberAccess, s_intrinsicPreviewMemberAccessTrue, s_intrinsicPreviewMemberAccessFalse, this, optionSet, predefinedTypesGroupTitle, predefinedTypesPreferences));
......
......@@ -2,6 +2,7 @@
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading;
......@@ -39,6 +40,7 @@ internal abstract class AbstractOptionPreviewViewModel : AbstractNotifyPropertyC
private IContentTypeRegistryService _contentTypeRegistryService;
public List<object> Items { get; set; }
public ObservableCollection<AbstractCodeStyleOptionViewModel> CodeStyleItems { get; set; }
public OptionSet Options { get; set; }
......@@ -46,6 +48,7 @@ protected AbstractOptionPreviewViewModel(OptionSet options, IServiceProvider ser
{
this.Options = options;
this.Items = new List<object>();
this.CodeStyleItems = new ObservableCollection<AbstractCodeStyleOptionViewModel>();
_componentModel = (IComponentModel)serviceProvider.GetService(typeof(SComponentModel));
......
// 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.Linq;
using System.Windows.Controls;
using System.Windows.Input;
using Microsoft.CodeAnalysis.Options;
......@@ -29,7 +30,7 @@ private void Options_SelectionChanged(object sender, SelectionChangedEventArgs e
var dataGrid = (DataGrid)sender;
var codeStyleItem = (AbstractCodeStyleOptionViewModel)dataGrid.SelectedItem;
if (codeStyleItem != null && codeStyleItem.NotificationsAvailable)
if (codeStyleItem != null)
{
ViewModel.UpdatePreview(codeStyleItem.GetPreview());
}
......@@ -56,9 +57,8 @@ internal override void LoadSettings()
{
this.ViewModel = _createViewModel(this.OptionService.GetOptions(), _serviceProvider);
// TODO: Use the first item's preview. This doesn't work yet.
// var firstItem = this.ViewModel.Items.OfType<AbstractCodeStyleOptionViewModel>().First();
// this.ViewModel.SetOptionAndUpdatePreview(firstItem.SelectedPreference.IsChecked, firstItem.Option, firstItem.GetPreview());
var firstItem = this.ViewModel.CodeStyleItems.OfType<AbstractCodeStyleOptionViewModel>().First();
this.ViewModel.SetOptionAndUpdatePreview(firstItem.SelectedPreference.IsChecked, firstItem.Option, firstItem.GetPreview());
DataContext = ViewModel;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册