diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/InsertCtorDialog.xaml b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/InsertCtorDialog.xaml index a89ebde120..c4d13258a4 100644 --- a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/InsertCtorDialog.xaml +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/InsertCtorDialog.xaml @@ -18,14 +18,21 @@ Text="{sd:Localize AddIns.SharpRefactoring.InsertCtor.Description}" TextWrapping="Wrap" /> + KeyboardNavigation.TabNavigation="Cycle" + MaxHeight="300"> - + + + + + + + + diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/InsertCtorDialog.xaml.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/InsertCtorDialog.xaml.cs index 912b4ea009..12e19af779 100644 --- a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/InsertCtorDialog.xaml.cs +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/InsertCtorDialog.xaml.cs @@ -80,7 +80,8 @@ namespace CSharpBinding.Refactoring protected override string GenerateCode(ITypeDefinition currentClass) { - List filtered = this.varList.SelectedItems.OfType() + List filtered = parameterList + .Where(p => p.IsIncluded) .OrderBy(p => p.Index) .ToList(); @@ -209,9 +210,9 @@ namespace CSharpBinding.Refactoring if ((e.KeyboardDevice.Modifiers & ModifierKeys.Alt) == ModifierKeys.Alt && allAccessKey == e.SystemKey) { if (AllSelected) - varList.UnselectAll(); + SelectAllUnchecked(); else - varList.SelectAll(); + SelectAllChecked(); e.Handled = true; } if ((e.KeyboardDevice.Modifiers & ModifierKeys.Alt) == ModifierKeys.Alt && upAccessKey == e.SystemKey) { @@ -266,18 +267,32 @@ namespace CSharpBinding.Refactoring ); } + void SelectAllChecked() + { + foreach (var param in parameterList) { + param.IsIncluded = true; + } + } + void SelectAllChecked(object sender, System.Windows.RoutedEventArgs e) { - this.varList.SelectAll(); + SelectAllChecked(); + } + + void SelectAllUnchecked() + { + foreach (var param in parameterList) { + param.IsIncluded = false; + } } void SelectAllUnchecked(object sender, System.Windows.RoutedEventArgs e) { - this.varList.UnselectAll(); + SelectAllUnchecked(); } bool AllSelected { - get { return varList.SelectedItems.Count == varList.Items.Count; } + get { return parameterList.Count(p => p.IsIncluded) == parameterList.Count; } } protected override void CancelButtonClick(object sender, System.Windows.RoutedEventArgs e) diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/OverrideToStringMethodDialog.xaml b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/OverrideToStringMethodDialog.xaml index 3eb80df4a9..6ef4590242 100644 --- a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/OverrideToStringMethodDialog.xaml +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/OverrideToStringMethodDialog.xaml @@ -14,14 +14,17 @@ - + - - - + + + + + + + + diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/OverrideToStringMethodDialog.xaml.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/OverrideToStringMethodDialog.xaml.cs index b9c67dd9c6..c1577d3fd3 100644 --- a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/OverrideToStringMethodDialog.xaml.cs +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/OverrideToStringMethodDialog.xaml.cs @@ -24,6 +24,7 @@ namespace CSharpBinding.Refactoring public partial class OverrideToStringMethodDialog : AbstractInlineRefactorDialog { AstNode baseCallNode; + IList parameterList; public OverrideToStringMethodDialog(InsertionContext context, ITextEditor editor, ITextAnchor anchor, IList fields, AstNode baseCallNode) : base(context, editor, anchor) @@ -31,14 +32,17 @@ namespace CSharpBinding.Refactoring InitializeComponent(); this.baseCallNode = baseCallNode; + parameterList = fields; this.listBox.ItemsSource = fields; - listBox.SelectAll(); + SelectAllChecked(); } protected override string GenerateCode(ITypeDefinition currentClass) { - string[] fields = listBox.SelectedItems.OfType().Select(f2 => f2.MemberName).ToArray(); +// string[] fields = listBox.SelectedItems.OfType().Select(f2 => f2.MemberName).ToArray(); + string[] fields = parameterList.Where(f => f.IsIncluded).Select(f2 => f2.MemberName).ToArray(); + PrimitiveExpression formatString = new PrimitiveExpression(GenerateFormatString(currentClass, editor.Language.CodeGenerator, fields)); List param = new List() { formatString }; ReturnStatement ret = new ReturnStatement(new InvocationExpression( @@ -48,8 +52,7 @@ namespace CSharpBinding.Refactoring if (baseCallNode != null) { MethodDeclaration insertedOverrideMethod = refactoringContext.GetNode().PrevSibling as MethodDeclaration; - if (insertedOverrideMethod == null) - { + if (insertedOverrideMethod == null) { // We are not inside of a method declaration return null; } @@ -85,18 +88,32 @@ namespace CSharpBinding.Refactoring return "[" + currentClass.Name + fieldsString + "]"; } + void SelectAllChecked() + { + foreach (var param in parameterList) { + param.IsIncluded = true; + } + } + void SelectAllChecked(object sender, System.Windows.RoutedEventArgs e) { - listBox.SelectAll(); + SelectAllChecked(); + } + + void SelectAllUnchecked() + { + foreach (var param in parameterList) { + param.IsIncluded = false; + } } void SelectAllUnchecked(object sender, System.Windows.RoutedEventArgs e) { - listBox.UnselectAll(); + SelectAllUnchecked(); } bool AllSelected { - get { return listBox.SelectedItems.Count == listBox.Items.Count; } + get { return parameterList.Count(p => p.IsIncluded) == parameterList.Count; } } protected override void OnKeyDown(KeyEventArgs e) @@ -105,9 +122,9 @@ namespace CSharpBinding.Refactoring if ((e.KeyboardDevice.Modifiers & ModifierKeys.Alt) == ModifierKeys.Alt && allAccessKey == e.SystemKey) { if (AllSelected) - listBox.UnselectAll(); + SelectAllUnchecked(); else - listBox.SelectAll(); + SelectAllChecked(); e.Handled = true; } diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/PropertyOrFieldWrapper.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/PropertyOrFieldWrapper.cs index 7752a2f687..7cc21a4a71 100644 --- a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/PropertyOrFieldWrapper.cs +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/PropertyOrFieldWrapper.cs @@ -12,6 +12,8 @@ namespace CSharpBinding.Refactoring { public class PropertyOrFieldWrapper : INotifyPropertyChanged { + bool isIncluded; + /// /// Underlying member. Always IField or IProperty. /// @@ -20,6 +22,8 @@ namespace CSharpBinding.Refactoring public PropertyOrFieldWrapper(IMember member) { + isIncluded = false; + if (member == null) throw new ArgumentNullException("member"); if (!(member is IField || member is IProperty)) @@ -34,6 +38,17 @@ namespace CSharpBinding.Refactoring this.text = ambience.ConvertEntity(member); } + public bool IsIncluded + { + get { + return isIncluded; + } + set { + isIncluded = value; + OnPropertyChanged("IsIncluded"); + } + } + public string MemberName { get { return Member.Name; } }