Skip to content

Commit 491afaf

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

File tree

5 files changed

+173
-29
lines changed

5 files changed

+173
-29
lines changed

Source/NETworkManager/Views/AWSSessionManagerHostView.xaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
xmlns:iconPacks="http://metro.mahapps.com/winfx/xaml/iconpacks"
99
xmlns:converters="clr-namespace:NETworkManager.Converters;assembly=NETworkManager.Converters"
1010
xmlns:controls="clr-namespace:NETworkManager.Controls;assembly=NETworkManager.Controls"
11-
xmlns:wpfHelpers="clr-namespace:NETworkManager.Utilities.WPF;assembly=NETworkManager.Utilities.WPF"
1211
xmlns:dialogs="clr-namespace:MahApps.Metro.Controls.Dialogs;assembly=MahApps.Metro"
1312
xmlns:viewModels="clr-namespace:NETworkManager.ViewModels"
1413
xmlns:localization="clr-namespace:NETworkManager.Localization.Resources;assembly=NETworkManager.Localization"
@@ -17,6 +16,7 @@
1716
xmlns:mah="http://metro.mahapps.com/winfx/xaml/controls"
1817
xmlns:internalControls="clr-namespace:NETworkManager.Controls"
1918
xmlns:profiles="clr-namespace:NETworkManager.Profiles;assembly=NETworkManager.Profiles"
19+
xmlns:wpfHelpers="clr-namespace:NETworkManager.Utilities.WPF;assembly=NETworkManager.Utilities.WPF"
2020
xmlns:networkManager="clr-namespace:NETworkManager"
2121
dialogs:DialogParticipation.Register="{Binding}"
2222
Loaded="UserControl_Loaded"

Source/NETworkManager/Views/PowerShellHostView.xaml

Lines changed: 43 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,16 @@
77
xmlns:dockablz="clr-namespace:Dragablz.Dockablz;assembly=Dragablz"
88
xmlns:iconPacks="http://metro.mahapps.com/winfx/xaml/iconpacks"
99
xmlns:converters="clr-namespace:NETworkManager.Converters;assembly=NETworkManager.Converters"
10-
xmlns:wpfHelpers="clr-namespace:NETworkManager.Utilities.WPF;assembly=NETworkManager.Utilities.WPF"
10+
xmlns:controls="clr-namespace:NETworkManager.Controls;assembly=NETworkManager.Controls"
1111
xmlns:dialogs="clr-namespace:MahApps.Metro.Controls.Dialogs;assembly=MahApps.Metro"
1212
xmlns:viewModels="clr-namespace:NETworkManager.ViewModels"
1313
xmlns:localization="clr-namespace:NETworkManager.Localization.Resources;assembly=NETworkManager.Localization"
1414
xmlns:settings="clr-namespace:NETworkManager.Settings;assembly=NETworkManager.Settings"
1515
xmlns:interactivity="http://schemas.microsoft.com/xaml/behaviors"
1616
xmlns:mah="http://metro.mahapps.com/winfx/xaml/controls"
17-
xmlns:controls="clr-namespace:NETworkManager.Controls"
17+
xmlns:internalControls="clr-namespace:NETworkManager.Controls"
1818
xmlns:profiles="clr-namespace:NETworkManager.Profiles;assembly=NETworkManager.Profiles"
19+
xmlns:wpfHelpers="clr-namespace:NETworkManager.Utilities.WPF;assembly=NETworkManager.Utilities.WPF"
1920
xmlns:networkManager="clr-namespace:NETworkManager"
2021
dialogs:DialogParticipation.Register="{Binding}"
2122
Loaded="UserControl_Loaded"
@@ -52,7 +53,7 @@
5253
<dockablz:Layout Grid.Column="0" Grid.Row="0"
5354
Partition="{Binding InterTabPartition}">
5455
<dockablz:Layout.Resources>
55-
<DataTemplate x:Key="TabHeaderTemplate" DataType="{x:Type controls:DragablzTabItem}">
56+
<DataTemplate x:Key="TabHeaderTemplate" DataType="{x:Type internalControls:DragablzTabItem}">
5657
<Border BorderBrush="{DynamicResource MahApps.Brushes.Gray8}" BorderThickness="0,0,1,0">
5758
<Grid Height="32">
5859
<Grid.ContextMenu>
@@ -560,16 +561,51 @@
560561
<Setter Property="Template">
561562
<Setter.Value>
562563
<ControlTemplate>
563-
<Expander IsExpanded="True"
564-
Style="{StaticResource DefaultExpander}">
564+
<controls:GroupExpander
565+
Style="{StaticResource DefaultExpander}"
566+
StateStore="{Binding Path=DataContext.GroupExpanderStateStore, RelativeSource={RelativeSource AncestorType=ListBox}}"
567+
GroupName="{Binding Path=(CollectionViewGroup.Name)}">
565568
<Expander.Header>
566569
<Grid>
567570
<Grid.ColumnDefinitions>
568571
<ColumnDefinition Width="*" />
569572
<ColumnDefinition Width="10" />
570573
<ColumnDefinition Width="Auto" />
571574
</Grid.ColumnDefinitions>
572-
<Rectangle Grid.Column="0" Grid.ColumnSpan="4"
575+
<Grid.ContextMenu>
576+
<ContextMenu
577+
Style="{StaticResource DefaultContextMenu}">
578+
<MenuItem
579+
Header="{x:Static Member=localization:Strings.ExpandAll}"
580+
Command="{Binding Path=Data.(viewModels:PowerShellHostViewModel.ExpandAllProfileGroupsCommand), Source={StaticResource BindingProxy}}">
581+
<MenuItem.Icon>
582+
<Rectangle Width="16" Height="16"
583+
Fill="{DynamicResource ResourceKey=MahApps.Brushes.Gray3}">
584+
<Rectangle.OpacityMask>
585+
<VisualBrush
586+
Stretch="Uniform"
587+
Visual="{iconPacks:Material Kind=PlusBoxMultipleOutline}" />
588+
</Rectangle.OpacityMask>
589+
</Rectangle>
590+
</MenuItem.Icon>
591+
</MenuItem>
592+
<MenuItem
593+
Header="{x:Static Member=localization:Strings.CollapseAll}"
594+
Command="{Binding Path=Data.(viewModels:PowerShellHostViewModel.CollapseAllProfileGroupsCommand), Source={StaticResource BindingProxy}}">
595+
<MenuItem.Icon>
596+
<Rectangle Width="16" Height="16"
597+
Fill="{DynamicResource ResourceKey=MahApps.Brushes.Gray3}">
598+
<Rectangle.OpacityMask>
599+
<VisualBrush
600+
Stretch="Uniform"
601+
Visual="{iconPacks:Material Kind=MinusBoxMultipleOutline}" />
602+
</Rectangle.OpacityMask>
603+
</Rectangle>
604+
</MenuItem.Icon>
605+
</MenuItem>
606+
</ContextMenu>
607+
</Grid.ContextMenu>
608+
<Rectangle Grid.Column="0" Grid.ColumnSpan="3"
573609
Fill="Transparent" />
574610
<TextBlock Grid.Column="0"
575611
Text="{Binding (CollectionViewGroup.Name)}"
@@ -604,7 +640,7 @@
604640
</Grid>
605641
</Expander.Header>
606642
<ItemsPresenter />
607-
</Expander>
643+
</controls:GroupExpander>
608644
</ControlTemplate>
609645
</Setter.Value>
610646
</Setter>

Source/NETworkManager/Views/PuTTYHostView.xaml

Lines changed: 43 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,16 @@
77
xmlns:dockablz="clr-namespace:Dragablz.Dockablz;assembly=Dragablz"
88
xmlns:iconPacks="http://metro.mahapps.com/winfx/xaml/iconpacks"
99
xmlns:converters="clr-namespace:NETworkManager.Converters;assembly=NETworkManager.Converters"
10+
xmlns:controls="clr-namespace:NETworkManager.Controls;assembly=NETworkManager.Controls"
1011
xmlns:dialogs="clr-namespace:MahApps.Metro.Controls.Dialogs;assembly=MahApps.Metro"
1112
xmlns:viewModels="clr-namespace:NETworkManager.ViewModels"
1213
xmlns:localization="clr-namespace:NETworkManager.Localization.Resources;assembly=NETworkManager.Localization"
13-
xmlns:controls="clr-namespace:NETworkManager.Controls"
14-
xmlns:wpfHelpers="clr-namespace:NETworkManager.Utilities.WPF;assembly=NETworkManager.Utilities.WPF"
14+
xmlns:internalControls="clr-namespace:NETworkManager.Controls"
1515
xmlns:settings="clr-namespace:NETworkManager.Settings;assembly=NETworkManager.Settings"
1616
xmlns:interactivity="http://schemas.microsoft.com/xaml/behaviors"
1717
xmlns:mah="http://metro.mahapps.com/winfx/xaml/controls"
1818
xmlns:profiles="clr-namespace:NETworkManager.Profiles;assembly=NETworkManager.Profiles"
19+
xmlns:wpfHelpers="clr-namespace:NETworkManager.Utilities.WPF;assembly=NETworkManager.Utilities.WPF"
1920
xmlns:networkManager="clr-namespace:NETworkManager"
2021
dialogs:DialogParticipation.Register="{Binding}"
2122
Loaded="UserControl_Loaded"
@@ -52,7 +53,7 @@
5253
<dockablz:Layout Grid.Column="0" Grid.Row="0"
5354
Partition="{Binding InterTabPartition}">
5455
<dockablz:Layout.Resources>
55-
<DataTemplate x:Key="TabHeaderTemplate" DataType="{x:Type controls:DragablzTabItem}">
56+
<DataTemplate x:Key="TabHeaderTemplate" DataType="{x:Type internalControls:DragablzTabItem}">
5657
<Border BorderBrush="{DynamicResource MahApps.Brushes.Gray8}" BorderThickness="0,0,1,0">
5758
<Grid Height="32">
5859
<Grid.ContextMenu>
@@ -573,16 +574,51 @@
573574
<Setter Property="Template">
574575
<Setter.Value>
575576
<ControlTemplate>
576-
<Expander IsExpanded="True"
577-
Style="{StaticResource DefaultExpander}">
577+
<controls:GroupExpander
578+
Style="{StaticResource DefaultExpander}"
579+
StateStore="{Binding Path=DataContext.GroupExpanderStateStore, RelativeSource={RelativeSource AncestorType=ListBox}}"
580+
GroupName="{Binding Path=(CollectionViewGroup.Name)}">
578581
<Expander.Header>
579582
<Grid>
580583
<Grid.ColumnDefinitions>
581584
<ColumnDefinition Width="*" />
582585
<ColumnDefinition Width="10" />
583586
<ColumnDefinition Width="Auto" />
584587
</Grid.ColumnDefinitions>
585-
<Rectangle Grid.Column="0" Grid.ColumnSpan="4"
588+
<Grid.ContextMenu>
589+
<ContextMenu
590+
Style="{StaticResource DefaultContextMenu}">
591+
<MenuItem
592+
Header="{x:Static Member=localization:Strings.ExpandAll}"
593+
Command="{Binding Path=Data.(viewModels:PuTTYHostViewModel.ExpandAllProfileGroupsCommand), Source={StaticResource BindingProxy}}">
594+
<MenuItem.Icon>
595+
<Rectangle Width="16" Height="16"
596+
Fill="{DynamicResource ResourceKey=MahApps.Brushes.Gray3}">
597+
<Rectangle.OpacityMask>
598+
<VisualBrush
599+
Stretch="Uniform"
600+
Visual="{iconPacks:Material Kind=PlusBoxMultipleOutline}" />
601+
</Rectangle.OpacityMask>
602+
</Rectangle>
603+
</MenuItem.Icon>
604+
</MenuItem>
605+
<MenuItem
606+
Header="{x:Static Member=localization:Strings.CollapseAll}"
607+
Command="{Binding Path=Data.(viewModels:PuTTYHostViewModel.CollapseAllProfileGroupsCommand), Source={StaticResource BindingProxy}}">
608+
<MenuItem.Icon>
609+
<Rectangle Width="16" Height="16"
610+
Fill="{DynamicResource ResourceKey=MahApps.Brushes.Gray3}">
611+
<Rectangle.OpacityMask>
612+
<VisualBrush
613+
Stretch="Uniform"
614+
Visual="{iconPacks:Material Kind=MinusBoxMultipleOutline}" />
615+
</Rectangle.OpacityMask>
616+
</Rectangle>
617+
</MenuItem.Icon>
618+
</MenuItem>
619+
</ContextMenu>
620+
</Grid.ContextMenu>
621+
<Rectangle Grid.Column="0" Grid.ColumnSpan="3"
586622
Fill="Transparent" />
587623
<TextBlock Grid.Column="0"
588624
Text="{Binding (CollectionViewGroup.Name)}"
@@ -617,7 +653,7 @@
617653
</Grid>
618654
</Expander.Header>
619655
<ItemsPresenter />
620-
</Expander>
656+
</controls:GroupExpander>
621657
</ControlTemplate>
622658
</Setter.Value>
623659
</Setter>

0 commit comments

Comments
 (0)