From 6e456b6060303f39a96391dff660b26d74f1b63d Mon Sep 17 00:00:00 2001 From: Heejae Chang Date: Fri, 16 Dec 2016 01:17:20 -0800 Subject: [PATCH] added navigate to, FAR OOP options to Roslyn Option page --- .../OptionPages/InternalFeaturesOnOffPage.cs | 31 ++++++++++--------- .../OptionPages/InternalOptionsControl.cs | 24 +++++++++----- 2 files changed, 34 insertions(+), 21 deletions(-) diff --git a/src/VisualStudio/VisualStudioDiagnosticsToolWindow/OptionPages/InternalFeaturesOnOffPage.cs b/src/VisualStudio/VisualStudioDiagnosticsToolWindow/OptionPages/InternalFeaturesOnOffPage.cs index e9aa536f198..630efcb0ee5 100644 --- a/src/VisualStudio/VisualStudioDiagnosticsToolWindow/OptionPages/InternalFeaturesOnOffPage.cs +++ b/src/VisualStudio/VisualStudioDiagnosticsToolWindow/OptionPages/InternalFeaturesOnOffPage.cs @@ -1,20 +1,14 @@ // 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.Collections.Generic; using System.Runtime.InteropServices; -using System.Linq; -using System.Threading; -using System.Threading.Tasks; -using System.Windows; using System.Windows.Controls; -using System.Windows.Data; -using Microsoft.CodeAnalysis; -using Microsoft.CodeAnalysis.Options; using Microsoft.CodeAnalysis.Editor.Shared.Options; +using Microsoft.CodeAnalysis.FindSymbols; +using Microsoft.CodeAnalysis.NavigateTo; +using Microsoft.CodeAnalysis.SymbolSearch; using Microsoft.VisualStudio.LanguageServices; using Microsoft.VisualStudio.LanguageServices.Implementation.Options; -using Roslyn.Utilities; namespace Roslyn.VisualStudio.DiagnosticsWindow.OptionsPages { @@ -36,19 +30,28 @@ public InternalFeaturesOptionsControl(string featureOptionName, IServiceProvider protected override void AddOptions(Panel panel) { // add force low memory mode option - var group = new WrapPanel(); + var lowMemoryGroup = new WrapPanel(); var cb = new CheckBox { Content = "Forced Low Memory Mode: allocate" }; BindToOption(cb, ForceLowMemoryMode.Enabled); - group.Children.Add(cb); + lowMemoryGroup.Children.Add(cb); var textBox = new TextBox { MinWidth = 60 }; BindToOption(textBox, ForceLowMemoryMode.SizeInMegabytes); - group.Children.Add(textBox); + lowMemoryGroup.Children.Add(textBox); - group.Children.Add(new TextBlock { Text = "megabytes of extra memory in devenv.exe" }); + lowMemoryGroup.Children.Add(new TextBlock { Text = "megabytes of extra memory in devenv.exe" }); - panel.Children.Add(group); + panel.Children.Add(lowMemoryGroup); + + // add OOP feature options + var oopFeatureGroup = new StackPanel(); + + AddOption(oopFeatureGroup, NavigateToOptions.OutOfProcessAllowed, nameof(NavigateToOptions)); + AddOption(oopFeatureGroup, SymbolFinderOptions.OutOfProcessAllowed, nameof(SymbolFinderOptions)); + AddOption(oopFeatureGroup, SymbolSearchOptions.OutOfProcessAllowed, nameof(SymbolSearchOptions)); + + panel.Children.Add(oopFeatureGroup); // and add the rest of the options base.AddOptions(panel); diff --git a/src/VisualStudio/VisualStudioDiagnosticsToolWindow/OptionPages/InternalOptionsControl.cs b/src/VisualStudio/VisualStudioDiagnosticsToolWindow/OptionPages/InternalOptionsControl.cs index 66e04b3ef9a..af95326dc50 100644 --- a/src/VisualStudio/VisualStudioDiagnosticsToolWindow/OptionPages/InternalOptionsControl.cs +++ b/src/VisualStudio/VisualStudioDiagnosticsToolWindow/OptionPages/InternalOptionsControl.cs @@ -59,36 +59,36 @@ protected virtual void AddOptions(Panel panel) } } - private void AddOption(Panel panel, IOption option) + protected void AddOption(Panel panel, IOption option, string additional = null) { - var uiElement = CreateControl(option); + var uiElement = CreateControl(option, additional: additional); if (uiElement != null) { panel.Children.Add(uiElement); } } - private void AddPerLanguageOption(Panel panel, IOption option, string languageName) + protected void AddPerLanguageOption(Panel panel, IOption option, string languageName, string additional = null) { - var uiElement = CreateControl(option, languageName); + var uiElement = CreateControl(option, languageName, additional); if (uiElement != null) { panel.Children.Add(uiElement); } } - private UIElement CreateControl(IOption option, string languageName = null) + private UIElement CreateControl(IOption option, string languageName = null, string additional = null) { if (option.Type == typeof(bool)) { - var checkBox = new CheckBox() { Content = option.Name + GetLanguage(languageName) }; + var checkBox = new CheckBox() { Content = option.Name + GetLanguage(languageName) + GetAdditionalText(additional) }; BindToCheckBox(checkBox, option, languageName); return checkBox; } if (option.Type == typeof(int)) { - var label = new Label() { Content = option.Name + GetLanguage(languageName) }; + var label = new Label() { Content = option.Name + GetLanguage(languageName) + GetAdditionalText(additional) }; var textBox = new TextBox(); BindToTextBox(textBox, option, languageName); @@ -102,6 +102,16 @@ private UIElement CreateControl(IOption option, string languageName = null) return null; } + private string GetAdditionalText(string additional) + { + if (additional == null) + { + return string.Empty; + } + + return " [" + additional + "]"; + } + private string GetLanguage(string languageName) { if (languageName == null) -- GitLab