Skip to content

Commit cabce50

Browse files
Issue 31: Add diagnostics around toggling open solution folders during finding, as well as a finding options page so that functionality can be disabled.
1 parent 56bea9a commit cabce50

File tree

9 files changed

+119
-1
lines changed

9 files changed

+119
-1
lines changed

CodeMaid/CodeMaid.csproj

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -302,6 +302,7 @@
302302
<Compile Include="UI\Dialogs\Options\Cleaning\CleaningRemoveViewModel.cs" />
303303
<Compile Include="UI\Dialogs\Options\Cleaning\CleaningUpdateViewModel.cs" />
304304
<Compile Include="UI\Dialogs\Options\Cleaning\CleaningVisualStudioViewModel.cs" />
305+
<Compile Include="UI\Dialogs\Options\Finding\FindingViewModel.cs" />
305306
<Compile Include="UI\Dialogs\Options\Formatting\FormattingViewModel.cs" />
306307
<Compile Include="UI\Dialogs\Options\Collapsing\CollapsingViewModel.cs" />
307308
<Compile Include="UI\Dialogs\Options\Compatibility\CompatibilityViewModel.cs" />
@@ -616,6 +617,10 @@
616617
<Generator>MSBuild:Compile</Generator>
617618
<SubType>Designer</SubType>
618619
</Page>
620+
<Page Include="UI\Dialogs\Options\Finding\FindingDataTemplate.xaml">
621+
<SubType>Designer</SubType>
622+
<Generator>MSBuild:Compile</Generator>
623+
</Page>
619624
<Page Include="UI\Dialogs\Options\Formatting\FormattingDataTemplate.xaml">
620625
<Generator>MSBuild:Compile</Generator>
621626
<SubType>Designer</SubType>

CodeMaid/Integration/Commands/FindInSolutionExplorerCommand.cs

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
using EnvDTE;
1313
using SteveCadwallader.CodeMaid.Helpers;
14+
using SteveCadwallader.CodeMaid.Properties;
1415
using System;
1516
using System.ComponentModel.Design;
1617

@@ -55,7 +56,10 @@ protected override void OnExecute()
5556
Document document = Package.ActiveDocument;
5657
if (document != null)
5758
{
58-
ToggleSolutionFoldersOpenTemporarily(UIHierarchyHelper.GetTopUIHierarchyItem(Package));
59+
if (Settings.Default.Finding_TemporarilyOpenSolutionFolders)
60+
{
61+
ToggleSolutionFoldersOpenTemporarily(UIHierarchyHelper.GetTopUIHierarchyItem(Package));
62+
}
5963

6064
if (Package.IDEVersion >= 11)
6165
{
@@ -94,6 +98,9 @@ private void ToggleSolutionFoldersOpenTemporarily(UIHierarchyItem parentItem)
9498
// Expand the solution folder temporarily.
9599
if (isCollapsedSolutionFolder)
96100
{
101+
OutputWindowHelper.DiagnosticWriteLine(
102+
string.Format("FindInSolutionExplorerCommand.ToggleSolutionFoldersOpenTemporarily expanding '{0}'", parentItem.Name));
103+
97104
parentItem.Select(vsUISelectionType.vsUISelectionTypeSelect);
98105
Package.IDE.ToolWindows.SolutionExplorer.DoDefaultAction();
99106
}
@@ -107,6 +114,9 @@ private void ToggleSolutionFoldersOpenTemporarily(UIHierarchyItem parentItem)
107114
// Collapse the solution folder.
108115
if (isCollapsedSolutionFolder)
109116
{
117+
OutputWindowHelper.DiagnosticWriteLine(
118+
string.Format("FindInSolutionExplorerCommand.ToggleSolutionFoldersOpenTemporarily collapsing '{0}'", parentItem.Name));
119+
110120
parentItem.Select(vsUISelectionType.vsUISelectionTypeSelect);
111121
Package.IDE.ToolWindows.SolutionExplorer.DoDefaultAction();
112122
}

CodeMaid/Properties/Settings.Designer.cs

Lines changed: 12 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

CodeMaid/Properties/Settings.settings

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -407,5 +407,8 @@
407407
<Setting Name="Digging_PrimarySortOrder" Type="System.Int32" Scope="User">
408408
<Value Profile="(Default)">0</Value>
409409
</Setting>
410+
<Setting Name="Finding_TemporarilyOpenSolutionFolders" Type="System.Boolean" Scope="User">
411+
<Value Profile="(Default)">True</Value>
412+
</Setting>
410413
</Settings>
411414
</SettingsFile>
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
2+
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
3+
xmlns:local="clr-namespace:SteveCadwallader.CodeMaid.UI.Dialogs.Options.Finding">
4+
<DataTemplate DataType="{x:Type local:FindingViewModel}">
5+
<CheckBox Content="Temporarily open solution folders to find nested items" IsChecked="{Binding TemporarilyOpenSolutionFolders}" />
6+
</DataTemplate>
7+
</ResourceDictionary>
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
#region CodeMaid is Copyright 2007-2014 Steve Cadwallader.
2+
3+
// CodeMaid is free software: you can redistribute it and/or modify it under the terms of the GNU
4+
// Lesser General Public License version 3 as published by the Free Software Foundation.
5+
//
6+
// CodeMaid is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
7+
// even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
8+
// Lesser General Public License for more details <http://www.gnu.org/licenses/>.
9+
10+
#endregion CodeMaid is Copyright 2007-2014 Steve Cadwallader.
11+
12+
using SteveCadwallader.CodeMaid.Properties;
13+
14+
namespace SteveCadwallader.CodeMaid.UI.Dialogs.Options.Finding
15+
{
16+
/// <summary>
17+
/// The view model for finding options.
18+
/// </summary>
19+
public class FindingViewModel : OptionsPageViewModel
20+
{
21+
#region Constructors
22+
23+
/// <summary>
24+
/// Initializes a new instance of the <see cref="FindingViewModel" /> class.
25+
/// </summary>
26+
/// <param name="package">The hosting package.</param>
27+
public FindingViewModel(CodeMaidPackage package)
28+
: base(package)
29+
{
30+
}
31+
32+
#endregion Constructors
33+
34+
#region Overrides of OptionsPageViewModel
35+
36+
/// <summary>
37+
/// Gets the header.
38+
/// </summary>
39+
public override string Header
40+
{
41+
get { return "Finding"; }
42+
}
43+
44+
/// <summary>
45+
/// Loads the settings.
46+
/// </summary>
47+
public override void LoadSettings()
48+
{
49+
TemporarilyOpenSolutionFolders = Settings.Default.Finding_TemporarilyOpenSolutionFolders;
50+
}
51+
52+
/// <summary>
53+
/// Saves the settings.
54+
/// </summary>
55+
public override void SaveSettings()
56+
{
57+
Settings.Default.Finding_TemporarilyOpenSolutionFolders = TemporarilyOpenSolutionFolders;
58+
}
59+
60+
#endregion Overrides of OptionsPageViewModel
61+
62+
#region Options
63+
64+
/// <summary>
65+
/// Gets or sets a flag indicating if solution folders should be temporarily opened.
66+
/// </summary>
67+
public bool TemporarilyOpenSolutionFolders
68+
{
69+
get { return GetPropertyValue<bool>(); }
70+
set { SetPropertyValue(value); }
71+
}
72+
73+
#endregion Options
74+
}
75+
}

CodeMaid/UI/Dialogs/Options/OptionsViewModel.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
using SteveCadwallader.CodeMaid.UI.Dialogs.Options.Collapsing;
1616
using SteveCadwallader.CodeMaid.UI.Dialogs.Options.Compatibility;
1717
using SteveCadwallader.CodeMaid.UI.Dialogs.Options.Digging;
18+
using SteveCadwallader.CodeMaid.UI.Dialogs.Options.Finding;
1819
using SteveCadwallader.CodeMaid.UI.Dialogs.Options.Formatting;
1920
using SteveCadwallader.CodeMaid.UI.Dialogs.Options.General;
2021
using SteveCadwallader.CodeMaid.UI.Dialogs.Options.Progressing;
@@ -63,6 +64,7 @@ public OptionsViewModel(CodeMaidPackage package, Type initiallySelectedPageType
6364
},
6465
new CollapsingViewModel(package),
6566
new DiggingViewModel(package),
67+
new FindingViewModel(package),
6668
new FormattingViewModel(package),
6769
new ProgressingViewModel(package),
6870
new ReorganizingParentViewModel(package)

CodeMaid/UI/Dialogs/Options/OptionsWindow.xaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@
6565
<ResourceDictionary Source="Collapsing/CollapsingDataTemplate.xaml" />
6666
<ResourceDictionary Source="Compatibility/CompatibilityDataTemplate.xaml" />
6767
<ResourceDictionary Source="Digging/DiggingDataTemplate.xaml" />
68+
<ResourceDictionary Source="Finding/FindingDataTemplate.xaml" />
6869
<ResourceDictionary Source="Formatting/FormattingDataTemplate.xaml" />
6970
<ResourceDictionary Source="General/GeneralDataTemplate.xaml" />
7071
<ResourceDictionary Source="Progressing/ProgressingDataTemplate.xaml" />

CodeMaid/app.config

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -458,6 +458,9 @@
458458
<setting name="Digging_PrimarySortOrder" serializeAs="String">
459459
<value>0</value>
460460
</setting>
461+
<setting name="Finding_TemporarilyOpenSolutionFolders" serializeAs="String">
462+
<value>True</value>
463+
</setting>
461464
</SteveCadwallader.CodeMaid.Properties.Settings>
462465
</userSettings>
463466
<startup>

0 commit comments

Comments
 (0)