Browse Source

remember last selection in SearchForIssuesDialog

addin-manager-package-subdirectories
Siegfried Pammer 13 years ago
parent
commit
ff672237d2
  1. 1
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/SearchForIssuesDialog.xaml
  2. 46
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/SearchForIssuesDialog.xaml.cs

1
src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/SearchForIssuesDialog.xaml

@ -9,6 +9,7 @@
xmlns:local="clr-namespace:CSharpBinding.Refactoring" xmlns:local="clr-namespace:CSharpBinding.Refactoring"
Style="{x:Static core:GlobalStyles.DialogWindowStyle}" Style="{x:Static core:GlobalStyles.DialogWindowStyle}"
WindowStartupLocation="CenterOwner" WindowStartupLocation="CenterOwner"
Closing="Window_Closing"
MinHeight="250" MinWidth="200" MinHeight="250" MinWidth="200"
Height="450" Width="400" Title="Search For Issues"> Height="450" Width="400" Title="Search For Issues">
<Grid Margin="6"> <Grid Margin="6">

46
src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/SearchForIssuesDialog.xaml.cs

@ -12,6 +12,7 @@ using System.Windows.Documents;
using System.Windows.Input; using System.Windows.Input;
using System.Windows.Media; using System.Windows.Media;
using ICSharpCode.NRefactory.CSharp; using ICSharpCode.NRefactory.CSharp;
using ICSharpCode.SharpDevelop;
using ICSharpCode.TreeView; using ICSharpCode.TreeView;
namespace CSharpBinding.Refactoring namespace CSharpBinding.Refactoring
@ -21,12 +22,24 @@ namespace CSharpBinding.Refactoring
/// </summary> /// </summary>
internal partial class SearchForIssuesDialog : Window internal partial class SearchForIssuesDialog : Window
{ {
static readonly string RememberSelectionListKey = typeof(SearchForIssuesDialog).FullName + ".SelectedIssues";
public SearchForIssuesDialog() public SearchForIssuesDialog()
{ {
InitializeComponent(); InitializeComponent();
FixCheckBox_Unchecked(null, null); FixCheckBox_Unchecked(null, null);
treeView.Root = new RootTreeNode(IssueManager.IssueProviders); treeView.Root = new RootTreeNode(IssueManager.IssueProviders);
searchInRBG.SelectedValue = SearchForIssuesTarget.WholeSolution; searchInRBG.SelectedValue = SearchForIssuesTarget.WholeSolution;
LoadPreviousSelectionFromSettings();
}
void LoadPreviousSelectionFromSettings()
{
var checkedNodes = SD.PropertyService.GetList<string>(RememberSelectionListKey);
foreach (BaseTreeNode node in treeView.Root.DescendantsAndSelf().OfType<BaseTreeNode>()) {
if (checkedNodes.Contains(node.Key))
node.IsChecked = true;
}
} }
public SearchForIssuesTarget Target { public SearchForIssuesTarget Target {
@ -64,7 +77,22 @@ namespace CSharpBinding.Refactoring
searchButton.Content = "Search and Fix"; searchButton.Content = "Search and Fix";
} }
sealed class RootTreeNode : SharpTreeNode void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
var checkedNodes = treeView.Root.DescendantsAndSelf()
.OfType<BaseTreeNode>()
.Where(n => n.IsChecked == true)
.Select(n => n.Key)
.ToArray();
SD.PropertyService.SetList(RememberSelectionListKey, checkedNodes);
}
abstract class BaseTreeNode : SharpTreeNode
{
public abstract string Key { get; }
}
sealed class RootTreeNode : BaseTreeNode
{ {
internal RootTreeNode(IEnumerable<IssueManager.IssueProvider> providers) internal RootTreeNode(IEnumerable<IssueManager.IssueProvider> providers)
{ {
@ -74,6 +102,10 @@ namespace CSharpBinding.Refactoring
this.IsExpanded = true; this.IsExpanded = true;
} }
public override string Key {
get { return "__AllIssues"; }
}
public override object Text { public override object Text {
get { return "C# Issues"; } get { return "C# Issues"; }
} }
@ -83,7 +115,7 @@ namespace CSharpBinding.Refactoring
} }
} }
sealed class CategoryTreeNode : SharpTreeNode sealed class CategoryTreeNode : BaseTreeNode
{ {
readonly string categoryName; readonly string categoryName;
@ -94,6 +126,10 @@ namespace CSharpBinding.Refactoring
this.IsExpanded = true; this.IsExpanded = true;
} }
public override string Key {
get { return "Category." + categoryName; }
}
public override object Text { public override object Text {
get { return categoryName; } get { return categoryName; }
} }
@ -103,7 +139,7 @@ namespace CSharpBinding.Refactoring
} }
} }
sealed class IssueTreeNode : SharpTreeNode sealed class IssueTreeNode : BaseTreeNode
{ {
internal readonly IssueManager.IssueProvider Provider; internal readonly IssueManager.IssueProvider Provider;
readonly IssueDescriptionAttribute attribute; readonly IssueDescriptionAttribute attribute;
@ -114,6 +150,10 @@ namespace CSharpBinding.Refactoring
this.attribute = provider.Attribute; this.attribute = provider.Attribute;
} }
public override string Key {
get { return "Issue." + Provider.ProviderType.FullName; }
}
public override bool IsCheckable { public override bool IsCheckable {
get { return true; } get { return true; }
} }

Loading…
Cancel
Save