Skip to content

Commit 277d9f1

Browse files
committed
Disable buttons appropriately
1 parent bafe6f9 commit 277d9f1

File tree

6 files changed

+67
-8
lines changed

6 files changed

+67
-8
lines changed

RetailCoder.VBE/Rubberduck.csproj

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -482,6 +482,8 @@
482482
<DependentUpon>RemoveParametersView.xaml</DependentUpon>
483483
</Compile>
484484
<Compile Include="UI\Refactorings\RemoveParameters\RemoveParametersViewModel.cs" />
485+
<Compile Include="UI\Refactorings\ReorderParameters\IndexIsNotLastConverter.cs" />
486+
<Compile Include="UI\Refactorings\ReorderParameters\IndexIsNotZeroConverter.cs" />
485487
<Compile Include="UI\Refactorings\ReorderParameters\ReorderParametersView.xaml.cs">
486488
<DependentUpon>ReorderParametersView.xaml</DependentUpon>
487489
</Compile>

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
using System.Collections.ObjectModel;
1+
using System.Collections.Generic;
2+
using System.Collections.ObjectModel;
23
using System.Linq;
34
using System.Runtime.InteropServices;
45
using Rubberduck.Common;
@@ -76,9 +77,8 @@ protected override void ExecuteImpl(object parameter)
7677
var refactoring = new ReorderParametersRefactoring(Vbe, factory, _msgbox);
7778
refactoring.Refactor(selection);*/
7879
view.ViewModel.Parameters =
79-
new ObservableCollection<Rubberduck.Refactorings.ReorderParameters.Parameter>(
80-
_state.AllUserDeclarations.Where(s => s.DeclarationType == DeclarationType.Parameter)
81-
.Select((s, i) => new Parameter((ParameterDeclaration)s, i)));
80+
new ObservableCollection<Parameter>(_state.AllUserDeclarations.Where(s => s.DeclarationType == DeclarationType.Parameter)
81+
.Select((s, i) => new Parameter((ParameterDeclaration)s, i)).ToList());
8282
view.ShowDialog();
8383
}
8484
}
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.Data;
4+
5+
namespace Rubberduck.UI.Refactorings.ReorderParameters
6+
{
7+
public class IndexIsNotLastConverter : IMultiValueConverter
8+
{
9+
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
10+
{
11+
var selectedIndex = (int)values[0];
12+
var indexCount = (int)values[1] - 1;
13+
return selectedIndex < indexCount;
14+
}
15+
16+
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
17+
{
18+
throw new NotImplementedException();
19+
}
20+
}
21+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
using System;
2+
using System.Globalization;
3+
using System.Windows.Data;
4+
5+
namespace Rubberduck.UI.Refactorings.ReorderParameters
6+
{
7+
public class IndexIsNotZeroConverter : IValueConverter
8+
{
9+
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
10+
{
11+
return (int)value != 0;
12+
}
13+
14+
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
15+
{
16+
throw new NotImplementedException();
17+
}
18+
}
19+
}

RetailCoder.VBE/UI/Refactorings/ReorderParameters/ReorderParametersView.xaml

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,13 @@
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"
7-
xmlns:converters="clr-namespace:Rubberduck.UI.Converters"
86
xmlns:controls="clr-namespace:Rubberduck.UI.Controls"
7+
xmlns:reorderParameters="clr-namespace:Rubberduck.UI.Refactorings.ReorderParameters"
98
mc:Ignorable="d"
109
d:DesignHeight="300" d:DesignWidth="300">
1110
<UserControl.Resources>
12-
<converters:InvertBoolValueConverter x:Key="InvertedBool" />
11+
<reorderParameters:IndexIsNotZeroConverter x:Key="IndexIsNotZero" />
12+
<reorderParameters:IndexIsNotLastConverter x:Key="IndexIsNotLast" />
1313
</UserControl.Resources>
1414
<Grid>
1515
<Grid.RowDefinitions>
@@ -66,6 +66,7 @@
6666
Margin="5,5,5,0"
6767
Padding="5,0"
6868
HorizontalContentAlignment="Left"
69+
IsEnabled="{Binding ElementName=ParameterGrid, Path=SelectedIndex, Converter={StaticResource IndexIsNotZero}}"
6970
Command="{Binding MoveParameterUpCommand}"
7071
CommandParameter="{Binding ElementName=ParameterGrid, Path=SelectedItem}">
7172
<StackPanel Orientation="Horizontal">
@@ -78,8 +79,20 @@
7879
Margin="5,5,5,0"
7980
Padding="5,0"
8081
HorizontalContentAlignment="Left"
81-
Command="{Binding MoveParameterDown}"
82+
Command="{Binding MoveParameterDownCommand}"
8283
CommandParameter="{Binding ElementName=ParameterGrid, Path=SelectedItem}">
84+
<Button.Style>
85+
<Style TargetType="Button">
86+
<Setter Property="IsEnabled">
87+
<Setter.Value>
88+
<MultiBinding Converter="{StaticResource IndexIsNotLast}">
89+
<Binding ElementName="ParameterGrid" Path="SelectedIndex" />
90+
<Binding Path="Parameters.Count" />
91+
</MultiBinding>
92+
</Setter.Value>
93+
</Setter>
94+
</Style>
95+
</Button.Style>
8396
<StackPanel Orientation="Horizontal">
8497
<Image Height="10" Source="../../../Resources/arrow-return-180-left.png" Margin="0,0,5,0" />
8598
<TextBlock Text="{Resx ResxName=Rubberduck.UI.RubberduckUI, Key=ReorderParamsDialog_MoveDownButtonText}" />

RetailCoder.VBE/UI/Refactorings/ReorderParameters/ReorderParametersViewModel.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,8 @@ private void MoveParameterUp(Parameter parameter)
5252
{
5353
var currentIndex = Parameters.IndexOf(parameter);
5454
Parameters.Move(currentIndex, currentIndex - 1);
55+
56+
OnPropertyChanged(nameof(Parameters));
5557
OnPropertyChanged(nameof(SignaturePreview));
5658
}
5759
}
@@ -62,6 +64,8 @@ private void MoveParameterDown(Parameter parameter)
6264
{
6365
var currentIndex = Parameters.IndexOf(parameter);
6466
Parameters.Move(currentIndex, currentIndex + 1);
67+
68+
OnPropertyChanged(nameof(Parameters));
6569
OnPropertyChanged(nameof(SignaturePreview));
6670
}
6771
}

0 commit comments

Comments
 (0)