mirror of
https://github.com/tribufu/ServerManagers
synced 2026-05-06 15:17:34 +00:00
Server Monitor Changes
- removed old button click events and replaced with commands. - removed shutdown methods and added shutdown parameter to stop methods.
This commit is contained in:
parent
3f4cc944b7
commit
61991ac55f
12 changed files with 490 additions and 469 deletions
|
|
@ -53,6 +53,7 @@ namespace ServerManagerTool.Windows
|
|||
private readonly GlobalizedApplication _globalizer = GlobalizedApplication.Instance;
|
||||
private CancellationTokenSource _upgradeCancellationSource = null;
|
||||
private ActionQueue _versionChecker;
|
||||
private ActionQueue _canExecuteChecker;
|
||||
private readonly Dictionary<string, CommandType> _currentProfileCommands = new Dictionary<string, CommandType>();
|
||||
|
||||
private bool HasRunningCommands => _currentProfileCommands.Count > 0;
|
||||
|
|
@ -152,6 +153,9 @@ namespace ServerManagerTool.Windows
|
|||
_versionChecker = new ActionQueue();
|
||||
_versionChecker.PostAction(CheckForUpdates).DoNotWait();
|
||||
}
|
||||
|
||||
_canExecuteChecker = new ActionQueue();
|
||||
_canExecuteChecker.PostAction(RaiseCanExecuteChanged).DoNotWait();
|
||||
}
|
||||
|
||||
private void ServerMonitorWindow_LocationChanged(object sender, EventArgs e)
|
||||
|
|
@ -205,7 +209,9 @@ namespace ServerManagerTool.Windows
|
|||
}
|
||||
|
||||
Windows.Remove(this);
|
||||
|
||||
_versionChecker?.DisposeAsync().DoNotWait();
|
||||
_canExecuteChecker?.DisposeAsync().DoNotWait();
|
||||
|
||||
base.OnClosing(e);
|
||||
}
|
||||
|
|
@ -517,6 +523,14 @@ namespace ServerManagerTool.Windows
|
|||
return new ServerMonitorWindow(serverManager);
|
||||
}
|
||||
|
||||
public async Task RaiseCanExecuteChanged()
|
||||
{
|
||||
await TaskUtils.RunOnUIThreadAsync(() => CommandManager.InvalidateRequerySuggested());
|
||||
await Task.Delay(5000);
|
||||
|
||||
_canExecuteChecker?.PostAction(RaiseCanExecuteChanged).DoNotWait();
|
||||
}
|
||||
|
||||
private void SetWindowTitle()
|
||||
{
|
||||
if (!string.IsNullOrWhiteSpace(App.Instance.Title))
|
||||
|
|
@ -761,6 +775,114 @@ namespace ServerManagerTool.Windows
|
|||
}
|
||||
}
|
||||
|
||||
public ICommand BackupServersCommand
|
||||
{
|
||||
get
|
||||
{
|
||||
return new RelayCommand<object>(
|
||||
execute: async (_) =>
|
||||
{
|
||||
await BackupSelectedServersAsync();
|
||||
},
|
||||
canExecute: (_) =>
|
||||
{
|
||||
return ServerManager?.Servers != null && ServerManager.Servers.Count > 0 && ServerManager.Servers.Any(s => s.Selected) && ServerManager.Servers.All(s => s.Runtime.Status != ServerStatus.Unknown)
|
||||
&& CancellationTokenSource == null;
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
public ICommand RestartServersCommand
|
||||
{
|
||||
get
|
||||
{
|
||||
return new RelayCommand<object>(
|
||||
execute: async (_) =>
|
||||
{
|
||||
await RestartSelectedServersAsync();
|
||||
},
|
||||
canExecute: (_) =>
|
||||
{
|
||||
return ServerManager?.Servers != null && ServerManager.Servers.Count > 0 && ServerManager.Servers.Any(s => s.Selected) && ServerManager.Servers.All(s => s.Runtime.Status != ServerStatus.Unknown)
|
||||
&& CancellationTokenSource == null;
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
public ICommand ShutdownServersCommand
|
||||
{
|
||||
get
|
||||
{
|
||||
return new RelayCommand<object>(
|
||||
execute: async (_) =>
|
||||
{
|
||||
await StopSelectedServersAsync(true);
|
||||
},
|
||||
canExecute: (_) =>
|
||||
{
|
||||
return ServerManager?.Servers != null && ServerManager.Servers.Count > 0 && ServerManager.Servers.Any(s => s.Selected) && ServerManager.Servers.All(s => s.Runtime.Status != ServerStatus.Unknown)
|
||||
&& CancellationTokenSource == null;
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
public ICommand StartServersCommand
|
||||
{
|
||||
get
|
||||
{
|
||||
return new RelayCommand<object>(
|
||||
execute: async (_) =>
|
||||
{
|
||||
await StartSelectedServersAsync();
|
||||
},
|
||||
canExecute: (_) =>
|
||||
{
|
||||
return ServerManager?.Servers != null && ServerManager.Servers.Count > 0 && ServerManager.Servers.Any(s => s.Selected) && ServerManager.Servers.All(s => s.Runtime.Status != ServerStatus.Unknown)
|
||||
&& CancellationTokenSource == null;
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
public ICommand StopServersCommand
|
||||
{
|
||||
get
|
||||
{
|
||||
return new RelayCommand<object>(
|
||||
execute: async (_) =>
|
||||
{
|
||||
await StopSelectedServersAsync(false);
|
||||
},
|
||||
canExecute: (_) =>
|
||||
{
|
||||
return ServerManager?.Servers != null && ServerManager.Servers.Count > 0 && ServerManager.Servers.Any(s => s.Selected) && ServerManager.Servers.All(s => s.Runtime.Status != ServerStatus.Unknown)
|
||||
&& CancellationTokenSource == null;
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
public ICommand UpdateServersCommand
|
||||
{
|
||||
get
|
||||
{
|
||||
return new RelayCommand<object>(
|
||||
execute: async (_) =>
|
||||
{
|
||||
await UpdateSelectedServersAsync();
|
||||
},
|
||||
canExecute: (_) =>
|
||||
{
|
||||
return ServerManager?.Servers != null && ServerManager.Servers.Count > 0 && ServerManager.Servers.Any(s => s.Selected) && ServerManager.Servers.All(s => s.Runtime.Status != ServerStatus.Unknown)
|
||||
&& CancellationTokenSource == null;
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
#region Drag and Drop
|
||||
|
||||
public static readonly DependencyProperty DraggedItemProperty = DependencyProperty.Register(nameof(DraggedItem), typeof(Server), typeof(ServerMonitorWindow), new PropertyMetadata(null));
|
||||
|
|
@ -876,7 +998,23 @@ namespace ServerManagerTool.Windows
|
|||
|
||||
#endregion
|
||||
|
||||
private async void BackupServers_Click(object sender, RoutedEventArgs e)
|
||||
private void SelectAllServers_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
foreach (var server in ServerManager.Servers)
|
||||
{
|
||||
server.Selected = true;
|
||||
}
|
||||
}
|
||||
|
||||
private void UnselectAllServers_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
foreach (var server in ServerManager.Servers)
|
||||
{
|
||||
server.Selected = false;
|
||||
}
|
||||
}
|
||||
|
||||
private async Task BackupSelectedServersAsync()
|
||||
{
|
||||
if (CancellationTokenSource != null)
|
||||
return;
|
||||
|
|
@ -969,7 +1107,7 @@ namespace ServerManagerTool.Windows
|
|||
}
|
||||
}
|
||||
|
||||
private async void RestartServers_Click(object sender, RoutedEventArgs e)
|
||||
private async Task RestartSelectedServersAsync()
|
||||
{
|
||||
if (CancellationTokenSource != null)
|
||||
return;
|
||||
|
|
@ -1067,7 +1205,7 @@ namespace ServerManagerTool.Windows
|
|||
}
|
||||
}
|
||||
|
||||
private async void StartServers_Click(object sender, RoutedEventArgs e)
|
||||
private async Task StartSelectedServersAsync()
|
||||
{
|
||||
if (CancellationTokenSource != null)
|
||||
return;
|
||||
|
|
@ -1166,7 +1304,7 @@ namespace ServerManagerTool.Windows
|
|||
}
|
||||
}
|
||||
|
||||
private async void StopServers_Click(object sender, RoutedEventArgs e)
|
||||
private async Task StopSelectedServersAsync(bool shutdown)
|
||||
{
|
||||
if (CancellationTokenSource != null)
|
||||
return;
|
||||
|
|
@ -1178,7 +1316,9 @@ namespace ServerManagerTool.Windows
|
|||
return;
|
||||
}
|
||||
|
||||
var result = MessageBox.Show(_globalizer.GetResourceString("ServerMonitor_StopServers_ConfirmLabel"), _globalizer.GetResourceString("ServerMonitor_StopServers_ConfirmTitle"), MessageBoxButton.YesNo, MessageBoxImage.Question);
|
||||
var result = shutdown
|
||||
? MessageBox.Show(_globalizer.GetResourceString("ServerMonitor_ShutdownServers_ConfirmLabel"), _globalizer.GetResourceString("ServerMonitor_ShutdownServers_ConfirmTitle"), MessageBoxButton.YesNo, MessageBoxImage.Question)
|
||||
: MessageBox.Show(_globalizer.GetResourceString("ServerMonitor_StopServers_ConfirmLabel"), _globalizer.GetResourceString("ServerMonitor_StopServers_ConfirmTitle"), MessageBoxButton.YesNo, MessageBoxImage.Question);
|
||||
if (result != MessageBoxResult.Yes)
|
||||
return;
|
||||
|
||||
|
|
@ -1222,11 +1362,13 @@ namespace ServerManagerTool.Windows
|
|||
{
|
||||
var app = new ServerApp(true)
|
||||
{
|
||||
BackupWorldFile = shutdown,
|
||||
DeleteOldBackupFiles = !Config.Default.AutoBackup_EnableBackup,
|
||||
OutputLogs = false,
|
||||
PerformWorldSave = shutdown,
|
||||
SendAlerts = true,
|
||||
SendEmails = false,
|
||||
ServerProcess = ServerProcessType.Shutdown,
|
||||
ServerProcess = shutdown ? ServerProcessType.Shutdown : ServerProcessType.Stop,
|
||||
ServerStatusChangeCallback = (ServerStatus serverStatus) =>
|
||||
{
|
||||
TaskUtils.RunOnUIThreadAsync(() =>
|
||||
|
|
@ -1240,6 +1382,9 @@ namespace ServerManagerTool.Windows
|
|||
}
|
||||
};
|
||||
|
||||
if (!shutdown)
|
||||
app.ShutdownInterval = 0;
|
||||
|
||||
var task = Task.Run(() =>
|
||||
{
|
||||
app.PerformProfileShutdown(profile, false, false, false, false, token);
|
||||
|
|
@ -1248,7 +1393,10 @@ namespace ServerManagerTool.Windows
|
|||
|
||||
tasks.Add(task);
|
||||
|
||||
AddMessageBlockContent(string.Format(_globalizer.GetResourceString("DiscordBot_ShutdownRequested"), profile.ServerName));
|
||||
if (shutdown)
|
||||
AddMessageBlockContent(string.Format(_globalizer.GetResourceString("DiscordBot_ShutdownRequested"), profile.ServerName));
|
||||
else
|
||||
AddMessageBlockContent(string.Format(_globalizer.GetResourceString("DiscordBot_StopRequested"), profile.ServerName));
|
||||
}
|
||||
|
||||
try
|
||||
|
|
@ -1263,7 +1411,7 @@ namespace ServerManagerTool.Windows
|
|||
}
|
||||
}
|
||||
|
||||
private async void UpdateServers_Click(object sender, RoutedEventArgs e)
|
||||
private async Task UpdateSelectedServersAsync()
|
||||
{
|
||||
if (CancellationTokenSource != null)
|
||||
return;
|
||||
|
|
@ -1365,21 +1513,5 @@ namespace ServerManagerTool.Windows
|
|||
CancellationTokenSource = null;
|
||||
}
|
||||
}
|
||||
|
||||
private void SelectAllServers_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
foreach (var server in ServerManager.Servers)
|
||||
{
|
||||
server.Selected = true;
|
||||
}
|
||||
}
|
||||
|
||||
private void UnselectAllServers_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
foreach (var server in ServerManager.Servers)
|
||||
{
|
||||
server.Selected = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue