Skip to content

Commit 252c8ea

Browse files
committed
Feature: More child dialogs
1 parent f6c4b9c commit 252c8ea

File tree

6 files changed

+77
-63
lines changed

6 files changed

+77
-63
lines changed

Source/NETworkManager/ViewModels/PowerShellHostViewModel.cs

Lines changed: 19 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using Dragablz;
22
using log4net;
33
using MahApps.Metro.Controls.Dialogs;
4+
using MahApps.Metro.SimpleChildWindow;
45
using NETworkManager.Controls;
56
using NETworkManager.Localization.Resources;
67
using NETworkManager.Models;
@@ -579,16 +580,15 @@ private void TryFindExecutable()
579580
Log.Warn("Install PowerShell or configure the path in the settings.");
580581
}
581582

582-
private async Task Connect(string host = null)
583+
private Task Connect(string host = null)
583584
{
584-
var customDialog = new CustomDialog
585-
{
586-
Title = Strings.Connect
587-
};
585+
var childWindow = new PowerShellConnectChildWindow();
588586

589-
var connectViewModel = new PowerShellConnectViewModel(async instance =>
587+
var childWindowViewModel = new PowerShellConnectViewModel(instance =>
590588
{
591-
await _dialogCoordinator.HideMetroDialogAsync(this, customDialog);
589+
childWindow.IsOpen = false;
590+
ConfigurationManager.Current.IsChildWindowOpen = false;
591+
592592
ConfigurationManager.OnDialogClose();
593593

594594
// Create profile info
@@ -608,19 +608,24 @@ private async Task Connect(string host = null)
608608

609609
// Connect
610610
Connect(sessionInfo);
611-
}, async _ =>
611+
612+
}, _ =>
612613
{
613-
await _dialogCoordinator.HideMetroDialogAsync(this, customDialog);
614+
childWindow.IsOpen = false;
615+
ConfigurationManager.Current.IsChildWindowOpen = false;
616+
614617
ConfigurationManager.OnDialogClose();
615618
}, host);
616619

617-
customDialog.Content = new PowerShellConnectDialog
618-
{
619-
DataContext = connectViewModel
620-
};
620+
childWindow.Title = Strings.Connect;
621+
622+
childWindow.DataContext = childWindowViewModel;
623+
624+
ConfigurationManager.Current.IsChildWindowOpen = true;
621625

622626
ConfigurationManager.OnDialogOpen();
623-
await _dialogCoordinator.ShowMetroDialogAsync(this, customDialog);
627+
628+
return (Application.Current.MainWindow as MainWindow).ShowChildWindowAsync(childWindow);
624629
}
625630

626631
private void ConnectProfile()

Source/NETworkManager/ViewModels/RemoteDesktopHostViewModel.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -527,7 +527,7 @@ private static void CloseItemAction(ItemActionCallbackArgs<TabablzControl> args)
527527
// Connect via Dialog
528528
private Task Connect(string host = null)
529529
{
530-
var childWindow = new RemoteDesktopConnectChildWindow(Application.Current.MainWindow);
530+
var childWindow = new RemoteDesktopConnectChildWindow();
531531

532532
var childWindowViewModel = new RemoteDesktopConnectViewModel(instance =>
533533
{
@@ -606,7 +606,7 @@ private Task ConnectProfileAs()
606606

607607
var sessionInfo = RemoteDesktop.CreateSessionInfo(profileInfo);
608608

609-
var childWindow = new RemoteDesktopConnectChildWindow(Application.Current.MainWindow);
609+
var childWindow = new RemoteDesktopConnectChildWindow();
610610

611611
var childWindowViewModel = new RemoteDesktopConnectViewModel(instance =>
612612
{

Source/NETworkManager/Views/PowerShellConnectDialog.xaml renamed to Source/NETworkManager/Views/PowerShellConnectChildWindow.xaml

Lines changed: 34 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,24 @@
1-
<UserControl x:Class="NETworkManager.Views.PowerShellConnectDialog"
2-
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
3-
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
4-
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
5-
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
6-
xmlns:validators="clr-namespace:NETworkManager.Validators;assembly=NETworkManager.Validators"
7-
xmlns:mah="http://metro.mahapps.com/winfx/xaml/controls"
8-
xmlns:viewModels="clr-namespace:NETworkManager.ViewModels"
9-
xmlns:localization="clr-namespace:NETworkManager.Localization.Resources;assembly=NETworkManager.Localization"
10-
xmlns:converters="clr-namespace:NETworkManager.Converters;assembly=NETworkManager.Converters"
11-
mc:Ignorable="d" Loaded="UserControl_Loaded"
12-
d:DataContext="{d:DesignInstance viewModels:PowerShellConnectViewModel}">
13-
<UserControl.Resources>
1+
<simpleChildWindow:ChildWindow x:Class="NETworkManager.Views.PowerShellConnectChildWindow"
2+
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
3+
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
4+
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
5+
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
6+
xmlns:validators="clr-namespace:NETworkManager.Validators;assembly=NETworkManager.Validators"
7+
xmlns:mah="http://metro.mahapps.com/winfx/xaml/controls"
8+
xmlns:viewModels="clr-namespace:NETworkManager.ViewModels"
9+
xmlns:localization="clr-namespace:NETworkManager.Localization.Resources;assembly=NETworkManager.Localization"
10+
xmlns:converters="clr-namespace:NETworkManager.Converters;assembly=NETworkManager.Converters"
11+
xmlns:simpleChildWindow="clr-namespace:MahApps.Metro.SimpleChildWindow;assembly=MahApps.Metro.SimpleChildWindow"
12+
xmlns:iconPacks="http://metro.mahapps.com/winfx/xaml/iconpacks"
13+
CloseButtonCommand="{Binding Path=CancelCommand}"
14+
Style="{StaticResource DefaultChildWindow}"
15+
Loaded="ChildWindow_OnLoaded"
16+
mc:Ignorable="d" d:DataContext="{d:DesignInstance viewModels:ProfileViewModel}">
17+
<simpleChildWindow:ChildWindow.Resources>
1418
<converters:BooleanReverseToVisibilityCollapsedConverter x:Key="BooleanReverseToVisibilityCollapsedConverter" />
1519
<converters:BooleanToVisibilityCollapsedConverter x:Key="BooleanToVisibilityCollapsedConverter" />
16-
</UserControl.Resources>
17-
<Grid Margin="0,20">
20+
</simpleChildWindow:ChildWindow.Resources>
21+
<Grid Margin="10">
1822
<Grid.RowDefinitions>
1923
<RowDefinition Height="Auto" />
2024
<RowDefinition Height="Auto" />
@@ -42,7 +46,7 @@
4246
</Grid.RowDefinitions>
4347
<TextBlock Grid.Column="0" Grid.Row="0" Text="{x:Static localization:Strings.RemoteConsole}" />
4448
<mah:ToggleSwitch Grid.Column="2" Grid.Row="0" OffContent="" OnContent=""
45-
IsOn="{Binding EnableRemoteConsole}" />
49+
IsOn="{Binding EnableRemoteConsole}" />
4650
<TextBlock Grid.Column="0" Grid.Row="2">
4751
<TextBlock.Style>
4852
<Style TargetType="{x:Type TextBlock}" BasedOn="{StaticResource CenterTextBlock}">
@@ -56,10 +60,10 @@
5660
</TextBlock.Style>
5761
</TextBlock>
5862
<ComboBox x:Name="ComboBoxHost" Grid.Column="2" Grid.Row="2" ItemsSource="{Binding HostHistoryView}"
59-
mah:TextBoxHelper.Watermark="{x:Static localization:StaticStrings.ExampleHostname}"
60-
IsEnabled="{Binding EnableRemoteConsole}"
61-
Visibility="{Binding EnableRemoteConsole, Converter={StaticResource BooleanToVisibilityCollapsedConverter}}"
62-
Style="{StaticResource EditableComboBox}">
63+
mah:TextBoxHelper.Watermark="{x:Static localization:StaticStrings.ExampleHostname}"
64+
IsEnabled="{Binding EnableRemoteConsole}"
65+
Visibility="{Binding EnableRemoteConsole, Converter={StaticResource BooleanToVisibilityCollapsedConverter}}"
66+
Style="{StaticResource EditableComboBox}">
6367
<ComboBox.Text>
6468
<Binding Path="Host" Mode="TwoWay" UpdateSourceTrigger="PropertyChanged">
6569
<Binding.ValidationRules>
@@ -70,20 +74,20 @@
7074
</ComboBox.Text>
7175
</ComboBox>
7276
<TextBox x:Name="TextBoxCommand" Grid.Column="2" Grid.Row="2"
73-
Text="{Binding Command, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
74-
Visibility="{Binding EnableRemoteConsole, Converter={StaticResource BooleanReverseToVisibilityCollapsedConverter}}"
75-
Style="{StaticResource DefaultTextBox}" />
77+
Text="{Binding Command, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
78+
Visibility="{Binding EnableRemoteConsole, Converter={StaticResource BooleanReverseToVisibilityCollapsedConverter}}"
79+
Style="{StaticResource DefaultTextBox}" />
7680
<TextBlock Grid.Column="0" Grid.Row="4" Text="{x:Static localization:Strings.AdditionalCommandLine}" />
7781
<TextBox x:Name="TextBoxAdditionalCommandLine" Grid.Column="2" Grid.Row="4"
78-
Text="{Binding AdditionalCommandLine, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
79-
Style="{StaticResource DefaultTextBox}" />
82+
Text="{Binding AdditionalCommandLine, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
83+
Style="{StaticResource DefaultTextBox}" />
8084
<TextBlock Grid.Column="0" Grid.Row="6" Text="{x:Static localization:Strings.ExecutionPolicy}" />
8185
<ComboBox x:Name="ComboBoxTypes" Grid.Column="2" Grid.Row="6" ItemsSource="{Binding ExecutionPolicies}"
82-
SelectedItem="{Binding ExecutionPolicy}" />
86+
SelectedItem="{Binding ExecutionPolicy}" />
8387
</Grid>
8488
<StackPanel Grid.Row="3" Orientation="Horizontal" HorizontalAlignment="Right">
8589
<Button Content="{x:Static localization:Strings.Connect}" Command="{Binding ConnectCommand}"
86-
IsDefault="True" Margin="0,0,10,0">
90+
IsDefault="True" Margin="0,0,10,0">
8791
<Button.Style>
8892
<Style TargetType="{x:Type Button}" BasedOn="{StaticResource HighlightedButton}">
8993
<Setter Property="IsEnabled" Value="True" />
@@ -92,7 +96,7 @@
9296
<MultiDataTrigger.Conditions>
9397
<Condition Binding="{Binding EnableRemoteConsole}" Value="True" />
9498
<Condition Binding="{Binding Path=(Validation.HasError), ElementName=ComboBoxHost}"
95-
Value="True" />
99+
Value="True" />
96100
</MultiDataTrigger.Conditions>
97101
<MultiDataTrigger.Setters>
98102
<Setter Property="IsEnabled" Value="False" />
@@ -103,7 +107,7 @@
103107
</Button.Style>
104108
</Button>
105109
<Button Content="{x:Static localization:Strings.Cancel}" Command="{Binding CancelCommand}" IsCancel="True"
106-
Style="{StaticResource DefaultButton}" />
110+
Style="{StaticResource DefaultButton}" />
107111
</StackPanel>
108112
</Grid>
109-
</UserControl>
113+
</simpleChildWindow:ChildWindow>
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
using System;
2+
using System.Windows;
3+
using System.Windows.Threading;
4+
5+
namespace NETworkManager.Views;
6+
7+
public partial class PowerShellConnectChildWindow
8+
{
9+
public PowerShellConnectChildWindow()
10+
{
11+
InitializeComponent();
12+
}
13+
14+
private void ChildWindow_OnLoaded(object sender, RoutedEventArgs e)
15+
{
16+
Dispatcher.BeginInvoke(DispatcherPriority.ContextIdle, new Action(delegate
17+
{
18+
ComboBoxHost.Focus();
19+
}));
20+
}
21+
}

Source/NETworkManager/Views/PowerShellConnectDialog.xaml.cs

Lines changed: 0 additions & 16 deletions
This file was deleted.

Source/NETworkManager/Views/RemoteDesktopConnectChildWindow.xaml.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ namespace NETworkManager.Views;
66

77
public partial class RemoteDesktopConnectChildWindow
88
{
9-
public RemoteDesktopConnectChildWindow(Window parentWindow)
9+
public RemoteDesktopConnectChildWindow()
1010
{
1111
InitializeComponent();
1212
}

0 commit comments

Comments
 (0)