using DataEntity.Share;
using DataRWDAL;
using HxEnum;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Windows;
using System.Windows.Controls;
using XCommon.Log;
using XHandler.Class.DataEx;
using XHandler.Controls;
using XHandler.View.MethodProperty;
using XImagingXhandler.XDAL;
namespace XHandler.View.BacteriaProperty
{
///
/// 接种转板方法属性页面
///
public partial class CoatingAndTransferProperty : UserControl, IMethodProperty
{
#region 变量
private int mark = 0;
private PromptTextBox coatingLabware = null; // 接种耗材类型
public MethodCoatingAndTransfer methodCoating = null;
private int[] channels = Shared.ChannelsId;
#endregion
#region 构造函数
///
/// 构造函数
///
///
public CoatingAndTransferProperty(MethodEx method)
{
mark = 0;
InitializeComponent();
methodCoating = new MethodCoatingAndTransfer();
mark = 1;
methodCoating.strIndex = method.strIndex;
methodCoating.label = method.method_name; // 命令标签
methodCoating.name = method.method_name; // 命令名称
methodCoating.status = (method.isEnabled == true ? "enable" : "disable");
this.DataContext = methodCoating;
#region 获取机械臂信息
methodCoating.channels = Shared.ChannelsId;
List armList = DataModule.getInstance().GetDeviceArm();
cbArm.ItemsSource = armList;
// 只有一个臂的情况下默认选中该臂
cbArm.SelectedIndex = armList.Count == 2 ? 1 : 0;
#endregion
#region 涂布方式
ObservableCollection coatingModeList = DataModule.getInstance().GetCoatingMode();
ObservableCollection coatingModeListNew = new ObservableCollection();
foreach (var coatingModeItem in coatingModeList)
{
// 上下、加液
if (coatingModeItem.dropdown_name.Equals(Properties.Resources.strUpDownMode) ||
coatingModeItem.dropdown_name.Equals(Properties.Resources.strDispense))
{
coatingModeListNew.Add(coatingModeItem);
}
}
cbCoatingMode.ItemsSource = coatingModeListNew;
#endregion
#region 接种数量
rdoCoatingCount1.IsChecked = true;
#endregion
if (Shared.ChannelCount > 1)
{
tipsChannel.CanEdit = true;
}
if (method.tag!=null)
{
methodCoating = (MethodCoatingAndTransfer)method.tag;
channels = methodCoating.channels;
}
}
#endregion
#region 方法标签文件更改事件
///
/// 方法标签文件更改事件
///
///
///
private void tbxCommandLabel_TextChanged(object sender, TextChangedEventArgs e)
{
try
{
if (mark == 0)
{
return;
}
methodCoating.label = tbxCommandLabel.Text;
}
catch (Exception ex)
{
LoggerHelper.ErrorLog("ERROR:", ex);
}
}
#endregion
#region 方法名称更改事件
///
/// 方法名称更改事件
///
///
///
private void tbxCommandName_TextChanged(object sender, TextChangedEventArgs e)
{
try
{
if (mark == 0)
{
return;
}
methodCoating.name = tbxCommandName.Text;
}
catch (Exception ex)
{
LoggerHelper.ErrorLog("ERROR:", ex);
}
}
#endregion
#region 机械臂选择变更事件
///
/// 机械臂选择变更事件
///
///
///
private void cbArm_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (mark == 0)
{
return;
}
// 臂未选择
if (cbArm.SelectedIndex < 0 || cbArm.SelectedIndex == 0)
{
methodCoating.armText = ""; // 机械臂
methodCoating.armValue = "";
textboxArmHead.Text = ""; // 挑菌枪
tipsChannel.SetTotalChannelCount(0);
tipsChannel.SelectedChannels = new List();
tipsChannel.SetSelectedChannels();
tipsChannel_SelectedChangedEvent(null, null);
return;
}
#region 设置移液枪通道
tipsChannel.SelectedChannels = Shared.ChannelsId.ToList();
tipsChannel.SetTotalChannelCount(Shared.ChannelCount);
tipsChannel.SetSelectedChannels();
tipsChannel_SelectedChangedEvent(null, null);
#endregion
DeviceArm arm = cbArm.SelectedItem as DeviceArm;
methodCoating.armText = arm.device_arm_name;
methodCoating.armValue = arm.device_arm_id.ToString();
methodCoating.headType = arm.head_type;
textboxArmHead.Text = arm.head_type;
}
#endregion
#region 涂布方式选择变更事件
///
/// 涂布方式选择变更事件
///
///
///
private void cbCoatingMode_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (mark == 0)
{
return;
}
DropdownName dpdItem = (DropdownName)cbCoatingMode.SelectedItem;
methodCoating.coatingModeValue = Convert.ToInt32(dpdItem.dropdown_id);
// 回字型
if (dpdItem.dropdown_id.Equals(EnumManagement.GetEnumValue(CoatingModeEnum.HuiziMode).ToString()))
{
gridShake.Visibility = Visibility.Collapsed;
}
// Z字型
else if (dpdItem.dropdown_id.Equals(EnumManagement.GetEnumValue(CoatingModeEnum.ZMode).ToString()))
{
gridShake.Visibility = Visibility.Collapsed;
}
// 上下移动
else if (dpdItem.dropdown_id.Equals(EnumManagement.GetEnumValue(CoatingModeEnum.UpDownMode).ToString()))
{
gridShake.Visibility = Visibility.Visible;
}
// 放液
else if (dpdItem.dropdown_id.Equals(EnumManagement.GetEnumValue(CoatingModeEnum.DispenseMode).ToString()))
{
gridShake.Visibility = Visibility.Collapsed;
}
}
#endregion
#region 接种数量选择变更事件
///
/// 接种数量选择变更事件
///
///
///
private void rdoCoatingCount_Checked(object sender, RoutedEventArgs e)
{
if (mark == 0)
{
return;
}
methodCoating.coatingCount = rdoCoatingCount1.IsChecked == true ? 0 : 1;
}
#endregion
#region 接种耗材
///
/// 接种A耗材类型文字变更事件
///
///
///
private void coatingLabwareA_TextChanged(object sender, TextChangedEventArgs e)
{
if (mark == 0)
{
return;
}
methodCoating.coatingLabwareAText = coatingLabwareA.Text;
methodCoating.coatingLabwareAValue = coatingLabwareA.Tag.ToString();
}
///
/// 接种B耗材类型文字变更事件
///
///
///
private void coatingLabwareB_TextChanged(object sender, TextChangedEventArgs e)
{
if (mark == 0)
{
return;
}
//methodCoating.coatingLabwareBText = coatingLabwareB.Text;
//methodCoating.coatingLabwareBValue = coatingLabwareB.Tag.ToString();
}
///
/// 接种耗材获得焦点事件
///
///
///
private void coatingLabware_GotFocus(object sender, RoutedEventArgs e)
{
coatingLabware = (PromptTextBox)sender;
}
#endregion
#region 自动开关盖点击事件
///
/// 自动开关盖点击事件
///
///
///
private void ckbAutoOpenCloseCover_Click(object sender, RoutedEventArgs e)
{
if (mark == 0)
{
return;
}
methodCoating.autoOpenCloseCover = ckbAutoOpenCloseCover.IsChecked == true ? 1 : 0;
}
#endregion
#region 设置已选择的台面数据
public void SetTableName(string tableName, Labware lb)
{
if (lb == null || string.IsNullOrEmpty(lb.labware_id))
{
return;
}
List latticeList = LatticeDB.GetLatticeDataFromdb(Shared.SoftwareInformation.software_device_number, Convert.ToInt32(methodCoating.armValue));
Lattice lattice = latticeList.Find(s => s.lattice_num == tableName);
if (lattice == null)
{
LoggerHelper.InfoLog("Error: Can't find lattice with lattice_num=" + tableName);
return;
}
if (coatingLabware != null)
{
coatingLabware.Tag = lb.labware_id;
coatingLabware.Text = lb.labware_name;
}
}
#endregion
#region 界面初期表示事件
private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
try
{
if (mark == 0)
{
return;
}
#region 机械臂
if (!string.IsNullOrEmpty(methodCoating.armText))
{
tbxCommandName.Text = methodCoating.name;
cbArm.SelectedValue = methodCoating.armValue;
DeviceArm arm = cbArm.SelectedItem as DeviceArm;
textboxArmHead.Text = arm.head_type;
// 通道
tipsChannel.SelectedChannels = channels.ToList();
tipsChannel_SelectedChangedEvent(null, null);
}
else
{
cbArm.SelectedIndex = 0;
DeviceArm arm = cbArm.SelectedItem as DeviceArm;
if (arm != null)
{
textboxArmHead.Text = arm.head_type;
}
}
#endregion
#region 涂布方式
cbCoatingMode.SelectedValue = methodCoating.coatingModeValue.ToString();
#endregion
#region 涂布数量
// 单板
if (methodCoating.coatingCount == 0)
{
rdoCoatingCount1.IsChecked = true;
}
// 双板
else
{
rdoCoatingCount2.IsChecked = true;
}
#endregion
#region 接种耗材
coatingLabwareA.Tag = methodCoating.coatingLabwareAValue;
coatingLabwareA.Text = methodCoating.coatingLabwareAText;
//coatingLabwareB.Tag = methodCoating.coatingLabwareBValue;
//coatingLabwareB.Text = methodCoating.coatingLabwareBText;
#endregion
#region 自动开关盖
ckbAutoOpenCloseCover.IsChecked = methodCoating.autoOpenCloseCover == 1;
#endregion
#region 涂布方式:上下相关
tbxDistanceFromBottom.Text = methodCoating.distanceFromBottom.ToString();
tbxShakeDistance.Text = methodCoating.shakeDistanceValue.ToString();
tbxShakeCount.Text = methodCoating.shakeCountValue.ToString();
#endregion
}
catch (Exception ex)
{
LoggerHelper.ErrorLog("ERROR:", ex);
}
}
#endregion
#region 涂布方式:上下
///
/// 距底距离更改事件
///
///
///
private void tbxDistanceFromBottom_TextChanged(object sender, TextChangedEventArgs e)
{
try
{
if (mark == 0)
{
return;
}
methodCoating.distanceFromBottom = Convert.ToInt32(tbxDistanceFromBottom.Text);
}
catch (Exception ex)
{
LoggerHelper.ErrorLog("ERROR:", ex);
}
}
///
/// 移动距离更改事件
///
///
///
private void tbxShakeDistance_TextChanged(object sender, TextChangedEventArgs e)
{
try
{
if (mark == 0)
{
return;
}
methodCoating.shakeDistanceValue = float.Parse(tbxShakeDistance.Text);
}
catch (Exception ex)
{
LoggerHelper.ErrorLog("ERROR:", ex);
}
}
///
/// 次数更改事件
///
///
///
private void tbxShakeCount_TextChanged(object sender, TextChangedEventArgs e)
{
try
{
if (mark == 0)
{
return;
}
methodCoating.shakeCountValue = Convert.ToInt32(tbxShakeCount.Text);
}
catch (Exception ex)
{
LoggerHelper.ErrorLog("ERROR:", ex);
}
}
#endregion
#region 可用通道鼠标选择变更事件
///
/// 可用通道鼠标选择变更事件
///
///
///
private void tipsChannel_SelectedChangedEvent(object sender, EventArgs e)
{
methodCoating.channels = tipsChannel.SelectedChannels.ToArray();
}
#endregion
}
}