/// /// Copyright (c) 2013-2015 Sensus Metering Systems /// using System; using System.Collections.Generic; using System.Windows.Forms; using NHibernate; using log4net; using Config.Entities; using TBF.UiControls; using TBF.BenchControl; using TBF.Resources; namespace TBF { public partial class MetrologyDlg : Form, IParentOfListViewEx { static readonly ILog log = LogManager.GetLogger(typeof(MetrologyDlg)); public IList cmpntEntities; ISession session; public MetrologyDlg() { InitializeComponent(); /// SharedDlgButtons configuration sharedButtons.RequiredGroupMembership = Config.Grp.GID.Metrologists; sharedButtons.OptionalButtons = SharedButtons.Buttons.Add | SharedButtons.Buttons.Remove; sharedButtons.Unlocked += unlockButton_Click; sharedButtons.OKClicked += okButton_Click; sharedButtons.CancelClicked += cancelButton_Click; sharedButtons.AddClicked += addButton_Click; sharedButtons.RemoveClicked += removeButton_Click; } private void MetrologyDlg_Load(object sender, EventArgs e) { TBF.LocalSettings ls = Program.LocalSettings; Width = (ls.MetrologyDlgWidth > 0) ? ls.MetrologyDlgWidth : 900; Height = (ls.MetrologyDlgHeight > 0) ? ls.MetrologyDlgHeight : 500; Left = (ls.MetrologyDlgLeft != 0) ? ls.MetrologyDlgLeft : 200; Top = (ls.MetrologyDlgTop != 0) ? ls.MetrologyDlgTop : 100; Text = Strings.Metrology; int fixedCount = 0; int balancesCount = 0; int flowMetersCount = 0; int pressMetersCount = 0; session = Config.FluentCommon.CreateSession(Config.Entities.DBKind.Config); cmpntEntities = session.CreateQuery("FROM Component ORDER BY ItemNr") .List(); // Density tab-page fixedCount++; TabPage dstyTabPage = new TabPage(" " + Strings.Density + " "); MetrologyDlgDensityTab uiCtl = new MetrologyDlgDensityTab(); uiCtl.Dock = DockStyle.Fill; dstyTabPage.Tag = uiCtl; dstyTabPage.Controls.Add(uiCtl); metrologyTabControl.TabPages.Add(dstyTabPage); foreach (var cmpnt in cmpntEntities) { BenchControl.Generic.IComponentFactory factory = TbfComponents.CmpntFactoryFromClassName(cmpnt.ClassName); // Balance tab-pages if (factory is BenchControl.MettlerToledo.Standard.BalanceFactory || factory is BenchControl.MettlerToledo.Standard.BalanceNewFactory) { balancesCount++; TabPage tabPage = new TabPage(" " + cmpnt.Name + " "); MetrologyDlgBalanceTab uiControl = new MetrologyDlgBalanceTab(); uiControl.MeterEntity = cmpnt; uiControl.Dock = DockStyle.Fill; tabPage.Tag = uiControl; tabPage.Controls.Add(uiControl); metrologyTabControl.TabPages.Add(tabPage); } // Flowmeter tab-pages if (factory is BenchControl.Elde.FlowMeter.FlowMeterFactory) { flowMetersCount++; TabPage tabPage = new TabPage(" " + cmpnt.Name + " "); MetrologyDlgFlowMeterTab uiControl = new MetrologyDlgFlowMeterTab(); uiControl.MeterEntity = cmpnt; uiControl.Dock = DockStyle.Fill; tabPage.Tag = uiControl; tabPage.Controls.Add(uiControl); metrologyTabControl.TabPages.Add(tabPage); } // Pressure meter tab-pages if (factory is BenchControl.Elde.PressureMeter.PressureMeterFactory) { pressMetersCount++; TabPage tabPage = new TabPage(" " + cmpnt.Name + " "); MetrologyDlgPressMeterTab uiControl = new MetrologyDlgPressMeterTab(); uiControl.MeterEntity = cmpnt; uiControl.Dock = DockStyle.Fill; tabPage.Tag = uiControl; tabPage.Controls.Add(uiControl); metrologyTabControl.TabPages.Add(tabPage); } } } private void unlockButton_Click(object sender, EventArgs e) { foreach (TabPage tabPage in metrologyTabControl.TabPages) { (tabPage.Tag as IMetrologyDlgTab).Unlock(); } } private void okButton_Click(object sender, EventArgs e) { foreach (TabPage tabPage in metrologyTabControl.TabPages) { IMetrologyDlgTab tab = tabPage.Tag as IMetrologyDlgTab; tab.OkBtnClicked(); if (!(tabPage.Tag is MetrologyDlgDensityTab)) { Config.FluentCommon.SaveToDb(session, tab.MeterEntity); foreach (var entity in tab.ToBeRemoved) Config.FluentCommon.DeleteFromDb(session, entity); } } Program.LocalSettings.MetrologyDlgLeft = Location.X; Program.LocalSettings.MetrologyDlgTop = Location.Y; Program.LocalSettings.MetrologyDlgWidth = Size.Width; Program.LocalSettings.MetrologyDlgHeight = Size.Height; Program.LocalSettings.Save(); DialogResult = DialogResult.OK; Close(); } private void cancelButton_Click(object sender, EventArgs e) { foreach (TabPage tabPage in metrologyTabControl.TabPages) { (tabPage.Tag as IMetrologyDlgTab).CancelBtnClicked(); } Program.LocalSettings.MetrologyDlgLeft = Location.X; Program.LocalSettings.MetrologyDlgTop = Location.Y; Program.LocalSettings.MetrologyDlgWidth = Size.Width; Program.LocalSettings.MetrologyDlgHeight = Size.Height; Program.LocalSettings.Save(); DialogResult = DialogResult.Cancel; Close(); } private void addButton_Click(object sender, EventArgs e) { (metrologyTabControl.SelectedTab.Tag as IMetrologyDlgTab).AddOne(); } private void removeButton_Click(object sender, EventArgs e) { (metrologyTabControl.SelectedTab.Tag as IMetrologyDlgTab).RemoveSelected(); } public void UpdateButtonStates(SharedButtons.SelectedItemPos selectedItemPos) { if (selectedItemPos == SharedButtons.SelectedItemPos.None) { sharedButtons.DisableButtons(SharedButtons.Buttons.Remove); } else { sharedButtons.EnableButtons(SharedButtons.Buttons.Remove); } } private void metrologyTabControl_SelectedIndexChanged(object sender, EventArgs e) { sharedButtons.DisableButtons(SharedButtons.Buttons.Remove); } } }