Mercurial > servermonitor
comparison ServerMonitor/Controls/CheckControl.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 | 453ecc1ed9ea |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:3e1a2131f897 |
---|---|
1 using System; | |
2 using System.Collections.Generic; | |
3 using System.ComponentModel; | |
4 using System.Drawing; | |
5 using System.Data; | |
6 using System.Linq; | |
7 using System.Text; | |
8 using System.Windows.Forms; | |
9 | |
10 namespace ServerMonitorApp | |
11 { | |
12 /// <summary>Base class for check controls</summary> | |
13 /// <remarks>This control should never be used directly, but marking it abstract causes problems with the designer.</remarks> | |
14 public partial class CheckControl : UserControl | |
15 { | |
16 public Type CheckType { get { return GetCheckType(GetType()); } } | |
17 | |
18 public CheckControl() | |
19 { | |
20 InitializeComponent(); | |
21 } | |
22 | |
23 private void CheckControl_Load(object sender, EventArgs e) | |
24 { | |
25 CheckGroupBox.Text = Helpers.GetDisplayName(CheckType); | |
26 | |
27 IEnumerable<Panel> panels = CheckGroupBox.Controls.OfType<Panel>(); | |
28 foreach (Panel panel in panels) | |
29 { | |
30 CheckBox mainCheckBox = panel.Controls.OfType<CheckBox>().OrderBy(c => c.Left).First(); | |
31 mainCheckBox.CheckedChanged += CheckControl_CheckedChanged; | |
32 DisablePanelByCheckBox(mainCheckBox); | |
33 } | |
34 } | |
35 | |
36 private void CheckControl_CheckedChanged(object sender, EventArgs e) | |
37 { | |
38 DisablePanelByCheckBox((CheckBox)sender); | |
39 } | |
40 | |
41 private void DisablePanelByCheckBox(CheckBox checkBox) | |
42 { | |
43 foreach (Control control in checkBox.Parent.Controls) | |
44 { | |
45 if (control != checkBox) | |
46 control.Enabled = checkBox.Checked; | |
47 } | |
48 } | |
49 | |
50 public virtual void LoadCheck(Check check) { } | |
51 | |
52 public virtual void UpdateCheck(Check check) { } | |
53 | |
54 public static CheckControl Create(Type CheckType) | |
55 { | |
56 Type checkControlType = typeof(CheckControl).Assembly.GetTypes().FirstOrDefault(t => GetCheckType(t) == CheckType); | |
57 return checkControlType == null ? null : (CheckControl)Activator.CreateInstance(checkControlType); | |
58 } | |
59 | |
60 private static Type GetCheckType(Type type) | |
61 { | |
62 return type.GetAttribute<CheckTypeAttribute>()?.CheckType; | |
63 } | |
64 } | |
65 } |