/// /// Copyright (c) 2013-2020 Sensus Slovensko a.s. /// using System; using System.Collections.Generic; using System.Windows.Forms; using Common; using Config.Entities; using TBF.Rig.Generic; using TBF.Resources; using TBF.UI.Shared; using Users.Entities; namespace TBF.UI.Bench.Components { public partial class ComponentParametersDlg : Form { public IComponentCfgCtrl ComponentCfgCtrl; const int ComponentCfgCtrlHeight = 350; const int ComponentCfgCtrlMoreHeight = 250; public IComponentCfg Config { get { if (ComponentCfgCtrl == null) return null; return ComponentCfgCtrl.Config; } } public CfgUpdateFlags Flags; public bool UnlockAfterStart; /// /// List of components (=component configuration instances) /// public IList CmpntEntities; int cmpntEntityId; ComponentParametersDlg() { InitializeComponent(); } /// /// Create a window to edit component configuration /// /// Config.Entities.Component.Id or 0 when this is a new/copied/immported component public ComponentParametersDlg(Form parentForm, int cmpntEntityId = 0) : this() { this.cmpntEntityId = cmpntEntityId; /// SharedDlgButtons configuration sharedButtons.ParentForm = parentForm; sharedButtons.RequiredGroupMembership = new GID[] { GID.Metrologists }; sharedButtons.MoreButtonTop = ComponentCfgCtrlHeight - 45; sharedButtons.OptionalButtons = SharedButtons.Buttons.None; sharedButtons.Unlocked += Unlock; sharedButtons.OKClicked += okButton_Click; sharedButtons.CancelClicked += cancelButton_Click; sharedButtons.MoreClicked += moreButton_Click; Flags = CfgUpdateFlags.None; } private void ComponentCfgForm_Load(object sender, EventArgs e) { Text = Strings.Properties; if (ComponentCfgCtrl != null) { splitContainer.Panel1.Controls.Add((UserControl)ComponentCfgCtrl); if (ComponentCfgCtrl.ShowMore) { sharedButtons.OptionalButtons = SharedButtons.Buttons.More; } if (UnlockAfterStart) { sharedButtons.UnlockButtons(); ComponentCfgCtrl.Unlock(); } } } /// /// Handler of the Unlock button click /// private void Unlock(object sender, EventArgs e) { ComponentCfgCtrl.Unlock(); } public CfgUpdateFlags VerifyCfg(ref string message) { if (ComponentCfgCtrl == null) return CfgUpdateFlags.None; /// Nothing to verify -> OK return ComponentCfgCtrl.VerifyCfg(ref message); } private void okButton_Click(object sender, EventArgs e) { string message = string.Empty; CfgUpdateFlags flags = VerifyCfg(ref message); if ((flags & CfgUpdateFlags.Error) == CfgUpdateFlags.Error) { MessageBox.Show(Strings.Please_change_the_following_settings + message, Strings.Error, MessageBoxButtons.OK, MessageBoxIcon.Error); return; } if (ComponentCfgCtrl != null) { flags = ComponentCfgCtrl.UpdateCfg(); /// Prevent component name duplicity if (CmpntEntities != null) { foreach (var cmpnt in CmpntEntities) { if (ComponentCfgCtrl.Config.Name == cmpnt.Name && cmpntEntityId != cmpnt.Id) { MessageBox.Show("Component with the same name already exists"); return; } } } if ((flags & CfgUpdateFlags.RestartRqrd) == CfgUpdateFlags.RestartRqrd) { MessageBox.Show(Strings.Program_restart_is_required_to_apply_some_settings, Strings.Warning, MessageBoxButtons.OK, MessageBoxIcon.Warning); } ComponentCfgCtrl.Closing(); } Flags = flags; DialogResult = DialogResult.OK; Close(); return; } private void cancelButton_Click(object sender, EventArgs e) { if (ComponentCfgCtrl != null) ComponentCfgCtrl.Closing(); DialogResult = DialogResult.Cancel; Close(); return; } private void moreButton_Click(object sender, EventArgs e) { ComponentCfgCtrl.Unlock(); if (sharedButtons.MoreActive) { Height = Height + ComponentCfgCtrlMoreHeight; } else { Height = Height - ComponentCfgCtrlMoreHeight; } return; } } }