Mercurial > servermonitor
diff ServerMonitor/Forms/ServerSummaryForm.cs @ 0:3e1a2131f897
Initial commit. Ping check, scheduling, UI working. SSH check mostly working.
author | Brad Greco <brad@bgreco.net> |
---|---|
date | Mon, 31 Dec 2018 18:32:14 -0500 |
parents | |
children | 3142e52cbe69 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ServerMonitor/Forms/ServerSummaryForm.cs Mon Dec 31 18:32:14 2018 -0500 @@ -0,0 +1,98 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace ServerMonitorApp +{ + public partial class ServerSummaryForm : Form + { + private readonly Dictionary<Server, ServerForm> serverForms = new Dictionary<Server, ServerForm>(); + private ServerMonitor monitor; + + public ServerSummaryForm() + { + InitializeComponent(); + } + + private void ServerSummaryForm_Load(object sender, EventArgs e) + { + Helpers.FormatImageButton(NewServerButton); + monitor = new ServerMonitor(); + while (true) + { + try + { + monitor.LoadServers(); + break; + } + catch (Exception ex) + { + DialogResult result = MessageBox.Show("Could not load servers. Please fix or delete the file " + monitor.ConfigFile + Environment.NewLine + Environment.NewLine + + "Error details:" + Environment.NewLine + ex.GetAllMessages(), + "Error loading servers", MessageBoxButtons.RetryCancel, MessageBoxIcon.Error); + if (result == DialogResult.Cancel) + { + Environment.Exit(1); + } + } + } + RefreshDisplay(); + } + + private void RefreshDisplay() + { + ServerPanel.Controls.Clear(); + foreach (Server server in monitor.Servers) + { + ServerSummaryControl control = new ServerSummaryControl(server); + control.Click += ServerSummaryControl_Click; + ServerPanel.Controls.Add(control); + } + } + + private void ShowServerForm(Server server) + { + bool isNewServer = false; + if (server == null) + { + server = new Server(); + monitor.AddServer(server); + isNewServer = true; + } + if (serverForms.TryGetValue(server, out ServerForm form)) + { + form.Activate(); + } + else + { + form = new ServerForm(monitor, server, isNewServer); + serverForms[server] = form; + form.FormClosing += ServerForm_FormClosing; + form.Show(); + } + } + + private void ServerSummaryControl_Click(object sender, EventArgs e) + { + ShowServerForm(((ServerSummaryControl)sender).Server); + } + + private void ServerForm_FormClosing(object sender, FormClosingEventArgs e) + { + ServerForm form = (ServerForm)sender; + form.FormClosing -= ServerForm_FormClosing; + serverForms.Remove(form.Server); + RefreshDisplay(); + } + + private void NewServerButton_Click(object sender, EventArgs e) + { + ShowServerForm(null); + } + } +}