Skip to content

Commit f3fad10

Browse files
committed
Feature: Expander state
1 parent 491afaf commit f3fad10

File tree

7 files changed

+209
-27
lines changed

7 files changed

+209
-27
lines changed

Source/NETworkManager/Views/AWSSessionManagerHostView.xaml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@
2727
<converters:IntNotZeroToVisibilityCollapsedConverter x:Key="IntNotZeroToVisibilityCollapsedConverter" />
2828
<converters:IntZeroToVisibilityCollapsedConverter x:Key="IntZeroToVisibilityCollapsedConverter" />
2929
<converters:IsDynamicProfileToBooleanConverter x:Key="IsDynamicProfileToBooleanConverter" />
30-
<converters:StringNullOrEmptyToBoolConverter x:Key="StringNullOrEmptyToBoolConverter" />
3130
<wpfHelpers:BindingProxy x:Key="BindingProxy" Data="{Binding}" />
3231
</UserControl.Resources>
3332
<UserControl.InputBindings>

Source/NETworkManager/Views/IPGeolocationHostView.xaml

Lines changed: 41 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,17 +9,19 @@
99
xmlns:viewModels="clr-namespace:NETworkManager.ViewModels"
1010
xmlns:localization="clr-namespace:NETworkManager.Localization.Resources;assembly=NETworkManager.Localization"
1111
xmlns:converters="clr-namespace:NETworkManager.Converters;assembly=NETworkManager.Converters"
12+
xmlns:controls="clr-namespace:NETworkManager.Controls;assembly=NETworkManager.Controls"
1213
xmlns:settings="clr-namespace:NETworkManager.Settings;assembly=NETworkManager.Settings"
1314
xmlns:mah="http://metro.mahapps.com/winfx/xaml/controls"
1415
xmlns:profiles="clr-namespace:NETworkManager.Profiles;assembly=NETworkManager.Profiles"
16+
xmlns:wpfHelpers="clr-namespace:NETworkManager.Utilities.WPF;assembly=NETworkManager.Utilities.WPF"
1517
xmlns:networkManager="clr-namespace:NETworkManager"
1618
mc:Ignorable="d" d:DataContext="{d:DesignInstance viewModels:IPGeolocationHostViewModel}">
1719
<UserControl.Resources>
1820
<converters:BooleanReverseToVisibilityCollapsedConverter x:Key="BooleanReverseToVisibilityCollapsedConverter" />
1921
<converters:BooleanToVisibilityCollapsedConverter x:Key="BooleanToVisibilityCollapsedConverter" />
2022
<converters:IntNotZeroToVisibilityCollapsedConverter x:Key="IntNotZeroToVisibilityCollapsedConverter" />
2123
<converters:IntZeroToVisibilityCollapsedConverter x:Key="IntZeroToVisibilityCollapsedConverter" />
22-
<converters:StringNullOrEmptyToBoolConverter x:Key="StringNullOrEmptyToBoolConverter" />
24+
<wpfHelpers:BindingProxy x:Key="BindingProxy" Data="{Binding}" />
2325
</UserControl.Resources>
2426
<UserControl.InputBindings>
2527
<KeyBinding Key="T" Modifiers="Ctrl" Command="{Binding AddTabCommand}" />
@@ -404,15 +406,50 @@
404406
<Setter Property="Template">
405407
<Setter.Value>
406408
<ControlTemplate>
407-
<Expander IsExpanded="True"
408-
Style="{StaticResource DefaultExpander}">
409+
<controls:GroupExpander
410+
Style="{StaticResource DefaultExpander}"
411+
StateStore="{Binding Path=DataContext.GroupExpanderStateStore, RelativeSource={RelativeSource AncestorType=ListBox}}"
412+
GroupName="{Binding Path=(CollectionViewGroup.Name)}">
409413
<Expander.Header>
410414
<Grid>
411415
<Grid.ColumnDefinitions>
412416
<ColumnDefinition Width="*" />
413417
<ColumnDefinition Width="10" />
414418
<ColumnDefinition Width="Auto" />
415419
</Grid.ColumnDefinitions>
420+
<Grid.ContextMenu>
421+
<ContextMenu
422+
Style="{StaticResource DefaultContextMenu}">
423+
<MenuItem
424+
Header="{x:Static Member=localization:Strings.ExpandAll}"
425+
Command="{Binding Path=Data.(viewModels:IPGeolocationHostViewModel.ExpandAllProfileGroupsCommand), Source={StaticResource BindingProxy}}">
426+
<MenuItem.Icon>
427+
<Rectangle Width="16" Height="16"
428+
Fill="{DynamicResource ResourceKey=MahApps.Brushes.Gray3}">
429+
<Rectangle.OpacityMask>
430+
<VisualBrush
431+
Stretch="Uniform"
432+
Visual="{iconPacks:Material Kind=PlusBoxMultipleOutline}" />
433+
</Rectangle.OpacityMask>
434+
</Rectangle>
435+
</MenuItem.Icon>
436+
</MenuItem>
437+
<MenuItem
438+
Header="{x:Static Member=localization:Strings.CollapseAll}"
439+
Command="{Binding Path=Data.(viewModels:IPGeolocationHostViewModel.CollapseAllProfileGroupsCommand), Source={StaticResource BindingProxy}}">
440+
<MenuItem.Icon>
441+
<Rectangle Width="16" Height="16"
442+
Fill="{DynamicResource ResourceKey=MahApps.Brushes.Gray3}">
443+
<Rectangle.OpacityMask>
444+
<VisualBrush
445+
Stretch="Uniform"
446+
Visual="{iconPacks:Material Kind=MinusBoxMultipleOutline}" />
447+
</Rectangle.OpacityMask>
448+
</Rectangle>
449+
</MenuItem.Icon>
450+
</MenuItem>
451+
</ContextMenu>
452+
</Grid.ContextMenu>
416453
<Rectangle Grid.Column="0" Grid.ColumnSpan="3"
417454
Fill="Transparent" />
418455
<TextBlock Grid.Column="0"
@@ -448,7 +485,7 @@
448485
</Grid>
449486
</Expander.Header>
450487
<ItemsPresenter />
451-
</Expander>
488+
</controls:GroupExpander>
452489
</ControlTemplate>
453490
</Setter.Value>
454491
</Setter>

Source/NETworkManager/Views/SNMPHostView.xaml

Lines changed: 42 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,18 +8,20 @@
88
xmlns:iconPacks="http://metro.mahapps.com/winfx/xaml/iconpacks"
99
xmlns:viewModels="clr-namespace:NETworkManager.ViewModels"
1010
xmlns:converters="clr-namespace:NETworkManager.Converters;assembly=NETworkManager.Converters"
11+
xmlns:controls="clr-namespace:NETworkManager.Controls;assembly=NETworkManager.Controls"
1112
xmlns:mah="http://metro.mahapps.com/winfx/xaml/controls"
1213
xmlns:settings="clr-namespace:NETworkManager.Settings;assembly=NETworkManager.Settings"
1314
xmlns:localization="clr-namespace:NETworkManager.Localization.Resources;assembly=NETworkManager.Localization"
1415
xmlns:profiles="clr-namespace:NETworkManager.Profiles;assembly=NETworkManager.Profiles"
16+
xmlns:wpfHelpers="clr-namespace:NETworkManager.Utilities.WPF;assembly=NETworkManager.Utilities.WPF"
1517
xmlns:networkManager="clr-namespace:NETworkManager"
1618
mc:Ignorable="d" d:DataContext="{d:DesignInstance viewModels:SNMPHostViewModel}">
1719
<UserControl.Resources>
1820
<converters:BooleanReverseToVisibilityCollapsedConverter x:Key="BooleanReverseToVisibilityCollapsedConverter" />
1921
<converters:BooleanToVisibilityCollapsedConverter x:Key="BooleanToVisibilityCollapsedConverter" />
2022
<converters:IntNotZeroToVisibilityCollapsedConverter x:Key="IntNotZeroToVisibilityCollapsedConverter" />
2123
<converters:IntZeroToVisibilityCollapsedConverter x:Key="IntZeroToVisibilityCollapsedConverter" />
22-
<converters:StringNullOrEmptyToBoolConverter x:Key="StringNullOrEmptyToBoolConverter" />
24+
<wpfHelpers:BindingProxy x:Key="BindingProxy" Data="{Binding}" />
2325
</UserControl.Resources>
2426
<UserControl.InputBindings>
2527
<KeyBinding Key="T" Modifiers="Ctrl" Command="{Binding AddTabCommand}" />
@@ -412,16 +414,51 @@
412414
<Setter Property="Template">
413415
<Setter.Value>
414416
<ControlTemplate>
415-
<Expander IsExpanded="True"
416-
Style="{StaticResource DefaultExpander}">
417+
<controls:GroupExpander
418+
Style="{StaticResource DefaultExpander}"
419+
StateStore="{Binding Path=DataContext.GroupExpanderStateStore, RelativeSource={RelativeSource AncestorType=ListBox}}"
420+
GroupName="{Binding Path=(CollectionViewGroup.Name)}">
417421
<Expander.Header>
418422
<Grid>
419423
<Grid.ColumnDefinitions>
420424
<ColumnDefinition Width="*" />
421425
<ColumnDefinition Width="10" />
422426
<ColumnDefinition Width="Auto" />
423427
</Grid.ColumnDefinitions>
424-
<Rectangle Grid.Column="0" Grid.ColumnSpan="4"
428+
<Grid.ContextMenu>
429+
<ContextMenu
430+
Style="{StaticResource DefaultContextMenu}">
431+
<MenuItem
432+
Header="{x:Static Member=localization:Strings.ExpandAll}"
433+
Command="{Binding Path=Data.(viewModels:SNMPHostViewModel.ExpandAllProfileGroupsCommand), Source={StaticResource BindingProxy}}">
434+
<MenuItem.Icon>
435+
<Rectangle Width="16" Height="16"
436+
Fill="{DynamicResource ResourceKey=MahApps.Brushes.Gray3}">
437+
<Rectangle.OpacityMask>
438+
<VisualBrush
439+
Stretch="Uniform"
440+
Visual="{iconPacks:Material Kind=PlusBoxMultipleOutline}" />
441+
</Rectangle.OpacityMask>
442+
</Rectangle>
443+
</MenuItem.Icon>
444+
</MenuItem>
445+
<MenuItem
446+
Header="{x:Static Member=localization:Strings.CollapseAll}"
447+
Command="{Binding Path=Data.(viewModels:SNMPHostViewModel.CollapseAllProfileGroupsCommand), Source={StaticResource BindingProxy}}">
448+
<MenuItem.Icon>
449+
<Rectangle Width="16" Height="16"
450+
Fill="{DynamicResource ResourceKey=MahApps.Brushes.Gray3}">
451+
<Rectangle.OpacityMask>
452+
<VisualBrush
453+
Stretch="Uniform"
454+
Visual="{iconPacks:Material Kind=MinusBoxMultipleOutline}" />
455+
</Rectangle.OpacityMask>
456+
</Rectangle>
457+
</MenuItem.Icon>
458+
</MenuItem>
459+
</ContextMenu>
460+
</Grid.ContextMenu>
461+
<Rectangle Grid.Column="0" Grid.ColumnSpan="3"
425462
Fill="Transparent" />
426463
<TextBlock Grid.Column="0"
427464
Text="{Binding (CollectionViewGroup.Name)}"
@@ -456,7 +493,7 @@
456493
</Grid>
457494
</Expander.Header>
458495
<ItemsPresenter />
459-
</Expander>
496+
</controls:GroupExpander>
460497
</ControlTemplate>
461498
</Setter.Value>
462499
</Setter>

Source/NETworkManager/Views/SNMPView.xaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,14 @@
44
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
55
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
66
xmlns:converters="clr-namespace:NETworkManager.Converters;assembly=NETworkManager.Converters"
7+
xmlns:controls="clr-namespace:NETworkManager.Controls;assembly=NETworkManager.Controls"
78
xmlns:validators="clr-namespace:NETworkManager.Validators;assembly=NETworkManager.Validators"
89
xmlns:mah="http://metro.mahapps.com/winfx/xaml/controls"
910
xmlns:iconPacks="http://metro.mahapps.com/winfx/xaml/iconpacks"
1011
xmlns:viewModels="clr-namespace:NETworkManager.ViewModels"
1112
xmlns:network="clr-namespace:NETworkManager.Models.Network;assembly=NETworkManager.Models"
1213
xmlns:localization="clr-namespace:NETworkManager.Localization.Resources;assembly=NETworkManager.Localization"
1314
xmlns:dialogs="clr-namespace:MahApps.Metro.Controls.Dialogs;assembly=MahApps.Metro"
14-
xmlns:controls="clr-namespace:NETworkManager.Controls;assembly=NETworkManager.Controls"
1515
xmlns:wpfHelpers="clr-namespace:NETworkManager.Utilities.WPF;assembly=NETworkManager.Utilities.WPF"
1616
xmlns:interactivity="http://schemas.microsoft.com/xaml/behaviors"
1717
dialogs:DialogParticipation.Register="{Binding}"

0 commit comments

Comments
 (0)