Skip to content

Commit fb205c2

Browse files
committed
UI is done
1 parent f278248 commit fb205c2

File tree

8 files changed

+96
-16
lines changed

8 files changed

+96
-16
lines changed

RetailCoder.VBE/Refactorings/RemoveParameters/Parameter.cs

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,28 @@
11
using Rubberduck.Parsing.Symbols;
22
using Rubberduck.Parsing.VBA;
3+
using Rubberduck.UI;
34

45
namespace Rubberduck.Refactorings.RemoveParameters
56
{
67
/// <summary>
78
/// Contains data about a method parameter for the Remove Parameters refactoring.
89
/// </summary>
9-
public class Parameter
10+
public class Parameter : ViewModelBase
1011
{
1112
public Declaration Declaration { get; private set; }
1213
public string Name { get; private set; }
1314
public int Index { get; private set; }
14-
public bool IsRemoved { get; set; }
15+
16+
private bool _isRemoved;
17+
public bool IsRemoved
18+
{
19+
get { return _isRemoved; }
20+
set
21+
{
22+
_isRemoved = value;
23+
OnPropertyChanged();
24+
}
25+
}
1526

1627
public Parameter(Declaration declaration, int index, bool isRemoved = false)
1728
{

RetailCoder.VBE/Rubberduck.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -477,6 +477,7 @@
477477
<Compile Include="UI\Refactorings\AssignedByValParameterQuickFixDialogFactory.cs" />
478478
<Compile Include="UI\Refactorings\IAssignedByValParameterQuickFixDialog.cs" />
479479
<Compile Include="UI\Refactorings\IAssignedByValParameterQuickFixDialogFactory.cs" />
480+
<Compile Include="UI\Refactorings\RemoveParameters\ParameterTextDecorationConverter.cs" />
480481
<Compile Include="UI\Refactorings\RemoveParameters\RemoveParametersView.xaml.cs">
481482
<DependentUpon>RemoveParametersView.xaml</DependentUpon>
482483
</Compile>

RetailCoder.VBE/UI/Command/Refactorings/RefactorRemoveParametersCommand.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ protected override void ExecuteImpl(object parameter)
6565
}
6666
6767
var selection = pane.GetQualifiedSelection();*/
68-
var parameters = _state.AllUserDeclarations.Where(s => s.DeclarationType == DeclarationType.Parameter).Select((s, i) => new Parameter(s, i)).ToList();
68+
var parameters = _state.AllUserDeclarations.Where(s => s.DeclarationType == DeclarationType.Parameter).Select((s, i) => new Parameter(s, i, true)).ToList();
6969
using (var view = new RemoveParametersDialog(new RemoveParametersViewModel(parameters)))
7070
{
7171
//var factory = new RemoveParametersPresenterFactory(Vbe, view, _state, _msgbox);
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
using System;
2+
using System.Globalization;
3+
using System.Windows;
4+
using System.Windows.Data;
5+
6+
namespace Rubberduck.UI.Refactorings.RemoveParameters
7+
{
8+
public class ParameterTextDecorationConverter : IValueConverter
9+
{
10+
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
11+
{
12+
if ((bool)value) { return TextDecorations.Strikethrough; }
13+
return null;
14+
}
15+
16+
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
17+
{
18+
throw new NotImplementedException();
19+
}
20+
}
21+
}

RetailCoder.VBE/UI/Refactorings/RemoveParameters/RemoveParametersDialog.Designer.cs

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

RetailCoder.VBE/UI/Refactorings/RemoveParameters/RemoveParametersView.xaml

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,14 @@
1-
<UserControl x:Class="Rubberduck.UI.Refactorings.RemoveParametersView"
1+
<UserControl x:Class="Rubberduck.UI.Refactorings.RemoveParameters.RemoveParametersView"
22
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
33
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
44
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
55
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
6+
xmlns:removeParameters="clr-namespace:Rubberduck.UI.Refactorings.RemoveParameters"
67
mc:Ignorable="d"
78
d:DesignHeight="300" d:DesignWidth="300">
9+
<UserControl.Resources>
10+
<removeParameters:ParameterTextDecorationConverter x:Key="ParameterTextDecoration" />
11+
</UserControl.Resources>
812
<Grid>
913
<Grid.RowDefinitions>
1014
<RowDefinition Height="50" />
@@ -22,8 +26,16 @@
2226
<ColumnDefinition Width="auto" />
2327
</Grid.ColumnDefinitions>
2428
<ListView Margin="5,5,0,5"
25-
ItemsSource="{Binding Parameters}"
26-
DisplayMemberPath="FullDeclaration" />
29+
ItemsSource="{Binding Parameters, UpdateSourceTrigger=PropertyChanged}"
30+
Name="ParameterGrid">
31+
<ListView.ItemTemplate>
32+
<DataTemplate>
33+
<TextBlock Text="{Binding Name}"
34+
TextDecorations="{Binding IsRemoved, Converter={StaticResource ParameterTextDecoration}}"
35+
MouseDown="TextBlock_MouseDown" />
36+
</DataTemplate>
37+
</ListView.ItemTemplate>
38+
</ListView>
2739

2840
<Grid HorizontalAlignment="Right"
2941
Grid.Column="1">
@@ -36,7 +48,8 @@
3648
Margin="5,5,5,0"
3749
Padding="5,0"
3850
HorizontalContentAlignment="Left"
39-
Command="{Binding RemoveParameterCommand}">
51+
Command="{Binding RemoveParameterCommand}"
52+
CommandParameter="{Binding ElementName=ParameterGrid, Path=SelectedItem}">
4053
<StackPanel Orientation="Horizontal">
4154
<Image Height="10" Source="../../../Resources/cross-script.png" Margin="0,0,5,0" />
4255
<TextBlock Text="{Resx ResxName=Rubberduck.UI.RubberduckUI, Key=Remove}" />
@@ -47,7 +60,8 @@
4760
Margin="5,5,5,0"
4861
Padding="5,0"
4962
HorizontalContentAlignment="Left"
50-
Command="{Binding RestoreParameterCommand}">
63+
Command="{Binding RestoreParameterCommand}"
64+
CommandParameter="{Binding ElementName=ParameterGrid, Path=SelectedItem}">
5165
<StackPanel Orientation="Horizontal">
5266
<Image Height="10" Source="../../../Resources/arrow-return-180-left.png" Margin="0,0,5,0" />
5367
<TextBlock Text="{Resx ResxName=Rubberduck.UI.RubberduckUI, Key=Restore}" />
@@ -67,7 +81,7 @@
6781
Height="20"
6882
Margin="5,0"
6983
Padding="10,0"
70-
Command="{Binding OKButtonCommand}" />
84+
Command="{Binding OkButtonCommand}" />
7185
<Button Content="{Resx ResxName=Rubberduck.UI.RubberduckUI, Key=CancelButtonText}"
7286
Grid.Column="1"
7387
Height="20"
Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,30 @@
1-
namespace Rubberduck.UI.Refactorings
1+
using System.Windows.Input;
2+
using Rubberduck.Refactorings.RemoveParameters;
3+
4+
namespace Rubberduck.UI.Refactorings.RemoveParameters
25
{
36
public partial class RemoveParametersView
47
{
58
public RemoveParametersView()
69
{
710
InitializeComponent();
811
}
12+
13+
private RemoveParametersViewModel ViewModel => (RemoveParametersViewModel) DataContext;
14+
15+
private void TextBlock_MouseDown(object sender, MouseButtonEventArgs e)
16+
{
17+
if (e.ClickCount != 2) { return; }
18+
19+
var target = (Parameter)ParameterGrid.SelectedItem;
20+
if (target.IsRemoved)
21+
{
22+
ViewModel.RestoreParameterCommand.Execute(target);
23+
}
24+
else
25+
{
26+
ViewModel.RemoveParameterCommand.Execute(target);
27+
}
28+
}
929
}
1030
}

RetailCoder.VBE/UI/Refactorings/RemoveParameters/RemoveParametersViewModel.cs

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,21 +14,34 @@ public RemoveParametersViewModel(List<Parameter> parameters)
1414
{
1515
Parameters = parameters;
1616

17-
OKButtonCommand = new DelegateCommand(LogManager.GetCurrentClassLogger(), _ => SaveAndCloseWindow());
17+
OkButtonCommand = new DelegateCommand(LogManager.GetCurrentClassLogger(), _ => SaveAndCloseWindow());
1818
CancelButtonCommand = new DelegateCommand(LogManager.GetCurrentClassLogger(), _ => CloseWindow());
1919
RemoveParameterCommand = new DelegateCommand(LogManager.GetCurrentClassLogger(), param => RemoveParameter((Parameter)param));
2020
RestoreParameterCommand = new DelegateCommand(LogManager.GetCurrentClassLogger(), param => RestoreParameter((Parameter)param));
2121
}
2222

23-
private void RemoveParameter(Parameter parameter) => parameter.IsRemoved = true;
24-
private void RestoreParameter(Parameter parameter) => parameter.IsRemoved = false;
23+
private void RemoveParameter(Parameter parameter)
24+
{
25+
if (parameter != null)
26+
{
27+
parameter.IsRemoved = true;
28+
}
29+
}
30+
31+
private void RestoreParameter(Parameter parameter)
32+
{
33+
if (parameter != null)
34+
{
35+
parameter.IsRemoved = false;
36+
}
37+
}
2538

2639
public event EventHandler OnWindowClosed;
2740
private void CloseWindow() => OnWindowClosed?.Invoke(this, EventArgs.Empty);
2841

2942
private void SaveAndCloseWindow() => CloseWindow();
3043

31-
public CommandBase OKButtonCommand { get; }
44+
public CommandBase OkButtonCommand { get; }
3245
public CommandBase CancelButtonCommand { get; }
3346
public CommandBase RemoveParameterCommand { get; }
3447
public CommandBase RestoreParameterCommand { get; }

0 commit comments

Comments
 (0)