Skip to content

Commit 6b089dc

Browse files
committed
Merge branch 'next' of https://github.com/rubberduck-vba/Rubberduck into RenameDialog
2 parents e02a2dd + a42d6e1 commit 6b089dc

File tree

3 files changed

+118
-53
lines changed

3 files changed

+118
-53
lines changed

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

Lines changed: 91 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,83 @@
1010
<UserControl.Resources>
1111
<reorderParameters:IndexIsNotZeroConverter x:Key="IndexIsNotZero" />
1212
<reorderParameters:IndexIsNotLastConverter x:Key="IndexIsNotLast" />
13+
14+
<Style x:Key="FocusVisual">
15+
<Setter Property="Control.Template">
16+
<Setter.Value>
17+
<ControlTemplate>
18+
<Rectangle Margin="2" SnapsToDevicePixels="true" Stroke="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" StrokeThickness="1" StrokeDashArray="1 2"/>
19+
</ControlTemplate>
20+
</Setter.Value>
21+
</Setter>
22+
</Style>
23+
<SolidColorBrush x:Key="Item.MouseOver.Background" Color="#1F26A0DA"/>
24+
<SolidColorBrush x:Key="Item.MouseOver.Border" Color="#a826A0Da"/>
25+
<LinearGradientBrush x:Key="Item.SelectedInactive.Background" EndPoint="0,1" StartPoint="0,0">
26+
<GradientStop Color="#FFEEEDED" Offset="0"/>
27+
<GradientStop Color="#FFDDDDDD" Offset="1"/>
28+
</LinearGradientBrush>
29+
<SolidColorBrush x:Key="Item.SelectedInactive.Border" Color="LightGray"/>
30+
<LinearGradientBrush x:Key="Item.SelectedActive.Background" EndPoint="0,1" StartPoint="0,0">
31+
<GradientStop Color="#FFD9F4FF" Offset="0"/>
32+
<GradientStop Color="#FF9BDDFB" Offset="1"/>
33+
</LinearGradientBrush>
34+
<SolidColorBrush x:Key="Item.SelectedActive.Border" Color="#ADC6E5"/>
35+
<Style x:Key="PrettyListBoxItem" TargetType="{x:Type ListBoxItem}">
36+
<Style.Resources>
37+
<Style TargetType="{x:Type Border}">
38+
<Setter Property="CornerRadius" Value="2"/>
39+
</Style>
40+
</Style.Resources>
41+
<Setter Property="SnapsToDevicePixels" Value="True"/>
42+
<Setter Property="Padding" Value="4,1"/>
43+
<Setter Property="HorizontalContentAlignment" Value="Left"/>
44+
<Setter Property="VerticalContentAlignment" Value="Center"/>
45+
<Setter Property="Background" Value="Transparent"/>
46+
<Setter Property="BorderBrush" Value="Black"/>
47+
<Setter Property="BorderThickness" Value="0,.5,0,0"/>
48+
<Setter Property="FocusVisualStyle" Value="{StaticResource FocusVisual}"/>
49+
<Setter Property="Height" Value="26" />
50+
<Setter Property="Template">
51+
<Setter.Value>
52+
<ControlTemplate TargetType="{x:Type ListBoxItem}">
53+
<Border x:Name="Bd" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Padding="{TemplateBinding Padding}" SnapsToDevicePixels="true">
54+
<ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
55+
</Border>
56+
<ControlTemplate.Triggers>
57+
<MultiTrigger>
58+
<MultiTrigger.Conditions>
59+
<Condition Property="IsMouseOver" Value="True"/>
60+
</MultiTrigger.Conditions>
61+
<Setter Property="Background" TargetName="Bd" Value="{StaticResource Item.MouseOver.Background}"/>
62+
<Setter Property="BorderBrush" TargetName="Bd" Value="{StaticResource Item.MouseOver.Border}"/>
63+
</MultiTrigger>
64+
<MultiTrigger>
65+
<MultiTrigger.Conditions>
66+
<Condition Property="Selector.IsSelectionActive" Value="False"/>
67+
<Condition Property="IsSelected" Value="True"/>
68+
</MultiTrigger.Conditions>
69+
<Setter Property="BorderThickness" Value="1.5" />
70+
<Setter Property="Background" TargetName="Bd" Value="{StaticResource Item.SelectedInactive.Background}"/>
71+
<Setter Property="BorderBrush" TargetName="Bd" Value="{StaticResource Item.SelectedInactive.Border}"/>
72+
</MultiTrigger>
73+
<MultiTrigger>
74+
<MultiTrigger.Conditions>
75+
<Condition Property="Selector.IsSelectionActive" Value="True"/>
76+
<Condition Property="IsSelected" Value="True"/>
77+
</MultiTrigger.Conditions>
78+
<Setter Property="BorderThickness" Value="1.5" />
79+
<Setter Property="Background" TargetName="Bd" Value="{StaticResource Item.SelectedActive.Background}"/>
80+
<Setter Property="BorderBrush" TargetName="Bd" Value="{StaticResource Item.SelectedActive.Border}"/>
81+
</MultiTrigger>
82+
<Trigger Property="IsEnabled" Value="False">
83+
<Setter Property="TextElement.Foreground" TargetName="Bd" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/>
84+
</Trigger>
85+
</ControlTemplate.Triggers>
86+
</ControlTemplate>
87+
</Setter.Value>
88+
</Setter>
89+
</Style>
1390
</UserControl.Resources>
1491
<Grid>
1592
<Grid.RowDefinitions>
@@ -31,34 +108,23 @@
31108
<ColumnDefinition Width="*" />
32109
<ColumnDefinition Width="auto" />
33110
</Grid.ColumnDefinitions>
34-
<ListView Margin="5,5,0,5"
35-
ItemsSource="{Binding Parameters, UpdateSourceTrigger=PropertyChanged}"
36-
SelectedIndex="0"
37-
Name="ParameterGrid"
38-
AllowDrop="True"
39-
Drop="ParameterGrid_Drop"
40-
DragEnter="ParameterGrid_DragEnter"
41-
PreviewMouseMove="ParameterGrid_PreviewMouseMove"
42-
PreviewMouseLeftButtonDown="ParameterGrid_PreviewMouseLeftButtonDown"
43-
AlternationCount="2">
44-
<ListView.ItemTemplate>
111+
<ListBox Margin="5,5,0,5"
112+
ItemsSource="{Binding Parameters, UpdateSourceTrigger=PropertyChanged}"
113+
SelectedIndex="0"
114+
Name="ParameterGrid"
115+
AllowDrop="True"
116+
ItemContainerStyle="{StaticResource PrettyListBoxItem}"
117+
Drop="ParameterGrid_Drop"
118+
DragEnter="ParameterGrid_DragEnter"
119+
PreviewMouseMove="ParameterGrid_PreviewMouseMove"
120+
PreviewMouseLeftButtonDown="ParameterGrid_PreviewMouseLeftButtonDown"
121+
AlternationCount="2">
122+
<ListBox.ItemTemplate>
45123
<DataTemplate>
46124
<TextBlock Text="{Binding Name}" />
47125
</DataTemplate>
48-
</ListView.ItemTemplate>
49-
<ListView.ItemContainerStyle>
50-
<Style TargetType="ListViewItem">
51-
<Style.Triggers>
52-
<Trigger Property="ItemsControl.AlternationIndex" Value="0">
53-
<Setter Property="Background" Value="White" />
54-
</Trigger>
55-
<Trigger Property="ItemsControl.AlternationIndex" Value="1">
56-
<Setter Property="Background" Value="Lavender" />
57-
</Trigger>
58-
</Style.Triggers>
59-
</Style>
60-
</ListView.ItemContainerStyle>
61-
</ListView>
126+
</ListBox.ItemTemplate>
127+
</ListBox>
62128

63129
<Grid HorizontalAlignment="Right"
64130
Grid.Column="1">

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

Lines changed: 25 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -43,15 +43,15 @@ private void ParameterGrid_PreviewMouseMove(object sender, MouseEventArgs e)
4343

4444
private void BeginDrag(MouseEventArgs e)
4545
{
46-
var listViewItem = FindAncestor<ListViewItem>((DependencyObject)e.OriginalSource);
46+
var listBoxItem = FindAncestor<ListBoxItem>((DependencyObject)e.OriginalSource);
4747

48-
if (listViewItem == null) { return; }
48+
if (listBoxItem == null) { return; }
4949

50-
// get the data for the ListViewItem
51-
var parameter = (Parameter)ParameterGrid.ItemContainerGenerator.ItemFromContainer(listViewItem);
50+
// get the data for the ListBoxItem
51+
var parameter = (Parameter)ParameterGrid.ItemContainerGenerator.ItemFromContainer(listBoxItem);
5252

5353
//setup the drag adorner.
54-
InitialiseAdorner(listViewItem);
54+
InitialiseAdorner(listBoxItem);
5555

5656
//add handles to update the adorner.
5757
ParameterGrid.PreviewDragOver += ParameterGrid_DragOver;
@@ -85,34 +85,35 @@ private void ParameterGrid_DragEnter(object sender, DragEventArgs e)
8585

8686
private void ParameterGrid_Drop(object sender, DragEventArgs e)
8787
{
88-
if (e.Data.GetDataPresent(typeof(Parameter)))
88+
if (!e.Data.GetDataPresent(typeof(Parameter))) { return; }
89+
90+
var parameter = e.Data.GetData(typeof(Parameter)) as Parameter;
91+
var parameterIndex = ViewModel.Parameters.IndexOf(parameter);
92+
93+
var listBoxItem = FindAncestor<ListBoxItem>((DependencyObject)e.OriginalSource);
94+
95+
if (listBoxItem != null)
8996
{
90-
var parameter = e.Data.GetData(typeof(Parameter)) as Parameter;
91-
var listViewItem = FindAncestor<ListViewItem>((DependencyObject)e.OriginalSource);
97+
var parameterToReplace = (Parameter)ParameterGrid.ItemContainerGenerator.ItemFromContainer(listBoxItem);
98+
var index = ParameterGrid.Items.IndexOf(parameterToReplace);
9299

93-
if (listViewItem != null)
100+
if (index >= 0 && parameterIndex != index)
94101
{
95-
var parameterToReplace = (Parameter)ParameterGrid.ItemContainerGenerator.ItemFromContainer(listViewItem);
96-
var index = ParameterGrid.Items.IndexOf(parameterToReplace);
97-
98-
if (index >= 0)
99-
{
100-
ViewModel.Parameters.Move(ViewModel.Parameters.IndexOf(parameter), index);
101-
ViewModel.UpdatePreview();
102-
}
103-
}
104-
else
105-
{
106-
ViewModel.Parameters.Move(ViewModel.Parameters.IndexOf(parameter), ViewModel.Parameters.Count - 1);
102+
ViewModel.Parameters.Move(parameterIndex, index);
107103
ViewModel.UpdatePreview();
108104
}
109105
}
106+
else if (parameterIndex != ViewModel.Parameters.Count - 1)
107+
{
108+
ViewModel.Parameters.Move(parameterIndex, ViewModel.Parameters.Count - 1);
109+
ViewModel.UpdatePreview();
110+
}
110111
}
111112

112-
private void InitialiseAdorner(ListViewItem listViewItem)
113+
private void InitialiseAdorner(ListBoxItem listBoxItem)
113114
{
114-
var brush = new VisualBrush(listViewItem);
115-
_adorner = new DragAdorner(listViewItem, listViewItem.RenderSize, brush) {Opacity = 0.5};
115+
var brush = new VisualBrush(listBoxItem);
116+
_adorner = new DragAdorner(listBoxItem, listBoxItem.RenderSize, brush) {Opacity = 0.5};
116117
_layer = AdornerLayer.GetAdornerLayer(ParameterGrid);
117118
_layer.Add(_adorner);
118119
}

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

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -146,8 +146,7 @@ private void MoveParameterUp(Parameter parameter)
146146
{
147147
var currentIndex = Parameters.IndexOf(parameter);
148148
Parameters.Move(currentIndex, currentIndex - 1);
149-
150-
OnPropertyChanged(nameof(Parameters));
149+
151150
OnPropertyChanged(nameof(SignaturePreview));
152151
}
153152
}
@@ -158,8 +157,7 @@ private void MoveParameterDown(Parameter parameter)
158157
{
159158
var currentIndex = Parameters.IndexOf(parameter);
160159
Parameters.Move(currentIndex, currentIndex + 1);
161-
162-
OnPropertyChanged(nameof(Parameters));
160+
163161
OnPropertyChanged(nameof(SignaturePreview));
164162
}
165163
}

0 commit comments

Comments
 (0)