Browse Source

remember last selection in SearchForIssuesDialog

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

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

@ -12,6 +12,7 @@ using System.Windows.Documents; @@ -12,6 +12,7 @@ using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using ICSharpCode.NRefactory.CSharp;
using ICSharpCode.SharpDevelop;
using ICSharpCode.TreeView;
namespace CSharpBinding.Refactoring
@ -21,12 +22,24 @@ namespace CSharpBinding.Refactoring @@ -21,12 +22,24 @@ namespace CSharpBinding.Refactoring
/// </summary>
internal partial class SearchForIssuesDialog : Window
{
static readonly string RememberSelectionListKey = typeof(SearchForIssuesDialog).FullName + ".SelectedIssues";
public SearchForIssuesDialog()
{
InitializeComponent();
FixCheckBox_Unchecked(null, null);
treeView.Root = new RootTreeNode(IssueManager.IssueProviders);
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 {
@ -64,7 +77,22 @@ namespace CSharpBinding.Refactoring @@ -64,7 +77,22 @@ namespace CSharpBinding.Refactoring
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)
{
@ -74,6 +102,10 @@ namespace CSharpBinding.Refactoring @@ -74,6 +102,10 @@ namespace CSharpBinding.Refactoring
this.IsExpanded = true;
}
public override string Key {
get { return "__AllIssues"; }
}
public override object Text {
get { return "C# Issues"; }
}
@ -83,7 +115,7 @@ namespace CSharpBinding.Refactoring @@ -83,7 +115,7 @@ namespace CSharpBinding.Refactoring
}
}
sealed class CategoryTreeNode : SharpTreeNode
sealed class CategoryTreeNode : BaseTreeNode
{
readonly string categoryName;
@ -94,6 +126,10 @@ namespace CSharpBinding.Refactoring @@ -94,6 +126,10 @@ namespace CSharpBinding.Refactoring
this.IsExpanded = true;
}
public override string Key {
get { return "Category." + categoryName; }
}
public override object Text {
get { return categoryName; }
}
@ -103,7 +139,7 @@ namespace CSharpBinding.Refactoring @@ -103,7 +139,7 @@ namespace CSharpBinding.Refactoring
}
}
sealed class IssueTreeNode : SharpTreeNode
sealed class IssueTreeNode : BaseTreeNode
{
internal readonly IssueManager.IssueProvider Provider;
readonly IssueDescriptionAttribute attribute;
@ -114,6 +150,10 @@ namespace CSharpBinding.Refactoring @@ -114,6 +150,10 @@ namespace CSharpBinding.Refactoring
this.attribute = provider.Attribute;
}
public override string Key {
get { return "Issue." + Provider.ProviderType.FullName; }
}
public override bool IsCheckable {
get { return true; }
}

Loading…
Cancel
Save