protected virtual void PropertyFieldOpen(object sender, EventArgs e) { if (sender is DropdownInputField && AvailableProperties != null) { DropdownInputField dropdown = sender as DropdownInputField; List <string> properties = AvailableProperties?.Invoke(); if (properties == null) { return; } dropdown.Items.Clear(); dropdown.Items.AddRange(properties); } }
protected virtual void InitializeHandles() { StartServerButton.Click += (object sender, EventArgs e) => { if (Server.ServerState == Servers.ServerState.Stop) { Server?.Begin(); } else { Server?.Stop(); } }; TargetPortField.DropDown += (object sender, EventArgs e) => { if (sender is DropdownInputField) { DropdownInputField dropdown = sender as DropdownInputField; List <string> availablePorts = Server.GetAvailablePorts(); if (availablePorts == null) { return; } dropdown.Items.Clear(); dropdown.Items.AddRange(availablePorts); } }; TargetPortField.ItemSelected += (object sender, ItemEventArgs e) => { string port = TargetPortField.Text; Server.TargetPort = port; Properties.Settings.Default.SerialPort_LastPort = port; Properties.Settings.Default.Save(); }; TargetPortField.Leave += (object sender, EventArgs e) => { string port = TargetPortField.Text; Server.TargetPort = port; Properties.Settings.Default.SerialPort_LastPort = port; Properties.Settings.Default.Save(); }; SaveServerSettingsButton.Click += (object sender, EventArgs e) => { string projectPath = ProjectsUtils.ShowSaveProjectDialog(Server.Settings); if (projectPath != null) { Properties.Settings.Default.SerialPort_LastProject = projectPath; Properties.Settings.Default.Save(); } }; LoadServerSettingsButton.Click += (object sender, EventArgs e) => { SerialPortProject newProject = Server.Settings; string projectPath = ProjectsUtils.ShowOpenProjectDialog(ref newProject); if (projectPath != null) { Properties.Settings.Default.SerialPort_LastProject = projectPath; Properties.Settings.Default.Save(); } if (Server.Settings != newProject) { Server.Settings = newProject; } }; EditDataButton.Click += (object sender, EventArgs e) => { MainForm.ShowControl(CreateLogDataEditor()); }; PortSpeedField.ItemSelected += (object sender, ItemEventArgs e) => { Server.Settings.PortSpeed = PortSpeedField.ToEnum(Server.Settings.PortSpeed); UpdateValues(); }; AutoConnectToggle.Click += (object sender, EventArgs e) => { Server.Settings.AutoConnect = AutoConnectToggle.Checked; UpdateValues(); }; AutoConnectRequestField.Leave += (object sender, EventArgs e) => { Server.Settings.AutoConnectRequest = AutoConnectRequestField.Text; UpdateValues(); }; AutoConnectResponseField.Leave += (object sender, EventArgs e) => { Server.Settings.AutoConnectResponse = AutoConnectResponseField.Text; UpdateValues(); }; EventHandler autoConnectResponseTimeoutHandler = (object sender, EventArgs e) => { Server.Settings.AutoConnectResponseTimeout = (int)AutoConnectResponseTimeoutField.Value; UpdateValues(); }; AutoConnectResponseTimeoutField.Leave += autoConnectResponseTimeoutHandler; AutoConnectResponseTimeoutField.AddButton.Click += autoConnectResponseTimeoutHandler; AutoConnectResponseTimeoutField.SubtractButton.Click += autoConnectResponseTimeoutHandler; EventHandler connectionIntervalHandler = (object sender, EventArgs e) => { Server.Settings.ConnectionInterval = (int)ConnectionIntervalField.Value; UpdateValues(); }; ConnectionIntervalField.Leave += connectionIntervalHandler; ConnectionIntervalField.AddButton.Click += connectionIntervalHandler; ConnectionIntervalField.SubtractButton.Click += connectionIntervalHandler; SendModeField.ItemSelected += (object sender, ItemEventArgs e) => { Server.Settings.SendMode = SendModeField.ToEnum(Server.Settings.SendMode); UpdateValues(); }; EventHandler connectionCheckHandler = (object sender, EventArgs e) => { Server.Settings.ConnectionCheckInterval = (int)ConnectionCheckField.Value; UpdateValues(); }; ConnectionCheckField.Leave += connectionCheckHandler; ConnectionCheckField.AddButton.Click += connectionCheckHandler; ConnectionCheckField.SubtractButton.Click += connectionCheckHandler; EventHandler messageIntervalHandler = (object sender, EventArgs e) => { Server.Settings.MessageInterval = (int)MessageIntervalField.Value; UpdateValues(); }; MessageIntervalField.Leave += messageIntervalHandler; MessageIntervalField.AddButton.Click += messageIntervalHandler; MessageIntervalField.SubtractButton.Click += messageIntervalHandler; DataRequestField.Leave += (object sender, EventArgs e) => { Server.Settings.DataRequest = DataRequestField.Text; UpdateValues(); }; Properties.Settings.Default.PropertyChanged += (object sender, PropertyChangedEventArgs e) => { switch (e.PropertyName) { case "SerialPort_PortsWhitelist": Server.PortWhitelist.Clear(); Server.PortWhitelist.AddRange(SlicePortList(Properties.Settings.Default.SerialPort_PortWhitelist)); break; case "SerialPort_PortsBlacklist": Server.PortBlacklist.Clear(); Server.PortBlacklist.AddRange(SlicePortList(Properties.Settings.Default.SerialPort_PortBlacklist)); break; } }; }