tbf/TestBenchFramework/MetrologyDlg.cs

191 lines
6.5 KiB
C#
Raw Normal View History

///
/// 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<Component> 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;
2015-12-31 21:48:22 +00:00
session = Config.FluentCommon.CreateSession(Config.Entities.DBKind.Config);
cmpntEntities = session.CreateQuery("FROM Component ORDER BY ItemNr")
.List<Component>();
// 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.BalanceOldFactory ||
factory is BenchControl.MettlerToledo.Standard.BalanceNewFactory ||
factory is BenchControl.MettlerToledo.Multi.BalanceFactory)
{
balancesCount++;
TabPage tabPage = new TabPage(" " + cmpnt.Name + " ");
MetrologyDlgBalanceTab uiControl = new MetrologyDlgBalanceTab();
uiControl.MeterEntity = cmpnt;
uiControl.BalanceCfg = factory.CmpntCfgFromCmpntEntity(cmpnt) as BenchControl.GenericDevices.IBalanceCfg;
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.CalibInfoCfg = factory.CmpntCfgFromCmpntEntity(cmpnt) as BenchControl.GenericDevices.ICalibInfoCfg;
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);
}
}
}